2121import datetime
2222from ..cluster .auth import config_check , api_config_handler
2323from kubernetes import client , config
24+ from .kube_api_helpers import _kube_api_error_handling
2425
2526
2627def generate_ca_cert (days : int = 30 ):
@@ -74,6 +75,24 @@ def generate_ca_cert(days: int = 30):
7475 return key , certificate
7576
7677
78+ def get_secret_name (cluster_name , namespace , api_instance ):
79+ label_selector = f"ray.openshift.ai/cluster-name={ cluster_name } "
80+ try :
81+ secrets = api_instance .list_namespaced_secret (
82+ namespace , label_selector = label_selector
83+ )
84+ for secret in secrets .items :
85+ if (
86+ f"{ cluster_name } -ca-secret-" in secret .metadata .name
87+ ): # Oauth secret share the same label this conditional is to make things more specific
88+ return secret .metadata .name
89+ else :
90+ continue
91+ raise KeyError (f"Unable to gather secret name for { cluster_name } " )
92+ except Exception as e : # pragma: no cover
93+ return _kube_api_error_handling (e )
94+
95+
7796def generate_tls_cert (cluster_name , namespace , days = 30 ):
7897 # Create a folder tls-<cluster>-<namespace> and store three files: ca.crt, tls.crt, and tls.key
7998 tls_dir = os .path .join (os .getcwd (), f"tls-{ cluster_name } -{ namespace } " )
@@ -85,7 +104,11 @@ def generate_tls_cert(cluster_name, namespace, days=30):
85104 # oc get secret ca-secret-<cluster-name> -o template='{{index .data "ca.crt"}}'|base64 -d > ${TLSDIR}/ca.crt
86105 config_check ()
87106 v1 = client .CoreV1Api (api_config_handler ())
88- secret = v1 .read_namespaced_secret (f"ca-secret-{ cluster_name } " , namespace ).data
107+
108+ # Secrets have a suffix appended to the end so we must list them and gather the secret that includes cluster_name-ca-secret-
109+ secret_name = get_secret_name (cluster_name , namespace , v1 )
110+ secret = v1 .read_namespaced_secret (secret_name , namespace ).data
111+
89112 ca_cert = secret .get ("ca.crt" )
90113 ca_key = secret .get ("ca.key" )
91114
0 commit comments