yellowdog-sdk 9.6.0__py3-none-any.whl → 10.0.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.6.0' # YEL-13736
1
+ __version__ = '10.0.0' # YEL-13543
@@ -4,7 +4,7 @@ from abc import ABC, abstractmethod
4
4
  from typing import List
5
5
 
6
6
  from yellowdog_client.common import Closeable, SearchClient
7
- from yellowdog_client.model import AddApplicationRequest, AddApplicationResponse, AddGroupRequest, ApiKey, Application, ApplicationSearch, Group, GroupSearch, GroupSummary, PermissionDetail, Role, RoleSearch, UpdateApplicationRequest, UpdateGroupRequest, User, UserSearch
7
+ from yellowdog_client.model import AddApplicationRequest, AddApplicationResponse, AddGroupRequest, ApiKey, Application, ApplicationSearch, Group, GroupSearch, GroupSummary, PermissionDetail, Role, RoleScope, RoleSearch, UpdateApplicationRequest, UpdateGroupRequest, User, UserSearch
8
8
 
9
9
 
10
10
  class AccountClient(ABC, Closeable):
@@ -99,7 +99,7 @@ class AccountClient(ABC, Closeable):
99
99
  pass
100
100
 
101
101
  @abstractmethod
102
- def add_role_to_group(self, group_id: str, role_id: str) -> None:
102
+ def add_role_to_group(self, group_id: str, role_id: str, scope: RoleScope) -> None:
103
103
  pass
104
104
 
105
105
  @abstractmethod
@@ -5,7 +5,7 @@ from yellowdog_client.account.account_service_proxy import AccountServiceProxy
5
5
  from yellowdog_client.common import SearchClient
6
6
  from yellowdog_client.model import User, SliceReference, UserSearch, Slice, GroupSummary, Application, \
7
7
  ApplicationSearch, UpdateApplicationRequest, AddApplicationResponse, AddApplicationRequest, ApiKey, \
8
- PermissionDetail, Role, Group, AddGroupRequest, UpdateGroupRequest, GroupSearch, RoleSearch
8
+ PermissionDetail, Role, Group, AddGroupRequest, UpdateGroupRequest, GroupSearch, RoleSearch, RoleScope
9
9
 
10
10
 
11
11
  class AccountClientImpl(AccountClient):
@@ -105,8 +105,8 @@ class AccountClientImpl(AccountClient):
105
105
  def add_application_to_group(self, group_id: str, application_id: str) -> None:
106
106
  return self.__service_proxy.add_application_to_group(group_id, application_id)
107
107
 
108
- def add_role_to_group(self, group_id: str, role_id: str) -> None:
109
- return self.__service_proxy.add_role_to_group(group_id, role_id)
108
+ def add_role_to_group(self, group_id: str, role_id: str, scope: RoleScope) -> None:
109
+ return self.__service_proxy.add_role_to_group(group_id, role_id, scope)
110
110
 
111
111
  def remove_user_from_group(self, group_id: str, user_id: str) -> None:
112
112
  return self.__service_proxy.remove_user_from_group(group_id, user_id)
@@ -4,7 +4,7 @@ from yellowdog_client.common import Proxy
4
4
  from yellowdog_client.model import UserSearch, SliceReference, Slice, GroupSummary, Application, \
5
5
  UpdateApplicationRequest, AddApplicationRequest, AddApplicationResponse, ApiKey, ApplicationSearch, \
6
6
  PermissionDetail, \
7
- Role, RoleSearch, Group, AddGroupRequest, UpdateGroupRequest, GroupSearch, User
7
+ Role, RoleSearch, Group, AddGroupRequest, UpdateGroupRequest, GroupSearch, User, RoleScope
8
8
 
9
9
 
10
10
  class AccountServiceProxy:
@@ -104,8 +104,8 @@ class AccountServiceProxy:
104
104
  def add_application_to_group(self, group_id: str, application_id: str) -> None:
105
105
  return self.proxy.put(url="groups/%s/applications/%s" % (group_id, application_id))
106
106
 
107
- def add_role_to_group(self, group_id: str, role_id: str) -> None:
108
- return self.proxy.put(url="groups/%s/roles/%s" % (group_id, role_id))
107
+ def add_role_to_group(self, group_id: str, role_id: str, scope: RoleScope) -> None:
108
+ return self.proxy.put(data=scope, url="groups/%s/roles/%s" % (group_id, role_id))
109
109
 
110
110
  def remove_user_from_group(self, group_id: str, user_id: str) -> None:
111
111
  return self.proxy.delete("groups/%s/users/%s" % (group_id, user_id))
@@ -10,7 +10,6 @@ from jsons._compatibility_impl import get_union_params, get_naked_class
10
10
  from jsons._load_impl import load
11
11
  from jsons._dump_impl import dump
12
12
  from typish import get_args
13
-
14
13
  from yellowdog_client.model import Slice
15
14
  from yellowdog_client.model.exceptions import BaseCustomException
16
15
  from yellowdog_client.model.exceptions import ErrorType
@@ -99,6 +98,7 @@ def object_deserializer(value: dict, cls: type, **kwargs) -> object:
99
98
  instance = naked_subclass.__new__(naked_subclass)
100
99
  class_name = naked_subclass.__name__
101
100
  for attr_name, attr_value in value.items():
101
+ attr_name = f"{attr_name}_" if attr_name in keywords else attr_name
102
102
  try:
103
103
  attr_type = type_hints[attr_name]
104
104
  except KeyError:
@@ -156,6 +156,12 @@ jsons.set_deserializer(slice_deserializer, Slice)
156
156
  jsons.set_deserializer(union_deserializer, (Union, Optional))
