@@ -49,6 +49,7 @@ <h1 class="title">Module <code>codeflare_sdk.utils.generate_cert</code></h1>
49
49
import datetime
50
50
from ..cluster.auth import config_check, api_config_handler
51
51
from kubernetes import client, config
52
+ from .kube_api_helpers import _kube_api_error_handling
52
53
53
54
54
55
def generate_ca_cert(days: int = 30):
@@ -102,6 +103,24 @@ <h1 class="title">Module <code>codeflare_sdk.utils.generate_cert</code></h1>
102
103
return key, certificate
103
104
104
105
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
+
105
124
def generate_tls_cert(cluster_name, namespace, days=30):
106
125
# Create a folder tls-<cluster>-<namespace> and store three files: ca.crt, tls.crt, and tls.key
107
126
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>
113
132
# oc get secret ca-secret-<cluster-name> -o template='{{index .data "ca.crt"}}'|base64 -d > ${TLSDIR}/ca.crt
114
133
config_check()
115
134
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
+
117
140
ca_cert = secret.get("ca.crt")
118
141
ca_key = secret.get("ca.key")
119
142
@@ -294,7 +317,11 @@ <h2 class="section-title" id="header-functions">Functions</h2>
294
317
# oc get secret ca-secret-<cluster-name> -o template='{{index .data "ca.crt"}}'|base64 -d > ${TLSDIR}/ca.crt
295
318
config_check()
296
319
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
+
298
325
ca_cert = secret.get("ca.crt")
299
326
ca_key = secret.get("ca.key")
300
327
@@ -363,6 +390,33 @@ <h2 class="section-title" id="header-functions">Functions</h2>
363
390
f.write(tls_cert.public_bytes(serialization.Encoding.PEM).decode("utf-8"))</ code > </ pre >
364
391
</ details >
365
392
</ 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 >
366
420
</ dl >
367
421
</ section >
368
422
< section >
@@ -384,6 +438,7 @@ <h1>Index</h1>
384
438
< li > < code > < a title ="codeflare_sdk.utils.generate_cert.export_env " href ="#codeflare_sdk.utils.generate_cert.export_env "> export_env</ a > </ code > </ li >
385
439
< 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 >
386
440
< 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 >
387
442
</ ul >
388
443
</ li >
389
444
</ ul >
0 commit comments