yellowdog-sdk 9.4.0__py3-none-any.whl → 9.6.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.4.0' # YEL-13641
1
+ __version__ = '9.6.0' # YEL-13736
@@ -1,6 +1,6 @@
1
1
  from dataclasses import dataclass, field
2
2
  from datetime import datetime
3
- from typing import Optional, Set
3
+ from typing import List, Optional
4
4
 
5
5
  from .identified import Identified
6
6
  from .permission import Permission
@@ -14,4 +14,4 @@ class AccessDelegate(Identified):
14
14
  subject: Optional[str] = None
15
15
  description: Optional[str] = None
16
16
  createdTime: Optional[datetime] = None
17
- requiredPermissions: Optional[Set[Permission]] = None
17
+ requiredPermissions: Optional[List[Permission]] = None
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from enum import Enum
4
- from typing import Set
4
+ from typing import List
5
5
 
6
6
 
7
7
  class Permission(Enum):
@@ -24,7 +24,8 @@ class Permission(Enum):
24
24
  COMPUTE_REQUIREMENT_WRITE = "COMPUTE_REQUIREMENT_WRITE", "Write Compute Requirements", COMPUTE_READ
25
25
  COMPUTE_SOURCE_TEMPLATE_WRITE = "COMPUTE_SOURCE_TEMPLATE_WRITE", "Write Compute Source Templates", COMPUTE_READ
26
26
  COMPUTE_USAGE_READ = "COMPUTE_USAGE_READ", "Read Compute Usage Data", None
27
- COMPUTE_USER_ATTRIBUTE_WRITE = "COMPUTE_USER_ATTRIBUTE_WRITE", "Write Compute User Attributes", COMPUTE_READ
27
+ COMPUTE_USER_ATTRIBUTE_READ = "COMPUTE_USER_ATTRIBUTE_READ", "Read Compute User Attributes", COMPUTE_READ
28
+ COMPUTE_USER_ATTRIBUTE_WRITE = "COMPUTE_USER_ATTRIBUTE_WRITE", "Write Compute User Attributes", COMPUTE_USER_ATTRIBUTE_READ
28
29
  IMAGE_READ = "IMAGE_READ", "Read Images", None
29
30
  IMAGE_WRITE = "IMAGE_WRITE", "Write Images", IMAGE_READ
30
31
  KEYRING_READ = "KEYRING_READ", "Read Keyrings", None
@@ -35,6 +36,9 @@ class Permission(Enum):
35
36
  METRICS_WRITE = "METRICS_WRITE", "Write Metrics", METRICS_READ
36
37
  NAMESPACE_READ = "NAMESPACE_READ", "Read Namespaces", None
37
38
  NAMESPACE_WRITE = "NAMESPACE_WRITE", "Write Namespaces", NAMESPACE_READ
39
+ ACCOUNT_NAMESPACE_WRITE = "ACCOUNT_NAMESPACE_WRITE", "Write Account Namespaces", NAMESPACE_READ
40
+ NAMESPACE_POLICY_READ = "NAMESPACE_POLICY_READ", "Read Namespace Policies", NAMESPACE_READ
41
+ NAMESPACE_POLICY_WRITE = "NAMESPACE_POLICY_WRITE", "Write Namespace Policies", NAMESPACE_POLICY_READ
38
42
  OBJECT_STORAGE_CONFIGURATION_READ = "OBJECT_STORAGE_CONFIGURATION_READ", "Read Object Storage Configurations", None
39
43
  OBJECT_STORAGE_CONFIGURATION_WRITE = "OBJECT_STORAGE_CONFIGURATION_WRITE", "Write Object Storage Configurations", OBJECT_STORAGE_CONFIGURATION_READ
40
44
  OBJECT_READ = "OBJECT_READ", "Read Objects", OBJECT_STORAGE_CONFIGURATION_READ
@@ -43,10 +47,11 @@ class Permission(Enum):
43
47
  WORK_REQUIREMENT_WRITE = "WORK_REQUIREMENT_WRITE", "Write Work Requirements", WORK_REQUIREMENT_READ
44
48
  WORKER_POOL_READ = "WORKER_POOL_READ", "Read Worker Pools", None
