Skip to content

Commit 6daef2a

Browse files
committed
Merge remote-tracking branch 'origin/feat/expand_sdk-cli_actions_functionality' into dev
2 parents 49fe6b1 + 0f55ffd commit 6daef2a

15 files changed

Lines changed: 1426 additions & 366 deletions

cli/kleinkram/__init__.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,28 @@
33
from kleinkram._version import __version__
44
from kleinkram.wrappers import create_mission
55
from kleinkram.wrappers import create_project
6+
from kleinkram.wrappers import create_template
7+
from kleinkram.wrappers import create_template_version
8+
from kleinkram.wrappers import launch_execution
69
from kleinkram.wrappers import delete_file
710
from kleinkram.wrappers import delete_files
811
from kleinkram.wrappers import delete_mission
912
from kleinkram.wrappers import delete_project
13+
from kleinkram.wrappers import delete_template
14+
from kleinkram.wrappers import delete_execution
1015
from kleinkram.wrappers import download
16+
from kleinkram.wrappers import download_artifact
17+
from kleinkram.wrappers import get_execution
1118
from kleinkram.wrappers import get_file
1219
from kleinkram.wrappers import get_mission
1320
from kleinkram.wrappers import get_project
21+
from kleinkram.wrappers import get_template
22+
from kleinkram.wrappers import get_template_revisions
23+
from kleinkram.wrappers import list_executions
1424
from kleinkram.wrappers import list_files
1525
from kleinkram.wrappers import list_missions
1626
from kleinkram.wrappers import list_projects
27+
from kleinkram.wrappers import list_templates
1728
from kleinkram.wrappers import update_file
1829
from kleinkram.wrappers import update_mission
1930
from kleinkram.wrappers import update_project
@@ -25,19 +36,30 @@
2536
"upload",
2637
"verify",
2738
"download",
39+
"download_artifact",
40+
"get_execution",
2841
"get_file",
2942
"get_mission",
3043
"get_project",
44+
"get_template",
45+
"get_template_revisions",
3146
"list_files",
3247
"list_missions",
3348
"list_projects",
49+
"list_templates",
50+
"list_executions",
3451
"update_file",
3552
"update_mission",
3653
"update_project",
3754
"delete_files",
3855
"delete_file",
3956
"delete_mission",
4057
"delete_project",
58+
"delete_template",
59+
"delete_execution",
4160
"create_mission",
4261
"create_project",
62+
"create_template",
63+
"create_template_version",
64+
"launch_execution",
4365
]

cli/kleinkram/api/deser.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ class ExecutionObjectKeys(str, Enum):
8686
class TemplateObjectKeys(str, Enum):
8787
UUID = "uuid"
8888
NAME = "name"
89+
DESCRIPTION = "description"
8990
ACCESS_RIGHTS = "accessRights"
9091
COMMAND = "command"
9192
CPU_CORES = "cpuCores"
@@ -233,6 +234,7 @@ def _parse_action_template(template_object: Dict[str, Any]) -> ActionTemplate:
233234
command = template_object[TemplateObjectKeys.COMMAND]
234235
cpu_cores = template_object[TemplateObjectKeys.CPU_CORES]
235236
cpu_memory_gb = template_object[TemplateObjectKeys.CPU_MEMORY_GB]
237+
description = template_object[TemplateObjectKeys.DESCRIPTION]
236238
entrypoint = template_object[TemplateObjectKeys.ENTRYPOINT]
237239
gpu_memory_gb = template_object[TemplateObjectKeys.GPU_MEMORY_GB]
238240
image_name = template_object[TemplateObjectKeys.IMAGE_NAME]
@@ -250,6 +252,7 @@ def _parse_action_template(template_object: Dict[str, Any]) -> ActionTemplate:
250252
command=command,
251253
cpu_cores=cpu_cores,
252254
cpu_memory_gb=cpu_memory_gb,
255+
description=description,
253256
entrypoint=entrypoint,
254257
gpu_memory_gb=gpu_memory_gb,
255258
image_name=image_name,

cli/kleinkram/api/file_transfer.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import annotations
22

33
import logging
4+
import re
45
import sys
56
from concurrent.futures import Future
67
from concurrent.futures import ThreadPoolExecutor
@@ -262,6 +263,16 @@ def _get_file_download(client: AuthenticatedClient, id: UUID) -> str:
262263
return resp.json()["url"]
263264

264265

266+
def _get_filename_from_cd(cd: str | None) -> Optional[str]:
267+
"""Extract filename from Content-Disposition header."""
268+
if not cd:
269+
return None
270+
fname = re.findall("filename=(.+)", cd)
271+
if len(fname) == 0:
272+
return None
273+
return fname[0].strip().strip('"')
274+
275+
265276
def _url_download(url: str, *, path: Path, size: int, overwrite: bool = False, verbose: bool = False) -> None:
266277
if path.exists():
267278
if overwrite:

cli/kleinkram/api/query.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from dataclasses import dataclass
1313
from dataclasses import field
1414
from typing import List
15+
from typing import Optional
1516
from uuid import UUID
1617

1718
from kleinkram.errors import InvalidMissionQuery
@@ -43,10 +44,15 @@ class FileQuery:
4344

4445
@dataclass
4546
class ExecutionQuery:
46-
mission_ids: List[UUID] = field(default_factory=list)
47-
mission_patterns: List[str] = field(default_factory=list)
48-
project_ids: List[UUID] = field(default_factory=list)
49-
project_patterns: List[str] = field(default_factory=list)
47+
"""
48+
This matches the parameters supported by the backend. The backend
49+
does not yet support filtering by list of ids as for
50+
other resources (e.g. projects and missions).
51+
"""
52+
53+
project_uuid: Optional[UUID] = None
54+
mission_uuid: Optional[UUID] = None
55+
template_name: Optional[str] = None
5056

5157

5258
def check_mission_query_is_creatable(query: MissionQuery) -> str:

0 commit comments

Comments
 (0)