@@ -49,6 +49,7 @@ <h1 class="title">Module <code>codeflare_sdk.utils.generate_cert</code></h1>
4949import datetime
5050from ..cluster.auth import config_check, api_config_handler
5151from kubernetes import client, config
52+ from .kube_api_helpers import _kube_api_error_handling
5253
5354
5455def generate_ca_cert(days: int = 30):
@@ -102,6 +103,24 @@ <h1 class="title">Module <code>codeflare_sdk.utils.generate_cert</code></h1>
102103 return key, certificate
103104
104105
106+ def get_secret_name(cluster_name, namespace, api_instance):
107+ label_selector = f"ray.openshift.ai/cluster-name={cluster_name}"
108+ try:
109+ secrets = api_instance.list_namespaced_secret(
110+ namespace, label_selector=label_selector
111+ )
112+ for secret in secrets.items:
113+ if (
114+ f"{cluster_name}-ca-secret-" in secret.metadata.name
115+ ): # Oauth secret share the same label this conditional is to make things more specific
116+ return secret.metadata.name
117+ else:
118+ continue
119+ raise KeyError(f"Unable to gather secret name for {cluster_name}")
120+ except Exception as e: # pragma: no cover
121+ return _kube_api_error_handling(e)
122+
123+
105124def generate_tls_cert(cluster_name, namespace, days=30):
106125 # Create a folder tls-<cluster>-<namespace> and store three files: ca.crt, tls.crt, and tls.key
107126 tls_dir = os.path.join(os.getcwd(), f"tls-{cluster_name}-{namespace}")
@@ -113,7 +132,11 @@ <h1 class="title">Module <code>codeflare_sdk.utils.generate_cert</code></h1>
113132 # oc get secret ca-secret-<cluster-name> -o template='{{index .data "ca.crt"}}'|base64 -d > ${TLSDIR}/ca.crt
114133 config_check()
115134 v1 = client.CoreV1Api(api_config_handler())
116- secret = v1.read_namespaced_secret(f"ca-secret-{cluster_name}", namespace).data
135+
136+ # Secrets have a suffix appended to the end so we must list them and gather the secret that includes cluster_name-ca-secret-
137+ secret_name = get_secret_name(cluster_name, namespace, v1)
138+ secret = v1.read_namespaced_secret(secret_name, namespace).data
139+
117140 ca_cert = secret.get("ca.crt")
118141 ca_key = secret.get("ca.key")
119142
@@ -294,7 +317,11 @@ <h2 class="section-title" id="header-functions">Functions</h2>
294317 # oc get secret ca-secret-<cluster-name> -o template='{{index .data "ca.crt"}}'|base64 -d > ${TLSDIR}/ca.crt
295318 config_check()
296319 v1 = client.CoreV1Api(api_config_handler())
297- secret = v1.read_namespaced_secret(f"ca-secret-{cluster_name}", namespace).data
320+
321+ # Secrets have a suffix appended to the end so we must list them and gather the secret that includes cluster_name-ca-secret-
322+ secret_name = get_secret_name(cluster_name, namespace, v1)
323+ secret = v1.read_namespaced_secret(secret_name, namespace).data
324+
298325 ca_cert = secret.get("ca.crt")
299326 ca_key = secret.get("ca.key")
300327
@@ -363,6 +390,33 @@ <h2 class="section-title" id="header-functions">Functions</h2>
363390 f.write(tls_cert.public_bytes(serialization.Encoding.PEM).decode("utf-8"))</ code > </ pre >
364391</ details >
365392</ dd >
393+ < dt id ="codeflare_sdk.utils.generate_cert.get_secret_name "> < code class ="name flex ">
394+ < span > def < span class ="ident "> get_secret_name</ span > </ span > (< span > cluster_name, namespace, api_instance)</ span >
395+ </ code > </ dt >
396+ < dd >
397+ < div class ="desc "> </ div >
398+ < details class ="source ">
399+ < summary >
400+ < span > Expand source code</ span >
401+ </ summary >
402+ < pre > < code class ="python "> def get_secret_name(cluster_name, namespace, api_instance):
403+ label_selector = f"ray.openshift.ai/cluster-name={cluster_name}"
404+ try:
405+ secrets = api_instance.list_namespaced_secret(
406+ namespace, label_selector=label_selector
407+ )
408+ for secret in secrets.items:
409+ if (
410+ f"{cluster_name}-ca-secret-" in secret.metadata.name
411+ ): # Oauth secret share the same label this conditional is to make things more specific
412+ return secret.metadata.name
413+ else:
414+ continue
415+ raise KeyError(f"Unable to gather secret name for {cluster_name}")
416+ except Exception as e: # pragma: no cover
417+ return _kube_api_error_handling(e)</ code > </ pre >
418+ </ details >
419+ </ dd >
366420</ dl >
367421</ section >
368422< section >
@@ -384,6 +438,7 @@ <h1>Index</h1>
384438< li > < code > < a title ="codeflare_sdk.utils.generate_cert.export_env " href ="#codeflare_sdk.utils.generate_cert.export_env "> export_env</ a > </ code > </ li >
385439< li > < code > < a title ="codeflare_sdk.utils.generate_cert.generate_ca_cert " href ="#codeflare_sdk.utils.generate_cert.generate_ca_cert "> generate_ca_cert</ a > </ code > </ li >
386440< li > < code > < a title ="codeflare_sdk.utils.generate_cert.generate_tls_cert " href ="#codeflare_sdk.utils.generate_cert.generate_tls_cert "> generate_tls_cert</ a > </ code > </ li >
441+ < li > < code > < a title ="codeflare_sdk.utils.generate_cert.get_secret_name " href ="#codeflare_sdk.utils.generate_cert.get_secret_name "> get_secret_name</ a > </ code > </ li >
387442</ ul >
388443</ li >
389444</ ul >
0 commit comments