45
49
  WORKER_POOL_WRITE = "WORKER_POOL_WRITE", "Write Worker Pools", WORKER_POOL_READ
50
+ WORKER_POOL_WORKER_WRITE = "WORKER_POOL_WORKER_WRITE", "Write Worker Pool Workers", WORKER_POOL_READ
46
51
  WORKER_POOL_TOKEN_READ = "WORKER_POOL_TOKEN_READ", "Read Worker Pool Tokens", None
47
52
  WORKER_POOL_TOKEN_WRITE = "WORKER_POOL_TOKEN_WRITE", "Write Worker Pool Tokens", WORKER_POOL_READ
48
53
 
49
- def __new__(cls, value, title: str, includes: Set[Permission]):
54
+ def __new__(cls, value, title: str, includes: List[Permission]):
50
55
  obj = object.__new__(cls)
51
56
  obj._value_ = value
52
57
  obj.title = title
@@ -1,5 +1,5 @@
1
1
  from dataclasses import dataclass, field
2
- from typing import Optional, Set
2
+ from typing import List, Optional
3
3
 
4
4
  from .identified import Identified
5
5
  from .permission import Permission
@@ -9,5 +9,5 @@ from .permission import Permission
9
9
  class Role(Identified):
10
10
  id: Optional[str] = field(default=None, init=False)
11
11
  name: str
12
- permissions: Set[Permission]
12
+ permissions: List[Permission]
13
13
  description: Optional[str] = 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.4.0
3
+ Version: 9.6.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=Q9jwMFM73IU0UXUbN0HN8a7jTpCGVP8iSfB2z9oV-jI,34
3
+ yellowdog_client/_version.py,sha256=Q1W7qBxYiF57UPtabTKa4otneRr6siOb7KLAwx8Gwqc,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
@@ -54,7 +54,7 @@ yellowdog_client/images/page.py,sha256=UIvlxvzdcfnKvbcq2Cn6IB7ZtQMc3dzcBTUfElvVP
54
54
  yellowdog_client/images/pageable.py,sha256=msD8uGGJ2F5jEqTNDYaFrh6z6drlxOXZ1AmB0T3edM0,296
55
55
  yellowdog_client/images/sort.py,sha256=YS05DlIRg1Cm3QLBi6KFjFdB3g-b3WrqFFitlMJUEMM,167
56
56
  yellowdog_client/model/__init__.py,sha256=fyaODrUKYeKsX0-ZBnq1-gBNMgRFjqzYmrHjl0QJ8Oc,26403
57
- yellowdog_client/model/access_delegate.py,sha256=gZYX7Hqw_eBzBIHzbxyZfrhko0xZIsPCsf4gSzFalwc,568
57
+ yellowdog_client/model/access_delegate.py,sha256=gtJ8xfmHgnCv4WFeiqb7EMjTH9S-4hWA_G0Oco2ZpPc,570
58
58
  yellowdog_client/model/account.py,sha256=r_-7J-JjjMcQPZzaQ4_o9y6XY7-GMPRLWt9mGOucYU0,394
59
59
  yellowdog_client/model/account_allowance.py,sha256=c-MkSSRLB5Y5TMDZl5h5fipj4vzLLlO_AQXPeRJ0AYw,1021
60
60
  yellowdog_client/model/account_authentication_properties.py,sha256=PAfH0b_u16tDabnmt9QqDratjzQCLdAcmuSM6WD0CxI,421
@@ -285,8 +285,7 @@ yellowdog_client/model/oci_instances_compute_source.py,sha256=p94ErZj4SKyWjs19Ne
285
285
  yellowdog_client/model/oci_namespace_storage_configuration.py,sha256=YsbDhzC_FT1rQMeHEuYFpfZJSuiQKOwdGs72ksdF69g,408
286
286
  yellowdog_client/model/okta_account_authentication_properties.py,sha256=geKiNqQfYaW__U10FjNeNS83Ro54ZdBxo15qj0yWqyw,328
287
287
  yellowdog_client/model/operating_system_licence.py,sha256=nYL3U4d8pE1qtQlBrBPxJx7fUq6FWMAj--9lbya-Srs,347
