Skip to content

Commit 7e87599

Browse files
Changes in docs for release: v0.16.1
1 parent f69d5e4 commit 7e87599

File tree

4 files changed

+212
-104
lines changed

4 files changed

+212
-104
lines changed

docs/detailed-documentation/cluster/cluster.html

+98-60
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ <h1 class="title">Module <code>codeflare_sdk.cluster.cluster</code></h1>
5050
cluster setup queue, a list of all existing clusters, and the user&#39;s working namespace.
5151
&#34;&#34;&#34;
5252

53+
import re
5354
from time import sleep
5455
from typing import List, Optional, Tuple, Dict
5556

@@ -73,11 +74,13 @@ <h1 class="title">Module <code>codeflare_sdk.cluster.cluster</code></h1>
7374
RayClusterStatus,
7475
)
7576
from kubernetes import client, config
77+
from kubernetes.utils import parse_quantity
7678
import yaml
7779
import os
7880
import requests
7981

8082
from kubernetes import config
83+
from kubernetes.client.rest import ApiException
8184

8285

8386
class Cluster:
@@ -216,6 +219,7 @@ <h1 class="title">Module <code>codeflare_sdk.cluster.cluster</code></h1>
216219
write_to_file = self.config.write_to_file
217220
verify_tls = self.config.verify_tls
218221
local_queue = self.config.local_queue
222+
labels = self.config.labels
219223
return generate_appwrapper(
220224
name=name,
221225
namespace=namespace,
@@ -240,6 +244,7 @@ <h1 class="title">Module <code>codeflare_sdk.cluster.cluster</code></h1>
240244
write_to_file=write_to_file,
241245
verify_tls=verify_tls,
242246
local_queue=local_queue,
247+
labels=labels,
243248
)
244249

245250
# creates a new cluster with the provided or default spec
@@ -248,6 +253,10 @@ <h1 class="title">Module <code>codeflare_sdk.cluster.cluster</code></h1>
248253
Applies the AppWrapper yaml, pushing the resource request onto
249254
the MCAD queue.
250255
&#34;&#34;&#34;
256+
257+
# check if RayCluster CustomResourceDefinition exists if not throw RuntimeError
258+
self._throw_for_no_raycluster()
259+
251260
namespace = self.config.namespace
252261

253262
try:
@@ -278,12 +287,32 @@ <h1 class="title">Module <code>codeflare_sdk.cluster.cluster</code></h1>
278287
except Exception as e: # pragma: no cover
279288
return _kube_api_error_handling(e)
280289

