Files
test/keywords/k8s/secret/kubectl_create_secret_keywords.py
Francischini de Souza, Gabriel 98f77b4871 Addition of OIDC app testcases
Change-Id: Idedb362f67527c49f297e54bd3a3ee2db0f2e255
2025-05-02 19:29:22 -03:00

65 lines
2.4 KiB
Python

from config.docker.objects.registry import Registry
from keywords.base_keyword import BaseKeyword
from framework.logging.automation_logger import get_logger
from framework.exceptions.keyword_exception import KeywordException
from keywords.k8s.k8s_command_wrapper import export_k8s_config
from keywords.k8s.secret.kubectl_get_secret_keywords import KubectlGetSecretsKeywords
class KubectlCreateSecretsKeywords(BaseKeyword):
"""
Kubectl keywords for create secret
"""
def __init__(self, ssh_connection):
"""
Constructor
Args:
ssh_connection:
"""
self.ssh_connection = ssh_connection
def create_secret_for_registry(self, registry: Registry, secret_name: str, namespace: str = "default"):
"""
Create a secret for the registry
Args:
registry (): the registry
secret_name (): the secret name
namespace (): the namespace
Returns:
"""
user_name = registry.get_user_name()
password = registry.get_password()
docker_server = registry.get_registry_url()
self.ssh_connection.send(
export_k8s_config(f"kubectl create secret -n {namespace} docker-registry {secret_name} --docker-server={docker_server} " f"--docker-username={user_name} --docker-password={password}")
)
def create_secret_generic(self, namespace: str, secret_name: str, tls_crt: str, tls_key: str = None):
"""
Create a generic secret, with explicit filename, or tls.crt / tls.key
Args:
namespace (str): namespace
secret_name (str): the secret name
tls_crt (str): tls_crt file name
tls_key (str): tls_key file name (optional)
"""
base_cmd = f"kubectl create -n {namespace} secret generic {secret_name}"
if tls_key:
base_cmd += f" --from-file=tls.crt={tls_crt} --from-file=tls.key={tls_key}"
else:
base_cmd += f" --from-file={tls_crt}"
self.ssh_connection.send(export_k8s_config(base_cmd))
self.validate_success_return_code(self.ssh_connection)
list_of_secrets = KubectlGetSecretsKeywords(self.ssh_connection).get_secret_names(namespace=namespace)
if secret_name in list_of_secrets:
get_logger().log_info(f"Kubernetes secret {secret_name} created successfully.")
else:
raise KeywordException(f"Failed to create Kubernetes secret {secret_name}.")