288
- yellowdog_client/model/password_state.py,sha256=RULlqm2R_5neOhz3I0HAt72geLgxb4jFabg06ba4dKM,163
289
- yellowdog_client/model/permission.py,sha256=n03FFYUzdltQnKrlZ-x8raE3OPfWtqT30tcdUKEOqPA,3868
288
+ yellowdog_client/model/permission.py,sha256=BjN8P63RFq4iG6TeYJFLPeB4_Wg1-BFBhei8d-Pd_FY,4400
290
289
  yellowdog_client/model/permission_detail.py,sha256=ukTbqQgmU782PZJ7i0H2KAojgmRG4flzwR2ywZICOOQ,207
291
290
  yellowdog_client/model/price.py,sha256=kPZw5VGPg5vKRXL5brX8eZrH_GePvlBhdfMsm5fF6Dc,194
292
291
  yellowdog_client/model/processor_architecture.py,sha256=hkbyplz2R5SeVtINaB3CcU86yR64elm5qi9W48LHVms,157
@@ -301,7 +300,7 @@ yellowdog_client/model/region_search.py,sha256=mr61SruzGuJj02aI6gHE6cuXUUYwN7TEF
301
300
  yellowdog_client/model/requirement_allowance.py,sha256=ovCvZlKFeosV3kNxtJyGD4W7NdKviPSSvuunHjEWs3E,1052
302
301
  yellowdog_client/model/requirements_allowance.py,sha256=qp6MVWChl_RzrzslVrf2bOfUoSNsA3I4jlM0DLnlnJk,1197
303
302
  yellowdog_client/model/retry_properties.py,sha256=cccJRb-r1PkUixb-V26GIGf1iOXBnnhl1HGLy_Yr-Q8,559
304
- yellowdog_client/model/role.py,sha256=WRnnlJAJzweCiBbivs9-7aHgPR72rHY9z8zaZhOs1AA,323
303
+ yellowdog_client/model/role.py,sha256=EK87THjFL4wYnPlFcV2ind7motMefsDm9aAL9B2PrMI,325
305
304
  yellowdog_client/model/role_search.py,sha256=SL8rngS-BWoqaZ4WtwiScS12Y7JOpfG-itbpPk7qxBc,332
306
305
  yellowdog_client/model/role_summary.py,sha256=fkyZ_pLapNbQM67bSgX60kt20WN7hYCWA0j-1zwzIPc,202
307
306
  yellowdog_client/model/run_specification.py,sha256=btk53yhHWKvTXxhbzTDS0NjXBf25fqjxPwkc303I15M,2711
@@ -360,7 +359,6 @@ yellowdog_client/model/work_requirement.py,sha256=4-kqhjS33HEjf62Z_GjcgVxHZ4Xa5c
360
359
  yellowdog_client/model/work_requirement_dashboard_summary.py,sha256=BeiBs92lS1InDuYc4yt5uuWKhoNqlfdXkk3PmyinIuc,273
361
360
  yellowdog_client/model/work_requirement_search.py,sha256=xQ6U7v7O0udd2LB79DjLzX4DqpuifIwzip7Uv17jU7Y,621
362
361
  yellowdog_client/model/work_requirement_status.py,sha256=w_XCB-SDBJQjHnkM28UivdA53MVaAlDk0PzUcZyZYmk,1301
363
- yellowdog_client/model/work_requirement_status_count.py,sha256=o1fH1l4fVzelxLAMj2fWJTVHe-9qYeIysGlVlmclsr8,265
364
362
  yellowdog_client/model/work_requirement_summary.py,sha256=jEvsqI6IBykpP5_LAyoTiS5elHXfaQJ2Zj1FOwxQtMU,1374
365
363
  yellowdog_client/model/worker.py,sha256=KqUNIYwy9F-R4eY3Vk2JkZIyhERE-2CxmQe-6JgkI5Q,964
366
364
  yellowdog_client/model/worker_action.py,sha256=58HCgRGrOVIsz3aKPdwGrY51w5LQQwFlVPKBQ6808Wg,520
