Skip to content

Commit c58a35e

Browse files
committed
adding validation for local_queue provided in cluster config
1 parent 9b49b59 commit c58a35e

File tree

1 file changed

+64
-36
lines changed

1 file changed

+64
-36
lines changed

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

+64-36
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,24 @@ def get_default_kueue_name(namespace: str):
308308
)
309309

310310

311+
def local_queue_exists(namespace, local_queue_name: str):
312+
try:
313+
config_check()
314+
api_instance = client.CustomObjectsApi(api_config_handler())
315+
local_queues = api_instance.list_namespaced_custom_object(
316+
group="kueue.x-k8s.io",
317+
version="v1beta1",
318+
namespace=namespace,
319+
plural="localqueues",
320+
)
321+
except Exception as e: # pragma: no cover
322+
return _kube_api_error_handling(e)
323+
for lq in local_queues["items"]:
324+
if lq["metadata"]["name"] == local_queue_name:
325+
return True
326+
return False
327+
328+
311329
def write_components(
312330
user_yaml: dict,
313331
output_file_name: str,
@@ -324,24 +342,29 @@ def write_components(
324342
open(output_file_name, "w").close()
325343
lq_name = local_queue or get_default_kueue_name(namespace)
326344
cluster_labels = labels
327-
with open(output_file_name, "a") as outfile:
328-
for component in components:
329-
if "generictemplate" in component:
330-
if (
331-
"workload.codeflare.dev/appwrapper"
332-
in component["generictemplate"]["metadata"]["labels"]
333-
):
334-
del component["generictemplate"]["metadata"]["labels"][
345+
if local_queue_exists(namespace, lq_name):
346+
with open(output_file_name, "a") as outfile:
347+
for component in components:
348+
if "generictemplate" in component:
349+
if (
335350
"workload.codeflare.dev/appwrapper"
336-
]
337-
labels = component["generictemplate"]["metadata"]["labels"]
338-
labels.update({"kueue.x-k8s.io/queue-name": lq_name})
339-
labels.update(cluster_labels)
340-
outfile.write("---\n")
341-
yaml.dump(
342-
component["generictemplate"], outfile, default_flow_style=False
343-
)
344-
print(f"Written to: {output_file_name}")
351+
in component["generictemplate"]["metadata"]["labels"]
352+
):
353+
del component["generictemplate"]["metadata"]["labels"][
354+
"workload.codeflare.dev/appwrapper"
355+
]
356+
labels = component["generictemplate"]["metadata"]["labels"]
357+
labels.update({"kueue.x-k8s.io/queue-name": lq_name})
358+
labels.update(cluster_labels)
359+
outfile.write("---\n")
360+
yaml.dump(
361+
component["generictemplate"], outfile, default_flow_style=False
362+
)
363+
print(f"Written to: {output_file_name}")
364+
else:
365+
raise ValueError(
366+
"local_queue provided does not exist. Please provide the correct local_queue name in Cluster Configuration"
367+
)
345368

346369

347370
def load_components(
@@ -355,26 +378,31 @@ def load_components(
355378
components = user_yaml.get("spec", "resources")["resources"].get("GenericItems")
356379
lq_name = local_queue or get_default_kueue_name(namespace)
357380
cluster_labels = labels
358-
for component in components:
359-
if "generictemplate" in component:
360-
if (
361-
"workload.codeflare.dev/appwrapper"
362-
in component["generictemplate"]["metadata"]["labels"]
363-
):
364-
del component["generictemplate"]["metadata"]["labels"][
381+
if local_queue_exists(namespace, lq_name):
382+
for component in components:
383+
if "generictemplate" in component:
384+
if (
365385
"workload.codeflare.dev/appwrapper"
366-
]
367-
labels = component["generictemplate"]["metadata"]["labels"]
368-
labels.update({"kueue.x-k8s.io/queue-name": lq_name})
369-
labels.update(cluster_labels)
370-
component_list.append(component["generictemplate"])
371-
372-
resources = "---\n" + "---\n".join(
373-
[yaml.dump(component) for component in component_list]
374-
)
375-
user_yaml = resources
376-
print(f"Yaml resources loaded for {name}")
377-
return user_yaml
386+
in component["generictemplate"]["metadata"]["labels"]
387+
):
388+
del component["generictemplate"]["metadata"]["labels"][
389+
"workload.codeflare.dev/appwrapper"
390+
]
391+
labels = component["generictemplate"]["metadata"]["labels"]
392+
labels.update({"kueue.x-k8s.io/queue-name": lq_name})
393+
labels.update(cluster_labels)
394+
component_list.append(component["generictemplate"])
395+
396+
resources = "---\n" + "---\n".join(
397+
[yaml.dump(component) for component in component_list]
398+
)
399+
user_yaml = resources
400+
print(f"Yaml resources loaded for {name}")
401+
return user_yaml
402+
else:
403+
raise ValueError(
404+
"local_queue provided does not exist. Please provide the correct local_queue name in Cluster Configuration"
405+
)
378406

379407

380408
def load_appwrapper(user_yaml: dict, name: str):

0 commit comments

Comments
 (0)