290+
def _throw_for_no_raycluster(self):
291+
api_instance = client.CustomObjectsApi(api_config_handler())
292+
try:
293+
api_instance.list_namespaced_custom_object(
294+
group=&#34;ray.io&#34;,
295+
version=&#34;v1&#34;,
296+
namespace=self.config.namespace,
297+
plural=&#34;rayclusters&#34;,
298+
)
299+
except ApiException as e:
300+
if e.status == 404:
301+
raise RuntimeError(
302+
&#34;RayCluster CustomResourceDefinition unavailable contact your administrator.&#34;
303+
)
304+
else:
305+
raise RuntimeError(
306+
&#34;Failed to get RayCluster CustomResourceDefinition: &#34; + str(e)
307+
)
308+
281309
def down(self):
282310
&#34;&#34;&#34;
283311
Deletes the AppWrapper yaml, scaling-down and deleting all resources
284312
associated with the cluster.
285313
&#34;&#34;&#34;
286314
namespace = self.config.namespace
315+
self._throw_for_no_raycluster()
287316
try:
288317
config_check()
289318
api_instance = client.CustomObjectsApi(api_config_handler())
@@ -520,26 +549,18 @@ <h1 class="title">Module <code>codeflare_sdk.cluster.cluster</code></h1>
520549
namespace=rc[&#34;metadata&#34;][&#34;namespace&#34;],
521550
machine_types=machine_types,
522551
num_workers=rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;minReplicas&#34;],
523-
min_cpus=int(
524-
rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][&#34;containers&#34;][0][
525-
&#34;resources&#34;
526-
][&#34;requests&#34;][&#34;cpu&#34;]
527-
),
528-
max_cpus=int(
529-
rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][&#34;containers&#34;][0][
530-
&#34;resources&#34;
531-
][&#34;limits&#34;][&#34;cpu&#34;]
532-
),
533-
min_memory=int(
534-
rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][&#34;containers&#34;][0][
535-
&#34;resources&#34;
536-
][&#34;requests&#34;][&#34;memory&#34;][:-1]
537-
),
538-
max_memory=int(
539-
rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][&#34;containers&#34;][0][
540-
&#34;resources&#34;
541-
][&#34;limits&#34;][&#34;memory&#34;][:-1]
542-
),
552+
min_cpus=rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][
553+
&#34;containers&#34;
554+
][0][&#34;resources&#34;][&#34;requests&#34;][&#34;cpu&#34;],
555+
max_cpus=rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][
556+
&#34;containers&#34;
557+
][0][&#34;resources&#34;][&#34;limits&#34;][&#34;cpu&#34;],
558+
min_memory=rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][
559+
&#34;containers&#34;
560+
][0][&#34;resources&#34;][&#34;requests&#34;][&#34;memory&#34;],
561+
max_memory=rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][
562+
&#34;containers&#34;
563+
][0][&#34;resources&#34;][&#34;limits&#34;][&#34;memory&#34;],
543564
num_gpus=int(
544565
rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][&#34;containers&#34;][0][
545566
&#34;resources&#34;
@@ -1265,6 +1286,7 @@ <h2 class="section-title" id="header-classes">Classes</h2>
12651286
write_to_file = self.config.write_to_file
12661287
verify_tls = self.config.verify_tls
12671288
local_queue = self.config.local_queue
1289+
labels = self.config.labels
12681290
return generate_appwrapper(
12691291
name=name,
12701292
namespace=namespace,
@@ -1289,6 +1311,7 @@ <h2 class="section-title" id="header-classes">Classes</h2>
12891311
write_to_file=write_to_file,
12901312
verify_tls=verify_tls,
12911313
local_queue=local_queue,
1314+
labels=labels,
12921315
)
12931316

12941317
# creates a new cluster with the provided or default spec
@@ -1297,6 +1320,10 @@ <h2 class="section-title" id="header-classes">Classes</h2>
12971320
Applies the AppWrapper yaml, pushing the resource request onto
12981321
the MCAD queue.
12991322
&#34;&#34;&#34;
1323+
1324+
# check if RayCluster CustomResourceDefinition exists if not throw RuntimeError
1325+
self._throw_for_no_raycluster()
1326+
13001327
namespace = self.config.namespace
13011328

13021329
try:
@@ -1327,12 +1354,32 @@ <h2 class="section-title" id="header-classes">Classes</h2>
13271354
except Exception as e: # pragma: no cover
13281355
return _kube_api_error_handling(e)
13291356

1357+
def _throw_for_no_raycluster(self):
1358+
api_instance = client.CustomObjectsApi(api_config_handler())
1359+
try:
1360+
api_instance.list_namespaced_custom_object(
1361+
group=&#34;ray.io&#34;,
1362+
version=&#34;v1&#34;,
1363+
namespace=self.config.namespace,
1364+
plural=&#34;rayclusters&#34;,
1365+
)
1366+
except ApiException as e:
1367+
if e.status == 404:
1368+
raise RuntimeError(
1369+
&#34;RayCluster CustomResourceDefinition unavailable contact your administrator.&#34;
1370+
)
1371+
else:
1372+
raise RuntimeError(
1373+
&#34;Failed to get RayCluster CustomResourceDefinition: &#34; + str(e)
1374+
)
1375+
13301376
def down(self):
13311377
&#34;&#34;&#34;
13321378
Deletes the AppWrapper yaml, scaling-down and deleting all resources
13331379
associated with the cluster.
13341380
&#34;&#34;&#34;
13351381
namespace = self.config.namespace
1382+
self._throw_for_no_raycluster()
13361383
try:
13371384
config_check()
13381385
api_instance = client.CustomObjectsApi(api_config_handler())
@@ -1569,26 +1616,18 @@ <h2 class="section-title" id="header-classes">Classes</h2>
15691616
namespace=rc[&#34;metadata&#34;][&#34;namespace&#34;],
15701617
machine_types=machine_types,
15711618
num_workers=rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;minReplicas&#34;],
1572-
min_cpus=int(
1573-
rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][&#34;containers&#34;][0][
1574-
&#34;resources&#34;
1575-
][&#34;requests&#34;][&#34;cpu&#34;]
1576-
),
1577-
max_cpus=int(
1578-
rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][&#34;containers&#34;][0][
1579-
&#34;resources&#34;
1580-
][&#34;limits&#34;][&#34;cpu&#34;]
1581-
),
1582-
min_memory=int(
1583-
rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][&#34;containers&#34;][0][
1584-
&#34;resources&#34;
1585-
][&#34;requests&#34;][&#34;memory&#34;][:-1]
1586-
),
1587-
max_memory=int(
1588-
rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][&#34;containers&#34;][0][
1589-
&#34;resources&#34;
1590-
][&#34;limits&#34;][&#34;memory&#34;][:-1]
1591-
),
1619+
min_cpus=rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][
1620+
&#34;containers&#34;
1621+
][0][&#34;resources&#34;][&#34;requests&#34;][&#34;cpu&#34;],
1622+
max_cpus=rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][
1623+
&#34;containers&#34;
1624+
][0][&#34;resources&#34;][&#34;limits&#34;][&#34;cpu&#34;],
1625+
min_memory=rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][
1626+
&#34;containers&#34;
1627+
][0][&#34;resources&#34;][&#34;requests&#34;][&#34;memory&#34;],
1628+
max_memory=rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][
1629+
&#34;containers&#34;
1630+
][0][&#34;resources&#34;][&#34;limits&#34;][&#34;memory&#34;],
15921631
num_gpus=int(
15931632
rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][&#34;containers&#34;][0][
15941633
&#34;resources&#34;
@@ -1811,6 +1850,7 @@ <h3>Methods</h3>
18111850
write_to_file = self.config.write_to_file
18121851
verify_tls = self.config.verify_tls
18131852
local_queue = self.config.local_queue
1853+
labels = self.config.labels
18141854
return generate_appwrapper(
18151855
name=name,
18161856
namespace=namespace,
@@ -1835,6 +1875,7 @@ <h3>Methods</h3>
18351875
write_to_file=write_to_file,
18361876
verify_tls=verify_tls,
18371877
local_queue=local_queue,
1878+
labels=labels,
18381879
)</code></pre>
18391880
</details>
18401881
</dd>
@@ -1870,6 +1911,7 @@ <h3>Methods</h3>
18701911
associated with the cluster.
18711912
&#34;&#34;&#34;
18721913
namespace = self.config.namespace
1914+
self._throw_for_no_raycluster()
18731915
try:
18741916
config_check()
18751917
api_instance = client.CustomObjectsApi(api_config_handler())
@@ -1944,26 +1986,18 @@ <h3>Methods</h3>
19441986
namespace=rc[&#34;metadata&#34;][&#34;namespace&#34;],
19451987
machine_types=machine_types,
19461988
num_workers=rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;minReplicas&#34;],
1947-
min_cpus=int(
1948-
rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][&#34;containers&#34;][0][
1949-
&#34;resources&#34;
1950-
][&#34;requests&#34;][&#34;cpu&#34;]
1951-
),
1952-
max_cpus=int(
1953-
rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][&#34;containers&#34;][0][
1954-
&#34;resources&#34;
1955-
][&#34;limits&#34;][&#34;cpu&#34;]
1956-
),
1957-
min_memory=int(
1958-
rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][&#34;containers&#34;][0][
1959-
&#34;resources&#34;
1960-
][&#34;requests&#34;][&#34;memory&#34;][:-1]
1961-
),
1962-
max_memory=int(
1963-
rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][&#34;containers&#34;][0][
1964-
&#34;resources&#34;
1965-
][&#34;limits&#34;][&#34;memory&#34;][:-1]
1966-
),
1989+
min_cpus=rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][
1990+
&#34;containers&#34;
1991+
][0][&#34;resources&#34;][&#34;requests&#34;][&#34;cpu&#34;],
1992+
max_cpus=rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][
1993+
&#34;containers&#34;
1994+
][0][&#34;resources&#34;][&#34;limits&#34;][&#34;cpu&#34;],
1995+
min_memory=rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][
1996+
&#34;containers&#34;
1997+
][0][&#34;resources&#34;][&#34;requests&#34;][&#34;memory&#34;],
1998+
max_memory=rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][
1999+
&#34;containers&#34;
2000+
][0][&#34;resources&#34;][&#34;limits&#34;][&#34;memory&#34;],
19672001
num_gpus=int(
19682002
rc[&#34;spec&#34;][&#34;workerGroupSpecs&#34;][0][&#34;template&#34;][&#34;spec&#34;][&#34;containers&#34;][0][
19692003
&#34;resources&#34;
@@ -2168,6 +2202,10 @@ <h3>Methods</h3>
21682202
Applies the AppWrapper yaml, pushing the resource request onto
21692203
the MCAD queue.
21702204
&#34;&#34;&#34;
2205+
2206+
# check if RayCluster CustomResourceDefinition exists if not throw RuntimeError
2207+
self._throw_for_no_raycluster()
2208+
21712209
namespace = self.config.namespace
21722210

21732211
try:

0 commit comments

Comments
 (0)