yellowdog-sdk 9.3.4__py3-none-any.whl → 9.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- __version__ = '9.3.4' # YEL-13634
1
+ __version__ = '9.5.0' # YEL-13674
@@ -1,5 +1,5 @@
1
1
  from dataclasses import dataclass
2
- from typing import Optional
2
+ from typing import List, Optional
3
3
 
4
4
  from .sort_direction import SortDirection
5
5
 
@@ -9,3 +9,4 @@ class NamespacePolicySearch:
9
9
  sortField: Optional[str] = None
10
10
  sortDirection: Optional[SortDirection] = None
11
11
  namespace: Optional[str] = None
12
+ namespaces: Optional[List[str]] = None
@@ -1,5 +1,5 @@
1
1
  from dataclasses import dataclass
2
- from typing import Optional
2
+ from typing import List, Optional
3
3
 
4
4
  from .sort_direction import SortDirection
5
5
 
@@ -7,6 +7,7 @@ from .sort_direction import SortDirection
7
7
  @dataclass
8
8
  class NamespaceSearch:
9
9
  namespace: Optional[str] = None
10
+ namespaces: Optional[List[str]] = None
10
11
  deletable: Optional[bool] = None
11
12
  sortField: Optional[str] = None
12
13
  sortDirection: Optional[SortDirection] = None
@@ -24,6 +24,10 @@ class Node(Identified):
24
24
  """The date and time when the status last changed."""
25
25
  registeredTime: Optional[datetime] = None
26
26
  """The time when the node was registered."""
27
+ deregisteredTime: Optional[datetime] = None
28
+ """The time when the node was deregistered."""
29
+ preemptionWarningTime: Optional[datetime] = None
30
+ """The time when the node notified of preemption."""
27
31
  workers: Optional[List[Worker]] = None
28
32
  """The workers on this instance."""
29
33
  actionQueueStatus: Optional[NodeActionQueueStatus] = None
@@ -22,6 +22,9 @@ class NodeSearch:
22
22
  vcpus: Optional[DoubleRange] = None
23
23
  workerClaimCount: Optional[LongRange] = None
24
24
  workerRegisteredTime: Optional[InstantRange] = None
25
+ registeredTime: Optional[InstantRange] = None
26
+ deregisteredTime: Optional[InstantRange] = None
27
+ preemptionWarningTime: Optional[InstantRange] = None
25
28
  workerTaskGroupId: Optional[str] = None
26
29
  workerTag: Optional[str] = None
27
30
  workerStatuses: Optional[List[WorkerStatus]] = None
@@ -3,12 +3,55 @@ from __future__ import annotations
3
3
  from abc import ABC, abstractmethod
4
4
 
5
5
  from yellowdog_client.common import Closeable, SearchClient
6
- from yellowdog_client.model import NamespacePolicy, NamespacePolicySearch
6
+ from yellowdog_client.model import CreateNamespaceRequest, Namespace, NamespacePolicy, NamespacePolicySearch, NamespaceSearch
7
7
 
8
8
 
9
9
  class NamespacesClient(ABC, Closeable):
10
10
  """The API interface exposed by the YellowDog Namespaces Service"""
11
11
 
12
+ @abstractmethod
13
+ def get_namespace(self, namespace_id: str) -> Namespace:
14
+ """
15
+ Gets the namespace with a matching ID.
16
+
17
+ :param namespace_id: the namespace ID
18
+ :return: the namespace
19
+ """
20
+
21
+ pass
22
+
23
+ @abstractmethod
24
+ def get_namespaces(self, search: NamespaceSearch) -> SearchClient[Namespace]:
25
+ """
26
+ Returns a search client for namespaces that match the NamespaceSearch parameter.
27
+
28
+ :param search: the search object to filter and sort results
29
+ :return: a search client for matching namespaces
30
+ """
31
+
32
+ pass
33
+
34
+ @abstractmethod
35
+ def create_namespace(self, request: CreateNamespaceRequest) -> str:
36
+ """
37
+ Creates a namespace.
38
+
39
+ :param request: the request containing the data to create the namespace
40
+ :return: the namespace ID
41
+ """
42
+
43
+ pass
44
+
45
+ @abstractmethod
46
+ def delete_namespace(self, namespace_id: str) -> None:
47
+ """
48
+ Deletes a namespace.
49
+
50
+ :param namespace_id: the ID of the namespace to delete
51
+ """
52
+
53
+ pass
54
+
12
55
  @abstractmethod
13
56
  def save_namespace_policy(self, namespace_policy: NamespacePolicy) -> None:
