Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 7a1c7cc

Browse files
committedMar 19, 2024
Remove creation of OAuth resources/logic and add annotation
1 parent 171e91a commit 7a1c7cc

File tree

5 files changed

+18
-317
lines changed

5 files changed

+18
-317
lines changed
 

‎src/codeflare_sdk/cluster/cluster.py

+1-13
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,7 @@
3333
)
3434
from ..utils.kube_api_helpers import _kube_api_error_handling
3535
from ..utils.generate_yaml import is_openshift_cluster
36-
from ..utils.openshift_oauth import (
37-
create_openshift_oauth_objects,
38-
delete_openshift_oauth_objects,
39-
)
36+
4037
from .config import ClusterConfiguration
4138
from .model import (
4239
AppWrapper,
@@ -226,10 +223,6 @@ def up(self):
226223
the MCAD queue.
227224
"""
228225
namespace = self.config.namespace
229-
if self.config.openshift_oauth:
230-
create_openshift_oauth_objects(
231-
cluster_name=self.config.name, namespace=namespace
232-
)
233226

234227
try:
235228
config_check()
@@ -281,11 +274,6 @@ def down(self):
281274
except Exception as e: # pragma: no cover
282275
return _kube_api_error_handling(e)
283276

284-
if self.config.openshift_oauth:
285-
delete_openshift_oauth_objects(
286-
cluster_name=self.config.name, namespace=namespace
287-
)
288-
289277
def status(
290278
self, print_to_console: bool = True
291279
) -> Tuple[CodeFlareClusterStatus, bool]:

‎src/codeflare_sdk/templates/base-template.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ spec:
4040
apiVersion: ray.io/v1
4141
kind: RayCluster
4242
metadata:
43+
annotations:
44+
codeflare.dev/oauth: 'False'
4345
labels:
4446
workload.codeflare.dev/appwrapper: "aw-kuberay"
4547
controller-tools.k8s.io: "1.0"
@@ -169,6 +171,12 @@ spec:
169171
- mountPath: /etc/ssl/certs/odh-ca-bundle.crt
170172
name: odh-ca-cert
171173
subPath: odh-ca-bundle.crt
174+
env:
175+
- name: COOKIE_SECRET
176+
valueFrom:
177+
secretKeyRef:
178+
name: jobtest-oauth-config
179+
key: cookie_secret
172180
initContainers:
173181
- command:
174182
- sh

‎src/codeflare_sdk/utils/generate_yaml.py

+9-2
Original file line numberDiff line numberDiff line change
@@ -219,12 +219,17 @@ def update_rayclient_ingress(
219219
spec["rules"][0]["host"] = f"rayclient-{cluster_name}-{namespace}.{ingress_domain}"
220220

221221

222-
def update_names(yaml, item, appwrapper_name, cluster_name, namespace):
222+
def update_names(yaml, item, appwrapper_name, cluster_name, namespace, openshift_oauth):
223223
metadata = yaml.get("metadata")
224224
metadata["name"] = appwrapper_name
225225
metadata["namespace"] = namespace
226226
lower_meta = item.get("generictemplate", {}).get("metadata")
227227
lower_meta["labels"]["workload.codeflare.dev/appwrapper"] = appwrapper_name
228+
lower_meta["annotations"]["codeflare.dev/oauth"] = f"{openshift_oauth}"
229+
lower_spec = item.get("generictemplate", {}).get("spec")
230+
lower_spec["headGroupSpec"]["template"]["spec"]["containers"][0]["env"][-1][
231+
"valueFrom"
232+
]["secretKeyRef"]["name"] = f"{cluster_name}-oauth-config"
228233
lower_meta["name"] = cluster_name
229234
lower_meta["namespace"] = namespace
230235

@@ -694,7 +699,9 @@ def generate_appwrapper(
694699
item = resources["resources"].get("GenericItems")[0]
695700
ingress_item = resources["resources"].get("GenericItems")[1]
696701
route_item = resources["resources"].get("GenericItems")[2]
697-
update_names(user_yaml, item, appwrapper_name, cluster_name, namespace)
702+
update_names(
703+
user_yaml, item, appwrapper_name, cluster_name, namespace, openshift_oauth
704+
)
698705
update_labels(user_yaml, instascale, instance_types)
699706
update_priority(user_yaml, item, dispatch_priority, priority_val)
700707
update_custompodresources(

‎src/codeflare_sdk/utils/openshift_oauth.py

-199
This file was deleted.

‎tests/unit_test.py

-103
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
get_cluster,
4040
_app_wrapper_status,
4141
_ray_cluster_status,
42-
_get_ingress_domain,
4342
get_ingress_domain_from_client,
4443
)
4544
from codeflare_sdk.cluster.auth import (
@@ -48,10 +47,6 @@
4847
KubeConfigFileAuthentication,
4948
config_check,
5049
)
51-
from codeflare_sdk.utils.openshift_oauth import (
52-
create_openshift_oauth_objects,
53-
delete_openshift_oauth_objects,
54-
)
5550
from codeflare_sdk.utils.pretty_print import (
5651
print_no_resources_found,
5752
print_app_wrappers_status,
@@ -92,7 +87,6 @@
9287
read_template,
9388
enable_local_interactive,
9489
)
95-
import codeflare_sdk.utils.openshift_oauth as sdk_oauth
9690

9791
import openshift
9892
from openshift.selector import Selector
@@ -114,7 +108,6 @@
114108

115109
def mock_routes_api(mocker):
116110
mocker.patch.object(
117-
sdk_oauth,
118111
"_route_api_getter",
119112
return_value=MagicMock(
120113
resources=MagicMock(
@@ -589,24 +582,6 @@ def test_rc_status(mocker):
589582
assert rc == None
590583

591584

592-
def test_delete_openshift_oauth_objects(mocker):
593-
mocker.patch.object(client.CoreV1Api, "delete_namespaced_service_account")
594-
mocker.patch.object(client.CoreV1Api, "delete_namespaced_service")
595-
mocker.patch.object(client.NetworkingV1Api, "delete_namespaced_ingress")
596-
mocker.patch.object(client.RbacAuthorizationV1Api, "delete_cluster_role_binding")
597-
mock_routes_api(mocker)
598-
delete_openshift_oauth_objects("test-cluster", "test-namespace")
599-
client.CoreV1Api.delete_namespaced_service_account.assert_called_with(
600-
name="test-cluster-oauth-proxy", namespace="test-namespace"
601-
)
602-
client.CoreV1Api.delete_namespaced_service.assert_called_with(
603-
name="test-cluster-oauth", namespace="test-namespace"
604-
)
605-
client.RbacAuthorizationV1Api.delete_cluster_role_binding.assert_called_with(
606-
name="test-cluster-rb"
607-
)
608-
609-
610585
def test_cluster_uris(mocker):
611586
mocker.patch("kubernetes.client.ApisApi.get_api_versions")
612587
mocker.patch("kubernetes.config.load_kube_config", return_value="ignore")
@@ -2874,84 +2849,6 @@ def test_enable_local_interactive(mocker):
28742849
}
28752850

28762851

2877-
def test_create_openshift_oauth(mocker: MockerFixture):
2878-
create_namespaced_service_account = MagicMock()
2879-
create_cluster_role_binding = MagicMock()
2880-
create_namespaced_service = MagicMock()
2881-
mocker.patch.object(
2882-
client.CoreV1Api,
2883-
"create_namespaced_service_account",
2884-
create_namespaced_service_account,
2885-
)
2886-
mocker.patch.object(
2887-
client.RbacAuthorizationV1Api,
2888-
"create_cluster_role_binding",
2889-
create_cluster_role_binding,
2890-
)
2891-
mocker.patch.object(
2892-
client.CoreV1Api, "create_namespaced_service", create_namespaced_service
2893-
)
2894-
mock_routes_api(mocker)
2895-
create_openshift_oauth_objects("foo", "bar")
2896-
create_ns_sa_args = create_namespaced_service_account.call_args
2897-
create_crb_args = create_cluster_role_binding.call_args
2898-
create_ns_serv_args = create_namespaced_service.call_args
2899-
assert (
2900-
create_ns_sa_args.kwargs["namespace"] == create_ns_serv_args.kwargs["namespace"]
2901-
)
2902-
assert isinstance(create_ns_sa_args.kwargs["body"], client.V1ServiceAccount)
2903-
assert isinstance(create_crb_args.kwargs["body"], client.V1ClusterRoleBinding)
2904-
assert isinstance(create_ns_serv_args.kwargs["body"], client.V1Service)
2905-
2906-
2907-
def test_replace_openshift_oauth(mocker: MockerFixture):
2908-
# not_found_exception = client.ApiException(reason="Conflict")
2909-
create_namespaced_service_account = MagicMock(
2910-
side_effect=client.ApiException(reason="Conflict")
2911-
)
2912-
create_cluster_role_binding = MagicMock(
2913-
side_effect=client.ApiException(reason="Conflict")
2914-
)
2915-
create_namespaced_service = MagicMock(
2916-
side_effect=client.ApiException(reason="Conflict")
2917-
)
2918-
mocker.patch.object(
2919-
client.CoreV1Api,
2920-
"create_namespaced_service_account",
2921-
create_namespaced_service_account,
2922-
)
2923-
mocker.patch.object(
2924-
client.RbacAuthorizationV1Api,
2925-
"create_cluster_role_binding",
2926-
create_cluster_role_binding,
2927-
)
2928-
mocker.patch.object(
2929-
client.CoreV1Api, "create_namespaced_service", create_namespaced_service
2930-
)
2931-
mocker.patch.object(dynamic.ResourceList, "get", return_value=True)
2932-
replace_namespaced_service_account = MagicMock()
2933-
replace_cluster_role_binding = MagicMock()
2934-
replace_namespaced_service = MagicMock()
2935-
mocker.patch.object(
2936-
client.CoreV1Api,
2937-
"replace_namespaced_service_account",
2938-
replace_namespaced_service_account,
2939-
)
2940-
mocker.patch.object(
2941-
client.RbacAuthorizationV1Api,
2942-
"replace_cluster_role_binding",
2943-
replace_cluster_role_binding,
2944-
)
2945-
mocker.patch.object(
2946-
client.CoreV1Api, "replace_namespaced_service", replace_namespaced_service
2947-
)
2948-
mock_routes_api(mocker)
2949-
create_openshift_oauth_objects("foo", "bar")
2950-
replace_namespaced_service_account.assert_called_once()
2951-
replace_cluster_role_binding.assert_called_once()
2952-
replace_namespaced_service.assert_called_once()
2953-
2954-
29552852
def test_gen_app_wrapper_with_oauth(mocker: MockerFixture):
29562853
mocker.patch("kubernetes.client.ApisApi.get_api_versions")
29572854
mocker.patch(

0 commit comments

Comments
 (0)
Please sign in to comment.