157
157
  jsons.set_deserializer(object_deserializer, object, False)
158
158
 
159
+ keywords = {'global'}
160
+
161
+
162
+ def deserialization_key_transformer(key: str) -> str:
163
+ return key[:-1] if key[:-1] in keywords else key
164
+
159
165
 
160
166
  class Json:
161
167
  @classmethod
@@ -164,7 +170,7 @@ class Json:
164
170
 
165
171
  @staticmethod
166
172
  def dump(value: object) -> object:
167
- return jsons.dump(value, strip_nulls=True, strip_privates=True, use_enum_name=True)
173
+ return jsons.dump(value, strip_nulls=True, strip_privates=True, use_enum_name=True, key_transformer=deserialization_key_transformer)
168
174
 
169
175
  @classmethod
170
176
  def loads(cls, value: str, value_class: Type[T]) -> T:
@@ -138,6 +138,8 @@ from .gcs_namespace_storage_configuration import GcsNamespaceStorageConfiguratio
138
138
  from .google_cloud_credential import GoogleCloudCredential
139
139
  from .grant_application_access_request import GrantApplicationAccessRequest
140
140
  from .grant_user_access_request import GrantUserAccessRequest
141
+ from .granted_permission_scope import GrantedPermissionScope
142
+ from .granted_permissions import GrantedPermissions
141
143
  from .group import Group
142
144
  from .group_role import GroupRole
143
145
  from .group_search import GroupSearch
@@ -186,6 +188,7 @@ from .namespace_autoscaling_capacity_response import NamespaceAutoscalingCapacit
186
188
  from .namespace_objects_response import NamespaceObjectsResponse
187
189
  from .namespace_policy import NamespacePolicy
188
190
  from .namespace_policy_search import NamespacePolicySearch
191
+ from .namespace_ref import NamespaceRef
189
192
  from .namespace_search import NamespaceSearch
190
193
  from .namespace_storage_configuration import NamespaceStorageConfiguration
191
194
  from .new_password_request import NewPasswordRequest
@@ -231,6 +234,7 @@ from .okta_account_authentication_properties import OktaAccountAuthenticationPro
231
234
  from .operating_system_licence import OperatingSystemLicence
232
235
  from .permission import Permission
233
236
  from .permission_detail import PermissionDetail
237
+ from .permission_scope import PermissionScope
234
238
  from .price import Price
235
239
  from .processor_architecture import ProcessorArchitecture
236
240
  from .provider_node_summary import ProviderNodeSummary
@@ -245,6 +249,8 @@ from .requirement_allowance import RequirementAllowance
245
249
  from .requirements_allowance import RequirementsAllowance
246
250
  from .retry_properties import RetryProperties
247
251
  from .role import Role
252
+ from .role_scope import RoleScope
253
+ from .role_scope_validator import RoleScopeValidator
248
254
  from .role_search import RoleSearch
249
255
  from .role_summary import RoleSummary
250
256
  from .run_specification import RunSpecification
