ark-sdk-python 1.0.6__py3-none-any.whl → 1.1.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.
Files changed (102) hide show
  1. ark_sdk_python/ark.py +1 -1
  2. ark_sdk_python/ark_api.py +48 -0
  3. ark_sdk_python/auth/ark_auth.py +6 -6
  4. ark_sdk_python/cli_services/dpa/vm/ark_dpa_vm_policies_editor_service.py +0 -2
  5. ark_sdk_python/examples/create_identity_resources.py +20 -0
  6. ark_sdk_python/examples/default_suffix.py +12 -0
  7. ark_sdk_python/models/actions/services/__init__.py +3 -0
  8. ark_sdk_python/models/actions/services/ark_dpa_exec_action_consts.py +7 -1
  9. ark_sdk_python/models/actions/services/ark_identity_exec_action_consts.py +114 -0
  10. ark_sdk_python/models/ark_model.py +2 -2
  11. ark_sdk_python/models/common/ark_region.py +6 -0
  12. ark_sdk_python/models/common/ark_workspace_type.py +2 -0
  13. ark_sdk_python/models/common/identity/ark_identity_directory_schemas.py +2 -0
  14. ark_sdk_python/models/services/dpa/db/__init__.py +4 -0
  15. ark_sdk_python/models/services/dpa/db/ark_dpa_db_assets_type.py +7 -0
  16. ark_sdk_python/models/services/dpa/db/ark_dpa_db_base_generate_assets.py +1 -1
  17. ark_sdk_python/models/services/dpa/db/ark_dpa_db_oracle_generate_assets.py +1 -1
  18. ark_sdk_python/models/services/dpa/db/ark_dpa_db_proxy_fullchain_generate_assets.py +5 -0
  19. ark_sdk_python/models/services/dpa/policies/db/__init__.py +9 -0
  20. ark_sdk_python/models/services/dpa/policies/db/ark_dpa_db_connection_data.py +14 -1
  21. ark_sdk_python/models/services/dpa/policies/db/ark_dpa_db_enums.py +24 -0
  22. ark_sdk_python/models/services/dpa/policies/db/ark_dpa_db_policies_filter.py +2 -0
  23. ark_sdk_python/models/services/dpa/policies/db/ark_dpa_db_policies_stats.py +2 -0
  24. ark_sdk_python/models/services/dpa/policies/db/ark_dpa_db_policies_workspace_type_serializer.py +4 -0
  25. ark_sdk_python/models/services/dpa/policies/db/ark_dpa_db_policy_list_item.py +2 -0
  26. ark_sdk_python/models/services/dpa/policies/db/ark_dpa_db_providers.py +10 -0
  27. ark_sdk_python/models/services/dpa/policies/vm/__init__.py +0 -2
  28. ark_sdk_python/models/services/dpa/policies/vm/ark_dpa_vm_add_policy.py +4 -1
  29. ark_sdk_python/models/services/dpa/policies/vm/ark_dpa_vm_policies_workspace_type_serializer.py +2 -0
  30. ark_sdk_python/models/services/dpa/policies/vm/ark_dpa_vm_policy.py +4 -1
  31. ark_sdk_python/models/services/dpa/policies/vm/ark_dpa_vm_providers.py +2 -8
  32. ark_sdk_python/models/services/dpa/policies/vm/ark_dpa_vm_update_policy.py +4 -1
  33. ark_sdk_python/models/services/dpa/sso/__init__.py +5 -1
  34. ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_add_database.py +6 -0
  35. ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_database.py +1 -0
  36. ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_provider.py +6 -0
  37. ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_update_database.py +6 -0
  38. ark_sdk_python/models/services/identity/__init__.py +0 -0
  39. ark_sdk_python/models/services/identity/directories/__init__.py +21 -0
  40. ark_sdk_python/models/services/identity/directories/ark_identity_directory.py +9 -0
  41. ark_sdk_python/models/services/identity/directories/ark_identity_entity.py +37 -0
  42. ark_sdk_python/models/services/identity/directories/ark_identity_list_directories.py +10 -0
  43. ark_sdk_python/models/services/identity/directories/ark_identity_list_directories_entities.py +22 -0
  44. ark_sdk_python/models/services/identity/policies/__init__.py +31 -0
  45. ark_sdk_python/models/services/identity/policies/ark_identity_add_authentication_profile.py +13 -0
  46. ark_sdk_python/models/services/identity/policies/ark_identity_add_policy.py +13 -0
  47. ark_sdk_python/models/services/identity/policies/ark_identity_authentication_profile.py +14 -0
  48. ark_sdk_python/models/services/identity/policies/ark_identity_disable_policy.py +7 -0
  49. ark_sdk_python/models/services/identity/policies/ark_identity_enable_policy.py +7 -0
  50. ark_sdk_python/models/services/identity/policies/ark_identity_get_authentication_profile.py +10 -0
  51. ark_sdk_python/models/services/identity/policies/ark_identity_get_policy.py +7 -0
  52. ark_sdk_python/models/services/identity/policies/ark_identity_policy.py +25 -0
  53. ark_sdk_python/models/services/identity/policies/ark_identity_policy_info.py +11 -0
  54. ark_sdk_python/models/services/identity/policies/ark_identity_policy_operation.py +9 -0
  55. ark_sdk_python/models/services/identity/policies/ark_identity_policy_operation_type.py +6 -0
  56. ark_sdk_python/models/services/identity/policies/ark_identity_remove_authentication_profile.py +10 -0
  57. ark_sdk_python/models/services/identity/policies/ark_identity_remove_policy.py +7 -0
  58. ark_sdk_python/models/services/identity/roles/__init__.py +33 -0
  59. ark_sdk_python/models/services/identity/roles/ark_identity_add_admin_right_to_role.py +12 -0
  60. ark_sdk_python/models/services/identity/roles/ark_identity_add_group_to_role.py +8 -0
  61. ark_sdk_python/models/services/identity/roles/ark_identity_add_role_to_role.py +8 -0
  62. ark_sdk_python/models/services/identity/roles/ark_identity_add_user_to_role.py +8 -0
  63. ark_sdk_python/models/services/identity/roles/ark_identity_admin_right.py +10 -0
  64. ark_sdk_python/models/services/identity/roles/ark_identity_create_role.py +12 -0
  65. ark_sdk_python/models/services/identity/roles/ark_identity_delete_role.py +10 -0
  66. ark_sdk_python/models/services/identity/roles/ark_identity_list_role_members.py +10 -0
  67. ark_sdk_python/models/services/identity/roles/ark_identity_remove_group_from_role.py +8 -0
  68. ark_sdk_python/models/services/identity/roles/ark_identity_remove_role_from_role.py +8 -0
  69. ark_sdk_python/models/services/identity/roles/ark_identity_remove_user_from_role.py +8 -0
  70. ark_sdk_python/models/services/identity/roles/ark_identity_role.py +8 -0
  71. ark_sdk_python/models/services/identity/roles/ark_identity_role_id_by_name.py +7 -0
  72. ark_sdk_python/models/services/identity/roles/ark_identity_role_member.py +10 -0
  73. ark_sdk_python/models/services/identity/roles/ark_identity_update_role.py +12 -0
  74. ark_sdk_python/models/services/identity/users/__init__.py +19 -0
  75. ark_sdk_python/models/services/identity/users/ark_identity_create_user.py +29 -0
  76. ark_sdk_python/models/services/identity/users/ark_identity_delete_user.py +10 -0
  77. ark_sdk_python/models/services/identity/users/ark_identity_reset_user_password.py +8 -0
  78. ark_sdk_python/models/services/identity/users/ark_identity_update_user.py +14 -0
  79. ark_sdk_python/models/services/identity/users/ark_identity_user.py +16 -0
  80. ark_sdk_python/models/services/identity/users/ark_identity_user_by_name.py +7 -0
  81. ark_sdk_python/models/services/identity/users/ark_identity_user_id_by_name.py +7 -0
  82. ark_sdk_python/models/services/identity/users/ark_identity_user_info.py +16 -0
  83. ark_sdk_python/services/dpa/db/ark_dpa_db_service.py +48 -16
  84. ark_sdk_python/services/dpa/sso/ark_dpa_sso_service.py +9 -5
  85. ark_sdk_python/services/identity/__init__.py +3 -0
  86. ark_sdk_python/services/identity/ark_identity_api.py +53 -0
  87. ark_sdk_python/services/identity/common/__init__.py +3 -0
  88. ark_sdk_python/services/identity/common/ark_identity_base_service.py +38 -0
  89. ark_sdk_python/services/identity/directories/__init__.py +3 -0
  90. ark_sdk_python/services/identity/directories/ark_identity_directories_service.py +216 -0
  91. ark_sdk_python/services/identity/policies/__init__.py +3 -0
  92. ark_sdk_python/services/identity/policies/ark_identity_policies_service.py +366 -0
  93. ark_sdk_python/services/identity/roles/__init__.py +3 -0
  94. ark_sdk_python/services/identity/roles/ark_identity_roles_service.py +402 -0
  95. ark_sdk_python/services/identity/users/__init__.py +3 -0
  96. ark_sdk_python/services/identity/users/ark_identity_users_service.py +267 -0
  97. {ark_sdk_python-1.0.6.dist-info → ark_sdk_python-1.1.0.dist-info}/METADATA +12 -2
  98. {ark_sdk_python-1.0.6.dist-info → ark_sdk_python-1.1.0.dist-info}/RECORD +102 -39
  99. {ark_sdk_python-1.0.6.dist-info → ark_sdk_python-1.1.0.dist-info}/LICENSE.txt +0 -0
  100. {ark_sdk_python-1.0.6.dist-info → ark_sdk_python-1.1.0.dist-info}/NOTICES.md +0 -0
  101. {ark_sdk_python-1.0.6.dist-info → ark_sdk_python-1.1.0.dist-info}/WHEEL +0 -0
  102. {ark_sdk_python-1.0.6.dist-info → ark_sdk_python-1.1.0.dist-info}/entry_points.txt +0 -0
