ark-sdk-python 1.1.2__py3-none-any.whl → 1.2.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 (93) hide show
  1. ark_sdk_python/ark.py +1 -1
  2. ark_sdk_python/ark_api.py +36 -0
  3. ark_sdk_python/auth/identity/ark_identity.py +7 -2
  4. ark_sdk_python/common/env/__init__.py +2 -0
  5. ark_sdk_python/common/env/ark_env_mapping.py +9 -0
  6. ark_sdk_python/examples/list_pcloud_accounts.py +20 -0
  7. ark_sdk_python/models/actions/services/__init__.py +3 -0
  8. ark_sdk_python/models/actions/services/ark_pcloud_exec_action_consts.py +131 -0
  9. ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_add_secret.py +4 -0
  10. ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_secret_type.py +1 -0
  11. ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_store_type.py +2 -0
  12. ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_update_secret.py +4 -0
  13. ark_sdk_python/models/services/dpa/secrets/db/secrets_data/__init__.py +8 -2
  14. ark_sdk_python/models/services/dpa/secrets/db/secrets_data/ark_dpa_db_atlas_access_keys_secret_data.py +16 -0
  15. ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_add_database.py +1 -0
  16. ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_auth_method.py +1 -0
  17. ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_database.py +1 -0
  18. ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_update_database.py +1 -0
  19. ark_sdk_python/models/services/pcloud/__init__.py +0 -0
  20. ark_sdk_python/models/services/pcloud/accounts/__init__.py +53 -0
  21. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_account.py +53 -0
  22. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_account_credentials.py +11 -0
  23. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_account_secret_version.py +12 -0
  24. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_accounts_filter.py +15 -0
  25. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_accounts_stats.py +11 -0
  26. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_add_account.py +10 -0
  27. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_change_account_credentials.py +7 -0
  28. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_delete_account.py +7 -0
  29. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_generate_account_credentials.py +7 -0
  30. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_get_account.py +7 -0
  31. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_get_account_credentials.py +16 -0
  32. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_link_account.py +11 -0
  33. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_list_account_secret_versions.py +8 -0
  34. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_reconcile_account_credentials.py +7 -0
  35. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_set_account_next_credentials.py +8 -0
  36. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_unlink_account.py +8 -0
  37. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_update_account.py +27 -0
  38. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_update_account_credentials_in_vault.py +8 -0
  39. ark_sdk_python/models/services/pcloud/accounts/ark_pcloud_verify_account_credentias.py +7 -0
  40. ark_sdk_python/models/services/pcloud/platforms/__init__.py +69 -0
  41. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_activate_target_platform.py +7 -0
  42. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_deactivate_target_platform.py +7 -0
  43. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_delete_target_platform.py +7 -0
  44. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_duplicate_target_platform.py +11 -0
  45. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_duplicated_target_platform_info.py +12 -0
  46. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_export_platform.py +8 -0
  47. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_export_target_platform.py +8 -0
  48. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_get_platform.py +7 -0
  49. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_get_target_platform.py +7 -0
  50. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_import_platform.py +7 -0
  51. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_import_target_platform.py +7 -0
  52. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_platform.py +66 -0
  53. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_platforms_filter.py +12 -0
  54. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_platforms_stats.py +11 -0
  55. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_target_platform.py +76 -0
  56. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_target_platforms_filter.py +18 -0
  57. ark_sdk_python/models/services/pcloud/platforms/ark_pcloud_target_platforms_stats.py +11 -0
  58. ark_sdk_python/models/services/pcloud/safes/__init__.py +46 -0
  59. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_add_safe.py +5 -0
  60. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_add_safe_member.py +23 -0
  61. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_delete_safe.py +7 -0
  62. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_delete_safe_member.py +8 -0
  63. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_get_safe.py +7 -0
  64. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_get_safe_member.py +8 -0
  65. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_get_safe_members_stats.py +7 -0
  66. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_list_safe_members.py +7 -0
  67. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_safe.py +30 -0
  68. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_safe_member.py +65 -0
  69. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_safe_members_filter.py +15 -0
  70. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_safes_filters.py +12 -0
  71. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_safes_members_stats.py +17 -0
  72. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_safes_stats.py +11 -0
  73. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_update_safe.py +7 -0
  74. ark_sdk_python/models/services/pcloud/safes/ark_pcloud_update_safe_member.py +18 -0
  75. ark_sdk_python/services/dpa/secrets/db/ark_dpa_db_secrets_service.py +58 -18
  76. ark_sdk_python/services/dpa/workspaces/db/ark_dpa_db_workspace_service.py +8 -2
  77. ark_sdk_python/services/identity/common/ark_identity_base_service.py +18 -13
  78. ark_sdk_python/services/pcloud/__init__.py +0 -0
  79. ark_sdk_python/services/pcloud/accounts/__init__.py +3 -0
  80. ark_sdk_python/services/pcloud/accounts/ark_pcloud_accounts_service.py +465 -0
  81. ark_sdk_python/services/pcloud/ark_pcloud_api.py +41 -0
  82. ark_sdk_python/services/pcloud/common/__init__.py +3 -0
  83. ark_sdk_python/services/pcloud/common/ark_pcloud_base_service.py +27 -0
  84. ark_sdk_python/services/pcloud/platforms/__init__.py +3 -0
  85. ark_sdk_python/services/pcloud/platforms/ark_pcloud_platforms_service.py +462 -0
  86. ark_sdk_python/services/pcloud/safes/__init__.py +3 -0
  87. ark_sdk_python/services/pcloud/safes/ark_pcloud_safes_service.py +523 -0
  88. {ark_sdk_python-1.1.2.dist-info → ark_sdk_python-1.2.0.dist-info}/METADATA +23 -1
  89. {ark_sdk_python-1.1.2.dist-info → ark_sdk_python-1.2.0.dist-info}/RECORD +93 -24
  90. {ark_sdk_python-1.1.2.dist-info → ark_sdk_python-1.2.0.dist-info}/LICENSE.txt +0 -0
  91. {ark_sdk_python-1.1.2.dist-info → ark_sdk_python-1.2.0.dist-info}/NOTICES.md +0 -0
  92. {ark_sdk_python-1.1.2.dist-info → ark_sdk_python-1.2.0.dist-info}/WHEEL +0 -0
  93. {ark_sdk_python-1.1.2.dist-info → ark_sdk_python-1.2.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.1.2'
20
+ __version__ = '1.2.0'
21
21
 
22
22
 
23
23
  def main():
ark_sdk_python/ark_api.py CHANGED
@@ -235,3 +235,39 @@ class ArkAPI:
235
235
  from ark_sdk_python.services.sm import ArkSMService
236
236
 
237
237
  return cast(ArkSMService, self.service(ArkSMService))
238
+
239
+ @property
240
+ def pcloud_accounts(self) -> "ArkPCloudAccountsService":
241
+ """
242
+ Returns the PCloud Accounts service if the appropriate authenticators were given
243
+
244
+ Returns:
245
+ ArkPCloudAccountsService: _description_
246
+ """
247
+ from ark_sdk_python.services.pcloud.accounts import ArkPCloudAccountsService
248
+
249
+ return cast(ArkPCloudAccountsService, self.service(ArkPCloudAccountsService))
250
+
251
+ @property
252
+ def pcloud_safes(self) -> "ArkPCloudSafesService":
253
+ """
254
+ Returns the PCloud Safes service if the appropriate authenticators were given
255
+
256
+ Returns:
257
+ ArkPCloudSafesService: _description_
258
+ """
259
+ from ark_sdk_python.services.pcloud.safes import ArkPCloudSafesService
260
+
261
+ return cast(ArkPCloudSafesService, self.service(ArkPCloudSafesService))
262
+
263
+ @property
264
+ def pcloud_platforms(self) -> "ArkPCloudPlatformsService":
265
+ """
266
+ Returns the PCloud Platforms service if the appropriate authenticators were given
267
+
268
+ Returns:
269
+ ArkPCloudPlatformsService: _description_
270
+ """
271
+ from ark_sdk_python.services.pcloud.platforms import ArkPCloudPlatformsService
272
+
273
+ return cast(ArkPCloudPlatformsService, self.service(ArkPCloudPlatformsService))
@@ -539,18 +539,21 @@ class ArkIdentity:
539
539
  return self.auth_identity(profile, interactive, force)
540
540
 
541
541
  self.__logger.debug('Attempting to refresh authenticate to Identity')
542
+ saved_cookies = None
543
+ if self.__session:
544
+ saved_cookies = self.__session.cookies.copy()
542
545
  self.__session = Session()
543
546
  self.__session.verify = self.__verify
544
547
  self.__session.headers.update(ArkIdentityFQDNResolver.default_headers())
545
548
  decoded_token = get_unverified_claims(self.__session_details.token)
546
549
  platform_tenant_id = decoded_token['tenant_id']
547
- cookies = {
550
+ refresh_cookies = {
548
551
  f'refreshToken-{platform_tenant_id}': self.__session_details.refresh_token,
549
552
  f'idToken-{platform_tenant_id}': self.__session_details.token,
550
553
  }
551
554
  response = self.__session.post(
552
555
  url=f'{self.__identity_url}/OAuth2/RefreshPlatformToken',
553
- cookies=cookies,
556
+ cookies=refresh_cookies,
554
557
  )
555
558
  if response.status_code != HTTPStatus.OK:
556
559
  raise ArkAuthException('Failed to refresh token')
@@ -558,6 +561,8 @@ class ArkIdentity:
558
561
  new_refresh_token = response.cookies.get(f'refreshToken-{platform_tenant_id}')
559
562
  if not new_token or not new_refresh_token:
560
563
  raise ArkAuthException('Failed to retrieve refresh tokens cookies')
564
+ if saved_cookies:
565
+ self.__session.cookies = saved_cookies
561
566
  self.__session_details.token = new_token
562
567
  self.__session_details.refresh_token = new_refresh_token
563
568
  self.__session_details.token_lifetime = (
@@ -9,6 +9,7 @@ from ark_sdk_python.common.env.ark_env_mapping import (
9
9
  AwsEnv,
10
10
  check_if_identity_generated_suffix,
11
11
  get_deploy_env,
12
+ is_gov_cloud,
12
13
  )
13
14
 
14
15
  __all__ = [
@@ -22,4 +23,5 @@ __all__ = [
22
23
  'IDENTITY_TENANT_NAME',
23
24
  'SHELL_DOMAIN',
24
25
  'ROOT_DOMAIN',
26
+ 'is_gov_cloud',
25
27
  ]
@@ -6,6 +6,7 @@ from typing import Dict, Final
6
6
 
7
7
  class AwsEnv(str, Enum):
8
8
  PROD = 'prod'
9
+ GOV_PROD = 'gov-prod'
9
10
 
10
11
 
11
12
  DEPLOY_ENV: Final[str] = 'DEPLOY_ENV'
@@ -44,3 +45,11 @@ def get_deploy_env() -> AwsEnv:
44
45
  def check_if_identity_generated_suffix(tenant_suffix, env: AwsEnv) -> bool:
45
46
  pattern = IDENTITY_GENERATED_SUFFIX_PATTERN.get(env)
46
47
  return re.match(pattern, tenant_suffix) is not None
48
+
49
+
50
+ def is_gov_cloud() -> bool:
51
+ try:
52
+ region_name = os.getenv('AWS_REGION') or os.getenv('AWS_DEFAULT_REGION')
53
+ return region_name.startswith('us-gov')
54
+ except Exception:
55
+ return False
@@ -0,0 +1,20 @@
1
+ import pprint
2
+
3
+ from ark_sdk_python.auth import ArkISPAuth
4
+ from ark_sdk_python.models.auth import ArkAuthMethod, ArkAuthProfile, ArkSecret, IdentityArkAuthMethodSettings
5
+ from ark_sdk_python.services.pcloud.accounts import ArkPCloudAccountsService
6
+
7
+ if __name__ == '__main__':
8
+ isp_auth = ArkISPAuth(cache_authentication=False)
9
+ isp_auth.authenticate(
10
+ auth_profile=ArkAuthProfile(
11
+ username='user@cyberark.cloud.12345',
12
+ auth_method=ArkAuthMethod.Identity,
13
+ auth_method_settings=IdentityArkAuthMethodSettings(),
14
+ ),
15
+ secret=ArkSecret(secret="CoolPassword"),
16
+ )
17
+ accounts_service = ArkPCloudAccountsService(isp_auth=isp_auth)
18
+ for page in accounts_service.list_accounts():
19
+ for item in page:
20
+ pprint.pprint(item.dict())
@@ -2,17 +2,20 @@ 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
4
  from ark_sdk_python.models.actions.services.ark_identity_exec_action_consts import IDENTITY_ACTIONS
5
+ from ark_sdk_python.models.actions.services.ark_pcloud_exec_action_consts import PCLOUD_ACTIONS
5
6
  from ark_sdk_python.models.actions.services.ark_sm_exec_action_consts import SM_ACTIONS
6
7
 
7
8
  SUPPORTED_SERVICE_ACTIONS: List[Any] = [
8
9
  IDENTITY_ACTIONS,
9
10
  DPA_ACTIONS,
10
11
  SM_ACTIONS,
12
+ PCLOUD_ACTIONS,
11
13
  ]
12
14
 
13
15
  __all__ = [
14
16
  'IDENTITY_ACTIONS',
15
17
  'DPA_ACTIONS',
16
18
  'SM_ACTIONS',
19
+ 'PCLOUD_ACTIONS',
17
20
  'SUPPORTED_SERVICE_ACTIONS',
18
21
  ]
@@ -0,0 +1,131 @@
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.pcloud.accounts import (
6
+ ArkPCloudAccountsFilter,
7
+ ArkPCloudAddAccount,
8
+ ArkPCloudChangeAccountCredentials,
9
+ ArkPCloudDeleteAccount,
10
+ ArkPCloudGenerateAccountCredentials,
11
+ ArkPCloudGetAccount,
12
+ ArkPCloudGetAccountCredentials,
13
+ ArkPCloudLinkAccount,
14
+ ArkPCloudListAccountSecretVersions,
15
+ ArkPCloudReconcileAccountCredentials,
16
+ ArkPCloudSetAccountNextCredentials,
17
+ ArkPCloudUnlinkAccount,
18
+ ArkPCloudUpdateAccount,
19
+ ArkPCloudUpdateAccountCredentialsInVault,
20
+ ArkPCloudVerifyAccountCredentials,
21
+ )
22
+ from ark_sdk_python.models.services.pcloud.platforms import (
23
+ ArkPCloudActivateTargetPlatform,
24
+ ArkPCloudDeactivateTargetPlatform,
25
+ ArkPCloudDeleteTargetPlatform,
26
+ ArkPCloudDuplicateTargetPlatform,
27
+ ArkPCloudExportPlatform,
28
+ ArkPCloudExportTargetPlatform,
29
+ ArkPCloudGetPlatform,
30
+ ArkPCloudGetTargetPlatform,
31
+ ArkPCloudImportPlatform,
32
+ ArkPCloudImportTargetPlatform,
33
+ ArkPCloudPlatformsFilter,
34
+ ArkPCloudTargetPlatformsFilter,
35
+ )
36
+ from ark_sdk_python.models.services.pcloud.safes import (
37
+ ArkPCloudAddSafe,
38
+ ArkPCloudAddSafeMember,
39
+ ArkPCloudDeleteSafe,
40
+ ArkPCloudDeleteSafeMember,
41
+ ArkPCloudGetSafe,
42
+ ArkPCloudGetSafeMember,
43
+ ArkPCloudGetSafeMembersStats,
44
+ ArkPCloudListSafeMembers,
45
+ ArkPCloudSafeMembersFilters,
46
+ ArkPCloudSafesFilters,
47
+ ArkPCloudUpdateSafe,
48
+ ArkPCloudUpdateSafeMember,
49
+ )
50
+
51
+ # PCloud Accounts Definitions
52
+ PCLOUD_ACCOUNTS_ACTION_TO_SCHEMA_MAP: Final[Dict[str, Optional[Type[ArkModel]]]] = {
53
+ 'add-account': ArkPCloudAddAccount,
54
+ 'update-account': ArkPCloudUpdateAccount,
55
+ 'delete-account': ArkPCloudDeleteAccount,
56
+ 'account': ArkPCloudGetAccount,
57
+ 'account-credentials': ArkPCloudGetAccountCredentials,
58
+ 'list-accounts': None,
59
+ 'list-accounts-by': ArkPCloudAccountsFilter,
60
+ 'list-account-secret-versions': ArkPCloudListAccountSecretVersions,
61
+ 'generate-account-credentials': ArkPCloudGenerateAccountCredentials,
62
+ 'verify-account-credentials': ArkPCloudVerifyAccountCredentials,
63
+ 'change-account-credentials': ArkPCloudChangeAccountCredentials,
64
+ 'set-account-next-credentials': ArkPCloudSetAccountNextCredentials,
65
+ 'update-account-credentials-in-vault': ArkPCloudUpdateAccountCredentialsInVault,
66
+ 'reconcile-account-credentials': ArkPCloudReconcileAccountCredentials,
67
+ 'accounts-stats': None,
68
+ 'link-account': ArkPCloudLinkAccount,
69
+ 'unlink-account': ArkPCloudUnlinkAccount,
70
+ }
71
+ PCLOUD_ACCOUNTS_ACTION: Final[ArkServiceActionDefinition] = ArkServiceActionDefinition(
72
+ action_name='accounts',
73
+ schemas=PCLOUD_ACCOUNTS_ACTION_TO_SCHEMA_MAP,
74
+ )
75
+
76
+ # PCloud Safes Definitions
77
+ PCLOUD_SAFES_ACTION_TO_SCHEMA_MAP: Final[Dict[str, Optional[Type[ArkModel]]]] = {
78
+ 'add-safe': ArkPCloudAddSafe,
79
+ 'update-safe': ArkPCloudUpdateSafe,
80
+ 'delete-safe': ArkPCloudDeleteSafe,
81
+ 'safe': ArkPCloudGetSafe,
82
+ 'list-safes': None,
83
+ 'list-safes-by': ArkPCloudSafesFilters,
84
+ 'safes-stats': None,
85
+ 'add-safe-member': ArkPCloudAddSafeMember,
86
+ 'update-safe-member': ArkPCloudUpdateSafeMember,
87
+ 'delete-safe-member': ArkPCloudDeleteSafeMember,
88
+ 'safe-member': ArkPCloudGetSafeMember,
89
+ 'list-safe-members': ArkPCloudListSafeMembers,
90
+ 'list-safe-members-by': ArkPCloudSafeMembersFilters,
91
+ 'safe-members-stats': ArkPCloudGetSafeMembersStats,
92
+ 'safes-members-stats': None,
93
+ }
94
+ PCLOUD_SAFES_ACTION: Final[ArkServiceActionDefinition] = ArkServiceActionDefinition(
95
+ action_name='safes',
96
+ schemas=PCLOUD_SAFES_ACTION_TO_SCHEMA_MAP,
97
+ )
98
+
99
+ # PCloud Platforms Definitions
100
+ PCLOUD_PLATFORMS_ACTION_TO_SCHEMA_MAP: Final[Dict[str, Optional[Type[ArkModel]]]] = {
101
+ 'list-platforms': None,
102
+ 'list-platforms-by': ArkPCloudPlatformsFilter,
103
+ 'import-platform': ArkPCloudImportPlatform,
104
+ 'import-target-platform': ArkPCloudImportTargetPlatform,
105
+ 'export-platform': ArkPCloudExportPlatform,
106
+ 'export-target-platform': ArkPCloudExportTargetPlatform,
107
+ 'platform': ArkPCloudGetPlatform,
108
+ 'platforms-stats': None,
109
+ 'activate-target-platform': ArkPCloudActivateTargetPlatform,
110
+ 'deactivate-target-platform': ArkPCloudDeactivateTargetPlatform,
111
+ 'list-target-platforms': None,
112
+ 'list-target-platforms-by': ArkPCloudTargetPlatformsFilter,
113
+ 'target-platform': ArkPCloudGetTargetPlatform,
114
+ 'delete-target-platform': ArkPCloudDeleteTargetPlatform,
115
+ 'duplicate-target-platform': ArkPCloudDuplicateTargetPlatform,
116
+ 'target-platforms-stats': None,
117
+ }
118
+ PCLOUD_PLATFORMS_ACTION: Final[ArkServiceActionDefinition] = ArkServiceActionDefinition(
119
+ action_name='platforms',
120
+ schemas=PCLOUD_PLATFORMS_ACTION_TO_SCHEMA_MAP,
121
+ )
122
+
123
+ # Service Actions Definition
124
+ PCLOUD_ACTIONS: Final[ArkServiceActionDefinition] = ArkServiceActionDefinition(
125
+ action_name='pcloud',
126
+ subactions=[
127
+ PCLOUD_ACCOUNTS_ACTION,
128
+ PCLOUD_PLATFORMS_ACTION,
129
+ PCLOUD_SAFES_ACTION,
130
+ ],
131
+ )
@@ -32,5 +32,9 @@ class ArkDPADBAddSecret(ArkModel):
32
32
  iam_access_key_id: Optional[SecretStr] = Field(description='Access key id of the user')
33
33
  iam_secret_access_key: Optional[SecretStr] = Field(description='Secret access key of the user')
34
34
 
35
+ # Atlas Secret Type
36
+ atlas_public_key: Optional[str] = Field(description='Public part of mongo atlas access keys')
37
+ atlas_private_key: Optional[SecretStr] = Field(description='Private part of mongo atlas access keys')
38
+
35
39
  class Config:
36
40
  json_encoders = {SecretStr: lambda v: v.get_secret_value() if v else None}
@@ -6,3 +6,4 @@ class ArkDPADBSecretType(str, Enum):
6
6
  UsernamePassword = 'username_password'
7
7
  IAMUser = 'iam_user'
8
8
  CyberArkPAM = 'cyberark_pam'
9
+ AtlasAccessKeys = 'atlas_access_keys'
@@ -13,4 +13,6 @@ class ArkDPADBStoreType(str, Enum):
13
13
  SECRET_TYPE_TO_STORE_DICT: Final[Dict[ArkDPADBSecretType, ArkDPADBStoreType]] = {
14
14
  ArkDPADBSecretType.UsernamePassword: ArkDPADBStoreType.Managed,
15
15
  ArkDPADBSecretType.CyberArkPAM: ArkDPADBStoreType.PAM,
16
+ ArkDPADBSecretType.IAMUser: ArkDPADBStoreType.Managed,
17
+ ArkDPADBSecretType.AtlasAccessKeys: ArkDPADBStoreType.Managed,
16
18
  }
@@ -28,6 +28,10 @@ class ArkDPADBUpdateSecret(ArkModel):
28
28
  iam_access_key_id: Optional[SecretStr] = Field(description='Access key id of the user')
29
29
  iam_secret_access_key: Optional[SecretStr] = Field(description='Secret access key of the user')
30
30
 
31
+ # Atlas Secret Type
32
+ atlas_public_key: Optional[str] = Field(description='Public part of mongo atlas access keys')
33
+ atlas_private_key: Optional[SecretStr] = Field(description='Private part of mongo atlas access keys')
34
+
31
35
  class Config:
32
36
  json_encoders = {SecretStr: lambda v: v.get_secret_value() if v else None}
33
37
 
@@ -1,5 +1,9 @@
1
1
  from typing import Union
2
2
 
3
+ from ark_sdk_python.models.services.dpa.secrets.db.secrets_data.ark_dpa_db_atlas_access_keys_secret_data import (
4
+ ArkDPADBAtlasAccessKeysSecretData,
5
+ ArkDPADBExposedAtlasAccessKeysSecretData,
6
+ )
3
7
  from ark_sdk_python.models.services.dpa.secrets.db.secrets_data.ark_dpa_db_iam_user_secret_data import (
4
8
  ArkDPADBExposedIAMUserSecretData,
5
9
  ArkDPADBIAMUserSecretData,
@@ -9,5 +13,7 @@ from ark_sdk_python.models.services.dpa.secrets.db.secrets_data.ark_dpa_db_user_
9
13
  ArkDPADBUserPasswordSecretData,
10
14
  )
11
15
 
12
- ArkDPADBSecretDataTypes = Union[ArkDPADBUserPasswordSecretData, ArkDPADBIAMUserSecretData]
13
- ArkDPADBSecretExposedDataTypes = Union[ArkDPADBExposedUserPasswordSecretData, ArkDPADBExposedIAMUserSecretData]
16
+ ArkDPADBSecretDataTypes = Union[ArkDPADBUserPasswordSecretData, ArkDPADBIAMUserSecretData, ArkDPADBAtlasAccessKeysSecretData]
17
+ ArkDPADBSecretExposedDataTypes = Union[
18
+ ArkDPADBExposedUserPasswordSecretData, ArkDPADBExposedIAMUserSecretData, ArkDPADBExposedAtlasAccessKeysSecretData
19
+ ]
@@ -0,0 +1,16 @@
1
+ from typing import Any, Dict, Optional
2
+
3
+ from pydantic import BaseModel, Field, SecretStr
4
+
5
+
6
+ class ArkDPADBAtlasAccessKeysSecretData(BaseModel):
7
+ public_key: str = Field(description='Public part of mongo atlas access keys')
8
+ private_key: SecretStr = Field(description='Private part of mongo atlas access keys')
9
+ metadata: Optional[Dict[str, Any]] = Field(description='Extra secret details')
10
+
11
+ class Config:
12
+ json_encoders = {SecretStr: lambda v: v.get_secret_value() if v else None}
13
+
14
+
15
+ class ArkDPADBExposedAtlasAccessKeysSecretData(BaseModel):
16
+ public_key: str = Field(description='Public part of mongo atlas access keys')
@@ -25,6 +25,7 @@ class ArkDPADBAddDatabase(ArkCamelizedModel):
25
25
  description='Whether to enforce certificate validation on TLS comm to the DC', default=True
26
26
  )
27
27
  domain_controller_ldaps_certificate: Optional[str] = Field(description='Certificate id to use for the domain controller TLS comm')
28
+ account: Optional[str] = Field(description='Account to be used for provider based databases such as snowflake or atlas')
28
29
  provider_engine: ArkDPADBDatabaseEngineType = Field(
29
30
  description='Provider engine, will be later deduced to the identifer of the provider'
30
31
  )
@@ -13,6 +13,7 @@ class ArkDPADBAuthMethodType(str, Enum):
13
13
  ADEphemeralUser = 'ad_ephemeral_user'
14
14
  LocalEphemeralUser = 'local_ephemeral_user'
15
15
  RDSIAMAuthentication = 'rds_iam_authentication'
16
+ AtlasEphemeralUser = 'atlas_ephemeral_user'
16
17
 
17
18
 
18
19
  class ArkDPADBAuthMethod(ArkCamelizedModel):
@@ -24,6 +24,7 @@ class ArkDPADBDatabase(ArkCamelizedModel):
24
24
  description='Whether to enforce certificate validation on TLS comm to the DC', default=True
25
25
  )
26
26
  domain_controller_ldaps_certificate: Optional[str] = Field(description='Certificate id to use for the domain controller TLS comm')
27
+ account: Optional[str] = Field(description='Account to be used for provider based databases such as snowflake or atlas')
27
28
  provider_details: Optional[ArkDPADBDatabaseProvider] = Field(description='Provider details related to the database')
28
29
  enable_certificate_validation: bool = Field(description='Whether to enable and enforce certificate validation', default=True)
29
30
  certificate: Optional[str] = Field(description='Certificate id used for this database that resides in the certificates service')
@@ -25,6 +25,7 @@ class ArkDPADBUpdateDatabase(ArkCamelizedModel):
25
25
  description='Whether to enforce certificate validation on TLS comm to the DC', default=True
26
26
  )
27
27
  domain_controller_ldaps_certificate: Optional[str] = Field(description='Certificate id to use for the domain controller TLS comm')
28
+ account: Optional[str] = Field(description='Account to be used for provider based databases such as snowflake or atlas')
28
29
  provider_engine: Optional[ArkDPADBDatabaseEngineType] = Field(
29
30
  description='Provider engine, will be later deduced to the identifer of the provider'
30
31
  )
File without changes
@@ -0,0 +1,53 @@
1
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_account import (
2
+ ArkPCloudAccount,
3
+ ArkPCloudAccountRemoteMachinesAccess,
4
+ ArkPCloudAccountSecretManagement,
5
+ ArkPCloudAccountSecretType,
6
+ ArkPCloudBaseAccount,
7
+ )
8
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_account_credentials import ArkPCloudAccountCredentials
9
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_account_secret_version import ArkPCloudAccountSecretVersion
10
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_accounts_filter import ArkPCloudAccountsFilter
11
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_accounts_stats import ArkPCloudAccountsStats
12
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_add_account import ArkPCloudAddAccount
13
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_change_account_credentials import ArkPCloudChangeAccountCredentials
14
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_delete_account import ArkPCloudDeleteAccount
15
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_generate_account_credentials import ArkPCloudGenerateAccountCredentials
16
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_get_account import ArkPCloudGetAccount
17
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_get_account_credentials import ArkPCloudGetAccountCredentials
18
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_link_account import ArkPCloudLinkAccount
19
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_list_account_secret_versions import ArkPCloudListAccountSecretVersions
20
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_reconcile_account_credentials import ArkPCloudReconcileAccountCredentials
21
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_set_account_next_credentials import ArkPCloudSetAccountNextCredentials
22
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_unlink_account import ArkPCloudUnlinkAccount
23
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_update_account import ArkPCloudUpdateAccount
24
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_update_account_credentials_in_vault import (
25
+ ArkPCloudUpdateAccountCredentialsInVault,
26
+ )
27
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_verify_account_credentias import ArkPCloudVerifyAccountCredentials
28
+
29
+ __all__ = [
30
+ 'ArkPCloudBaseAccount',
31
+ 'ArkPCloudAccount',
32
+ 'ArkPCloudAccountRemoteMachinesAccess',
33
+ 'ArkPCloudAccountSecretManagement',
34
+ 'ArkPCloudAccountSecretType',
35
+ 'ArkPCloudAccountsFilter',
36
+ 'ArkPCloudAccountsStats',
37
+ 'ArkPCloudAddAccount',
38
+ 'ArkPCloudDeleteAccount',
39
+ 'ArkPCloudGetAccount',
40
+ 'ArkPCloudUpdateAccount',
41
+ 'ArkPCloudAccountSecretVersion',
42
+ 'ArkPCloudListAccountSecretVersions',
43
+ 'ArkPCloudAccountCredentials',
44
+ 'ArkPCloudGenerateAccountCredentials',
45
+ 'ArkPCloudVerifyAccountCredentials',
46
+ 'ArkPCloudChangeAccountCredentials',
47
+ 'ArkPCloudSetAccountNextCredentials',
48
+ 'ArkPCloudUpdateAccountCredentialsInVault',
49
+ 'ArkPCloudReconcileAccountCredentials',
50
+ 'ArkPCloudGetAccountCredentials',
51
+ 'ArkPCloudLinkAccount',
52
+ 'ArkPCloudUnlinkAccount',
53
+ ]
@@ -0,0 +1,53 @@
1
+ from enum import Enum
2
+ from typing import Any, Dict, List, Optional, Union
3
+
4
+ from pydantic import Field, validator
5
+
6
+ from ark_sdk_python.models import ArkCamelizedModel
7
+
8
+
9
+ class ArkPCloudAccountSecretType(str, Enum):
10
+ Password = "password"
11
+ Key = "key"
12
+
13
+
14
+ class ArkPCloudAccountSecretManagement(ArkCamelizedModel):
15
+ automatic_management_enabled: Optional[bool] = Field(description='Whether automatic management of the account is enabled or not')
16
+ manual_management_reason: Optional[str] = Field(description='The reason for disabling automatic management')
17
+ last_modified_time: Optional[int] = Field(description='Last time the management properties were modified')
18
+
19
+
20
+ class ArkPCloudAccountRemoteMachinesAccess(ArkCamelizedModel):
21
+ remote_machines: Optional[Union[List[str], str]] = Field(description='Remote machines the access of this account is allowed')
22
+ access_restricted_to_remote_machines: Optional[bool] = Field(
23
+ description='Whether the access is only restricted to those remote machines'
24
+ )
25
+
26
+ # pylint: disable=no-self-use,no-self-argument
27
+ @validator('remote_machines')
28
+ def _validate_remote_machines(remote_machines):
29
+ # backward compatibility for when remote_machines was a comma separated string
30
+ if isinstance(remote_machines, str):
31
+ return remote_machines.split(',')
32
+ return remote_machines
33
+
34
+
35
+ class ArkPCloudBaseAccount(ArkCamelizedModel):
36
+ name: str = Field(description='Name of the account')
37
+ safe_name: str = Field(description='Safe name to store the account in')
38
+ platform_id: Optional[str] = Field(description='Platform id to relate the account to')
39
+ user_name: Optional[str] = Field(description='Username of the account')
40
+ address: Optional[str] = Field(description='Address of the account')
41
+ secret_type: Optional[ArkPCloudAccountSecretType] = Field(description='Type of the secret of the account')
42
+ platform_account_properties: Optional[Dict[str, Any]] = Field(
43
+ description='Different properties related to the platform the account is related to'
44
+ )
45
+ secret_management: Optional[ArkPCloudAccountSecretManagement] = Field(description='Secret mgmt related properties')
46
+ remote_machines_access: Optional[ArkPCloudAccountRemoteMachinesAccess] = Field(description='Remote machines access related properties')
47
+
48
+
49
+ class ArkPCloudAccount(ArkPCloudBaseAccount):
50
+ id: str = Field(description='ID of the account')
51
+ status: Optional[str] = Field(description='Status of the account')
52
+ created_time: Optional[int] = Field(description='Creation time of the account')
53
+ category_modification_time: Optional[int] = Field(description='Category modification time of the account')
@@ -0,0 +1,11 @@
1
+ from pydantic import Field, SecretStr
2
+
3
+ from ark_sdk_python.models import ArkModel
4
+
5
+
6
+ class ArkPCloudAccountCredentials(ArkModel):
7
+ account_id: str = Field(description='The id of the account')
8
+ password: SecretStr = Field(description='The credentials')
9
+
10
+ class Config:
11
+ json_encoders = {SecretStr: lambda v: v.get_secret_value()}
@@ -0,0 +1,12 @@
1
+ from datetime import datetime
2
+
3
+ from pydantic import Field
4
+
5
+ from ark_sdk_python.models import ArkCamelizedModel
6
+
7
+
8
+ class ArkPCloudAccountSecretVersion(ArkCamelizedModel):
9
+ is_temporary: bool = Field(description='Whether the secret is permenant or temporary')
10
+ modification_date: datetime = Field(description='Modification time of the secret')
11
+ modified_by: str = Field(description='Username who modified the secret')
12
+ version_id: int = Field(description='Version id of the secret')
@@ -0,0 +1,15 @@
1
+ from typing import Optional
2
+
3
+ from pydantic import Field
4
+ from typing_extensions import Literal
5
+
6
+ from ark_sdk_python.models import ArkModel
7
+
8
+
9
+ class ArkPCloudAccountsFilter(ArkModel):
10
+ search: Optional[str] = Field(description='Search by string')
11
+ search_type: Optional[Literal['contains', 'startswith']] = Field(description='Search type to filter with')
12
+ sort: Optional[str] = Field(description='Sort results by given key')
13
+ safe_name: Optional[str] = Field(description='Safe name to filter by')
14
+ offset: Optional[int] = Field(description='Offset to the accounts list')
15
+ limit: Optional[int] = Field(description='Limit of results')
@@ -0,0 +1,11 @@
1
+ from typing import Dict
2
+
3
+ from pydantic import Field
4
+
5
+ from ark_sdk_python.models import ArkModel
6
+
7
+
8
+ class ArkPCloudAccountsStats(ArkModel):
9
+ accounts_count: int = Field(description='Overall accounts count')
10
+ accounts_count_by_platform_id: Dict[str, int] = Field(description='Accounts count by platform id')
11
+ accounts_count_by_safe_name: Dict[str, int] = Field(description='Accounts count by safe name')
@@ -0,0 +1,10 @@
1
+ from pydantic import Field, SecretStr
2
+
3
+ from ark_sdk_python.models.services.pcloud.accounts.ark_pcloud_account import ArkPCloudBaseAccount
4
+
5
+
6
+ class ArkPCloudAddAccount(ArkPCloudBaseAccount):
7
+ secret: SecretStr = Field(description='The secret of the account')
8
+
9
+ class Config:
10
+ json_encoders = {SecretStr: lambda v: v.get_secret_value()}
@@ -0,0 +1,7 @@
1
+ from pydantic import Field
2
+
3
+ from ark_sdk_python.models import ArkModel
4
+
5
+
6
+ class ArkPCloudChangeAccountCredentials(ArkModel):
7
+ account_id: str = Field(description='The id of the account to change the password for')
@@ -0,0 +1,7 @@
1
+ from pydantic import Field
2
+
3
+ from ark_sdk_python.models import ArkModel
4
+
5
+
6
+ class ArkPCloudDeleteAccount(ArkModel):
7
+ account_id: str = Field(description='The id of the account to delete')
@@ -0,0 +1,7 @@
1
+ from pydantic import Field
2
+
3
+ from ark_sdk_python.models import ArkModel
4
+
5
+
6
+ class ArkPCloudGenerateAccountCredentials(ArkModel):
7
+ account_id: str = Field(description='The id of the account to generate the password for')
@@ -0,0 +1,7 @@
1
+ from pydantic import Field
2
+
3
+ from ark_sdk_python.models import ArkModel
4
+
5
+
6
+ class ArkPCloudGetAccount(ArkModel):
7
+ account_id: str = Field(description='The id of the account to retrieve')
@@ -0,0 +1,16 @@
1
+ from typing import Optional
2
+
3
+ from pydantic import Field
4
+ from typing_extensions import Literal
5
+
6
+ from ark_sdk_python.models import ArkModel
7
+
8
+
9
+ class ArkPCloudGetAccountCredentials(ArkModel):
10
+ account_id: str = Field(description='The id of the account to retrieve the credentials for')
11
+ reason: Optional[str] = Field(description='Reason for retrieving the credentials')
12
+ ticketing_system_name: Optional[str] = Field(description='Ticketing system name to use for retrieval of the credentials')
13
+ ticket_id: Optional[str] = Field(description='Ticket id allowing retrieval of the credentials')
14
+ version: Optional[str] = Field(description='Version of the credentials to retrieve')
15
+ action_type: Optional[Literal['show', 'copy', 'connect']] = Field(description='Action type of the retrieval', default='show')
16
+ machine: Optional[str] = Field(description='The address of the remote machine to connect to with the credentials')
@@ -0,0 +1,11 @@
1
+ from pydantic import Field
2
+
3
+ from ark_sdk_python.models import ArkCamelizedModel
4
+
5
+
6
+ class ArkPCloudLinkAccount(ArkCamelizedModel):
7
+ account_id: str = Field(description='The id of the account to link')
8
+ safe: str = Field(description='The safe in which the linked account is stored')
9
+ extra_password_index: int = Field(description='The linked account extra password index')
10
+ folder: str = Field(description='Folder of the linked account')
11
+ name: str = Field(description='The linked account name')