def apply(ctx, cluster_config_file_path): CLIENT_LOGGER.debug(f'Executing command: {ctx.command_path}') try: restore_session(ctx) client = ctx.obj['client'] cluster = Cluster(client) cluster.apply(cluster_config_file_path) except Exception as e: stderr(e, ctx) CLIENT_LOGGER.error(str(e))
def apply(ctx, cluster_config_file_path, generate_sample_config, k8_runtime, output, org, cluster_id): # noqa: E501 CLIENT_LOGGER.debug(f'Executing command: {ctx.command_path}') try: console_message_printer = utils.ConsoleMessagePrinter() if cluster_config_file_path and (generate_sample_config or output or k8_runtime): # noqa: E501 console_message_printer.general_no_color(ctx.get_help()) msg = "-s/-o/-n/-t/-k flag can't be used together with CLUSTER_CONFIG_FILE_PATH" # noqa: E501 CLIENT_LOGGER.error(msg) raise Exception(msg) if not cluster_config_file_path and not generate_sample_config: console_message_printer.general_no_color(ctx.get_help()) msg = "No option chosen/invalid option" CLIENT_LOGGER.error(msg) raise Exception(msg) client = ctx.obj['client'] if generate_sample_config: if not k8_runtime: console_message_printer.general_no_color(ctx.get_help()) msg = "with option --sample you must specify either of options: --native or --tkg-s" # noqa: E501 if utils.is_environment_variable_enabled(cli_constants.ENV_CSE_TKG_PLUS_ENABLED): # noqa: E501 msg += " or --tkg-plus" CLIENT_LOGGER.error(msg) raise Exception(msg) elif k8_runtime == shared_constants.ClusterEntityKind.TKG_PLUS.value \ and not utils.is_environment_variable_enabled(cli_constants.ENV_CSE_TKG_PLUS_ENABLED): # noqa: E501 raise Exception(f"{shared_constants.ClusterEntityKind.TKG_PLUS.value} not enabled") # noqa: E501 else: # since apply command is not exposed when CSE server is not # running, it is safe to get the server_rde_version from # VCD API version as VCD API version will be the supported by # CSE server. server_rde_version = \ def_utils.get_runtime_rde_version_by_vcd_api_version( client.get_api_version()) sample_cluster_config = \ client_sample_generator.get_sample_cluster_configuration( output=output, k8_runtime=k8_runtime, server_rde_in_use=server_rde_version) console_message_printer.general_no_color(sample_cluster_config) return with open(cluster_config_file_path) as f: cluster_config_map = yaml.safe_load(f) or {} k8_runtime = cluster_config_map.get('kind') if not k8_runtime: raise Exception("Cluster kind missing from the spec.") if client_utils.is_cli_for_tkg_s_only(): if k8_runtime in [shared_constants.ClusterEntityKind.NATIVE.value, shared_constants.ClusterEntityKind.TKG_PLUS.value]: # noqa: E501 # Cannot run the command as cse cli is enabled only for native raise CseServerNotRunningError() k8_runtime = shared_constants.ClusterEntityKind.TKG_S.value org_name = None if k8_runtime == shared_constants.ClusterEntityKind.TKG_S.value: org_name = org if not org: org_name = ctx.obj['profiles'].get('org_in_use') cluster = Cluster(client, k8_runtime=cluster_config_map.get('kind')) result = cluster.apply(cluster_config_map, cluster_id=cluster_id, org=org_name) stdout(result, ctx) CLIENT_LOGGER.debug(result) except Exception as e: stderr(e, ctx) CLIENT_LOGGER.error(str(e), exc_info=True)