ark_sdk_python/ark.py CHANGED
@@ -17,7 +17,7 @@ from ark_sdk_python.actions import ArkAction, ArkCacheAction, ArkConfigureAction
17
17
 
18
18
  urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
19
19
 
20
- __version__ = '1.0.6'
20
+ __version__ = '1.1.0'
21
21
 
22
22
 
23
23
  def main():
ark_sdk_python/ark_api.py CHANGED
@@ -80,6 +80,54 @@ class ArkAPI:
80
80
  """
81
81
  return self.__profile
82
82
 
83
+ @property
84
+ def identity_directories(self) -> "ArkIdentityDirectoriesService":
85
+ """
86
+ Returns the Identity Directories Service if the appropriate authenticators were given
87
+
88
+ Returns:
89
+ ArkIdentityDirectoriesService: _description_
90
+ """
91
+ from ark_sdk_python.services.identity.directories import ArkIdentityDirectoriesService
92
+
93
+ return cast(ArkIdentityDirectoriesService, self.service(ArkIdentityDirectoriesService))
94
+
95
+ @property
96
+ def identity_policies(self) -> "ArkIdentityPoliciesService":
97
+ """
98
+ Returns the Identity Policies Service if the appropriate authenticators were given
99
+
100
+ Returns:
101
+ ArkIdentityPoliciesService: _description_
102
+ """
103
+ from ark_sdk_python.services.identity.policies import ArkIdentityPoliciesService
104
+
105
+ return cast(ArkIdentityPoliciesService, self.service(ArkIdentityPoliciesService))
106
+
107
+ @property
108
+ def identity_roles(self) -> "ArkIdentityRolesService":
109
+ """
110
+ Returns the Identity Roles Service if the appropriate authenticators were given
111
+
112
+ Returns:
113
+ ArkIdentityRolesService: _description_
114
+ """
115
+ from ark_sdk_python.services.identity.roles import ArkIdentityRolesService
116
+
117
+ return cast(ArkIdentityRolesService, self.service(ArkIdentityRolesService))
118
+
119
+ @property
120
+ def identity_users(self) -> "ArkIdentityUsersService":
121
+ """
122
+ Returns the Identity Users Service if the appropriate authenticators were given
123
+
124
+ Returns:
125
+ ArkIdentityUsersService: _description_
126
+ """
127
+ from ark_sdk_python.services.identity.users import ArkIdentityUsersService
128
+
129
+ return cast(ArkIdentityUsersService, self.service(ArkIdentityUsersService))
130
+
83
131
  @property
84
132
  def dpa_workspaces_db(self) -> "ArkDPADBWorkspaceService":
85
133
  """
