Skip to content

Commit bd0934a

Browse files
committed
Replace openshift client with k8s python client
1 parent 723eb3d commit bd0934a

File tree

2 files changed

+37
-29
lines changed

2 files changed

+37
-29
lines changed

Diff for: src/codeflare_sdk/utils/generate_cert.py

+7-20
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from cryptography import x509
2020
from cryptography.x509.oid import NameOID
2121
import datetime
22-
import openshift as oc
22+
from kubernetes import client, config
2323

2424

2525
def generate_ca_cert(days: int = 30):
@@ -82,25 +82,12 @@ def generate_tls_cert(cluster_name, namespace, days=30):
8282
# Similar to:
8383
# oc get secret ca-secret-<cluster-name> -o template='{{index .data "ca.key"}}'
8484
# oc get secret ca-secret-<cluster-name> -o template='{{index .data "ca.crt"}}'|base64 -d > ${TLSDIR}/ca.crt
85-
with oc.project(namespace):
86-
ca_key = oc.invoke(
87-
"get",
88-
[
89-
"secret",
90-
f"ca-secret-{cluster_name}",
91-
"-o",
92-
"template='{{index .data \"ca.key\"}}'",
93-
],
94-
).out()
95-
ca_cert = oc.invoke(
96-
"get",
97-
[
98-
"secret",
99-
f"ca-secret-{cluster_name}",
100-
"-o",
101-
"template='{{index .data \"ca.crt\"}}'",
102-
],
103-
).out()
85+
config.load_kube_config()
86+
v1 = client.CoreV1Api()
87+
secret = v1.read_namespaced_secret(f"ca-secret-{cluster_name}", namespace).data
88+
ca_cert = secret.get("ca.crt")
89+
ca_key = secret.get("ca.key")
90+
10491
with open(os.path.join(tls_dir, "ca.crt"), "w") as f:
10592
f.write(base64.b64decode(ca_cert).decode("utf-8"))
10693

Diff for: tests/unit_test.py

+30-9
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
parent = Path(__file__).resolve().parents[1]
2222
sys.path.append(str(parent) + "/src")
2323

24+
from kubernetes import client
2425
from codeflare_sdk.cluster.awload import AWManager
2526
from codeflare_sdk.cluster.cluster import (
2627
Cluster,
@@ -2017,17 +2018,25 @@ def test_generate_ca_cert():
20172018
assert cert_pub_key_bytes == private_pub_key_bytes
20182019

20192020

2021+
def secret_ca_retreival(secret_name, namespace):
2022+
ca_private_key_bytes, ca_cert = generate_ca_cert()
2023+
data = {"ca.crt": ca_cert, "ca.key": ca_private_key_bytes}
2024+
assert secret_name == "ca-secret-cluster"
2025+
assert namespace == "namespace"
2026+
return client.models.V1Secret(data=data)
2027+
2028+
20202029
def test_generate_tls_cert(mocker):
20212030
"""
20222031
test the function codeflare_sdk.utils.generate_ca_cert generates the correct outputs
20232032
"""
2024-
ca_private_key_bytes, ca_cert = generate_ca_cert()
2025-
mocker.patch("openshift.invoke", return_value=openshift.Result("fake"))
2026-
mocker.patch("openshift.Result.out", return_value=ca_private_key_bytes)
2033+
mocker.patch("kubernetes.config.load_kube_config", return_value="ignore")
2034+
mocker.patch(
2035+
"kubernetes.client.CoreV1Api.read_namespaced_secret",
2036+
side_effect=secret_ca_retreival,
2037+
)
2038+
20272039
generate_tls_cert("cluster", "namespace")
2028-
with open(os.path.join("tls-cluster-namespace", "ca.crt"), "w") as f:
2029-
f.write(base64.b64decode(ca_cert).decode("utf-8"))
2030-
# verify the required files exist
20312040
assert os.path.exists("tls-cluster-namespace")
20322041
assert os.path.exists(os.path.join("tls-cluster-namespace", "ca.crt"))
20332042
assert os.path.exists(os.path.join("tls-cluster-namespace", "tls.crt"))
@@ -2036,16 +2045,28 @@ def test_generate_tls_cert(mocker):
20362045
# verify the that the signed tls.crt is issued by the ca_cert (root cert)
20372046
with open(os.path.join("tls-cluster-namespace", "tls.crt"), "r") as f:
20382047
tls_cert = load_pem_x509_certificate(f.read().encode("utf-8"))
2039-
root_cert = load_pem_x509_certificate(base64.b64decode(ca_cert))
2040-
assert tls_cert.verify_directly_issued_by(root_cert) == None
2048+
with open(os.path.join("tls-cluster-namespace", "ca.crt"), "r") as f:
2049+
root_cert = load_pem_x509_certificate(f.read().encode("utf-8"))
2050+
assert tls_cert.verify_directly_issued_by(root_cert) == None
20412051

20422052

20432053
def test_export_env():
20442054
"""
20452055
test the function codeflare_sdk.utils.export_ev generates the correct outputs
20462056
"""
2047-
export_env("cluster_name", "namespace")
2057+
tls_dir = "cluster"
2058+
ns = "namespace"
2059+
export_env(tls_dir, ns)
20482060
assert os.environ["RAY_USE_TLS"] == "1"
2061+
assert os.environ["RAY_TLS_SERVER_CERT"] == os.path.join(
2062+
os.getcwd(), f"tls-{tls_dir}-{ns}", "tls.crt"
2063+
)
2064+
assert os.environ["RAY_TLS_SERVER_KEY"] == os.path.join(
2065+
os.getcwd(), f"tls-{tls_dir}-{ns}", "tls.key"
2066+
)
2067+
assert os.environ["RAY_TLS_CA_CERT"] == os.path.join(
2068+
os.getcwd(), f"tls-{tls_dir}-{ns}", "ca.crt"
2069+
)
20492070

20502071

20512072
# Make sure to keep this function and the following function at the end of the file

0 commit comments

Comments
 (0)