14
57
  """
@@ -3,13 +3,30 @@ from typing import Callable
3
3
  from .namespaces_client import NamespacesClient
4
4
  from .namespaces_service_proxy import NamespacesServiceProxy
5
5
  from yellowdog_client.common import SearchClient
6
- from yellowdog_client.model import NamespacePolicy, NamespacePolicySearch, Slice, SliceReference
6
+ from yellowdog_client.model import NamespacePolicy, NamespacePolicySearch, Slice, SliceReference, \
7
+ CreateNamespaceRequest, Namespace, NamespaceSearch
7
8
 
8
9
 
9
10
  class NamespacesClientImpl(NamespacesClient):
10
11
  def __init__(self, service_proxy: NamespacesServiceProxy) -> None:
11
12
  self.__service_proxy = service_proxy
12
13
 
14
+ def get_namespace(self, namespace_id: str) -> Namespace:
15
+ return self.__service_proxy.get_namespace(namespace_id)
16
+
17
+ def get_namespaces(self, search: NamespaceSearch) -> SearchClient[Namespace]:
18
+ get_next_slice_function: Callable[[SliceReference], Slice[Namespace]] = \
19
+ lambda slice_reference: self.__service_proxy.search_namespaces(search, slice_reference)
20
+
21
+ return SearchClient(get_next_slice_function)
22
+
23
+
24
+ def create_namespace(self, request: CreateNamespaceRequest) -> str:
25
+ return self.__service_proxy.create_namespace(request)
26
+
27
+ def delete_namespace(self, namespace_id: str):
28
+ self.__service_proxy.delete_namespace(namespace_id)
29
+
13
30
  def save_namespace_policy(self, namespace_policy: NamespacePolicy) -> None:
14
31
  self.__service_proxy.save_namespace_policy(namespace_policy)
15
32
 
@@ -1,11 +1,29 @@
1
1
  from yellowdog_client.common import Proxy
2
- from yellowdog_client.model import NamespacePolicy, NamespacePolicySearch, SliceReference, Slice
2
+ from yellowdog_client.common.json import Json
3
+ from yellowdog_client.model import NamespacePolicy, NamespacePolicySearch, SliceReference, Slice, \
4
+ CreateNamespaceRequest, Namespace, NamespaceSearch
3
5
 
4
6
 
5
7
  class NamespacesServiceProxy:
6
8
  def __init__(self, proxy: Proxy) -> None:
7
9
  self._proxy: Proxy = proxy.append_base_url("/namespaces/")
8
10
 
11
+ def get_namespace(self, namespace_id: str) -> Namespace:
12
+ return self._proxy.get(return_type=Namespace, url=namespace_id)
13
+
14
+ def search_namespaces(
15
+ self,
16
+ search: NamespaceSearch,
17
+ slice_reference: SliceReference
18
+ ) -> Slice[Namespace]:
19
+ return self._proxy.get(return_type=Slice[Namespace], params=self._proxy.to_params(search, slice_reference))
20
+
21
+ def create_namespace(self, request: CreateNamespaceRequest) -> str:
22
+ return self._proxy.raw_execute(method='POST', json=Json.dump(request)).text
23
+
24
+ def delete_namespace(self, namespace_id: str):
25
+ return self._proxy.delete(url=f"/{namespace_id}")
26
+
9
27
  def save_namespace_policy(self, namespace_policy: NamespacePolicy) -> None:
10
28
  return self._proxy.put(url=f"{namespace_policy.namespace}/policy", data=namespace_policy)
11
29
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yellowdog-sdk
3
- Version: 9.3.4
3
+ Version: 9.5.0
4
4
  Summary: SDK for the YellowDog Platform
5
5
  Author-email: YellowDog Limited <support@yellowdog.co>
6
6
  Project-URL: Homepage, https://yellowdog.co
@@ -1,6 +1,6 @@
1
1
  __init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  yellowdog_client/__init__.py,sha256=xHGTw5UbjkeEl_hC8_gJCacfji6462qJWD1nvJdFssE,13162
3
- yellowdog_client/_version.py,sha256=1eBRoZeNzRmrQHtEqaVKUWeiHOzhfIqYp4r_DCJXXAI,34
3
+ yellowdog_client/_version.py,sha256=KOrXGVqNLM-qQVLLWjJIn0D075G0KGTmWmvBn--LfNk,34
4
4
  yellowdog_client/client_collection.py,sha256=VSEzjf6iR1qCQ0YGLyDq_Kgvw8r832QDwTp6-MLB4Vs,388
5
5
  yellowdog_client/platform_client.py,sha256=yCzKsOQKllnfzwP9bG-JGtvOdvY7EaEQzFsgX3ERzVY,7476
6
6
  yellowdog_client/account/__init__.py,sha256=DiLL3uSMyVlAKWsncX0k5Ioc2hw87HQoEkSYO0ro0fg,456
@@ -241,11 +241,11 @@ yellowdog_client/model/namespace.py,sha256=wMAxOBoDKCKC_SyVFfBEH6ro817qr1qfrDZ6Y
241
241
  yellowdog_client/model/namespace_autoscaling_capacity_response.py,sha256=p1Z0OUYmAvEIVo2KrzkFQGFAruF-1YyIBiR1nSGns94,233
242
242
  yellowdog_client/model/namespace_objects_response.py,sha256=icPFUDS5AaTGd0eJK1uRKt4cBHNE-TDFQVRIuH_ykh4,189
243
243
  yellowdog_client/model/namespace_policy.py,sha256=90j_9G5xjMRLzdfjq3BeDOyxOiCECrRRvVoRkx2CEAU,163
244
- yellowdog_client/model/namespace_policy_search.py,sha256=RlyKWXiHvh4_zwb87DziYlWojBsb13XEe8KQX6H3w6A,269
245
- yellowdog_client/model/namespace_search.py,sha256=SkA-jjRnTA02jQjjzowRQNccYsODLYpJMi1P-P2cCEw,300
244
+ yellowdog_client/model/namespace_policy_search.py,sha256=6RFeLBTccVMKzINijN3tuXEYulHPYkdb2-JSXRZOE2A,318
245
+ yellowdog_client/model/namespace_search.py,sha256=aMv44U_Op74dItLv5q1YwMqQF_IKd5S7YWFogAbSWGY,349
246
246
  yellowdog_client/model/namespace_storage_configuration.py,sha256=6JSDmRbrsWhJqOeqz3skdR8t2hlP40kvPoW0CV4hYbc,139
247
247
  yellowdog_client/model/new_password_request.py,sha256=7zJkK_3GJde6QQidaxFaj49DKIQg52FTJrbmgdfTxrE,91
248
- yellowdog_client/model/node.py,sha256=URYheThBWjFOYKJVdNRSPuTYQeTypuZEAF-EaOx3zgA,1138
248
+ yellowdog_client/model/node.py,sha256=h4s6yYKER8HLigv0swJt5ejptNzcIbEtRIesAb4O1c8,1347
249
249
  yellowdog_client/model/node_action.py,sha256=4NTsvuwlIVC5Fd-VQ9dg0no-93UTyhcaKAG_CG7dV3g,122
250
250
  yellowdog_client/model/node_action_group.py,sha256=hLKSy9MrLWvJrVgdiqT9jXy-3vTAeAMYiw8zNUvmeQM,161
251
251
  yellowdog_client/model/node_action_queue_snapshot.py,sha256=PcY8jVyKM93GGkSyGyTlDw-YzgH4OV54SHfmHfI9-pc,467
@@ -255,7 +255,7 @@ yellowdog_client/model/node_details.py,sha256=lfzGHPQaf64kyrEQA84w_iHoiSnN9ySK1R
255
255
  yellowdog_client/model/node_event.py,sha256=AssuGpCASFE1utM3cyWyjMPNTgQ20L9Q-aBo0EGceNA,591
256
256
  yellowdog_client/model/node_id_filter.py,sha256=jQushAfXGtvUEzRfr_1iUZQeyD4eFC6oJk7ZhAYIoXo,144
257
257
  yellowdog_client/model/node_run_command_action.py,sha256=joUk0g13ZKdsLTxnpyIpDNfiwwTBJdMpfU8uckJJhI0,466
258
- yellowdog_client/model/node_search.py,sha256=2mPWlATqHZWc3wenoUDPzIp3PplxW2A_oVw3_IA4-H4,1025
258
+ yellowdog_client/model/node_search.py,sha256=sUAATgd_2FqtQvJ44WCv41mTD41ADE993DGn19ZoUdg,1184
259
259
  yellowdog_client/model/node_slot_numbering.py,sha256=qKA4nXwu1iv58rdqaIr9sJhDh_KL1XjaHMexBWUWuek,137
260
260
  yellowdog_client/model/node_status.py,sha256=O5ZOl6bI7cpvPYgAamvdyfxZTBIcWqmdVerwxMV9p0c,831
261
261
  yellowdog_client/model/node_summary.py,sha256=u5X27f0MxyJb6e24Czb0f7aMkLDUlHdtglQdyB6x214,604
@@ -392,9 +392,9 @@ yellowdog_client/model/exceptions/session_close_exception.py,sha256=MyR8SUNioWh_
392
392
  yellowdog_client/model/exceptions/session_not_found_exception.py,sha256=2afDI5Ff00sYRJ2ZIr7ynq6DoA0xZda0_YboISc8ujU,286
393
393
  yellowdog_client/model/exceptions/unknown_exception.py,sha256=RhLAommtxskrJO14-zCyltzVtaSh9rYxFJ8byrK1GUk,261
394
394
  yellowdog_client/namespaces/__init__.py,sha256=lgPlMSE_AU6ea6Zt15q2zyLWkIiFl0CEXeNd_UI3KPY,263
395
- yellowdog_client/namespaces/namespaces_client.py,sha256=p6IJ5y-tDqm5QulyhU_jISRMP7G78Rr3W6Q_YrRY0j0,1441
396
- yellowdog_client/namespaces/namespaces_client_impl.py,sha256=5uxqz6mX0A6UvSFLi0u-3kKiyn0aZzY9G7onqQ3xkGc,1259
397
- yellowdog_client/namespaces/namespaces_service_proxy.py,sha256=6H-tdu264ZWYc3dQof9UZ-88ZZ7uxcQXqGfpPUpP35M,1006
395
+ yellowdog_client/namespaces/namespaces_client.py,sha256=9O1K0ON8sYnOdgRuSVlp1xqYAmd9qs0AxtgWHK4xB8A,2580
396
+ yellowdog_client/namespaces/namespaces_client_impl.py,sha256=1liR-XVg9EyCZTOto3OQAQxAnGkKGGFFZa5ghgEwwyE,2010
397
+ yellowdog_client/namespaces/namespaces_service_proxy.py,sha256=IYoCGc9XmWTr5YAcDt_vFI1DToSsIB6T7L7Izb2Qzuc,1781
398
398
  yellowdog_client/object_store/__init__.py,sha256=qAthNBl1jEziG7MK3o2VbLO1Rb4AUW5Q17eLW5DIlTU,272
399
399
  yellowdog_client/object_store/object_store_client.py,sha256=mhPmCXsMP5x1coiDic17KniJ5lV7Zg_5nhOSj1ZLibo,16361
400
400
  yellowdog_client/object_store/object_store_service_proxy.py,sha256=izoxh0ij9jlmkx4lmc2Sqg4Bj0nPvB14FNFwVhn8iZw,6273
@@ -468,8 +468,8 @@ yellowdog_client/usage/__init__.py,sha256=XQwRJqTdxKZa1QUTsxBEL0TqQJeQHGyPklFeqc
468
468
  yellowdog_client/usage/allowances_client.py,sha256=H6n63jXjT4OwuWJgFUXSjSmvGTZz9uspy3kj3upinaA,1337
469
469
  yellowdog_client/usage/allowances_client_impl.py,sha256=nQPnSzJKhL3WvyCn5fmiDkwE84xZryH9YvV5Z1GjU4M,2061
470
470
  yellowdog_client/usage/allowances_service_proxy.py,sha256=uO6LWnpjIzUcZTGdOxPXn7SyYX7NMRqO5KUiHUGr490,1320
471
- yellowdog_sdk-9.3.4.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
472
- yellowdog_sdk-9.3.4.dist-info/METADATA,sha256=w1nGeuDGIeIYBZoijcVG7SvchTgWnhg5dQ5mh7BVEMM,3238
473
- yellowdog_sdk-9.3.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
474
- yellowdog_sdk-9.3.4.dist-info/top_level.txt,sha256=6PH16DcoqpYHhQ5A0UJOjf0tg-1rTrNC9C2CLqCMuFo,26
475
- yellowdog_sdk-9.3.4.dist-info/RECORD,,
471
+ yellowdog_sdk-9.5.0.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
472
+ yellowdog_sdk-9.5.0.dist-info/METADATA,sha256=KjIaWiwVtFqySGS_IESaGX2yI-GrOmyqCgBaK7f8AH0,3238
473
+ yellowdog_sdk-9.5.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
474
+ yellowdog_sdk-9.5.0.dist-info/top_level.txt,sha256=6PH16DcoqpYHhQ5A0UJOjf0tg-1rTrNC9C2CLqCMuFo,26
475
+ yellowdog_sdk-9.5.0.dist-info/RECORD,,