From 49c35dffbddfcbf5557980d133646003b0c613a9 Mon Sep 17 00:00:00 2001 From: codeflare-machine-account Date: Fri, 19 Apr 2024 15:58:13 +0000 Subject: [PATCH] Changes in docs for release: v0.16.0 --- .../cluster/cluster.html | 95 ++--- .../cluster/config.html | 9 +- .../utils/generate_yaml.html | 389 +----------------- 3 files changed, 35 insertions(+), 458 deletions(-) diff --git a/docs/detailed-documentation/cluster/cluster.html b/docs/detailed-documentation/cluster/cluster.html index c5b65132..eed1e154 100644 --- a/docs/detailed-documentation/cluster/cluster.html +++ b/docs/detailed-documentation/cluster/cluster.html @@ -121,7 +121,6 @@

Module codeflare_sdk.cluster.cluster

if self._job_submission_client: return self._job_submission_client if is_openshift_cluster(): - print(k8client.configuration.get_api_key_with_prefix("authorization")) self._job_submission_client = JobSubmissionClient( self.cluster_dashboard_uri(), headers=self._client_headers, @@ -212,7 +211,6 @@

Module codeflare_sdk.cluster.cluster

mcad = self.config.mcad instance_types = self.config.machine_types env = self.config.envs - local_interactive = self.config.local_interactive image_pull_secrets = self.config.image_pull_secrets dispatch_priority = self.config.dispatch_priority write_to_file = self.config.write_to_file @@ -236,7 +234,6 @@

Module codeflare_sdk.cluster.cluster

mcad=mcad, instance_types=instance_types, env=env, - local_interactive=local_interactive, image_pull_secrets=image_pull_secrets, dispatch_priority=dispatch_priority, priority_val=priority_val, @@ -512,13 +509,6 @@

Module codeflare_sdk.cluster.cluster

verify_tls=True, ): config_check() - if ( - rc["metadata"]["annotations"]["sdk.codeflare.dev/local_interactive"] - == "True" - ): - local_interactive = True - else: - local_interactive = False machine_types = ( rc["metadata"]["labels"]["orderedinstance"].split("_") if "orderedinstance" in rc["metadata"]["labels"] @@ -559,7 +549,6 @@

Module codeflare_sdk.cluster.cluster

image=rc["spec"]["workerGroupSpecs"][0]["template"]["spec"]["containers"][ 0 ]["image"], - local_interactive=local_interactive, mcad=mcad, write_to_file=write_to_file, verify_tls=verify_tls, @@ -567,18 +556,27 @@

Module codeflare_sdk.cluster.cluster

return Cluster(cluster_config) def local_client_url(self): - if self.config.local_interactive == True: - ingress_domain = _get_ingress_domain(self) - return f"ray://{ingress_domain}" - else: - return "None" + ingress_domain = _get_ingress_domain(self) + return f"ray://{ingress_domain}" def _component_resources_up( self, namespace: str, api_instance: client.CustomObjectsApi ): if self.config.write_to_file: with open(self.app_wrapper_yaml) as f: - yamls = yaml.load_all(f, Loader=yaml.FullLoader) + yamls = list(yaml.load_all(f, Loader=yaml.FullLoader)) + for resource in yamls: + enable_ingress = ( + resource.get("spec", {}) + .get("headGroupSpec", {}) + .get("enableIngress") + ) + if resource["kind"] == "RayCluster" and enable_ingress is not False: + name = resource["metadata"]["name"] + print( + f"Forbidden: RayCluster '{name}' has 'enableIngress' set to 'True' or is unset." + ) + return _create_resources(yamls, namespace, api_instance) else: yamls = yaml.load_all(self.app_wrapper_yaml, Loader=yaml.FullLoader) @@ -699,13 +697,6 @@

Module codeflare_sdk.cluster.cluster

plural="rayclusters", name=name, ) - elif resource["kind"] == "Secret": - name = resource["metadata"]["name"] - secret_instance = client.CoreV1Api(api_config_handler()) - secret_instance.delete_namespaced_secret( - namespace=namespace, - name=name, - ) def _create_resources(yamls, namespace: str, api_instance: client.CustomObjectsApi): @@ -718,12 +709,6 @@

