def create(ctx, name, vdc, node_count, cpu, memory, network_name, storage_profile, ssh_key_file, template, enable_nfs, disable_rollback, org_name): """Create a Kubernetes cluster.""" try: restore_session(ctx) client = ctx.obj['client'] cluster = Cluster(client) ssh_key = None vdc_to_use = vdc if vdc is not None \ else ctx.obj['profiles'].get('vdc_in_use') if org_name is None: org_name = ctx.obj['profiles'].get('org_in_use') if ssh_key_file is not None: ssh_key = ssh_key_file.read() result = cluster.create_cluster(vdc_to_use, network_name, name, node_count=node_count, cpu=cpu, memory=memory, storage_profile=storage_profile, ssh_key=ssh_key, template=template, enable_nfs=enable_nfs, disable_rollback=disable_rollback, org=org_name) stdout(result, ctx) except Exception as e: stderr(e, ctx)
def test_02_cluster_create(self): logged_in_org = self.client.get_org() assert self.config['vcd']['org'] == logged_in_org.get('name') cluster = Cluster(self.client) result = cluster.create_cluster(self.config['vcd']['vdc'], self.config['vcd']['network'], self.config['vcd']['cluster_name']) task = self.client.get_resource(result['task_href']) task = self.client.get_task_monitor().wait_for_status(task) assert task.get('status') == TaskStatus.SUCCESS.value
def cluster_create(ctx, name, vdc, node_count, cpu, memory, network_name, storage_profile, ssh_key_file, template_name, template_revision, enable_nfs, disable_rollback, org_name): """Create a Kubernetes cluster (max name length is 25 characters).""" CLIENT_LOGGER.debug(f'Executing command: {ctx.command_path}') try: if (template_name and not template_revision) or \ (not template_name and template_revision): raise Exception("Both flags --template-name(-t) and " "--template-revision (-r) must be specified.") restore_session(ctx) if vdc is None: vdc = ctx.obj['profiles'].get('vdc_in_use') if not vdc: raise Exception("Virtual datacenter context is not set. " "Use either command 'vcd vdc use' or option " "'--vdc' to set the vdc context.") if org_name is None: org_name = ctx.obj['profiles'].get('org_in_use') ssh_key = None if ssh_key_file is not None: ssh_key = ssh_key_file.read() client = ctx.obj['client'] cluster = Cluster(client) result = cluster.create_cluster( vdc, network_name, name, node_count=node_count, cpu=cpu, memory=memory, storage_profile=storage_profile, ssh_key=ssh_key, template_name=template_name, template_revision=template_revision, enable_nfs=enable_nfs, rollback=not disable_rollback, org=org_name) stdout(result, ctx) CLIENT_LOGGER.debug(result) except CseResponseError as e: minor_error_code_to_error_message = { MinorErrorCode.REQUEST_KEY_NETWORK_NAME_MISSING: 'Missing option "-n" / "--network".', # noqa: E501 MinorErrorCode.REQUEST_KEY_NETWORK_NAME_INVALID: 'Invalid or missing value for option "-n" / "--network".' # noqa: E501 } e.error_message = \ minor_error_code_to_error_message.get( e.minor_error_code, e.error_message) stderr(e, ctx) CLIENT_LOGGER.error(str(e)) except Exception as e: stderr(e, ctx) CLIENT_LOGGER.error(str(e))
def cluster_create(ctx, name, vdc, node_count, cpu, memory, network_name, storage_profile, ssh_key_file, template_name, template_revision, enable_nfs, disable_rollback, org_name): """Create a Kubernetes cluster.""" try: if (template_name and not template_revision) or \ (not template_name and template_revision): raise Exception("Both flags --template-name(-t) and " "--template-revision (-r) must be specified.") restore_session(ctx) if vdc is None: vdc = ctx.obj['profiles'].get('vdc_in_use') if not vdc: raise Exception("Virtual datacenter context is not set. " "Use either command 'vcd vdc use' or option " "'--vdc' to set the vdc context.") if org_name is None: org_name = ctx.obj['profiles'].get('org_in_use') ssh_key = None if ssh_key_file is not None: ssh_key = ssh_key_file.read() client = ctx.obj['client'] cluster = Cluster(client) result = cluster.create_cluster(vdc, network_name, name, node_count=node_count, cpu=cpu, memory=memory, storage_profile=storage_profile, ssh_key=ssh_key, template_name=template_name, template_revision=template_revision, enable_nfs=enable_nfs, rollback=not disable_rollback, org=org_name) stdout(result, ctx) except Exception as e: stderr(e, ctx)
def create(ctx, name, node_count, cpu_count, memory, network_name, storage_profile, ssh_key_file, template): try: client = ctx.obj['client'] cluster = Cluster(client) ssh_key = None if ssh_key_file is not None: ssh_key = ssh_key_file.read() result = cluster.create_cluster( ctx.obj['profiles'].get('vdc_in_use'), network_name, name, node_count=node_count, cpu_count=cpu_count, memory=memory, storage_profile=storage_profile, ssh_key=ssh_key, template=template) stdout(result, ctx) except Exception as e: stderr(e, ctx)
def create(ctx, name, node_count, cpu, memory, network_name, storage_profile, ssh_key_file, template, enable_nfs): """Create a Kubernetes cluster.""" try: restore_session(ctx, vdc_required=True) client = ctx.obj['client'] cluster = Cluster(client) ssh_key = None if ssh_key_file is not None: ssh_key = ssh_key_file.read() result = cluster.create_cluster(ctx.obj['profiles'].get('vdc_in_use'), network_name, name, node_count=node_count, cpu=cpu, memory=memory, storage_profile=storage_profile, ssh_key=ssh_key, template=template, enable_nfs=enable_nfs) stdout(result, ctx) except Exception as e: stderr(e, ctx)
def cluster_create(ctx, name, vdc, node_count, network_name, storage_profile, ssh_key_file, template_name, template_revision, enable_nfs, disable_rollback, org_name, cpu=None, memory=None): """Create a Kubernetes cluster (max name length is 25 characters). \b Examples vcd cse cluster create mycluster --network mynetwork Create a Kubernetes cluster named 'mycluster'. The cluster will have 2 worker nodes. The cluster will be connected to org VDC network 'mynetwork'. All VMs will use the default template. On create failure, the invalid cluster is deleted. \b vcd cse cluster create mycluster --nodes 1 --enable-nfs \\ --network mynetwork --template-name photon-v2 --template-revision 1 \\ --cpu 3 --memory 1024 --storage-profile mystorageprofile \\ --ssh-key ~/.ssh/id_rsa.pub --disable-rollback --vdc othervdc Create a Kubernetes cluster named 'mycluster' on org VDC 'othervdc'. The cluster will have 1 worker node and 1 NFS node. The cluster will be connected to org VDC network 'mynetwork'. All VMs will use the template 'photon-v2'. Each VM in the cluster will have 3 vCPUs and 1024mb of memory. All VMs will use the storage profile 'mystorageprofile'. The public ssh key at '~/.ssh/id_rsa.pub' will be placed into all VMs for user accessibility. On create failure, cluster will be left cluster in error state for troubleshooting. """ CLIENT_LOGGER.debug(f'Executing command: {ctx.command_path}') try: if (template_name and not template_revision) or \ (not template_name and template_revision): raise Exception("Both flags --template-name(-t) and " "--template-revision (-r) must be specified.") client_utils.cse_restore_session(ctx) if vdc is None: vdc = ctx.obj['profiles'].get('vdc_in_use') if not vdc: raise Exception("Virtual datacenter context is not set. " "Use either command 'vcd vdc use' or option " "'--vdc' to set the vdc context.") if org_name is None: org_name = ctx.obj['profiles'].get('org_in_use') ssh_key = None if ssh_key_file is not None: ssh_key = ssh_key_file.read() client = ctx.obj['client'] cluster = Cluster(client) result = cluster.create_cluster( vdc, network_name, name, node_count=node_count, cpu=cpu, memory=memory, storage_profile=storage_profile, ssh_key=ssh_key, template_name=template_name, template_revision=template_revision, enable_nfs=enable_nfs, rollback=not disable_rollback, org=org_name) stdout(result, ctx) CLIENT_LOGGER.debug(result) except CseResponseError as e: minor_error_code_to_error_message = { MinorErrorCode.REQUEST_KEY_NETWORK_NAME_MISSING: 'Missing option "-n" / "--network".', # noqa: E501 MinorErrorCode.REQUEST_KEY_NETWORK_NAME_INVALID: 'Invalid or missing value for option "-n" / "--network".' # noqa: E501 } e.error_message = \ minor_error_code_to_error_message.get( e.minor_error_code, e.error_message) stderr(e, ctx) CLIENT_LOGGER.error(str(e)) except Exception as e: stderr(e, ctx) CLIENT_LOGGER.error(str(e))