Skip to content

Commit aeef651

Browse files
committed
Also must add local_queue label to appwrappers
1 parent 43b105a commit aeef651

File tree

4 files changed

+29
-10
lines changed

4 files changed

+29
-10
lines changed

src/codeflare_sdk/utils/generate_yaml.py

+15-10
Original file line numberDiff line numberDiff line change
@@ -208,11 +208,16 @@ def get_default_kueue_name(namespace: str):
208208
)
209209

210210

211+
def add_queue_label(item: dict, namespace: str, local_queue: Optional[str]):
212+
lq_name = local_queue or get_default_kueue_name(namespace)
213+
if not "labels" in item["metadata"]:
214+
item["metadata"]["labels"] = {}
215+
item["metadata"]["labels"].update({"kueue.x-k8s.io/queue-name": lq_name})
216+
217+
211218
def write_components(
212219
user_yaml: dict,
213220
output_file_name: str,
214-
namespace: str,
215-
local_queue: Optional[str],
216221
labels: dict,
217222
):
218223
# Create the directory if it doesn't exist
@@ -222,13 +227,11 @@ def write_components(
222227

223228
components = user_yaml.get("spec", "resources").get("components")
224229
open(output_file_name, "w").close()
225-
lq_name = local_queue or get_default_kueue_name(namespace)
226230
cluster_labels = labels
227231
with open(output_file_name, "a") as outfile:
228232
for component in components:
229233
if "template" in component:
230234
labels = component["template"]["metadata"]["labels"]
231-
labels.update({"kueue.x-k8s.io/queue-name": lq_name})
232235
labels.update(cluster_labels)
233236
outfile.write("---\n")
234237
yaml.dump(component["template"], outfile, default_flow_style=False)
@@ -238,18 +241,14 @@ def write_components(
238241
def load_components(
239242
user_yaml: dict,
240243
name: str,
241-
namespace: str,
242-
local_queue: Optional[str],
243244
labels: dict,
244245
):
245246
component_list = []
246247
components = user_yaml.get("spec", "resources").get("components")
247-
lq_name = local_queue or get_default_kueue_name(namespace)
248248
cluster_labels = labels
249249
for component in components:
250250
if "template" in component:
251251
labels = component["template"]["metadata"]["labels"]
252-
labels.update({"kueue.x-k8s.io/queue-name": lq_name})
253252
labels.update(cluster_labels)
254253
component_list.append(component["template"])
255254

@@ -318,18 +317,24 @@ def generate_appwrapper(
318317
head_gpus,
319318
)
320319

320+
if appwrapper:
321+
add_queue_label(user_yaml, namespace, local_queue)
322+
else:
323+
if "template" in item:
324+
add_queue_label(item["template"], namespace, local_queue)
325+
321326
directory_path = os.path.expanduser("~/.codeflare/resources/")
322327
outfile = os.path.join(directory_path, appwrapper_name + ".yaml")
323328

324329
if write_to_file:
325330
if appwrapper:
326331
write_user_appwrapper(user_yaml, outfile)
327332
else:
328-
write_components(user_yaml, outfile, namespace, local_queue, labels)
333+
write_components(user_yaml, outfile, labels)
329334
return outfile
330335
else:
331336
if appwrapper:
332337
user_yaml = load_appwrapper(user_yaml, name)
333338
else:
334-
user_yaml = load_components(user_yaml, name, namespace, local_queue, labels)
339+
user_yaml = load_components(user_yaml, name, labels)
335340
return user_yaml

tests/test-case.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
apiVersion: workload.codeflare.dev/v1beta2
22
kind: AppWrapper
33
metadata:
4+
labels:
5+
kueue.x-k8s.io/queue-name: local-queue-default
46
name: unit-test-cluster
57
namespace: ns
68
spec:

tests/test-default-appwrapper.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
apiVersion: workload.codeflare.dev/v1beta2
22
kind: AppWrapper
33
metadata:
4+
labels:
5+
kueue.x-k8s.io/queue-name: local-queue-default
46
name: unit-test-default-cluster
57
namespace: opendatahub
68
spec:

tests/unit_test.py

+10
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,12 @@ def test_config_creation():
258258

259259

260260
def test_cluster_creation(mocker):
261+
# Create AppWrapper containing a Ray Cluster with no local queue specified
261262
mocker.patch("kubernetes.client.ApisApi.get_api_versions")
263+
mocker.patch(
264+
"kubernetes.client.CustomObjectsApi.list_namespaced_custom_object",
265+
return_value=get_local_queue("kueue.x-k8s.io", "v1beta1", "ns", "localqueues"),
266+
)
262267
cluster = createClusterWithConfig(mocker)
263268
assert cluster.app_wrapper_yaml == f"{aw_dir}unit-test-cluster.yaml"
264269
assert cluster.app_wrapper_name == "unit-test-cluster"
@@ -390,6 +395,10 @@ def test_default_cluster_creation(mocker):
390395
"codeflare_sdk.cluster.cluster.get_current_namespace",
391396
return_value="opendatahub",
392397
)
398+
mocker.patch(
399+
"kubernetes.client.CustomObjectsApi.list_namespaced_custom_object",
400+
return_value=get_local_queue("kueue.x-k8s.io", "v1beta1", "ns", "localqueues"),
401+
)
393402
default_config = ClusterConfiguration(
394403
name="unit-test-default-cluster",
395404
image="quay.io/project-codeflare/ray:latest-py39-cu118",
@@ -2314,6 +2323,7 @@ def test_wait_ready(mocker, capsys):
23142323
image="quay.io/project-codeflare/ray:latest-py39-cu118",
23152324
write_to_file=True,
23162325
appwrapper=True,
2326+
local_queue="local-queue-default",
23172327
)
23182328
)
23192329
try:

0 commit comments

Comments
 (0)