Module codeflare_sdk.cluster.cluster

plural="rayclusters", body=resource, ) - elif resource["kind"] == "Secret": - secret_instance = client.CoreV1Api(api_config_handler()) - secret_instance.create_namespaced_secret( - namespace=namespace, - body=resource, - ) def _check_aw_exists(name: str, namespace: str) -> bool: @@ -1185,7 +1170,6 @@

Classes

if self._job_submission_client: return self._job_submission_client if is_openshift_cluster(): - print(k8client.configuration.get_api_key_with_prefix("authorization")) self._job_submission_client = JobSubmissionClient( self.cluster_dashboard_uri(), headers=self._client_headers, @@ -1276,7 +1260,6 @@

Classes

mcad = self.config.mcad instance_types = self.config.machine_types env = self.config.envs - local_interactive = self.config.local_interactive image_pull_secrets = self.config.image_pull_secrets dispatch_priority = self.config.dispatch_priority write_to_file = self.config.write_to_file @@ -1300,7 +1283,6 @@

Classes

mcad=mcad, instance_types=instance_types, env=env, - local_interactive=local_interactive, image_pull_secrets=image_pull_secrets, dispatch_priority=dispatch_priority, priority_val=priority_val, @@ -1576,13 +1558,6 @@

Classes

verify_tls=True, ): config_check() - if ( - rc["metadata"]["annotations"]["sdk.codeflare.dev/local_interactive"] - == "True" - ): - local_interactive = True - else: - local_interactive = False machine_types = ( rc["metadata"]["labels"]["orderedinstance"].split("_") if "orderedinstance" in rc["metadata"]["labels"] @@ -1623,7 +1598,6 @@

Classes

image=rc["spec"]["workerGroupSpecs"][0]["template"]["spec"]["containers"][ 0 ]["image"], - local_interactive=local_interactive, mcad=mcad, write_to_file=write_to_file, verify_tls=verify_tls, @@ -1631,18 +1605,27 @@

Classes

return Cluster(cluster_config) def local_client_url(self): - if self.config.local_interactive == True: - ingress_domain = _get_ingress_domain(self) - return f"ray://{ingress_domain}" - else: - return "None" + ingress_domain = _get_ingress_domain(self) + return f"ray://{ingress_domain}" def _component_resources_up( self, namespace: str, api_instance: client.CustomObjectsApi ): if self.config.write_to_file: with open(self.app_wrapper_yaml) as f: - yamls = yaml.load_all(f, Loader=yaml.FullLoader) + yamls = list(yaml.load_all(f, Loader=yaml.FullLoader)) + for resource in yamls: + enable_ingress = ( + resource.get("spec", {}) + .get("headGroupSpec", {}) + .get("enableIngress") + ) + if resource["kind"] == "RayCluster" and enable_ingress is not False: + name = resource["metadata"]["name"] + print( + f"Forbidden: RayCluster '{name}' has 'enableIngress' set to 'True' or is unset." + ) + return _create_resources(yamls, namespace, api_instance) else: yamls = yaml.load_all(self.app_wrapper_yaml, Loader=yaml.FullLoader) @@ -1675,7 +1658,6 @@

Instance variables

if self._job_submission_client: return self._job_submission_client if is_openshift_cluster(): - print(k8client.configuration.get_api_key_with_prefix("authorization")) self._job_submission_client = JobSubmissionClient( self.cluster_dashboard_uri(), headers=self._client_headers, @@ -1824,7 +1806,6 @@

Methods

mcad = self.config.mcad instance_types = self.config.machine_types env = self.config.envs - local_interactive = self.config.local_interactive image_pull_secrets = self.config.image_pull_secrets dispatch_priority = self.config.dispatch_priority write_to_file = self.config.write_to_file @@ -1848,7 +1829,6 @@

Methods

mcad=mcad, instance_types=instance_types, env=env, - local_interactive=local_interactive, image_pull_secrets=image_pull_secrets, dispatch_priority=dispatch_priority, priority_val=priority_val, @@ -1953,13 +1933,6 @@

Methods

verify_tls=True, ): config_check() - if ( - rc["metadata"]["annotations"]["sdk.codeflare.dev/local_interactive"] - == "True" - ): - local_interactive = True - else: - local_interactive = False machine_types = ( rc["metadata"]["labels"]["orderedinstance"].split("_") if "orderedinstance" in rc["metadata"]["labels"] @@ -2000,7 +1973,6 @@

Methods

image=rc["spec"]["workerGroupSpecs"][0]["template"]["spec"]["containers"][ 0 ]["image"], - local_interactive=local_interactive, mcad=mcad, write_to_file=write_to_file, verify_tls=verify_tls, @@ -2092,11 +2064,8 @@

Methods

Expand source code
def local_client_url(self):
-    if self.config.local_interactive == True:
-        ingress_domain = _get_ingress_domain(self)
-        return f"ray://{ingress_domain}"
-    else:
-        return "None"
+ ingress_domain = _get_ingress_domain(self) + return f"ray://{ingress_domain}"
diff --git a/docs/detailed-documentation/cluster/config.html b/docs/detailed-documentation/cluster/config.html index 72f0e3da..c7b9ccfc 100644 --- a/docs/detailed-documentation/cluster/config.html +++ b/docs/detailed-documentation/cluster/config.html @@ -81,7 +81,6 @@

Module codeflare_sdk.cluster.config

mcad: bool = False envs: dict = field(default_factory=dict) image: str = "" - local_interactive: bool = False image_pull_secrets: list = field(default_factory=list) dispatch_priority: str = None write_to_file: bool = False @@ -107,7 +106,7 @@

Classes

class ClusterConfiguration -(name: str, namespace: str = None, head_info: list = <factory>, head_cpus: int = 2, head_memory: int = 8, head_gpus: int = 0, machine_types: list = <factory>, min_cpus: int = 1, max_cpus: int = 1, num_workers: int = 1, min_memory: int = 2, max_memory: int = 2, num_gpus: int = 0, template: str = '/home/runner/work/codeflare-sdk/codeflare-sdk/src/codeflare_sdk/templates/base-template.yaml', instascale: bool = False, mcad: bool = False, envs: dict = <factory>, image: str = '', local_interactive: bool = False, image_pull_secrets: list = <factory>, dispatch_priority: str = None, write_to_file: bool = False, verify_tls: bool = True, local_queue: str = None) +(name: str, namespace: str = None, head_info: list = <factory>, head_cpus: int = 2, head_memory: int = 8, head_gpus: int = 0, machine_types: list = <factory>, min_cpus: int = 1, max_cpus: int = 1, num_workers: int = 1, min_memory: int = 2, max_memory: int = 2, num_gpus: int = 0, template: str = '/home/runner/work/codeflare-sdk/codeflare-sdk/src/codeflare_sdk/templates/base-template.yaml', instascale: bool = False, mcad: bool = False, envs: dict = <factory>, image: str = '', image_pull_secrets: list = <factory>, dispatch_priority: str = None, write_to_file: bool = False, verify_tls: bool = True, local_queue: str = None)

This dataclass is used to specify resource requirements and other details, and @@ -140,7 +139,6 @@

Classes

mcad: bool = False envs: dict = field(default_factory=dict) image: str = "" - local_interactive: bool = False image_pull_secrets: list = field(default_factory=list) dispatch_priority: str = None write_to_file: bool = False @@ -192,10 +190,6 @@

Class variables

-
var local_interactive : bool
-
-
-
var local_queue : str
@@ -282,7 +276,6 @@

image
  • image_pull_secrets
  • instascale
  • -
  • local_interactive
  • local_queue
  • machine_types
  • max_cpus
  • diff --git a/docs/detailed-documentation/utils/generate_yaml.html b/docs/detailed-documentation/utils/generate_yaml.html index 452bea97..fc714780 100644 --- a/docs/detailed-documentation/utils/generate_yaml.html +++ b/docs/detailed-documentation/utils/generate_yaml.html @@ -116,20 +116,6 @@

    Module codeflare_sdk.utils.generate_yaml

    lower_meta["labels"]["workload.codeflare.dev/appwrapper"] = appwrapper_name lower_meta["name"] = cluster_name lower_meta["namespace"] = namespace - lower_spec = item.get("generictemplate", {}).get("spec") - if is_openshift_cluster(): - cookie_secret_env_var = { - "name": "COOKIE_SECRET", - "valueFrom": { - "secretKeyRef": { - "key": "cookie_secret", - "name": f"{cluster_name}-oauth-config", - } - }, - } - lower_spec["headGroupSpec"]["template"]["spec"]["containers"][0]["env"].append( - cookie_secret_env_var - ) def update_labels(yaml, instascale, instance_types): @@ -311,106 +297,10 @@

    Module codeflare_sdk.utils.generate_yaml

    update_resources(spec, min_cpu, max_cpu, min_memory, max_memory, gpu) -def update_ca_secret(ca_secret_item, cluster_name, namespace): - from . import generate_cert - - metadata = ca_secret_item.get("generictemplate", {}).get("metadata") - metadata["name"] = f"ca-secret-{cluster_name}" - metadata["namespace"] = namespace - metadata["labels"]["odh-ray-cluster-service"] = f"{cluster_name}-head-svc" - data = ca_secret_item.get("generictemplate", {}).get("data") - data["ca.key"], data["ca.crt"] = generate_cert.generate_ca_cert(365) - - -def enable_local_interactive(resources, cluster_name, namespace): # pragma: no cover - from ..cluster.cluster import _get_ingress_domain - - ca_secret_item = resources["resources"].get("GenericItems")[1] - item = resources["resources"].get("GenericItems")[0] - update_ca_secret(ca_secret_item, cluster_name, namespace) - # update_ca_secret_volumes - item["generictemplate"]["spec"]["headGroupSpec"]["template"]["spec"]["volumes"][0][ - "secret" - ]["secretName"] = f"ca-secret-{cluster_name}" - item["generictemplate"]["spec"]["workerGroupSpecs"][0]["template"]["spec"][ - "volumes" - ][0]["secret"]["secretName"] = f"ca-secret-{cluster_name}" - # update_tls_env - item["generictemplate"]["spec"]["headGroupSpec"]["template"]["spec"]["containers"][ - 0 - ]["env"][1]["value"] = "1" - item["generictemplate"]["spec"]["workerGroupSpecs"][0]["template"]["spec"][ - "containers" - ][0]["env"][1]["value"] = "1" - # update_init_container - command = item["generictemplate"]["spec"]["headGroupSpec"]["template"]["spec"][ - "initContainers" - ][0].get("command")[2] - - command = command.replace("deployment-name", cluster_name) - - domain = "" ## FIX - We can't retrieve ingress domain - move init container to CFO - - command = command.replace("server-name", domain) - item["generictemplate"]["metadata"]["annotations"][ - "sdk.codeflare.dev/local_interactive" - ] = "True" - - item["generictemplate"]["spec"]["headGroupSpec"]["template"]["spec"][ - "initContainers" - ][0].get("command")[2] = command - - def del_from_list_by_name(l: list, target: typing.List[str]) -> list: return [x for x in l if x["name"] not in target] -def disable_raycluster_tls(resources): - generic_template_spec = resources["GenericItems"][0]["generictemplate"]["spec"] - - headGroupTemplateSpec = generic_template_spec["headGroupSpec"]["template"]["spec"] - headGroupTemplateSpec["volumes"] = del_from_list_by_name( - headGroupTemplateSpec.get("volumes", []), - ["ca-vol", "server-cert"], - ) - - c: dict - for c in generic_template_spec["headGroupSpec"]["template"]["spec"]["containers"]: - c["volumeMounts"] = del_from_list_by_name( - c.get("volumeMounts", []), ["ca-vol", "server-cert"] - ) - - if "initContainers" in generic_template_spec["headGroupSpec"]["template"]["spec"]: - del generic_template_spec["headGroupSpec"]["template"]["spec"]["initContainers"] - - for workerGroup in generic_template_spec.get("workerGroupSpecs", []): - workerGroupSpec = workerGroup["template"]["spec"] - workerGroupSpec["volumes"] = del_from_list_by_name( - workerGroupSpec.get("volumes", []), - ["ca-vol", "server-cert"], - ) - for c in workerGroup["template"]["spec"].get("containers", []): - c["volumeMounts"] = del_from_list_by_name( - c.get("volumeMounts", []), ["ca-vol", "server-cert"] - ) - - del generic_template_spec["workerGroupSpecs"][0]["template"]["spec"][ - "initContainers" - ] - - updated_items = [] - for i in resources["GenericItems"][:]: - if "rayclient-deployment-ingress" in i["generictemplate"]["metadata"]["name"]: - continue - if "rayclient-deployment-route" in i["generictemplate"]["metadata"]["name"]: - continue - if "ca-secret-deployment-name" in i["generictemplate"]["metadata"]["name"]: - continue - updated_items.append(i) - - resources["GenericItems"] = updated_items - - def write_user_appwrapper(user_yaml, output_file_name): # Create the directory if it doesn't exist directory_path = os.path.dirname(output_file_name) @@ -423,75 +313,6 @@

    Module codeflare_sdk.utils.generate_yaml

    print(f"Written to: {output_file_name}") -def enable_openshift_oauth(user_yaml, cluster_name, namespace): - config_check() - k8_client = api_config_handler() or client.ApiClient() - tls_mount_location = "/etc/tls/private" - oauth_port = 8443 - oauth_sa_name = f"{cluster_name}-oauth-proxy" - tls_secret_name = f"{cluster_name}-proxy-tls-secret" - tls_volume_name = "proxy-tls-secret" - port_name = "oauth-proxy" - oauth_sidecar = _create_oauth_sidecar_object( - namespace, - tls_mount_location, - oauth_port, - oauth_sa_name, - tls_volume_name, - port_name, - ) - tls_secret_volume = client.V1Volume( - name=tls_volume_name, - secret=client.V1SecretVolumeSource(secret_name=tls_secret_name), - ) - # allows for setting value of Cluster object when initializing object from an existing AppWrapper on cluster - user_yaml["metadata"]["annotations"] = user_yaml["metadata"].get("annotations", {}) - ray_headgroup_pod = user_yaml["spec"]["resources"]["GenericItems"][0][ - "generictemplate" - ]["spec"]["headGroupSpec"]["template"]["spec"] - ray_headgroup_pod["serviceAccount"] = oauth_sa_name - ray_headgroup_pod["volumes"] = ray_headgroup_pod.get("volumes", []) - - # we use a generic api client here so that the serialization function doesn't need to be mocked for unit tests - ray_headgroup_pod["volumes"].append( - client.ApiClient().sanitize_for_serialization(tls_secret_volume) - ) - ray_headgroup_pod["containers"].append( - client.ApiClient().sanitize_for_serialization(oauth_sidecar) - ) - - -def _create_oauth_sidecar_object( - namespace: str, - tls_mount_location: str, - oauth_port: int, - oauth_sa_name: str, - tls_volume_name: str, - port_name: str, -) -> client.V1Container: - return client.V1Container( - args=[ - f"--https-address=:{oauth_port}", - "--provider=openshift", - f"--openshift-service-account={oauth_sa_name}", - "--upstream=http://localhost:8265", - f"--tls-cert={tls_mount_location}/tls.crt", - f"--tls-key={tls_mount_location}/tls.key", - "--cookie-secret=$(COOKIE_SECRET)", - f'--openshift-delegate-urls={{"/":{{"resource":"pods","namespace":"{namespace}","verb":"get"}}}}', - ], - image="registry.redhat.io/openshift4/ose-oauth-proxy@sha256:1ea6a01bf3e63cdcf125c6064cbd4a4a270deaf0f157b3eabb78f60556840366", - name="oauth-proxy", - ports=[client.V1ContainerPort(container_port=oauth_port, name=port_name)], - resources=client.V1ResourceRequirements(limits=None, requests=None), - volume_mounts=[ - client.V1VolumeMount( - mount_path=tls_mount_location, name=tls_volume_name, read_only=True - ) - ], - ) - - def get_default_kueue_name(namespace: str): # If the local queue is set, use it. Otherwise, try to use the default queue. try: @@ -599,7 +420,6 @@

    Module codeflare_sdk.utils.generate_yaml

    mcad: bool, instance_types: list, env, - local_interactive: bool, image_pull_secrets: list, dispatch_priority: str, priority_val: int, @@ -650,14 +470,6 @@

    Module codeflare_sdk.utils.generate_yaml

    head_gpus, ) - if local_interactive: - enable_local_interactive(resources, cluster_name, namespace) - else: - disable_raycluster_tls(resources["resources"]) - - if is_openshift_cluster(): - enable_openshift_oauth(user_yaml, cluster_name, namespace) - directory_path = os.path.expanduser("~/.codeflare/resources/") outfile = os.path.join(directory_path, appwrapper_name + ".yaml") @@ -695,156 +507,6 @@

    Functions

    return [x for x in l if x["name"] not in target]
    -
    -def disable_raycluster_tls(resources) -
    -
    -
    -
    - -Expand source code - -
    def disable_raycluster_tls(resources):
    -    generic_template_spec = resources["GenericItems"][0]["generictemplate"]["spec"]
    -
    -    headGroupTemplateSpec = generic_template_spec["headGroupSpec"]["template"]["spec"]
    -    headGroupTemplateSpec["volumes"] = del_from_list_by_name(
    -        headGroupTemplateSpec.get("volumes", []),
    -        ["ca-vol", "server-cert"],
    -    )
    -
    -    c: dict
    -    for c in generic_template_spec["headGroupSpec"]["template"]["spec"]["containers"]:
    -        c["volumeMounts"] = del_from_list_by_name(
    -            c.get("volumeMounts", []), ["ca-vol", "server-cert"]
    -        )
    -
    -    if "initContainers" in generic_template_spec["headGroupSpec"]["template"]["spec"]:
    -        del generic_template_spec["headGroupSpec"]["template"]["spec"]["initContainers"]
    -
    -    for workerGroup in generic_template_spec.get("workerGroupSpecs", []):
    -        workerGroupSpec = workerGroup["template"]["spec"]
    -        workerGroupSpec["volumes"] = del_from_list_by_name(
    -            workerGroupSpec.get("volumes", []),
    -            ["ca-vol", "server-cert"],
    -        )
    -        for c in workerGroup["template"]["spec"].get("containers", []):
    -            c["volumeMounts"] = del_from_list_by_name(
    -                c.get("volumeMounts", []), ["ca-vol", "server-cert"]
    -            )
    -
    -    del generic_template_spec["workerGroupSpecs"][0]["template"]["spec"][
    -        "initContainers"
    -    ]
    -
    -    updated_items = []
    -    for i in resources["GenericItems"][:]:
    -        if "rayclient-deployment-ingress" in i["generictemplate"]["metadata"]["name"]:
    -            continue
    -        if "rayclient-deployment-route" in i["generictemplate"]["metadata"]["name"]:
    -            continue
    -        if "ca-secret-deployment-name" in i["generictemplate"]["metadata"]["name"]:
    -            continue
    -        updated_items.append(i)
    -
    -    resources["GenericItems"] = updated_items
    -
    -
    -
    -def enable_local_interactive(resources, cluster_name, namespace) -
    -
    -
    -
    - -Expand source code - -
    def enable_local_interactive(resources, cluster_name, namespace):  # pragma: no cover
    -    from ..cluster.cluster import _get_ingress_domain
    -
    -    ca_secret_item = resources["resources"].get("GenericItems")[1]
    -    item = resources["resources"].get("GenericItems")[0]
    -    update_ca_secret(ca_secret_item, cluster_name, namespace)
    -    # update_ca_secret_volumes
    -    item["generictemplate"]["spec"]["headGroupSpec"]["template"]["spec"]["volumes"][0][
    -        "secret"
    -    ]["secretName"] = f"ca-secret-{cluster_name}"
    -    item["generictemplate"]["spec"]["workerGroupSpecs"][0]["template"]["spec"][
    -        "volumes"
    -    ][0]["secret"]["secretName"] = f"ca-secret-{cluster_name}"
    -    # update_tls_env
    -    item["generictemplate"]["spec"]["headGroupSpec"]["template"]["spec"]["containers"][
    -        0
    -    ]["env"][1]["value"] = "1"
    -    item["generictemplate"]["spec"]["workerGroupSpecs"][0]["template"]["spec"][
    -        "containers"
    -    ][0]["env"][1]["value"] = "1"
    -    # update_init_container
    -    command = item["generictemplate"]["spec"]["headGroupSpec"]["template"]["spec"][
    -        "initContainers"
    -    ][0].get("command")[2]
    -
    -    command = command.replace("deployment-name", cluster_name)
    -
    -    domain = ""  ## FIX - We can't retrieve ingress domain - move init container to CFO
    -
    -    command = command.replace("server-name", domain)
    -    item["generictemplate"]["metadata"]["annotations"][
    -        "sdk.codeflare.dev/local_interactive"
    -    ] = "True"
    -
    -    item["generictemplate"]["spec"]["headGroupSpec"]["template"]["spec"][
    -        "initContainers"
    -    ][0].get("command")[2] = command
    -
    -
    -
    -def enable_openshift_oauth(user_yaml, cluster_name, namespace) -
    -
    -
    -
    - -Expand source code - -
    def enable_openshift_oauth(user_yaml, cluster_name, namespace):
    -    config_check()
    -    k8_client = api_config_handler() or client.ApiClient()
    -    tls_mount_location = "/etc/tls/private"
    -    oauth_port = 8443
    -    oauth_sa_name = f"{cluster_name}-oauth-proxy"
    -    tls_secret_name = f"{cluster_name}-proxy-tls-secret"
    -    tls_volume_name = "proxy-tls-secret"
    -    port_name = "oauth-proxy"
    -    oauth_sidecar = _create_oauth_sidecar_object(
    -        namespace,
    -        tls_mount_location,
    -        oauth_port,
    -        oauth_sa_name,
    -        tls_volume_name,
    -        port_name,
    -    )
    -    tls_secret_volume = client.V1Volume(
    -        name=tls_volume_name,
    -        secret=client.V1SecretVolumeSource(secret_name=tls_secret_name),
    -    )
    -    # allows for setting value of Cluster object when initializing object from an existing AppWrapper on cluster
    -    user_yaml["metadata"]["annotations"] = user_yaml["metadata"].get("annotations", {})
    -    ray_headgroup_pod = user_yaml["spec"]["resources"]["GenericItems"][0][
    -        "generictemplate"
    -    ]["spec"]["headGroupSpec"]["template"]["spec"]
    -    ray_headgroup_pod["serviceAccount"] = oauth_sa_name
    -    ray_headgroup_pod["volumes"] = ray_headgroup_pod.get("volumes", [])
    -
    -    # we use a generic api client here so that the serialization function doesn't need to be mocked for unit tests
    -    ray_headgroup_pod["volumes"].append(
    -        client.ApiClient().sanitize_for_serialization(tls_secret_volume)
    -    )
    -    ray_headgroup_pod["containers"].append(
    -        client.ApiClient().sanitize_for_serialization(oauth_sidecar)
    -    )
    -
    -
    def gen_names(name)
    @@ -865,7 +527,7 @@

    Functions

    -def generate_appwrapper(name: str, namespace: str, head_cpus: int, head_memory: int, head_gpus: int, min_cpu: int, max_cpu: int, min_memory: int, max_memory: int, gpu: int, workers: int, template: str, image: str, instascale: bool, mcad: bool, instance_types: list, env, local_interactive: bool, image_pull_secrets: list, dispatch_priority: str, priority_val: int, write_to_file: bool, verify_tls: bool, local_queue: Optional[str]) +def generate_appwrapper(name: str, namespace: str, head_cpus: int, head_memory: int, head_gpus: int, min_cpu: int, max_cpu: int, min_memory: int, max_memory: int, gpu: int, workers: int, template: str, image: str, instascale: bool, mcad: bool, instance_types: list, env, image_pull_secrets: list, dispatch_priority: str, priority_val: int, write_to_file: bool, verify_tls: bool, local_queue: Optional[str])
    @@ -891,7 +553,6 @@

    Functions

    mcad: bool, instance_types: list, env, - local_interactive: bool, image_pull_secrets: list, dispatch_priority: str, priority_val: int, @@ -942,14 +603,6 @@

    Functions

    head_gpus, ) - if local_interactive: - enable_local_interactive(resources, cluster_name, namespace) - else: - disable_raycluster_tls(resources["resources"]) - - if is_openshift_cluster(): - enable_openshift_oauth(user_yaml, cluster_name, namespace) - directory_path = os.path.expanduser("~/.codeflare/resources/") outfile = os.path.join(directory_path, appwrapper_name + ".yaml") @@ -1137,26 +790,6 @@

    Functions

    spec.pop("affinity")
    -
    -def update_ca_secret(ca_secret_item, cluster_name, namespace) -
    -
    -
    -
    - -Expand source code - -
    def update_ca_secret(ca_secret_item, cluster_name, namespace):
    -    from . import generate_cert
    -
    -    metadata = ca_secret_item.get("generictemplate", {}).get("metadata")
    -    metadata["name"] = f"ca-secret-{cluster_name}"
    -    metadata["namespace"] = namespace
    -    metadata["labels"]["odh-ray-cluster-service"] = f"{cluster_name}-head-svc"
    -    data = ca_secret_item.get("generictemplate", {}).get("data")
    -    data["ca.key"], data["ca.crt"] = generate_cert.generate_ca_cert(365)
    -
    -
    def update_custompodresources(item, min_cpu, max_cpu, min_memory, max_memory, gpu, workers, head_cpus, head_memory, head_gpus)
    @@ -1307,21 +940,7 @@

    Functions

    lower_meta = item.get("generictemplate", {}).get("metadata") lower_meta["labels"]["workload.codeflare.dev/appwrapper"] = appwrapper_name lower_meta["name"] = cluster_name - lower_meta["namespace"] = namespace - lower_spec = item.get("generictemplate", {}).get("spec") - if is_openshift_cluster(): - cookie_secret_env_var = { - "name": "COOKIE_SECRET", - "valueFrom": { - "secretKeyRef": { - "key": "cookie_secret", - "name": f"{cluster_name}-oauth-config", - } - }, - } - lower_spec["headGroupSpec"]["template"]["spec"]["containers"][0]["env"].append( - cookie_secret_env_var - ) + lower_meta["namespace"] = namespace
    @@ -1506,9 +1125,6 @@

    Index

  • Functions