@@ -180,7 +180,9 @@ class ArkAuth(ABC):
180
180
  return self.__token != None
181
181
  return False
182
182
 
183
- def load_authentication(self, profile: Optional[ArkProfile] = None, refresh_auth: bool = False) -> Optional[ArkToken]:
183
+ def load_authentication(
184
+ self, profile: Optional[ArkProfile] = None, refresh_auth: bool = False, grace_seconds: Optional[int] = None
185
+ ) -> Optional[ArkToken]:
184
186
  """
185
187
  Loads and returns the authentication token from the cache, if it exists.
186
188
  If specified, the method also attempts to refresh the token as needed.
@@ -188,6 +190,7 @@ class ArkAuth(ABC):
188
190
  Args:
189
191
  profile (Optional[ArkProfile], optional): _description_. Defaults to None.
190
192
  refresh_auth (bool, optional): _description_. Defaults to False.
193
+ grace_seconds (Optional[int], optional): try to refresh in case there is less than grace_seconds until expired. Defaults to None.
191
194
 
192
195
  Returns:
193
196
  Optional[ArkToken]: _description_
@@ -208,11 +211,8 @@ class ArkAuth(ABC):
208
211
  if self._cache_keyring:
209
212
  self.__token = self._cache_keyring.load_token(profile, self._resolve_cache_postfix(auth_profile))
210
213
  if refresh_auth:
211
- if (
212
- self.__token
213
- and self.__token.expires_in.replace(tzinfo=None) - timedelta(seconds=DEFAULT_EXPIRATION_GRACE_DELTA_SECONDS)
214
- > datetime.now()
215
- ):
214
+ grace_seconds = grace_seconds if grace_seconds is not None else DEFAULT_EXPIRATION_GRACE_DELTA_SECONDS
215
+ if self.__token and self.__token.expires_in.replace(tzinfo=None) - timedelta(seconds=grace_seconds) > datetime.now():
216
216
  self._logger.info('Token did not pass grace expiration, no need to refresh')
217
217
  else:
218
218
  self._logger.info('Trying to refresh token authentication')
@@ -21,7 +21,6 @@ from ark_sdk_python.models.services.dpa.policies.vm import (
21
21
  ArkDPAVMConnectionInformation,
22
22
  ArkDPAVMFQDNOperator,
23
23
  ArkDPAVMFQDNRule,
24
- ArkDPAVMFQDNRulesConjunction,
25
24
  ArkDPAVMGCPProviderData,
26
25
  ArkDPAVMLocalEphemeralUserConnectionMethodData,
27
26
  ArkDPAVMOnPremProviderData,
@@ -66,7 +65,6 @@ DEFAULT_GENERATED_PROVIDERS: Final[Dict[ArkWorkspaceType, ArkDPAVMProvider]] = {
66
65
  ),
67
66
  ArkWorkspaceType.GCP: ArkDPAVMGCPProviderData(regions=[], tags=[{'key': 'value'}], network_ids=[], projects=[]),
68
67
  ArkWorkspaceType.ONPREM: ArkDPAVMOnPremProviderData(
69
- fqdn_rules_conjunction=ArkDPAVMFQDNRulesConjunction.OR,
70
68
  fqdn_rules=[ArkDPAVMFQDNRule(operator=ArkDPAVMFQDNOperator.WILDCARD, computername_pattern='*', domain='default.com')],
71
69
  ),
72
70
  }
@@ -0,0 +1,20 @@
1
+ from ark_sdk_python.auth import ArkISPAuth
2
+ from ark_sdk_python.models.auth import ArkAuthMethod, ArkAuthProfile, ArkSecret, IdentityArkAuthMethodSettings
3
+ from ark_sdk_python.models.services.identity.roles import ArkIdentityCreateRole
4
+ from ark_sdk_python.models.services.identity.users import ArkIdentityCreateUser
5
+ from ark_sdk_python.services.identity import ArkIdentityAPI
6
+
7
+ if __name__ == "__main__":
8
+ isp_auth = ArkISPAuth()
9
+ isp_auth.authenticate(
10
+ auth_profile=ArkAuthProfile(
11
+ username='CoolUser', auth_method=ArkAuthMethod.Identity, auth_method_settings=IdentityArkAuthMethodSettings()
12
+ ),
13
+ secret=ArkSecret(secret='CoolPassword'),
14
+ )
15
+
16
+ # Create an identity service to create some users and roles
17
+ print('Creating identity roles and users')
18
+ identity_api = ArkIdentityAPI(isp_auth)
19
+ identity_api.identity_roles.create_role(ArkIdentityCreateRole(role_name='IT'))
20
+ identity_api.identity_users.create_user(ArkIdentityCreateUser(username='it_user', password='CoolPassword', roles=['IT']))
@@ -0,0 +1,12 @@
1
+ from ark_sdk_python.auth import ArkISPAuth
2
+ from ark_sdk_python.models.ark_profile import ArkProfileLoader
3
+ from ark_sdk_python.models.services.identity.directories import ArkIdentityListDirectoriesEntities
4
+ from ark_sdk_python.services.identity import ArkIdentityAPI
5
+
6
+ if __name__ == "__main__":
7
+ isp_auth = ArkISPAuth()
8
+ isp_auth.authenticate(ArkProfileLoader().load_default_profile())
9
+ identity_api = ArkIdentityAPI(isp_auth)
10
+ print(identity_api.identity_directories.tenant_default_suffix())
11
+ for page in identity_api.identity_directories.list_directories_entities(ArkIdentityListDirectoriesEntities()):
12
+ print([i.name for i in page.items])
@@ -1,14 +1,17 @@
1
1
  from typing import Any, List
2
2
 
3
3
  from ark_sdk_python.models.actions.services.ark_dpa_exec_action_consts import DPA_ACTIONS
4
+ from ark_sdk_python.models.actions.services.ark_identity_exec_action_consts import IDENTITY_ACTIONS
4
5
  from ark_sdk_python.models.actions.services.ark_sm_exec_action_consts import SM_ACTIONS
5
6
 
6
7
  SUPPORTED_SERVICE_ACTIONS: List[Any] = [
8
+ IDENTITY_ACTIONS,
7
9
  DPA_ACTIONS,
8
10
  SM_ACTIONS,
9
11
  ]
10
12
 
11
13
  __all__ = [
14
+ 'IDENTITY_ACTIONS',
12
15
  'DPA_ACTIONS',
13
16
  'SM_ACTIONS',
14
17
  'SUPPORTED_SERVICE_ACTIONS',
@@ -21,7 +21,12 @@ from ark_sdk_python.models.services.dpa.certificates import (
21
21
  ArkDPAGetCertificate,
22
22
  ArkDPAUpdateCertificate,
23
23
  )
24
- from ark_sdk_python.models.services.dpa.db import ArkDPADBMysqlExecution, ArkDPADBOracleGenerateAssets, ArkDPADBPsqlExecution
24
+ from ark_sdk_python.models.services.dpa.db import (
25
+ ArkDPADBMysqlExecution,
26
+ ArkDPADBOracleGenerateAssets,
27
+ ArkDPADBProxyFullchainGenerateAssets,
28
+ ArkDPADBPsqlExecution,
29
+ )
25
30
  from ark_sdk_python.models.services.dpa.k8s.ark_dpa_k8s_generate_kubeconfig import ArkDPAK8SGenerateKubeConfig
26
31
  from ark_sdk_python.models.services.dpa.policies.common import ArkDPADeletePolicy, ArkDPAGetPolicy, ArkDPAUpdatePolicyStatus
27
32
  from ark_sdk_python.models.services.dpa.policies.db import ArkDPADBAddPolicy, ArkDPADBPoliciesFilter, ArkDPADBUpdatePolicy
@@ -154,6 +159,7 @@ DB_ACTION_TO_SCHEMA_MAP: Final[Dict[(str, Optional[Type[ArkModel]])]] = {
154
159
  'psql': ArkDPADBPsqlExecution,
155
160
  'mysql': ArkDPADBMysqlExecution,
156
161
  'generate-oracle-tnsnames': ArkDPADBOracleGenerateAssets,
162
+ 'generate-proxy-fullchain': ArkDPADBProxyFullchainGenerateAssets,
157
163
  }
158
164
  DB_ACTION: Final[ArkServiceActionDefinition] = ArkServiceActionDefinition(action_name='db', schemas=DB_ACTION_TO_SCHEMA_MAP)
159
165
  K8S_ACTION_TO_SCHEMA_MAP: Final[Dict[(str, Optional[Type[ArkModel]])]] = {'generate-kubeconfig': ArkDPAK8SGenerateKubeConfig}
@@ -0,0 +1,114 @@
1
+ from typing import Dict, Final, Optional, Type
2
+
3
+ from ark_sdk_python.models import ArkModel
4
+ from ark_sdk_python.models.actions.ark_service_action_definition import ArkServiceActionDefinition
5
+ from ark_sdk_python.models.services.identity.directories import ArkIdentityListDirectories, ArkIdentityListDirectoriesEntities
6
+ from ark_sdk_python.models.services.identity.policies import (
7
+ ArkIdentityAddAuthenticationProfile,
8
+ ArkIdentityAddPolicy,
9
+ ArkIdentityDisablePolicy,
10
+ ArkIdentityEnablePolicy,
11
+ ArkIdentityGetAuthenticationProfile,
12
+ ArkIdentityGetPolicy,
13
+ ArkIdentityRemoveAuthenticationProfile,
14
+ ArkIdentityRemovePolicy,
15
+ )
16
+ from ark_sdk_python.models.services.identity.roles import (
17
+ ArkIdentityAddAdminRightsToRole,
18
+ ArkIdentityAddGroupToRole,
19
+ ArkIdentityAddRoleToRole,
20
+ ArkIdentityAddUserToRole,
21
+ ArkIdentityCreateRole,
22
+ ArkIdentityDeleteRole,
23
+ ArkIdentityListRoleMembers,
24
+ ArkIdentityRemoveGroupFromRole,
25
+ ArkIdentityRemoveRoleFromRole,
26
+ ArkIdentityRemoveUserFromRole,
27
+ ArkIdentityRoleIdByName,
28
+ ArkIdentityUpdateRole,
29
+ )
30
+ from ark_sdk_python.models.services.identity.users import (
31
+ ArkIdentityCreateUser,
32
+ ArkIdentityDeleteUser,
33
+ ArkIdentityResetUserPassword,
34
+ ArkIdentityUpdateUser,
35
+ ArkIdentityUserByName,
36
+ ArkIdentityUserIdByName,
37
+ )
38
+
39
+ # Identity Definitions
40
+ # Directories
41
+ IDENTITY_DIRECTORIES_ACTION_TO_SCHEMA_MAP: Final[Dict[str, Optional[Type[ArkModel]]]] = {
42
+ 'list-directories': ArkIdentityListDirectories,
43
+ 'list-directories-entities': ArkIdentityListDirectoriesEntities,
44
+ 'tenant-default-suffix': None,
45
+ }
46
+ IDENTITY_DIRECTORIES_ACTIONS: Final[ArkServiceActionDefinition] = ArkServiceActionDefinition(
47
+ action_name='directories',
48
+ schemas=IDENTITY_DIRECTORIES_ACTION_TO_SCHEMA_MAP,
49
+ )
50
+
51
+ # Policies
52
+ IDENTITY_POLICIES_ACTION_TO_SCHEMA_MAP: Final[Dict[str, Optional[Type[ArkModel]]]] = {
53
+ 'add-authentication-profile': ArkIdentityAddAuthenticationProfile,
54
+ 'remove-authentication-profile': ArkIdentityRemoveAuthenticationProfile,
55
+ 'list-authentication-profiles': None,
56
+ 'authentication-profile': ArkIdentityGetAuthenticationProfile,
57
+ 'add-policy': ArkIdentityAddPolicy,
58
+ 'remove-policy': ArkIdentityRemovePolicy,
59
+ 'list-policies': None,
60
+ 'policy': ArkIdentityGetPolicy,
61
+ 'enable-policy': ArkIdentityEnablePolicy,
62
+ 'disable-policy': ArkIdentityDisablePolicy,
63
+ 'enable-default-policy': None,
64
+ 'disable-default-policy': None,
65
+ }
66
+ IDENTITY_POLICIES_ACTIONS: Final[ArkServiceActionDefinition] = ArkServiceActionDefinition(
67
+ action_name='policies',
68
+ schemas=IDENTITY_POLICIES_ACTION_TO_SCHEMA_MAP,
69
+ )
70
+
71
+ # Roles
72
+ IDENTITY_ROLES_ACTION_TO_SCHEMA_MAP: Final[Dict[str, Optional[Type[ArkModel]]]] = {
73
+ 'add-user-to-role': ArkIdentityAddUserToRole,
74
+ 'add-group-to-role': ArkIdentityAddGroupToRole,
75
+ 'add-role-to-role': ArkIdentityAddRoleToRole,
76
+ 'remove-user-from-role': ArkIdentityRemoveUserFromRole,
77
+ 'remove-group-from-role': ArkIdentityRemoveGroupFromRole,
78
+ 'remove-role-from-role': ArkIdentityRemoveRoleFromRole,
79
+ 'create-role': ArkIdentityCreateRole,
80
+ 'update-role': ArkIdentityUpdateRole,
81
+ 'delete-role': ArkIdentityDeleteRole,
82
+ 'list-role-members': ArkIdentityListRoleMembers,
83
+ 'add-admin-rights-to-role': ArkIdentityAddAdminRightsToRole,
84
+ 'role-id-by-name': ArkIdentityRoleIdByName,
85
+ }
86
+ IDENTITY_ROLES_ACTIONS: Final[ArkServiceActionDefinition] = ArkServiceActionDefinition(
87
+ action_name='roles',
88
+ schemas=IDENTITY_ROLES_ACTION_TO_SCHEMA_MAP,
89
+ )
90
+
91
+ # Users
92
+ IDENTITY_USERS_ACTION_TO_SCHEMA_MAP: Final[Dict[str, Optional[Type[ArkModel]]]] = {
93
+ 'create-user': ArkIdentityCreateUser,
94
+ 'update-user': ArkIdentityUpdateUser,
95
+ 'delete-user': ArkIdentityDeleteUser,
96
+ 'user-by-name': ArkIdentityUserByName,
97
+ 'user-id-by-name': ArkIdentityUserIdByName,
98
+ 'reset-user-password': ArkIdentityResetUserPassword,
99
+ }
100
+ IDENTITY_USERS_ACTIONS: Final[ArkServiceActionDefinition] = ArkServiceActionDefinition(
101
+ action_name='users',
102
+ schemas=IDENTITY_USERS_ACTION_TO_SCHEMA_MAP,
103
+ )
104
+
105
+ # Service Actions Definition
106
+ IDENTITY_ACTIONS: Final[ArkServiceActionDefinition] = ArkServiceActionDefinition(
107
+ action_name='identity',
108
+ subactions=[
109
+ IDENTITY_DIRECTORIES_ACTIONS,
110
+ IDENTITY_POLICIES_ACTIONS,
111
+ IDENTITY_ROLES_ACTIONS,
112
+ IDENTITY_USERS_ACTIONS,
113
+ ],
114
+ )
@@ -1,6 +1,6 @@
1
1
  from typing import Any, Callable, Optional
2
2
 
3
- from humps import camel
3
+ from humps import camelize
4
4
  from pydantic import BaseModel, Field, validator
5
5
  from pydantic.generics import GenericModel
6
6
 
@@ -21,7 +21,7 @@ class ArkPresentableModel(ArkModel):
21
21
 
22
22
  class ArkCamelizedModel(ArkPresentableModel):
23
23
  class Config:
24
- alias_generator = camel.case
24
+ alias_generator = camelize
25
25
 
26
26
 
27
27
  class ArkTitleizedModel(ArkPresentableModel):
@@ -30,7 +30,9 @@ class ArkRegion(str, Enum):
30
30
  USEastPerf = 'us-east-perf'
31
31
  USEastPod = 'us-east-pod'
32
32
  Jakarta = 'ap-southeast-3'
33
+ Indonesia = 'ap-southeast-3'
33
34
  Melbourne = 'ap-southeast-4'
35
+ UAE = 'me-central-1'
34
36
 
35
37
 
36
38
  regions_full_names = {
@@ -62,7 +64,9 @@ regions_full_names = {
62
64
  ArkRegion.USEastPerf: 'us-east-perf (US-East-Perf)',
63
65
  ArkRegion.USEastPod: 'us-east-pod (US-East-Pod)',
64
66
  ArkRegion.Jakarta: 'ap-southeast-3 (Jakarta)',
67
+ ArkRegion.Indonesia: 'ap-southeast-3 (Indonesia)',
65
68
  ArkRegion.Melbourne: 'ap-southeast-4 (Melbourne)',
69
+ ArkRegion.UAE: 'me-central-1 (UAE)',
66
70
  }
67
71
 
68
72
  platform_region_dict = {
@@ -94,7 +98,9 @@ platform_region_dict = {
94
98
  'us-east-pod': 'US-East-Pod',
95
99
  'ISP-PcloudPerf-US East': 'isp-pcloudperf-us east',
96
100
  'Jakarta': 'ap-southeast-3',
101
+ 'Indonesia': 'ap-southeast-3',
97
102
  'Melbourne': 'ap-southeast-4',
103
+ 'UAE': 'me-central-1',
98
104
  }
99
105
 
100
106
 
@@ -12,5 +12,7 @@ class ArkWorkspaceType(str, MultiValueEnum):
12
12
  MSSQL = 'mssql', 'MSSQL'
13
13
  ORACLE = 'oracle', 'Oracle'
14
14
  POSTGRES = 'postgres', 'Postgres'
15
+ MONGO = 'mongo', 'Mongo'
16
+ DB2 = 'db2', 'Db2'
15
17
  FAULT = 'fault', 'FAULT'
16
18
  UNKNOWN = 'unknown', 'UNKNOWN', 'Unknown'
@@ -94,6 +94,7 @@ class RoleRow(ArkModel):
94
94
  id: str = Field(alias='_ID')
95
95
  admin_rights: Optional[List[RoleAdminRight]] = Field(alias='AdministrativeRights')
96
96
  is_hidden: Optional[bool] = Field(alias='IsHidden')
97
+ description: Optional[str] = Field(alias='Description')
97
98
 
98
99
 
99
100
  class RoleResult(ArkModel):
@@ -113,6 +114,7 @@ class UserRow(ArkModel):
113
114
  directory_service_type: DirectoryService = Field(alias='ServiceType')
114
115
  email: Optional[str] = Field(alias='EMail')
115
116
  internal_id: Optional[str] = Field(alias='InternalName')
117
+ description: Optional[str] = Field(alias='Description')
116
118
 
117
119
 
118
120
  class UserResult(ArkModel):
@@ -1,8 +1,10 @@
1
+ from ark_sdk_python.models.services.dpa.db.ark_dpa_db_assets_type import ArkDPADBAssetsType
1
2
  from ark_sdk_python.models.services.dpa.db.ark_dpa_db_base_execution import ArkDPADBBaseExecution
2
3
  from ark_sdk_python.models.services.dpa.db.ark_dpa_db_base_generate_assets import ArkDPADBAssetsResponseFormat, ArkDPADBBaseGenerateAssets
3
4
  from ark_sdk_python.models.services.dpa.db.ark_dpa_db_generated_assets import ArkDPADBGeneratedAssets
4
5
  from ark_sdk_python.models.services.dpa.db.ark_dpa_db_mysql_execution import ArkDPADBMysqlExecution
5
6
  from ark_sdk_python.models.services.dpa.db.ark_dpa_db_oracle_generate_assets import ArkDPADBOracleGenerateAssets
7
+ from ark_sdk_python.models.services.dpa.db.ark_dpa_db_proxy_fullchain_generate_assets import ArkDPADBProxyFullchainGenerateAssets
6
8
  from ark_sdk_python.models.services.dpa.db.ark_dpa_db_psql_execution import ArkDPADBPsqlExecution
7
9
 
8
10
  __all__ = [
@@ -13,4 +15,6 @@ __all__ = [
13
15
  'ArkDPADBAssetsResponseFormat',
14
16
  'ArkDPADBOracleGenerateAssets',
15
17
  'ArkDPADBGeneratedAssets',
18
+ 'ArkDPADBProxyFullchainGenerateAssets',
19
+ 'ArkDPADBAssetsType',
16
20
  ]
@@ -0,0 +1,7 @@
1
+ # pylint: disable=invalid-name
2
+ from enum import Enum
3
+
4
+
5
+ class ArkDPADBAssetsType(str, Enum):
6
+ OracleTNSAssets = 'oracle_tns_assets'
7
+ ProxyFullChain = 'proxy_full_chain'
@@ -18,4 +18,4 @@ class ArkDPADBBaseGenerateAssets(ArkModel):
18
18
  response_format: ArkDPADBAssetsResponseFormat = Field(
19
19
  description='In which format to return the assets', default=ArkDPADBAssetsResponseFormat.RAW
20
20
  )
21
- include_sso: bool = Field(description='Whether to generate the asset with SSO details', default=True)
21
+ folder: str = Field(description='Where to output the assets')
@@ -4,5 +4,5 @@ from ark_sdk_python.models.services.dpa.db.ark_dpa_db_base_generate_assets impor
4
4
 
5
5
 
6
6
  class ArkDPADBOracleGenerateAssets(ArkDPADBBaseGenerateAssets):
7
- folder: str = Field(description='Where to output the assets')
8
7
  unzip: bool = Field(description='Whether to save zipped or not', default=True)
8
+ include_sso: bool = Field(description='Whether to generate the asset with SSO details', default=True)
@@ -0,0 +1,5 @@
1
+ from ark_sdk_python.models.services.dpa.db.ark_dpa_db_base_generate_assets import ArkDPADBBaseGenerateAssets
2
+
3
+
4
+ class ArkDPADBProxyFullchainGenerateAssets(ArkDPADBBaseGenerateAssets):
5
+ pass
@@ -9,9 +9,11 @@ from ark_sdk_python.models.services.dpa.policies.db.ark_dpa_db_connection_data i
9
9
  ArkDPADBConnectAs,
10
10
  ArkDPADBLDAPAuth,
11
11
  ArkDPADBLocalDBAuth,
12
+ ArkDPADBMongoDBAuth,
12
13
  ArkDPADBOracleDBAuth,
13
14
  ArkDPADBResourceIdentifierType,
14
15
  )
16
+ from ark_sdk_python.models.services.dpa.policies.db.ark_dpa_db_enums import ArkDPADBMongoDatabaseBuiltinRole, ArkDPADBMongoGlobalBuiltinRole
15
17
  from ark_sdk_python.models.services.dpa.policies.db.ark_dpa_db_policies_filter import ArkDPADBPoliciesFilter
16
18
  from ark_sdk_python.models.services.dpa.policies.db.ark_dpa_db_policies_stats import ArkDPADBPoliciesStats
17
19
  from ark_sdk_python.models.services.dpa.policies.db.ark_dpa_db_policies_workspace_type_serializer import (
@@ -21,8 +23,10 @@ from ark_sdk_python.models.services.dpa.policies.db.ark_dpa_db_policy import Ark
21
23
  from ark_sdk_python.models.services.dpa.policies.db.ark_dpa_db_policy_list_item import ArkDPADBPolicyListItem
22
24
  from ark_sdk_python.models.services.dpa.policies.db.ark_dpa_db_providers import (
23
25
  ArkDPADB,
26
+ ArkDPADBDb2,
24
27
  ArkDPADBIdentifiers,
25
28
  ArkDPADBMariaDB,
29
+ ArkDPADBMongo,
26
30
  ArkDPADBMSSQL,
27
31
  ArkDPADBMySQL,
28
32
  ArkDPADBOracle,
@@ -42,6 +46,7 @@ __all__ = [
42
46
  'ArkDPADBLDAPAuth',
43
47
  'ArkDPADBLocalDBAuth',
44
48
  'ArkDPADBOracleDBAuth',
49
+ 'ArkDPADBMongoDBAuth',
45
50
  'ArkDPADBResourceIdentifierType',
46
51
  'ArkDPADBPoliciesFilter',
47
52
  'ArkDPADBPoliciesStats',
@@ -56,6 +61,10 @@ __all__ = [
56
61
  'ArkDPADBOracleResource',
57
62
  'ArkDPADBPostgres',
58
63
  'ArkDPADBOracle',
64
+ 'ArkDPADBMongo',
59
65
  'ArkDPADBProvidersData',
60
66
  'ArkDPADBUpdatePolicy',
67
+ 'ArkDPADBMongoDatabaseBuiltinRole',
68
+ 'ArkDPADBMongoGlobalBuiltinRole',
69
+ 'ArkDPADBDb2',
61
70
  ]
@@ -1,9 +1,10 @@
1
1
  from enum import Enum
2
- from typing import List, Optional
2
+ from typing import Dict, List, Optional
3
3
 
4
4
  from pydantic import Field
5
5
 
6
6
  from ark_sdk_python.models.ark_model import ArkCamelizedModel
7
+ from ark_sdk_python.models.services.dpa.policies.db.ark_dpa_db_enums import ArkDPADBMongoDatabaseBuiltinRole, ArkDPADBMongoGlobalBuiltinRole
7
8
 
8
9
 
9
10
  class ArkDPADBBaseAuth(ArkCamelizedModel):
@@ -38,9 +39,21 @@ class ArkDPADBOracleDBAuth(ArkDPADBBaseAuth):
38
39
  sysoper_role: bool = Field(description='Whether to apply to the ephemeral user the SYSOPER role', default=False)
39
40
 
40
41
 
42
+ class ArkDPADBMongoDBAuth(ArkDPADBBaseAuth):
43
+ global_builtin_roles: List[ArkDPADBMongoGlobalBuiltinRole] = Field(
44
+ description='Global builtin roles across all databases', default_factory=list
45
+ )
46
+ database_builtin_roles: Dict[str, List[ArkDPADBMongoDatabaseBuiltinRole]] = Field(
47
+ description='Per database builtin roles', default_factory=dict
48
+ )
49
+ database_custom_roles: Dict[str, List[str]] = Field(description='Custom per database roles', default_factory=dict)
50
+ applied_to: Optional[List[ArkDPADBAppliedTo]] = Field(description='Which resources to apply to')
51
+
52
+
41
53
  class ArkDPADBConnectAs(ArkCamelizedModel):
42
54
  ldap_auth: Optional[List[ArkDPADBLDAPAuth]] = Field(description='LDAP related authentication, only applies to MSSQL DB')
43
55
  db_auth: Optional[List[ArkDPADBLocalDBAuth]] = Field(
44
56
  description='Local DB related authentication, only applies to MySQL / MariaDB / Postgres'
45
57
  )
46
58
  oracle_auth: Optional[List[ArkDPADBOracleDBAuth]] = Field(description='Oracle DB related authentication, only applies to Oracle')
59
+ mongo_auth: Optional[List[ArkDPADBMongoDBAuth]] = Field(description='Mongo DB related authentication, only applies to Mongo')
@@ -0,0 +1,24 @@
1
+ # pylint: disable=invalid-name
2
+ from enum import Enum
3
+
4
+
5
+ class ArkDPADBMongoGlobalBuiltinRole(str, Enum):
6
+ Root = 'root'
7
+ DbAdminAnyDatabase = 'dbAdminAnyDatabase'
8
+ UserAdminAnyDatabase = 'userAdminAnyDatabase'
9
+ ReadWriteAnyDatabase = 'readWriteAnyDatabase'
10
+ ReadAnyDatabase = 'readAnyDatabase'
11
+ Backup = 'backup'
12
+ Restore = 'restore'
13
+ ClusterAdmin = 'clusterAdmin'
14
+ ClusterManager = 'clusterManager'
15
+ ClusterMonitor = 'clusterMonitor'
16
+ HostManager = 'hostManager'
17
+
18
+
19
+ class ArkDPADBMongoDatabaseBuiltinRole(str, Enum):
20
+ UserAdmin = 'userAdmin'
21
+ DbOwner = 'dbOwner'
22
+ DbAdmin = 'dbAdmin'
23
+ ReadWrite = 'readWrite'
24
+ Read = 'read'
@@ -20,6 +20,8 @@ class ArkDPADBPoliciesFilter(ArkDPABasePoliciesFilter):
20
20
  ArkWorkspaceType.POSTGRES,
21
21
  ArkWorkspaceType.MSSQL,
22
22
  ArkWorkspaceType.ORACLE,
23
+ ArkWorkspaceType.MONGO,
24
+ ArkWorkspaceType.DB2,
23
25
  ]:
24
26
  raise ValueError('Invalid Database Type')
25
27
  return val
@@ -19,6 +19,8 @@ class ArkDPADBPoliciesStats(ArkDPABasePoliciesStats):
19
19
  ArkWorkspaceType.POSTGRES,
20
20
  ArkWorkspaceType.MSSQL,
21
21
  ArkWorkspaceType.ORACLE,
22
+ ArkWorkspaceType.MONGO,
23
+ ArkWorkspaceType.DB2,
22
24
  ]:
23
25
  raise ValueError('Invalid Database Type')
24
26
  return val
@@ -15,4 +15,8 @@ def serialize_dpa_db_policies_workspace_type(ws_type: ArkWorkspaceType) -> str:
15
15
  return 'Postgres'
16
16
  elif ws_type == ArkWorkspaceType.ORACLE:
17
17
  return 'Oracle'
18
+ elif ws_type == ArkWorkspaceType.MONGO:
19
+ return 'Mongo'
20
+ elif ws_type == ArkWorkspaceType.DB2:
21
+ return 'Db2'
18
22
  raise ArkException('Invalid DB Policies Workspace Type')
@@ -21,6 +21,8 @@ class ArkDPADBPolicyListItem(ArkDPABasePolicyListItem):
21
21
  ArkWorkspaceType.POSTGRES,
22
22
  ArkWorkspaceType.MSSQL,
23
23
  ArkWorkspaceType.ORACLE,
24
+ ArkWorkspaceType.MONGO,
25
+ ArkWorkspaceType.DB2,
24
26
  ]:
25
27
  raise ValueError('Invalid Database Type')
26
28
  return val
@@ -29,6 +29,14 @@ class ArkDPADBPostgres(ArkDPADBIdentifiers):
29
29
  pass
30
30
 
31
31
 
32
+ class ArkDPADBMongo(ArkDPADBIdentifiers):
33
+ pass
34
+
35
+
36
+ class ArkDPADBDb2(ArkDPADBIdentifiers):
37
+ pass
38
+
39
+
32
40
  class ArkDPADBOracleResource(ArkCamelizedModel):
33
41
  name: str = Field(description='Name of the oracle db resource / asset')
34
42
  services: Optional[List[str]] = Field(description='Oracle services in the database')
@@ -44,6 +52,8 @@ class ArkDPADBProvidersData(ArkCamelizedModel):
44
52
  mariadb: Optional[ArkDPADBMariaDB] = Field(description='MariaDB related resources')
45
53
  postgres: Optional[ArkDPADBPostgres] = Field(description='PostgreSQL related resources')
46
54
  oracle: Optional[ArkDPADBOracle] = Field(description='Oracle related resources')
55
+ mongo: Optional[ArkDPADBMongo] = Field(description='Mongo related resources')
56
+ db2: Optional[ArkDPADBDb2] = Field(description='Db2 related resources')
47
57
 
48
58
  @root_validator
49
59
  @classmethod
@@ -26,7 +26,6 @@ from ark_sdk_python.models.services.dpa.policies.vm.ark_dpa_vm_providers import
26
26
  ArkDPAVMAzureProviderData,
27
27
  ArkDPAVMFQDNOperator,
28
28
  ArkDPAVMFQDNRule,
29
- ArkDPAVMFQDNRulesConjunction,
30
29
  ArkDPAVMGCPProviderData,
31
30
  ArkDPAVMKeyValTag,
32
31
  ArkDPAVMOnPremProviderData,
@@ -56,7 +55,6 @@ __all__ = [
56
55
  'ArkDPAVMProvidersDict',
57
56
  'ArkDPAVMFQDNOperator',
58
57
  'ArkDPAVMFQDNRule',
59
- 'ArkDPAVMFQDNRulesConjunction',
60
58
  'ArkDPAVMGCPProviderData',
61
59
  'ArkDPAVMKeyValTag',
62
60
  'ArkDPAVMOnPremProviderData',
@@ -25,7 +25,10 @@ class ArkDPAVMAddPolicy(ArkDPABaseAddPolicy):
25
25
  def validate_providers_data(cls, val):
26
26
  if val is not None:
27
27
  for k in val.keys():
28
- val[k]['providerName'] = serialize_dpa_vm_policies_workspace_type(ArkWorkspaceType(k))
28
+ if isinstance(val[k], dict):
29
+ val[k]['providerName'] = serialize_dpa_vm_policies_workspace_type(ArkWorkspaceType(k))
30
+ else:
31
+ val[k].provider_name = serialize_dpa_vm_policies_workspace_type(ArkWorkspaceType(k))
29
32
  if ArkWorkspaceType(k) not in [ArkWorkspaceType.AWS, ArkWorkspaceType.AZURE, ArkWorkspaceType.GCP, ArkWorkspaceType.ONPREM]:
30
33
  raise ValueError('Invalid Platform / Workspace Type')
31
34
  return val
@@ -9,6 +9,8 @@ def serialize_dpa_vm_policies_workspace_type(ws_type: ArkWorkspaceType) -> str:
9
9
  return 'AWS'
10
10
  elif ws_type == ArkWorkspaceType.AZURE:
11
11
  return 'Azure'
12
+ elif ws_type == ArkWorkspaceType.GCP:
13
+ return 'GCP'
12
14
  elif ws_type == ArkWorkspaceType.ONPREM:
13
15
  return 'OnPrem'
14
16
  raise ArkException('Invalid VM Policies Workspace Type')
@@ -20,7 +20,10 @@ class ArkDPAVMPolicy(ArkDPABasePolicy):
20
20
  def validate_providers_data(cls, val):
21
21
  if val is not None:
22
22
  for k in val.keys():
23
- val[k]['providerName'] = serialize_dpa_vm_policies_workspace_type(ArkWorkspaceType(k))
23
+ if isinstance(val[k], dict):
24
+ val[k]['providerName'] = serialize_dpa_vm_policies_workspace_type(ArkWorkspaceType(k))
25
+ else:
26
+ val[k].provider_name = serialize_dpa_vm_policies_workspace_type(ArkWorkspaceType(k))
24
27
  if ArkWorkspaceType(k) not in [ArkWorkspaceType.AWS, ArkWorkspaceType.AZURE, ArkWorkspaceType.GCP, ArkWorkspaceType.ONPREM]:
25
28
  raise ValueError('Invalid Platform / Workspace Type')
26
29
  return val