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 @@
codeflare_sdk.cluster.clustercodeflare_sdk.cluster.clustercodeflare_sdk.cluster.clustercodeflare_sdk.cluster.clustercodeflare_sdk.cluster.clustercodeflare_sdk.cluster.clustercodeflare_sdk.cluster.clustercodeflare_sdk.cluster.clusterdef 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