def update( secret: str, value: str, env: Optional[str], config: str, no_restart: bool, local: Optional[bool], var: Dict[str, str], module: Optional[str], ) -> None: """Update a given secret of a k8s service with a new value Examples: opta secret update -c my-service.yaml "MY_SECRET_1" "value" """ config = check_opta_file_exists(config) if local: config = local_setup(config, input_variables=var) env = "localopta" layer = Layer.load_from_yaml(config, env, input_variables=var, strict_input_variables=False) secret_name, namespace = get_secret_name_and_namespace(layer, module) set_kube_config(layer) create_namespace_if_not_exists(namespace) amplitude_client.send_event(amplitude_client.UPDATE_SECRET_EVENT) update_secrets(namespace, secret_name, {secret: str(value)}) __restart_deployments(no_restart, namespace) logger.info("Success")
def view( secret: str, env: Optional[str], config: str, local: Optional[bool], var: Dict[str, str], module: Optional[str], ) -> None: """View a given secret of a k8s service Examples: opta secret view -c my-service.yaml "MY_SECRET_1" """ config = check_opta_file_exists(config) if local: config = local_setup(config, input_variables=var) env = "localopta" layer = Layer.load_from_yaml(config, env, input_variables=var, strict_input_variables=False) amplitude_client.send_event( amplitude_client.VIEW_SECRET_EVENT, event_properties={ "org_name": layer.org_name, "layer_name": layer.name }, ) layer.verify_cloud_credentials() secret_name, namespace = get_secret_name_and_namespace(layer, module) set_kube_config(layer) create_namespace_if_not_exists(namespace) secrets = get_secrets(namespace, secret_name) if secret not in secrets: raise UserErrors( f"We couldn't find a secret named {secret}. You either need to add it to your opta.yaml file or if it's" f" already there - update it via secret update.") print(secrets[secret])
def bulk_update( env_file: str, env: Optional[str], config: str, no_restart: bool, local: Optional[bool], var: Dict[str, str], module: Optional[str], ) -> None: """Bulk update a list of secrets for a k8s service using a dotenv file as in input. Each line of the file should be in VAR=VAL format. Examples: opta secret bulk-update -c my-service.yaml secrets.env """ config = check_opta_file_exists(config) if local: config = local_setup(config, input_variables=var) env = "localopta" layer = Layer.load_from_yaml(config, env, input_variables=var, strict_input_variables=False) secret_name, namespace = get_secret_name_and_namespace(layer, module) set_kube_config(layer) create_namespace_if_not_exists(namespace) amplitude_client.send_event(amplitude_client.UPDATE_BULK_SECRET_EVENT) bulk_update_manual_secrets(namespace, secret_name, env_file) __restart_deployments(no_restart, namespace) logger.info("Success")
def list_command( env: Optional[str], config: str, local: Optional[bool], var: Dict[str, str], module: Optional[str], ) -> None: """List the secrets (names and values) for the given k8s service module It expects a file in the dotenv file format. Each line is in VAR=VAL format. The output is in the dotenv file format. Each line is in VAR=VAL format. Examples: opta secret list -c my-service.yaml """ config = check_opta_file_exists(config) if local: config = local_setup(config, input_variables=var) env = "localopta" layer = Layer.load_from_yaml(config, env, input_variables=var, strict_input_variables=False) amplitude_client.send_event(amplitude_client.LIST_SECRETS_EVENT) secret_name, namespace = get_secret_name_and_namespace(layer, module) set_kube_config(layer) create_namespace_if_not_exists(namespace) secrets = get_secrets(namespace, secret_name) for key, value in secrets.items(): print(f"{key}={value}")
def pre_hook(self, module_idx: int) -> None: create_namespace_if_not_exists(self.layer.name) super(AzureK8sServiceProcessor, self).pre_hook(module_idx)