@@ -458,6 +464,8 @@ __all__ = [
458
464
  "GoogleCloudCredential",
459
465
  "GrantApplicationAccessRequest",
460
466
  "GrantUserAccessRequest",
467
+ "GrantedPermissionScope",
468
+ "GrantedPermissions",
461
469
  "Group",
462
470
  "GroupRole",
463
471
  "GroupSearch",
@@ -506,6 +514,7 @@ __all__ = [
506
514
  "NamespaceObjectsResponse",
507
515
  "NamespacePolicy",
508
516
  "NamespacePolicySearch",
517
+ "NamespaceRef",
509
518
  "NamespaceSearch",
510
519
  "NamespaceStorageConfiguration",
511
520
  "NewPasswordRequest",
@@ -551,6 +560,7 @@ __all__ = [
551
560
  "OperatingSystemLicence",
552
561
  "Permission",
553
562
  "PermissionDetail",
563
+ "PermissionScope",
554
564
  "Price",
555
565
  "ProcessorArchitecture",
556
566
  "ProviderNodeSummary",
@@ -565,6 +575,8 @@ __all__ = [
565
575
  "RequirementsAllowance",
566
576
  "RetryProperties",
567
577
  "Role",
578
+ "RoleScope",
579
+ "RoleScopeValidator",
568
580
  "RoleSearch",
569
581
  "RoleSummary",
570
582
  "RunSpecification",
@@ -1,9 +1,9 @@
1
1
  from dataclasses import dataclass, field
2
2
  from datetime import datetime
3
- from typing import List, Optional
3
+ from typing import Optional
4
4
 
5
+ from .granted_permissions import GrantedPermissions
5
6
  from .identified import Identified
6
- from .permission import Permission
7
7
 
8
8
 
9
9
  @dataclass
@@ -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[List[Permission]] = None
17
+ permissions: Optional[GrantedPermissions] = None
@@ -23,3 +23,4 @@ class ComputeRequirementDynamicTemplate(ComputeRequirementTemplate):
23
23
  constraints: Optional[List[AttributeConstraint]] = None
24
24
  preferences: Optional[List[AttributePreference]] = None
25
25
  sourceTraits: Optional[ComputeSourceTraitsFilter] = None
26
+ sourceNamespaces: Optional[List[str]] = None
@@ -0,0 +1,10 @@
1
+ from dataclasses import dataclass
2
+ from typing import List, Optional
3
+
4
+ from .namespace_ref import NamespaceRef
5
+
6
+
7
+ @dataclass
8
+ class GrantedPermissionScope:
9
+ global_: bool = False
10
+ namespaces: Optional[List[NamespaceRef]] = None
@@ -0,0 +1,10 @@
1
+ from dataclasses import dataclass
2
+ from typing import Dict, Optional
3
+
4
+ from .granted_permission_scope import GrantedPermissionScope
5
+ from .permission import Permission
6
+
7
+
8
+ @dataclass
9
+ class GrantedPermissions:
10
+ permissions: Optional[Dict[Permission, GrantedPermissionScope]] = None
@@ -1,8 +1,10 @@
1
1
  from dataclasses import dataclass
2
2
 
3
+ from .granted_permission_scope import GrantedPermissionScope
3
4
  from .role_summary import RoleSummary
4
5
 
5
6
 
6
7
  @dataclass
7
8
  class GroupRole:
8
9
  role: RoleSummary
10
+ scope: GrantedPermissionScope
@@ -0,0 +1,7 @@
1
+ from dataclasses import dataclass
2
+
3
+
4
+ @dataclass
5
+ class NamespaceRef:
6
+ id: str
7
+ namespace: str
@@ -3,58 +3,60 @@ from __future__ import annotations
3
3
  from enum import Enum
4
4
  from typing import List
5
5
 
6
+ from .permission_scope import PermissionScope
7
+
6
8
 
7
9
  class Permission(Enum):
8
- ACCOUNT_APPLICATION_READ = "ACCOUNT_APPLICATION_READ", "Read Account Applications", None
9
- ACCOUNT_APPLICATION_WRITE = "ACCOUNT_APPLICATION_WRITE", "Write Account Applications", ACCOUNT_APPLICATION_READ
10
- ACCOUNT_AUTH_PROPERTIES_READ = "ACCOUNT_AUTH_PROPERTIES_READ", "Read Account Authentication Properties", None
11
- ACCOUNT_AUTH_PROPERTIES_WRITE = "ACCOUNT_AUTH_PROPERTIES_WRITE", "Write Account Authentication Properties", ACCOUNT_AUTH_PROPERTIES_READ
12
- ACCOUNT_GROUP_READ = "ACCOUNT_GROUP_READ", "Read Account Groups", None
13
- ACCOUNT_GROUP_WRITE = "ACCOUNT_GROUP_WRITE", "Write Account Groups", ACCOUNT_GROUP_READ
14
- ACCOUNT_POLICY_READ = "ACCOUNT_POLICY_READ", "Read Account Policy", None
15
- ACCOUNT_POLICY_WRITE = "ACCOUNT_POLICY_WRITE", "Write Account Policy", ACCOUNT_POLICY_READ
16
- ACCOUNT_ROLE_READ = "ACCOUNT_ROLE_READ", "Read Account Roles", None
17
- ACCOUNT_ROLE_WRITE = "ACCOUNT_ROLE_WRITE", "Write Account Roles", ACCOUNT_ROLE_READ
18
- ACCOUNT_USER_READ = "ACCOUNT_USER_READ", "Read Account Users", None
19
- ACCOUNT_USER_WRITE = "ACCOUNT_USER_WRITE", "Write Account Users", ACCOUNT_USER_READ
20
- COMPUTE_ALLOWANCE_READ = "COMPUTE_ALLOWANCE_READ", "Read Compute Allowances", None
21
- COMPUTE_ALLOWANCE_WRITE = "COMPUTE_ALLOWANCE_WRITE", "Write Compute Allowances", COMPUTE_ALLOWANCE_READ
22
- COMPUTE_READ = "COMPUTE_READ", "Read Compute", None
23
- COMPUTE_REQUIREMENT_TEMPLATE_WRITE = "COMPUTE_REQUIREMENT_TEMPLATE_WRITE", "Write Compute Requirement Templates", COMPUTE_READ
24
- COMPUTE_REQUIREMENT_WRITE = "COMPUTE_REQUIREMENT_WRITE", "Write Compute Requirements", COMPUTE_READ
25
- COMPUTE_SOURCE_TEMPLATE_WRITE = "COMPUTE_SOURCE_TEMPLATE_WRITE", "Write Compute Source Templates", COMPUTE_READ
26
- COMPUTE_USAGE_READ = "COMPUTE_USAGE_READ", "Read Compute Usage Data", None
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
29
- IMAGE_READ = "IMAGE_READ", "Read Images", None
30
- IMAGE_WRITE = "IMAGE_WRITE", "Write Images", IMAGE_READ
31
- KEYRING_READ = "KEYRING_READ", "Read Keyrings", None
32
- KEYRING_WRITE = "KEYRING_WRITE", "Write Keyrings", KEYRING_READ
33
- KEYRING_ACCESS_WRITE = "KEYRING_ACCESS_WRITE", "Write Keyring Access", KEYRING_READ
34
- LOG_READ = "LOG_READ", "Read Logs", None
35
- METRICS_READ = "METRICS_READ", "Read Metrics", None
36
- METRICS_WRITE = "METRICS_WRITE", "Write Metrics", METRICS_READ
37
- NAMESPACE_READ = "NAMESPACE_READ", "Read Namespaces", None
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
42
- OBJECT_STORAGE_CONFIGURATION_READ = "OBJECT_STORAGE_CONFIGURATION_READ", "Read Object Storage Configurations", None
43
- OBJECT_STORAGE_CONFIGURATION_WRITE = "OBJECT_STORAGE_CONFIGURATION_WRITE", "Write Object Storage Configurations", OBJECT_STORAGE_CONFIGURATION_READ
44
- OBJECT_READ = "OBJECT_READ", "Read Objects", OBJECT_STORAGE_CONFIGURATION_READ
45
- OBJECT_WRITE = "OBJECT_WRITE", "Write Objects", OBJECT_READ
46
- WORK_REQUIREMENT_READ = "WORK_REQUIREMENT_READ", "Read Work Requirements", None
47
- WORK_REQUIREMENT_WRITE = "WORK_REQUIREMENT_WRITE", "Write Work Requirements", WORK_REQUIREMENT_READ
48
- WORKER_POOL_READ = "WORKER_POOL_READ", "Read Worker Pools", None
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
51
- WORKER_POOL_TOKEN_READ = "WORKER_POOL_TOKEN_READ", "Read Worker Pool Tokens", None
52
- WORKER_POOL_TOKEN_WRITE = "WORKER_POOL_TOKEN_WRITE", "Write Worker Pool Tokens", WORKER_POOL_READ
10
+ NAMESPACE_READ = "NAMESPACE_READ", "Read Namespaces", PermissionScope.NAMESPACED_OR_GLOBAL, None
11
+ COMPUTE_READ = "COMPUTE_READ", "Read Compute", PermissionScope.NAMESPACED_OR_GLOBAL, NAMESPACE_READ
12
+ COMPUTE_REQUIREMENT_TEMPLATE_WRITE = "COMPUTE_REQUIREMENT_TEMPLATE_WRITE", "Write Compute Requirement Templates", PermissionScope.NAMESPACED_OR_GLOBAL, COMPUTE_READ
13
+ COMPUTE_REQUIREMENT_WRITE = "COMPUTE_REQUIREMENT_WRITE", "Write Compute Requirements", PermissionScope.NAMESPACED_OR_GLOBAL, COMPUTE_READ
14
+ COMPUTE_SOURCE_TEMPLATE_WRITE = "COMPUTE_SOURCE_TEMPLATE_WRITE", "Write Compute Source Templates", PermissionScope.NAMESPACED_OR_GLOBAL, COMPUTE_READ
15
+ IMAGE_READ = "IMAGE_READ", "Read Images", PermissionScope.NAMESPACED_OR_GLOBAL, NAMESPACE_READ
16
+ IMAGE_WRITE = "IMAGE_WRITE", "Write Images", PermissionScope.NAMESPACED_OR_GLOBAL, IMAGE_READ
17
+ NAMESPACE_POLICY_READ = "NAMESPACE_POLICY_READ", "Read Namespace Policies", PermissionScope.NAMESPACED_OR_GLOBAL, NAMESPACE_READ
18
+ NAMESPACE_POLICY_WRITE = "NAMESPACE_POLICY_WRITE", "Write Namespace Policies", PermissionScope.NAMESPACED_OR_GLOBAL, NAMESPACE_POLICY_READ
19
+ WORK_REQUIREMENT_READ = "WORK_REQUIREMENT_READ", "Read Work Requirements", PermissionScope.NAMESPACED_OR_GLOBAL, NAMESPACE_READ
20
+ WORK_REQUIREMENT_WRITE = "WORK_REQUIREMENT_WRITE", "Write Work Requirements", PermissionScope.NAMESPACED_OR_GLOBAL, WORK_REQUIREMENT_READ
21
+ WORKER_POOL_READ = "WORKER_POOL_READ", "Read Worker Pools", PermissionScope.NAMESPACED_OR_GLOBAL, NAMESPACE_READ
22
+ WORKER_POOL_WRITE = "WORKER_POOL_WRITE", "Write Worker Pools", PermissionScope.NAMESPACED_OR_GLOBAL, WORKER_POOL_READ
23
+ WORKER_POOL_TOKEN_READ = "WORKER_POOL_TOKEN_READ", "Read Worker Pool Tokens", PermissionScope.NAMESPACED_OR_GLOBAL, WORKER_POOL_READ
24
+ WORKER_POOL_TOKEN_WRITE = "WORKER_POOL_TOKEN_WRITE", "Write Worker Pool Tokens", PermissionScope.NAMESPACED_OR_GLOBAL, WORKER_POOL_TOKEN_READ
25
+ WORKER_POOL_WORKER_WRITE = "WORKER_POOL_WORKER_WRITE", "Write Worker Pool Workers", PermissionScope.NAMESPACED_OR_GLOBAL, WORKER_POOL_READ
26
+ ACCOUNT_APPLICATION_READ = "ACCOUNT_APPLICATION_READ", "Read Account Applications", PermissionScope.GLOBAL_ONLY, None
27
+ ACCOUNT_APPLICATION_WRITE = "ACCOUNT_APPLICATION_WRITE", "Write Account Applications", PermissionScope.GLOBAL_ONLY, ACCOUNT_APPLICATION_READ
28
+ ACCOUNT_AUTH_PROPERTIES_READ = "ACCOUNT_AUTH_PROPERTIES_READ", "Read Account Authentication Properties", PermissionScope.GLOBAL_ONLY, None
29
+ ACCOUNT_AUTH_PROPERTIES_WRITE = "ACCOUNT_AUTH_PROPERTIES_WRITE", "Write Account Authentication Properties", PermissionScope.GLOBAL_ONLY, ACCOUNT_AUTH_PROPERTIES_READ
30
+ ACCOUNT_GROUP_READ = "ACCOUNT_GROUP_READ", "Read Account Groups", PermissionScope.GLOBAL_ONLY, None
31
+ ACCOUNT_GROUP_WRITE = "ACCOUNT_GROUP_WRITE", "Write Account Groups", PermissionScope.GLOBAL_ONLY, ACCOUNT_GROUP_READ
32
+ ACCOUNT_POLICY_READ = "ACCOUNT_POLICY_READ", "Read Account Policy", PermissionScope.GLOBAL_ONLY, None
33
+ ACCOUNT_POLICY_WRITE = "ACCOUNT_POLICY_WRITE", "Write Account Policy", PermissionScope.GLOBAL_ONLY, ACCOUNT_POLICY_READ
34
+ ACCOUNT_ROLE_READ = "ACCOUNT_ROLE_READ", "Read Account Roles", PermissionScope.GLOBAL_ONLY, None
35
+ ACCOUNT_ROLE_WRITE = "ACCOUNT_ROLE_WRITE", "Write Account Roles", PermissionScope.GLOBAL_ONLY, ACCOUNT_ROLE_READ
36
+ ACCOUNT_USER_READ = "ACCOUNT_USER_READ", "Read Account Users", PermissionScope.GLOBAL_ONLY, None
37
+ ACCOUNT_USER_WRITE = "ACCOUNT_USER_WRITE", "Write Account Users", PermissionScope.GLOBAL_ONLY, ACCOUNT_USER_READ
38
+ ACCOUNT_NAMESPACE_WRITE = "ACCOUNT_NAMESPACE_WRITE", "Write Account Namespaces", PermissionScope.GLOBAL_ONLY, NAMESPACE_READ
39
+ COMPUTE_ALLOWANCE_READ = "COMPUTE_ALLOWANCE_READ", "Read Compute Allowances", PermissionScope.GLOBAL_ONLY, None
40
+ COMPUTE_ALLOWANCE_WRITE = "COMPUTE_ALLOWANCE_WRITE", "Write Compute Allowances", PermissionScope.GLOBAL_ONLY, COMPUTE_ALLOWANCE_READ
41
+ COMPUTE_USER_ATTRIBUTE_READ = "COMPUTE_USER_ATTRIBUTE_READ", "Read Compute User Attributes", PermissionScope.GLOBAL_ONLY, None
42
+ COMPUTE_USER_ATTRIBUTE_WRITE = "COMPUTE_USER_ATTRIBUTE_WRITE", "Write Compute User Attributes", PermissionScope.GLOBAL_ONLY, COMPUTE_USER_ATTRIBUTE_READ
43
+ KEYRING_READ = "KEYRING_READ", "Read Keyrings", PermissionScope.GLOBAL_ONLY, None
44
+ KEYRING_WRITE = "KEYRING_WRITE", "Write Keyrings", PermissionScope.GLOBAL_ONLY, KEYRING_READ
45
+ KEYRING_ACCESS_WRITE = "KEYRING_ACCESS_WRITE", "Write Keyring Access", PermissionScope.GLOBAL_ONLY, KEYRING_READ
46
+ OBJECT_STORAGE_CONFIGURATION_READ = "OBJECT_STORAGE_CONFIGURATION_READ", "Read Object Storage Configurations", PermissionScope.GLOBAL_ONLY, None
47
+ OBJECT_STORAGE_CONFIGURATION_WRITE = "OBJECT_STORAGE_CONFIGURATION_WRITE", "Write Object Storage Configurations", PermissionScope.GLOBAL_ONLY, OBJECT_STORAGE_CONFIGURATION_READ
48
+ OBJECT_READ = "OBJECT_READ", "Read Objects", PermissionScope.GLOBAL_ONLY, OBJECT_STORAGE_CONFIGURATION_READ
49
+ OBJECT_WRITE = "OBJECT_WRITE", "Write Objects", PermissionScope.GLOBAL_ONLY, OBJECT_READ
50
+ METRICS_READ = "METRICS_READ", "Read Metrics", PermissionScope.GLOBAL_ONLY, None
51
+ METRICS_WRITE = "METRICS_WRITE", "Write Metrics", PermissionScope.GLOBAL_ONLY, METRICS_READ
52
+ LOG_READ = "LOG_READ", "Read Logs", PermissionScope.GLOBAL_ONLY, None
53
+ COMPUTE_USAGE_READ = "COMPUTE_USAGE_READ", "Read Compute Usage Data", PermissionScope.GLOBAL_ONLY, None
53
54
 
54
- def __new__(cls, value, title: str, includes: List[Permission]):
55
+ def __new__(cls, value, title: str, scope: PermissionScope, includes: List[Permission]):
55
56
  obj = object.__new__(cls)
56
57
  obj._value_ = value
57
58
  obj.title = title
59
+ obj.scope = scope
58
60
  obj.includes = includes
59
61
  return obj
60
62
 
@@ -1,9 +1,12 @@
1
1
  from dataclasses import dataclass
2
2
  from typing import Optional, Set
3
3
 
4
+ from .permission_scope import PermissionScope
5
+
4
6
 
5
7
  @dataclass
6
8
  class PermissionDetail:
7
9
  name: Optional[str] = None
8
10
  title: Optional[str] = None
9
11
  includes: Optional[Set[str]] = None
12
+ scope: Optional[PermissionScope] = None
@@ -0,0 +1,9 @@
1
+ from enum import Enum
2
+
3
+
4
+ class PermissionScope(Enum):
5
+ GLOBAL_ONLY = "GLOBAL_ONLY"
6
+ NAMESPACED_OR_GLOBAL = "NAMESPACED_OR_GLOBAL"
7
+
8
+ def __str__(self) -> str:
9
+ return self.name
@@ -0,0 +1,8 @@
1
+ from dataclasses import dataclass
2
+ from typing import Optional, Set
3
+
4
+
5
+ @dataclass
6
+ class RoleScope:
7
+ global_: bool = False
8
+ namespaces: Optional[Set[str]] = None
@@ -0,0 +1,6 @@
1
+ from dataclasses import dataclass
2
+
3
+
4
+ @dataclass
5
+ class RoleScopeValidator:
6
+ pass
@@ -14,4 +14,6 @@ class UserPortalContext:
14
14
  email: Optional[str] = None
15
15
  eulaAccepted: bool = False
16
16
  passwordSet: bool = False
17
+ allNamespacesReadable: bool = False
18
+ readableNamespaces: Optional[List[str]] = None
17
19
  features: Optional[List[Feature]] = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yellowdog-sdk
3
- Version: 9.6.0
3
+ Version: 10.0.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,12 +1,12 @@
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=Q1W7qBxYiF57UPtabTKa4otneRr6siOb7KLAwx8Gwqc,34
3
+ yellowdog_client/_version.py,sha256=LEWciWA2eLPWbiDWzmZDmkbfJCnMvv12RcvFQGcgjwk,35
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
7
- yellowdog_client/account/account_client.py,sha256=TRuWPcY4pyk78WXiLU_GOLTSHDhQcpppAGmzFlIPEXw,3398
8
- yellowdog_client/account/account_client_impl.py,sha256=DUtybxZJpWkS8iyzidJ-veYb9V0iNmEKzB47TcrzzIc,6021
9
- yellowdog_client/account/account_service_proxy.py,sha256=fO1XImrdEhY_uxSQWR8Y7T7z7TQkyfne-RESWy3CuC0,5396
7
+ yellowdog_client/account/account_client.py,sha256=VhF22v5kRZ1OjWc9bwG8Ra4bWxMgKxOD6Yf3eQVEv70,3427
8
+ yellowdog_client/account/account_client_impl.py,sha256=AK49lLrB0uJetJdyQCP3mfPRhwTdRMc_ZlB6Fb_5Bcc,6057
9
+ yellowdog_client/account/account_service_proxy.py,sha256=BfJqnKKBJNCjt__LPSN0ZvPNnOViTi0gvzRzulIwwdc,5437
10
10
  yellowdog_client/account/keyring_client.py,sha256=IFogh3LNNtL0cSbvbaEuhJ41UhtJbItyxm0AEnAaFMk,1125
11
11
  yellowdog_client/account/keyring_client_impl.py,sha256=s_IltFtozR7lYdR9XNEZVj885pgJ0DoInv0B24GtblI,1665
12
12
  yellowdog_client/account/keyring_service_proxy.py,sha256=8oK6lK3FxHOIbq--qcKSAd5bqkPGMN023CrX_Q8RKeI,1220
@@ -28,7 +28,7 @@ yellowdog_client/common/credentials/__init__.py,sha256=_KvuZpIO_TSSrJd6v1UrCtXOz
28
28
  yellowdog_client/common/credentials/api_key_authentication_headers_provider.py,sha256=Spt8kYEW8_qy7RMLfIqjArntBcYhhZX9cxcjJbdcKfw,843
29
29
  yellowdog_client/common/decorators/__init__.py,sha256=_Agup5QZbT3nnwNKBD38MaxRPXU58kaHrrFhrWOUGXw,76
30
30
  yellowdog_client/common/decorators/dispatcher.py,sha256=NMGWHLAbm4gCjWoiQ6M6Nj78O3PlSKXpGUylmPhtf0s,244
31
- yellowdog_client/common/json/__init__.py,sha256=xAc_LukSrQ7kM73iQWa8q6HuU3KbFy8uR9otHvyaTto,6345
31
+ yellowdog_client/common/json/__init__.py,sha256=Ki_aSlal5RRfCLP3i-05n9y-CQVhlg5XY2zyKUD6_H8,6601
32
32
  yellowdog_client/common/server_sent_events/__init__.py,sha256=4N8p9TNiCV1qyHqKML84BuHugIOmRYldzQPB4mHkO7o,507
33
33
  yellowdog_client/common/server_sent_events/delegated_subscription_event_listener.py,sha256=6KKNE89fSG4cvpFza_X3416AJWh6eJj_lLmWy2GbALQ,1278
34
34
  yellowdog_client/common/server_sent_events/subscription.py,sha256=eUfjQr88sY7TvLwbDyhBm3C9KOu9KmkCixhmt69OSyo,2980
@@ -53,8 +53,8 @@ yellowdog_client/images/images_service_proxy.py,sha256=eyP4u6FoIH1WJvNM_m8tacTCs
53
53
  yellowdog_client/images/page.py,sha256=UIvlxvzdcfnKvbcq2Cn6IB7ZtQMc3dzcBTUfElvVPwQ,391
54
54
  yellowdog_client/images/pageable.py,sha256=msD8uGGJ2F5jEqTNDYaFrh6z6drlxOXZ1AmB0T3edM0,296
55
55
  yellowdog_client/images/sort.py,sha256=YS05DlIRg1Cm3QLBi6KFjFdB3g-b3WrqFFitlMJUEMM,167
56
- yellowdog_client/model/__init__.py,sha256=fyaODrUKYeKsX0-ZBnq1-gBNMgRFjqzYmrHjl0QJ8Oc,26403
57
- yellowdog_client/model/access_delegate.py,sha256=gtJ8xfmHgnCv4WFeiqb7EMjTH9S-4hWA_G0Oco2ZpPc,570
56
+ yellowdog_client/model/__init__.py,sha256=2SX_I3myr1EI3qxiMc5KEuHtI9JvJ9n4QzSC51gcwk0,26831
57
+ yellowdog_client/model/access_delegate.py,sha256=jIW5P9jWG0LUirmci-rnHW_Lytv7dfKRJjAKwaLwvrU,575
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
@@ -132,7 +132,7 @@ yellowdog_client/model/cloud_provider.py,sha256=OXQJco__ZJk-a9lr13BB54AmiTdg64ot
132
132
  yellowdog_client/model/compute_namespace_filter.py,sha256=ZDq9TrtAtjoW9io8eL2Oe9e6EaQ1SgM4hsHfYu_vDXw,256
133
133
  yellowdog_client/model/compute_provision_strategy.py,sha256=AAhCn3zehsvJH9SRr5yJOLtsl_hkhgiD0PRS7MDeQJM,388
134
134
  yellowdog_client/model/compute_requirement.py,sha256=j3KLMJF6Fi6RoNHvKyV_wHUAjgJAnYWFk2M6ijqMPFI,2937
135
- yellowdog_client/model/compute_requirement_dynamic_template.py,sha256=qFJPDREt5H39i74Wi4piSKVEEbDXwQI17bvNBY1Y2TA,1073
135
+ yellowdog_client/model/compute_requirement_dynamic_template.py,sha256=tu7t-etOkwZehBGJRVA3jSnqY5ADp0hOP_hCkCQ3-HU,1122
136
136
  yellowdog_client/model/compute_requirement_dynamic_template_test_result.py,sha256=8n0F2rY5_KwBy_09T3txyRNQDpXuk1GU6Qua9fnIy5c,623
137
137
  yellowdog_client/model/compute_requirement_search.py,sha256=0Eb9I_9N141FscOT9kUQSwj4X1wplmZsdAOGorUU9iA,553
138
138
  yellowdog_client/model/compute_requirement_static_template.py,sha256=mBlu2CxRte4kDn55_OKd4nIbc1F9XbV_4O3Xalkjg3Y,715
@@ -194,8 +194,10 @@ yellowdog_client/model/gcs_namespace_storage_configuration.py,sha256=EqOV-0coFLg
194
194
  yellowdog_client/model/google_cloud_credential.py,sha256=07zKLvBRwYQOUqIQXRaTDJhOJ6ktvGw8dCF0LpXvtMI,408
195
195
  yellowdog_client/model/grant_application_access_request.py,sha256=d4FFwXw1rPSKBuoHhjrEcUV1rHOi35ZuRCV9HQ3LqFg,143
196
196
  yellowdog_client/model/grant_user_access_request.py,sha256=p-z4aMPVuAcJMs-rkK25ZkgcZ4lxyklhazfJ2v2o7bI,99
197
+ yellowdog_client/model/granted_permission_scope.py,sha256=ISUvN4_Pq6Wd_s5FXvFqKWWhpPRrPlvWVaTQgfn4oOE,230
198
+ yellowdog_client/model/granted_permissions.py,sha256=b-hS_i_Y67zFjamYv4mxqJN1X6sM6F8uYrOBmWF8aWs,279
197
199
  yellowdog_client/model/group.py,sha256=3x1XSB7jYo5mgJvTICAkJVcRSd3GDbHRWfzQkRIj7N0,364
198
- yellowdog_client/model/group_role.py,sha256=KL7e6iasV-YIlr95zIkZWswGoRbOKukYAoKd4QGxyLs,125
200
+ yellowdog_client/model/group_role.py,sha256=x3uqdr7hlrRqr9b7w9Di2-YRoeuLMyzgu1rUg6JzVog,220
199
201
  yellowdog_client/model/group_search.py,sha256=KHr1_5AQQC39LZz503r_mf5i0BKB652hUnM5xbtlV3I,254
200
202
  yellowdog_client/model/group_summary.py,sha256=QQgyJ6fqfNnBsFJEjAoGajQxZ1fKIcP8KmM1VR2CcbA,270
201
203
  yellowdog_client/model/identified.py,sha256=bnH2hghJLlDBOJKKSozqmc5QRzQGDwFL2dlmkdL9zJA,182
@@ -242,6 +244,7 @@ yellowdog_client/model/namespace_autoscaling_capacity_response.py,sha256=p1Z0OUY
242
244
  yellowdog_client/model/namespace_objects_response.py,sha256=icPFUDS5AaTGd0eJK1uRKt4cBHNE-TDFQVRIuH_ykh4,189
243
245
  yellowdog_client/model/namespace_policy.py,sha256=90j_9G5xjMRLzdfjq3BeDOyxOiCECrRRvVoRkx2CEAU,163
244
246
  yellowdog_client/model/namespace_policy_search.py,sha256=6RFeLBTccVMKzINijN3tuXEYulHPYkdb2-JSXRZOE2A,318
247
+ yellowdog_client/model/namespace_ref.py,sha256=4JDCK7DHNyx1b7b2kgu-QU6lUxvPQhEkaiPQz_qbSsI,98
245
248
  yellowdog_client/model/namespace_search.py,sha256=aMv44U_Op74dItLv5q1YwMqQF_IKd5S7YWFogAbSWGY,349
246
249
  yellowdog_client/model/namespace_storage_configuration.py,sha256=6JSDmRbrsWhJqOeqz3skdR8t2hlP40kvPoW0CV4hYbc,139
247
250
  yellowdog_client/model/new_password_request.py,sha256=7zJkK_3GJde6QQidaxFaj49DKIQg52FTJrbmgdfTxrE,91
@@ -285,8 +288,9 @@ yellowdog_client/model/oci_instances_compute_source.py,sha256=p94ErZj4SKyWjs19Ne
285
288
  yellowdog_client/model/oci_namespace_storage_configuration.py,sha256=YsbDhzC_FT1rQMeHEuYFpfZJSuiQKOwdGs72ksdF69g,408
286
289
  yellowdog_client/model/okta_account_authentication_properties.py,sha256=geKiNqQfYaW__U10FjNeNS83Ro54ZdBxo15qj0yWqyw,328
287
290
  yellowdog_client/model/operating_system_licence.py,sha256=nYL3U4d8pE1qtQlBrBPxJx7fUq6FWMAj--9lbya-Srs,347
288
- yellowdog_client/model/permission.py,sha256=BjN8P63RFq4iG6TeYJFLPeB4_Wg1-BFBhei8d-Pd_FY,4400
289
- yellowdog_client/model/permission_detail.py,sha256=ukTbqQgmU782PZJ7i0H2KAojgmRG4flzwR2ywZICOOQ,207
291
+ yellowdog_client/model/permission.py,sha256=IctnnmKiIzd846ZQNl2UTVkhRcfDPHjhR0pcPOehYkI,5891
292
+ yellowdog_client/model/permission_detail.py,sha256=5X8bDfPJCKler68wyRAIcLkkAvhu_899CV7Xa3DfJ50,298
293
+ yellowdog_client/model/permission_scope.py,sha256=PoRpCEQ233Xqgyf55JJNXtghQeefVhX47uPpGG8GmMg,191
290
294
  yellowdog_client/model/price.py,sha256=kPZw5VGPg5vKRXL5brX8eZrH_GePvlBhdfMsm5fF6Dc,194
291
295
  yellowdog_client/model/processor_architecture.py,sha256=hkbyplz2R5SeVtINaB3CcU86yR64elm5qi9W48LHVms,157
292
296
  yellowdog_client/model/provider_node_summary.py,sha256=maYsTKxTR7jNjZDr_BNs23rV91k_WL44Q3BVXGdKFSk,307
@@ -301,6 +305,8 @@ yellowdog_client/model/requirement_allowance.py,sha256=ovCvZlKFeosV3kNxtJyGD4W7N
301
305
  yellowdog_client/model/requirements_allowance.py,sha256=qp6MVWChl_RzrzslVrf2bOfUoSNsA3I4jlM0DLnlnJk,1197
302
306
  yellowdog_client/model/retry_properties.py,sha256=cccJRb-r1PkUixb-V26GIGf1iOXBnnhl1HGLy_Yr-Q8,559
303
307
  yellowdog_client/model/role.py,sha256=EK87THjFL4wYnPlFcV2ind7motMefsDm9aAL9B2PrMI,325
308
+ yellowdog_client/model/role_scope.py,sha256=381xdwSarxxOKR8SkQzTKL6DZk8fOa5whVk3VSon_TA,165
309
+ yellowdog_client/model/role_scope_validator.py,sha256=2u66BxCWJNX3k4DEUm5ixOtoOFupT2d7qsxi9U5k_ow,82
304
310
  yellowdog_client/model/role_search.py,sha256=SL8rngS-BWoqaZ4WtwiScS12Y7JOpfG-itbpPk7qxBc,332
305
311
  yellowdog_client/model/role_summary.py,sha256=fkyZ_pLapNbQM67bSgX60kt20WN7hYCWA0j-1zwzIPc,202
306
312
  yellowdog_client/model/run_specification.py,sha256=btk53yhHWKvTXxhbzTDS0NjXBf25fqjxPwkc303I15M,2711
@@ -352,7 +358,7 @@ yellowdog_client/model/update_user_request.py,sha256=RpJRi6efqrX1ZE6pRLRC5J6fcNy
352
358
  yellowdog_client/model/usage_type.py,sha256=vZKtclWVaGLeiHS-CYeDRAIj4hAt_gM-JyXzk8C484w,340
353
359
  yellowdog_client/model/user.py,sha256=sS16xGlDC3BsFeCfWRhYUv9Wp3Do8unZMT_VLr1MEd8,253
354
360
  yellowdog_client/model/user_login_request.py,sha256=dkDB05LDmX17eglFQu1LMD6LodI9t21OkUw8L_v-K-U,128
355
- yellowdog_client/model/user_portal_context.py,sha256=ad0GuMXA9hKobFXf4in91xcXkiPUtgq2d0RQJytCPIc,443
361
+ yellowdog_client/model/user_portal_context.py,sha256=VDkkSm1FpE6_IT0tDvYUy1RYYayg0zsp4B_czOoQ3bw,534
356
362
  yellowdog_client/model/user_search.py,sha256=XHEx0_yIqZnvi5A0zgvAnEbZ3oBASjqcWgM9GroVZn0,285
357
363
  yellowdog_client/model/waterfall_provision_strategy.py,sha256=1mAIACbWcVrsy3Bjulgh3TaPx83WoqRM443-jQ9FgaQ,727
358
364
  yellowdog_client/model/work_requirement.py,sha256=4-kqhjS33HEjf62Z_GjcgVxHZ4Xa5c54TR1DIDgYPuY,1714
@@ -466,8 +472,8 @@ yellowdog_client/usage/__init__.py,sha256=XQwRJqTdxKZa1QUTsxBEL0TqQJeQHGyPklFeqc
466
472
  yellowdog_client/usage/allowances_client.py,sha256=H6n63jXjT4OwuWJgFUXSjSmvGTZz9uspy3kj3upinaA,1337
467
473
  yellowdog_client/usage/allowances_client_impl.py,sha256=nQPnSzJKhL3WvyCn5fmiDkwE84xZryH9YvV5Z1GjU4M,2061
468
474
  yellowdog_client/usage/allowances_service_proxy.py,sha256=uO6LWnpjIzUcZTGdOxPXn7SyYX7NMRqO5KUiHUGr490,1320
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,,
475
+ yellowdog_sdk-10.0.0.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
476
+ yellowdog_sdk-10.0.0.dist-info/METADATA,sha256=e_0VtLI1_ngQEN2oiaWM7Eq7Ws--V2RNDy-F2P99I5k,3239
477
+ yellowdog_sdk-10.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
478
+ yellowdog_sdk-10.0.0.dist-info/top_level.txt,sha256=6PH16DcoqpYHhQ5A0UJOjf0tg-1rTrNC9C2CLqCMuFo,26
479
+ yellowdog_sdk-10.0.0.dist-info/RECORD,,