@@ -392,9 +390,9 @@ yellowdog_client/model/exceptions/session_close_exception.py,sha256=MyR8SUNioWh_
392
390
  yellowdog_client/model/exceptions/session_not_found_exception.py,sha256=2afDI5Ff00sYRJ2ZIr7ynq6DoA0xZda0_YboISc8ujU,286
393
391
  yellowdog_client/model/exceptions/unknown_exception.py,sha256=RhLAommtxskrJO14-zCyltzVtaSh9rYxFJ8byrK1GUk,261
394
392
  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
393
+ yellowdog_client/namespaces/namespaces_client.py,sha256=9O1K0ON8sYnOdgRuSVlp1xqYAmd9qs0AxtgWHK4xB8A,2580
394
+ yellowdog_client/namespaces/namespaces_client_impl.py,sha256=1liR-XVg9EyCZTOto3OQAQxAnGkKGGFFZa5ghgEwwyE,2010
395
+ yellowdog_client/namespaces/namespaces_service_proxy.py,sha256=IYoCGc9XmWTr5YAcDt_vFI1DToSsIB6T7L7Izb2Qzuc,1781
398
396
  yellowdog_client/object_store/__init__.py,sha256=qAthNBl1jEziG7MK3o2VbLO1Rb4AUW5Q17eLW5DIlTU,272
399
397
  yellowdog_client/object_store/object_store_client.py,sha256=mhPmCXsMP5x1coiDic17KniJ5lV7Zg_5nhOSj1ZLibo,16361
400
398
  yellowdog_client/object_store/object_store_service_proxy.py,sha256=izoxh0ij9jlmkx4lmc2Sqg4Bj0nPvB14FNFwVhn8iZw,6273
@@ -468,8 +466,8 @@ yellowdog_client/usage/__init__.py,sha256=XQwRJqTdxKZa1QUTsxBEL0TqQJeQHGyPklFeqc
468
466
  yellowdog_client/usage/allowances_client.py,sha256=H6n63jXjT4OwuWJgFUXSjSmvGTZz9uspy3kj3upinaA,1337
469
467
  yellowdog_client/usage/allowances_client_impl.py,sha256=nQPnSzJKhL3WvyCn5fmiDkwE84xZryH9YvV5Z1GjU4M,2061
470
468
  yellowdog_client/usage/allowances_service_proxy.py,sha256=uO6LWnpjIzUcZTGdOxPXn7SyYX7NMRqO5KUiHUGr490,1320
471
- yellowdog_sdk-9.4.0.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
472
- yellowdog_sdk-9.4.0.dist-info/METADATA,sha256=yHh-9YXrSmoViaWUU8VFL3EQnYCIwmFGmp_GK44WPu4,3238
473
- yellowdog_sdk-9.4.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
474
- yellowdog_sdk-9.4.0.dist-info/top_level.txt,sha256=6PH16DcoqpYHhQ5A0UJOjf0tg-1rTrNC9C2CLqCMuFo,26
475
- yellowdog_sdk-9.4.0.dist-info/RECORD,,
469
+ yellowdog_sdk-9.6.0.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
470
+ yellowdog_sdk-9.6.0.dist-info/METADATA,sha256=YEy9ZAP42lEqbH8Tbg5PQpUawE1UXzi-AnE7o3V7FMY,3238
471
+ yellowdog_sdk-9.6.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
472
+ yellowdog_sdk-9.6.0.dist-info/top_level.txt,sha256=6PH16DcoqpYHhQ5A0UJOjf0tg-1rTrNC9C2CLqCMuFo,26
473
+ yellowdog_sdk-9.6.0.dist-info/RECORD,,
@@ -1,9 +0,0 @@
1
- from enum import Enum
2
-
3
-
4
- class PasswordState(Enum):
5
- USER_PROVIDED = "USER_PROVIDED"
6
- UNSET = "UNSET"
7
-
8
- def __str__(self) -> str:
9
- return self.name
@@ -1,11 +0,0 @@
1
- from dataclasses import dataclass
2
- from typing import Optional
3
-
4
- from .work_requirement_status import WorkRequirementStatus
5
-
6
-
7
- @dataclass
8
- class WorkRequirementStatusCount:
9
- errored: bool = False
10
- status: Optional[WorkRequirementStatus] = None
11
- count: int = 0