Skip to content

Commit d5017de

Browse files
committed
Added custom Volumes and Volume Mounts support
1 parent 3864bcf commit d5017de

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

src/codeflare_sdk/cluster/cluster.py

+4
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,8 @@ def create_app_wrapper(self):
154154
verify_tls = self.config.verify_tls
155155
local_queue = self.config.local_queue
156156
labels = self.config.labels
157+
volumes = self.config.volumes
158+
volume_mounts = self.config.volume_mounts
157159
return generate_appwrapper(
158160
name=name,
159161
namespace=namespace,
@@ -176,6 +178,8 @@ def create_app_wrapper(self):
176178
verify_tls=verify_tls,
177179
local_queue=local_queue,
178180
labels=labels,
181+
volumes=volumes,
182+
volume_mounts=volume_mounts,
179183
)
180184

181185
# creates a new cluster with the provided or default spec

src/codeflare_sdk/cluster/config.py

+2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ class ClusterConfiguration:
5353
write_to_file: bool = False
5454
verify_tls: bool = True
5555
labels: dict = field(default_factory=dict)
56+
volumes: list = field(default_factory=list)
57+
volume_mounts: list = field(default_factory=list)
5658

5759
def __post_init__(self):
5860
if not self.verify_tls:

src/codeflare_sdk/utils/generate_yaml.py

+22
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,20 @@ def update_image_pull_secrets(spec, image_pull_secrets):
9999
]
100100

101101

102+
def update_volume_mounts(spec, volume_mounts: list):
103+
containers = spec.get("containers")
104+
for volume_mount in volume_mounts:
105+
for container in containers:
106+
volumeMount = client.ApiClient().sanitize_for_serialization(volume_mount)
107+
container["volumeMounts"].append(volumeMount)
108+
109+
110+
def update_volumes(spec, volumes: list):
111+
for volume in volumes:
112+
new_volume = client.ApiClient().sanitize_for_serialization(volume)
113+
spec["volumes"].append(new_volume)
114+
115+
102116
def update_env(spec, env):
103117
containers = spec.get("containers")
104118
for container in containers:
@@ -139,6 +153,8 @@ def update_nodes(
139153
head_cpus,
140154
head_memory,
141155
head_gpus,
156+
volumes,
157+
volume_mounts,
142158
):
143159
if "template" in item.keys():
144160
head = item.get("template").get("spec").get("headGroupSpec")
@@ -154,6 +170,8 @@ def update_nodes(
154170

155171
for comp in [head, worker]:
156172
spec = comp.get("template").get("spec")
173+
update_volume_mounts(spec, volume_mounts)
174+
update_volumes(spec, volumes)
157175
update_image_pull_secrets(spec, image_pull_secrets)
158176
update_image(spec, image)
159177
update_env(spec, env)
@@ -322,6 +340,8 @@ def generate_appwrapper(
322340
verify_tls: bool,
323341
local_queue: Optional[str],
324342
labels,
343+
volumes: list[client.V1Volume],
344+
volume_mounts: list[client.V1VolumeMount],
325345
):
326346
user_yaml = read_template(template)
327347
appwrapper_name, cluster_name = gen_names(name)
@@ -349,6 +369,8 @@ def generate_appwrapper(
349369
head_cpus,
350370
head_memory,
351371
head_gpus,
372+
volumes,
373+
volume_mounts,
352374
)
353375

354376
augment_labels(item, labels)

0 commit comments

Comments
 (0)