kalavai-client 0.5.10__py3-none-any.whl → 0.5.12__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- kalavai_client/__init__.py +1 -1
- kalavai_client/assets/apps.yaml +1 -1
- kalavai_client/assets/docker-compose-template.yaml +2 -1
- kalavai_client/cli.py +73 -11
- kalavai_client/utils.py +5 -2
- {kalavai_client-0.5.10.dist-info → kalavai_client-0.5.12.dist-info}/METADATA +1 -1
- {kalavai_client-0.5.10.dist-info → kalavai_client-0.5.12.dist-info}/RECORD +10 -10
- {kalavai_client-0.5.10.dist-info → kalavai_client-0.5.12.dist-info}/LICENSE +0 -0
- {kalavai_client-0.5.10.dist-info → kalavai_client-0.5.12.dist-info}/WHEEL +0 -0
- {kalavai_client-0.5.10.dist-info → kalavai_client-0.5.12.dist-info}/entry_points.txt +0 -0
kalavai_client/__init__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
|
2
|
-
__version__ = "0.5.
|
2
|
+
__version__ = "0.5.12"
|
kalavai_client/assets/apps.yaml
CHANGED
kalavai_client/cli.py
CHANGED
@@ -337,18 +337,19 @@ def select_token_type():
|
|
337
337
|
break
|
338
338
|
return {"admin": choice == 0, "user": choice == 1, "worker": choice == 2}
|
339
339
|
|
340
|
-
def generate_compose_config(role, node_name, is_public, node_labels=None, pool_ip=None, vpn_token=None, pool_token=None):
|
340
|
+
def generate_compose_config(role, node_name, is_public, use_gpus=True, node_labels=None, pool_ip=None, vpn_token=None, pool_token=None):
|
341
341
|
num_gpus = 0
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
342
|
+
if use_gpus:
|
343
|
+
try:
|
344
|
+
has_gpus = check_gpu_drivers()
|
345
|
+
if has_gpus:
|
346
|
+
max_gpus = int(run_cmd("nvidia-smi -L | wc -l").decode())
|
347
|
+
num_gpus = user_confirm(
|
348
|
+
question=f"{max_gpus} NVIDIA GPU(s) detected. How many GPUs would you like to include?",
|
349
|
+
options=range(max_gpus+1)
|
350
|
+
)
|
351
|
+
except:
|
352
|
+
console.log(f"[red]WARNING: error when fetching NVIDIA GPU info. GPUs will not be used on this local machine")
|
352
353
|
if node_labels is not None:
|
353
354
|
node_labels = " ".join([f"--node-label {key}={value}" for key, value in node_labels.items()])
|
354
355
|
compose_values = {
|
@@ -1102,6 +1103,10 @@ def pool__attach(token, *others, node_name=None):
|
|
1102
1103
|
"""
|
1103
1104
|
Set creds in token on the local instance
|
1104
1105
|
"""
|
1106
|
+
|
1107
|
+
if node_name is None:
|
1108
|
+
node_name = socket.gethostname()
|
1109
|
+
|
1105
1110
|
# check that is not attached to another instance
|
1106
1111
|
if os.path.exists(USER_LOCAL_SERVER_FILE):
|
1107
1112
|
option = user_confirm(
|
@@ -1160,6 +1165,7 @@ def pool__attach(token, *others, node_name=None):
|
|
1160
1165
|
|
1161
1166
|
# Generate docker compose recipe
|
1162
1167
|
generate_compose_config(
|
1168
|
+
use_gpus=False,
|
1163
1169
|
role="",
|
1164
1170
|
vpn_token=vpn["key"],
|
1165
1171
|
node_name=node_name,
|
@@ -1510,6 +1516,62 @@ def job__run(template_name, *others, values: str=None, force_namespace: str=None
|
|
1510
1516
|
console.log(f"[red]Error when connecting to kalavai service: {str(e)}")
|
1511
1517
|
return
|
1512
1518
|
|
1519
|
+
@arguably.command
|
1520
|
+
def job__test(local_template_dir, *others, values, defaults, force_namespace: str=None):
|
1521
|
+
"""
|
1522
|
+
Helper to test local templates, useful for development
|
1523
|
+
"""
|
1524
|
+
try:
|
1525
|
+
CLUSTER.validate_cluster()
|
1526
|
+
except Exception as e:
|
1527
|
+
console.log(f"[red]Problems with your pool: {str(e)}")
|
1528
|
+
return
|
1529
|
+
|
1530
|
+
if not os.path.isdir(local_template_dir):
|
1531
|
+
console.log(f"[red]--local_template_dir ({local_template_dir}) is not a directory")
|
1532
|
+
return
|
1533
|
+
|
1534
|
+
# load template
|
1535
|
+
with open(os.path.join(local_template_dir, "template.yaml"), "r") as f:
|
1536
|
+
template_str = f.read()
|
1537
|
+
|
1538
|
+
# load values
|
1539
|
+
if not os.path.isfile(values):
|
1540
|
+
console.log(f"[red]--values ({values}) is not a valid local file")
|
1541
|
+
return
|
1542
|
+
with open(values, "r") as f:
|
1543
|
+
values_dict = yaml.safe_load(f)
|
1544
|
+
# load defaults
|
1545
|
+
if not os.path.isfile(defaults):
|
1546
|
+
console.log(f"[red]--defaults ({defaults}) is not a valid local file")
|
1547
|
+
return
|
1548
|
+
with open(defaults, "r") as f:
|
1549
|
+
defaults = f.read()
|
1550
|
+
|
1551
|
+
# submit custom deployment
|
1552
|
+
data = {
|
1553
|
+
"template": template_str,
|
1554
|
+
"template_values": values_dict,
|
1555
|
+
"default_values": defaults
|
1556
|
+
}
|
1557
|
+
if force_namespace is not None:
|
1558
|
+
data["force_namespace"] = force_namespace
|
1559
|
+
|
1560
|
+
try:
|
1561
|
+
result = request_to_server(
|
1562
|
+
method="post",
|
1563
|
+
endpoint="/v1/deploy_custom_job",
|
1564
|
+
data=data,
|
1565
|
+
server_creds=USER_LOCAL_SERVER_FILE,
|
1566
|
+
user_cookie=USER_COOKIE
|
1567
|
+
)
|
1568
|
+
console.log("Deployment result:")
|
1569
|
+
print(
|
1570
|
+
json.dumps(result,indent=3)
|
1571
|
+
)
|
1572
|
+
except Exception as e:
|
1573
|
+
console.log(f"[red]Error when connecting to kalavai service: {str(e)}")
|
1574
|
+
|
1513
1575
|
|
1514
1576
|
@arguably.command
|
1515
1577
|
def job__defaults(template_name, *others):
|
kalavai_client/utils.py
CHANGED
@@ -284,8 +284,11 @@ def request_to_server(
|
|
284
284
|
json=data,
|
285
285
|
headers=headers
|
286
286
|
)
|
287
|
-
|
288
|
-
|
287
|
+
try:
|
288
|
+
result = response.json()
|
289
|
+
return result
|
290
|
+
except Exception as e:
|
291
|
+
raise ValueError(f"Error with HTTP request: {response.text}\n{str(e)}")
|
289
292
|
|
290
293
|
|
291
294
|
def generate_table(columns, rows, end_sections=None):
|
@@ -1,20 +1,20 @@
|
|
1
|
-
kalavai_client/__init__.py,sha256=
|
1
|
+
kalavai_client/__init__.py,sha256=mqDZCSDdo4jyvGQ0x29B1roX6bl4-uTP0d3CclCa2oo,23
|
2
2
|
kalavai_client/__main__.py,sha256=WQUfxvRsBJH5gsCJg8pLz95QnZIj7Ol8psTO77m0QE0,73
|
3
3
|
kalavai_client/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
-
kalavai_client/assets/apps.yaml,sha256=
|
4
|
+
kalavai_client/assets/apps.yaml,sha256=LKLF315cBJG0Ts8oShl6WdKaJlM6Ewk_P_XyPVcApP8,5981
|
5
5
|
kalavai_client/assets/apps_values.yaml,sha256=CjKVelPQHd-hm-DTMEuya92feKiphU9mh3HrosLYYPE,1676
|
6
|
-
kalavai_client/assets/docker-compose-template.yaml,sha256=
|
6
|
+
kalavai_client/assets/docker-compose-template.yaml,sha256=mo8LUam9-AzB_0w72wTyMyreKr4Ns-pxZGc4GVWcUHA,2747
|
7
7
|
kalavai_client/assets/nginx.conf,sha256=drVVCg8GHucz7hmt_BI6giAhK92OV71257NTs3LthwM,225
|
8
8
|
kalavai_client/assets/pool_config_template.yaml,sha256=fFz4w2-fMKD5KvyzFdfcWD_jSneRlmnjLc8hCctweX0,576
|
9
9
|
kalavai_client/assets/pool_config_values.yaml,sha256=VrM3XHQfQo6QLZ68qvagooUptaYgl1pszniY_JUtemk,233
|
10
10
|
kalavai_client/assets/user_workspace.yaml,sha256=wDvlMYknOPABAEo0dsQwU7bac8iubjAG9tdkFbJZ5Go,476
|
11
11
|
kalavai_client/assets/user_workspace_values.yaml,sha256=G0HOzQUxrDMCwuW9kbWUZaKMzDDPVwDwzBHCL2Xi2ZM,542
|
12
12
|
kalavai_client/auth.py,sha256=QsBh28L2LwjBBK6pTUE4Xu36lLDTyetyU1YfS1Hbb6g,1717
|
13
|
-
kalavai_client/cli.py,sha256=
|
13
|
+
kalavai_client/cli.py,sha256=KVWQI2FOAU7km6hXNTs4PXw9Q24G4QqxujQL2pySEY0,70817
|
14
14
|
kalavai_client/cluster.py,sha256=fULTAad4KXEGeWZmp4_VBoBwT5eED_HOBUsXIKmf0CU,12119
|
15
|
-
kalavai_client/utils.py,sha256=
|
16
|
-
kalavai_client-0.5.
|
17
|
-
kalavai_client-0.5.
|
18
|
-
kalavai_client-0.5.
|
19
|
-
kalavai_client-0.5.
|
20
|
-
kalavai_client-0.5.
|
15
|
+
kalavai_client/utils.py,sha256=7Cr2wXm2mXGJoseKbFdIVMuMBkqmzSgbwaCLHYoGOn0,12544
|
16
|
+
kalavai_client-0.5.12.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
17
|
+
kalavai_client-0.5.12.dist-info/METADATA,sha256=631MQR4FQ5pcMwbLKDucI8gy7qVylzhqmkKhohEBN8c,14101
|
18
|
+
kalavai_client-0.5.12.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
19
|
+
kalavai_client-0.5.12.dist-info/entry_points.txt,sha256=9T6D45gxwzfVbglMm1r6XPdXuuZdHfy_7fCeu2jUphc,50
|
20
|
+
kalavai_client-0.5.12.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|