Skip to content

Commit

Permalink
Let user choose to use persistent volumes
Browse files Browse the repository at this point in the history
[OS-kubespray cluster] User is able now to select persistent class usage
while creating cluster. Sinder storage class will be used
  • Loading branch information
Ekaterina Chernova committed Sep 18, 2018
1 parent 56e686d commit e50100f
Showing 1 changed file with 21 additions and 10 deletions.
31 changes: 21 additions & 10 deletions kqueen/engines/openstack_kubespray.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,12 @@ class OpenstackKubesprayEngine(BaseEngine):
"label": "Availability zone",
"default": "nova",
},
"persistent_volume": {
"type": "checkbox",
"order": 90,
"label": "Add Persistent Volumes Storage Class",
"help_message": "Default OpenStack Cinder Storage Class"
}
},
"provisioner": {
"auth_url": {
Expand Down Expand Up @@ -238,7 +244,8 @@ def _run_provisioning(self):
self.cluster.metadata["node_count"] = node_count
self.cluster.save()
self.allow_addresses_for_calico(resources)
kubeconfig = self.ks.deploy(resources)

kubeconfig = self.ks.deploy(self.cluster.metadata)
self.cluster.kubeconfig = kubeconfig
self.cluster.state = config.CLUSTER_OK_STATE
logger.info("Cluster provision completed")
Expand Down Expand Up @@ -423,10 +430,11 @@ def __init__(self, *, cluster_id, ssh_username,
"-i", os.path.join(clusters_path, "ssh_key"))
self._make_files_dir()

def deploy(self, resources):
def deploy(self, cluster_metadata):
resources = cluster_metadata['resources']
inventory = self._generate_inventory(resources)
self._save_inventory(inventory, "hosts.json")
self._create_group_vars()
self._create_group_vars(cluster_metadata)
self._wait_for_ping()
self._add_fip_to_lo(resources)
self._run_ansible()
Expand Down Expand Up @@ -477,18 +485,21 @@ def _save_inventory(self, inventory, filename):
with open(self._get_cluster_path(filename), "w") as fp:
json.dump(inventory, fp, indent=4)

def _create_group_vars(self):
def _create_group_vars(self, metadata):
src = os.path.join(self.kubespray_path, "inventory/sample/group_vars")
dst = self._get_cluster_path("group_vars")
shutil.copytree(src, dst)

with open(os.path.join(dst, "all.yml"), "a") as all_yaml:
data_to_add = {'cloud_provider': 'openstack'}
image_var_names = [var_name for var_name in dir(config) if var_name.endswith(('_IMAGE_REPO', '_IMAGE_TAG'))]
image_variables = {k.lower(): getattr(config, k) for k in image_var_names}
data_to_add.update(image_variables)
persistent_volumes = metadata.get("persistent_volume")
kubespray_vars = {"persistent_volumes_enabled": True} if persistent_volumes else {}

yaml.dump(data_to_add, all_yaml, default_flow_style=False)
kubespray_vars["cloud_provider"] = "openstack"
kubespray_vars["openstack_blockstorage_version"] = "v2"
image_var_names = [var_name for var_name in dir(config) if var_name.endswith(('_IMAGE_REPO', '_IMAGE_TAG'))]
image_variables = {k.lower(): getattr(config, k) for k in image_var_names}
kubespray_vars.update(image_variables)
with open(os.path.join(dst, "all.yml"), "a") as all_yaml:
yaml.dump(kubespray_vars, all_yaml, default_flow_style=False)

def _make_files_dir(self):
os.makedirs(self._get_cluster_path(), exist_ok=True)
Expand Down

0 comments on commit e50100f

Please sign in to comment.