ark-sdk-python 1.1.2__py3-none-any.whl → 1.1.3__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.
- ark_sdk_python/ark.py +1 -1
- ark_sdk_python/auth/identity/ark_identity.py +7 -2
- ark_sdk_python/common/env/__init__.py +2 -0
- ark_sdk_python/common/env/ark_env_mapping.py +9 -0
- ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_add_secret.py +4 -0
- ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_secret_type.py +1 -0
- ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_store_type.py +2 -0
- ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_update_secret.py +4 -0
- ark_sdk_python/models/services/dpa/secrets/db/secrets_data/__init__.py +8 -2
- ark_sdk_python/models/services/dpa/secrets/db/secrets_data/ark_dpa_db_atlas_access_keys_secret_data.py +16 -0
- ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_add_database.py +1 -0
- ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_database.py +1 -0
- ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_update_database.py +1 -0
- ark_sdk_python/services/dpa/secrets/db/ark_dpa_db_secrets_service.py +58 -18
- ark_sdk_python/services/dpa/workspaces/db/ark_dpa_db_workspace_service.py +8 -2
- ark_sdk_python/services/identity/common/ark_identity_base_service.py +18 -13
- {ark_sdk_python-1.1.2.dist-info → ark_sdk_python-1.1.3.dist-info}/METADATA +1 -1
- {ark_sdk_python-1.1.2.dist-info → ark_sdk_python-1.1.3.dist-info}/RECORD +22 -21
- {ark_sdk_python-1.1.2.dist-info → ark_sdk_python-1.1.3.dist-info}/LICENSE.txt +0 -0
- {ark_sdk_python-1.1.2.dist-info → ark_sdk_python-1.1.3.dist-info}/NOTICES.md +0 -0
- {ark_sdk_python-1.1.2.dist-info → ark_sdk_python-1.1.3.dist-info}/WHEEL +0 -0
- {ark_sdk_python-1.1.2.dist-info → ark_sdk_python-1.1.3.dist-info}/entry_points.txt +0 -0
ark_sdk_python/ark.py
CHANGED
|
@@ -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
|
-
|
|
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=
|
|
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
|
|
@@ -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}
|
|
@@ -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[
|
|
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
|
)
|
|
@@ -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
|
)
|
|
@@ -77,7 +77,22 @@ class ArkDPADBSecretsService(ArkService):
|
|
|
77
77
|
ArkDPADBSecretMetadata: _description_
|
|
78
78
|
"""
|
|
79
79
|
self._logger.info('Adding new db secret')
|
|
80
|
-
add_secret_dict = add_secret.dict(
|
|
80
|
+
add_secret_dict = add_secret.dict(
|
|
81
|
+
exclude_none=True,
|
|
82
|
+
exclude={
|
|
83
|
+
'store_type',
|
|
84
|
+
'username',
|
|
85
|
+
'password',
|
|
86
|
+
'pam_safe',
|
|
87
|
+
'pam_account_name',
|
|
88
|
+
'iam_username',
|
|
89
|
+
'iam_account',
|
|
90
|
+
'iam_access_key_id',
|
|
91
|
+
'iam_secret_access_key',
|
|
92
|
+
'atlas_public_key',
|
|
93
|
+
'atlas_private_key',
|
|
94
|
+
},
|
|
95
|
+
)
|
|
81
96
|
if not add_secret.store_type:
|
|
82
97
|
add_secret.store_type = SECRET_TYPE_TO_STORE_DICT[add_secret.secret_type]
|
|
83
98
|
add_secret_dict['secret_store'] = {
|
|
@@ -115,6 +130,15 @@ class ArkDPADBSecretsService(ArkService):
|
|
|
115
130
|
'access_key_id': add_secret.iam_access_key_id.get_secret_value(),
|
|
116
131
|
'secret_access_key': add_secret.iam_secret_access_key.get_secret_value(),
|
|
117
132
|
}
|
|
133
|
+
elif add_secret.secret_type == ArkDPADBSecretType.AtlasAccessKeys:
|
|
134
|
+
if not add_secret.atlas_public_key or not add_secret.atlas_private_key:
|
|
135
|
+
raise ArkServiceException(
|
|
136
|
+
'When specifying an atlas secret type, both private key and public key parameters must be supplied'
|
|
137
|
+
)
|
|
138
|
+
add_secret_dict['secret_data'] = {
|
|
139
|
+
'public_key': add_secret.atlas_public_key,
|
|
140
|
+
'private_key': add_secret.atlas_private_key.get_secret_value(),
|
|
141
|
+
}
|
|
118
142
|
resp: Response = self.__client.post(
|
|
119
143
|
SECRETS_ROUTE,
|
|
120
144
|
json=add_secret_dict,
|
|
@@ -151,7 +175,21 @@ class ArkDPADBSecretsService(ArkService):
|
|
|
151
175
|
self._logger.info(f'Updating existing db secret with id [{update_secret.secret_id}]')
|
|
152
176
|
update_secret_dict = update_secret.dict(
|
|
153
177
|
exclude_none=True,
|
|
154
|
-
exclude={
|
|
178
|
+
exclude={
|
|
179
|
+
'secret_id',
|
|
180
|
+
'secret_name',
|
|
181
|
+
'new_secret_name',
|
|
182
|
+
'username',
|
|
183
|
+
'password',
|
|
184
|
+
'pam_safe',
|
|
185
|
+
'pam_account_name',
|
|
186
|
+
'iam_username',
|
|
187
|
+
'iam_account',
|
|
188
|
+
'iam_access_key_id',
|
|
189
|
+
'iam_secret_access_key',
|
|
190
|
+
'atlas_public_key',
|
|
191
|
+
'atlas_private_key',
|
|
192
|
+
},
|
|
155
193
|
)
|
|
156
194
|
if update_secret.new_secret_name:
|
|
157
195
|
update_secret_dict['secret_name'] = update_secret.new_secret_name
|
|
@@ -190,12 +228,24 @@ class ArkDPADBSecretsService(ArkService):
|
|
|
190
228
|
'access_key_id': update_secret.iam_access_key_id.get_secret_value(),
|
|
191
229
|
'secret_access_key': update_secret.iam_secret_access_key.get_secret_value(),
|
|
192
230
|
}
|
|
193
|
-
|
|
231
|
+
if update_secret.atlas_public_key or update_secret.atlas_private_key:
|
|
232
|
+
if not update_secret.atlas_public_key or not update_secret.atlas_private_key:
|
|
233
|
+
raise ArkServiceException('When specifying an atlas secret, both private key and public key parameters must be supplied')
|
|
234
|
+
update_secret_dict['secret_data'] = {
|
|
235
|
+
'public_key': update_secret.atlas_public_key,
|
|
236
|
+
'private_key': update_secret.atlas_private_key.get_secret_value(),
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
resp: Response = self.__client.patch(
|
|
194
240
|
SECRET_ROUTE.format(secret_id=update_secret.secret_id),
|
|
195
241
|
json=update_secret_dict,
|
|
196
242
|
)
|
|
197
243
|
if resp.status_code == HTTPStatus.OK:
|
|
198
|
-
|
|
244
|
+
try:
|
|
245
|
+
return ArkDPADBSecretMetadata.parse_obj(resp.json())
|
|
246
|
+
except (ValidationError, JSONDecodeError) as ex:
|
|
247
|
+
self._logger.exception(f'Failed to parse db secret response [{str(ex)}] - [{resp.text}]')
|
|
248
|
+
raise ArkServiceException(f'Failed to parse db secret response [{str(ex)}]') from ex
|
|
199
249
|
raise ArkServiceException(f'Failed to update db secret [{resp.text}] - [{resp.status_code}]')
|
|
200
250
|
|
|
201
251
|
def delete_secret(self, delete_secret: ArkDPADBDeleteSecret) -> None:
|
|
@@ -282,13 +332,8 @@ class ArkDPADBSecretsService(ArkService):
|
|
|
282
332
|
)
|
|
283
333
|
self._logger.info(f'Enabling db secret by id [{enable_secret.secret_id}]')
|
|
284
334
|
resp: Response = self.__client.post(ENABLE_SECRET_ROUTE.format(secret_id=enable_secret.secret_id))
|
|
285
|
-
if resp.status_code
|
|
286
|
-
|
|
287
|
-
return ArkDPADBSecretMetadata.parse_obj(resp.json())
|
|
288
|
-
except (ValidationError, JSONDecodeError) as ex:
|
|
289
|
-
self._logger.exception(f'Failed to parse enable db secret response [{str(ex)}] - [{resp.text}]')
|
|
290
|
-
raise ArkServiceException(f'Failed to parse enable db secret response [{str(ex)}]') from ex
|
|
291
|
-
raise ArkServiceException(f'Failed to retrieve enable db secret [{resp.text}] - [{resp.status_code}]')
|
|
335
|
+
if resp.status_code != HTTPStatus.OK:
|
|
336
|
+
raise ArkServiceException(f'Failed to enable db secret [{resp.text}] - [{resp.status_code}]')
|
|
292
337
|
|
|
293
338
|
def disable_secret(self, disable_secret: ArkDPADBDisableSecret) -> ArkDPADBSecretMetadata:
|
|
294
339
|
"""
|
|
@@ -313,13 +358,8 @@ class ArkDPADBSecretsService(ArkService):
|
|
|
313
358
|
)
|
|
314
359
|
self._logger.info(f'Disabling db secret by id [{disable_secret.secret_id}]')
|
|
315
360
|
resp: Response = self.__client.post(DISABLE_SECRET_ROUTE.format(secret_id=disable_secret.secret_id))
|
|
316
|
-
if resp.status_code
|
|
317
|
-
|
|
318
|
-
return ArkDPADBSecretMetadata.parse_obj(resp.json())
|
|
319
|
-
except (ValidationError, JSONDecodeError) as ex:
|
|
320
|
-
self._logger.exception(f'Failed to parse disable db secret response [{str(ex)}] - [{resp.text}]')
|
|
321
|
-
raise ArkServiceException(f'Failed to parse disable db secret response [{str(ex)}]') from ex
|
|
322
|
-
raise ArkServiceException(f'Failed to retrieve disable db secret [{resp.text}] - [{resp.status_code}]')
|
|
361
|
+
if resp.status_code != HTTPStatus.OK:
|
|
362
|
+
raise ArkServiceException(f'Failed to disable db secret [{resp.text}] - [{resp.status_code}]')
|
|
323
363
|
|
|
324
364
|
def secret(self, get_secret: ArkDPADBGetSecret) -> ArkDPADBSecretMetadata:
|
|
325
365
|
"""
|
|
@@ -122,7 +122,10 @@ class ArkDPADBWorkspaceService(ArkService):
|
|
|
122
122
|
ArkDPADBDatabase: _description_
|
|
123
123
|
"""
|
|
124
124
|
if update_database.name and not update_database.id:
|
|
125
|
-
|
|
125
|
+
databases = self.list_databases_by(ArkDPADBDatabasesFilter(name=update_database.name))
|
|
126
|
+
if not databases.items or len(databases.items) != 1:
|
|
127
|
+
raise ArkServiceException(f'Failed to update database - name [{update_database.name}] not found')
|
|
128
|
+
update_database.id = self.list_databases_by(ArkDPADBDatabasesFilter(name=update_database.name)).items[0].id
|
|
126
129
|
self._logger.info(f'Updating database [{update_database.id}]')
|
|
127
130
|
update_database_dict = update_database.dict(exclude={'name', 'new_name'}, exclude_none=True)
|
|
128
131
|
if update_database.new_name:
|
|
@@ -197,7 +200,10 @@ class ArkDPADBWorkspaceService(ArkService):
|
|
|
197
200
|
ArkDPADBDatabase: _description_
|
|
198
201
|
"""
|
|
199
202
|
if get_database.name and not get_database.id:
|
|
200
|
-
|
|
203
|
+
databases = self.list_databases_by(ArkDPADBDatabasesFilter(name=get_database.name))
|
|
204
|
+
if not databases.items or len(databases.items) != 1:
|
|
205
|
+
raise ArkServiceException(f'Failed to get database - name [{get_database.name}] not found')
|
|
206
|
+
get_database.id = self.list_databases_by(ArkDPADBDatabasesFilter(name=get_database.name)).items[0].id
|
|
201
207
|
self._logger.info(f'Getting database [{get_database.id}]')
|
|
202
208
|
resp: Response = self.__client.get(RESOURCE_API.format(resource_id=get_database.id))
|
|
203
209
|
if resp.status_code == HTTPStatus.OK:
|
|
@@ -2,7 +2,7 @@ import os
|
|
|
2
2
|
|
|
3
3
|
from ark_sdk_python.auth.ark_isp_auth import ArkISPAuth
|
|
4
4
|
from ark_sdk_python.common.ark_client import ArkClient
|
|
5
|
-
from ark_sdk_python.common.env import ROOT_DOMAIN, AwsEnv
|
|
5
|
+
from ark_sdk_python.common.env import ROOT_DOMAIN, AwsEnv, is_gov_cloud
|
|
6
6
|
from ark_sdk_python.common.isp import ArkISPServiceClient
|
|
7
7
|
from ark_sdk_python.services.ark_service import ArkService
|
|
8
8
|
|
|
@@ -22,17 +22,22 @@ class ArkIdentityBaseService(ArkService):
|
|
|
22
22
|
'Authorization': f'Bearer {isp_auth.token.token.get_secret_value()}',
|
|
23
23
|
}
|
|
24
24
|
)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
if not is_gov_cloud():
|
|
26
|
+
self._client = None
|
|
27
|
+
self._url_prefix = 'api/idadmin/'
|
|
28
|
+
self._env = None
|
|
29
|
+
if 'env' in isp_auth.token.metadata.keys():
|
|
30
|
+
self._env = AwsEnv(isp_auth.token.metadata['env'])
|
|
31
|
+
else:
|
|
32
|
+
self._env = AwsEnv(os.environ.get('DEPLOY_ENV', AwsEnv.PROD.value))
|
|
33
|
+
try:
|
|
34
|
+
self._client: ArkISPServiceClient = ArkISPServiceClient.from_isp_auth(self._isp_auth)
|
|
35
|
+
self._env = self._client.tenant_env
|
|
36
|
+
except Exception:
|
|
37
|
+
self._client = self._idp_client
|
|
38
|
+
if any(f'id.{d}' in self._idp_client.base_url for d in ROOT_DOMAIN.values()):
|
|
39
|
+
self._url_prefix = ''
|
|
30
40
|
else:
|
|
31
|
-
self._env = AwsEnv(os.environ.get('DEPLOY_ENV', AwsEnv.PROD.value))
|
|
32
|
-
try:
|
|
33
|
-
self._client: ArkISPServiceClient = ArkISPServiceClient.from_isp_auth(self._isp_auth)
|
|
34
|
-
self._env = self._client.tenant_env
|
|
35
|
-
except Exception:
|
|
36
41
|
self._client = self._idp_client
|
|
37
|
-
|
|
38
|
-
|
|
42
|
+
self._url_prefix = ''
|
|
43
|
+
self._env = AwsEnv(os.environ.get('DEPLOY_ENV', AwsEnv.GOV_PROD.value))
|
|
@@ -10,13 +10,13 @@ ark_sdk_python/actions/ark_service_exec_action.py,sha256=O9rU9KuRYHaxrk4Diollot4
|
|
|
10
10
|
ark_sdk_python/args/__init__.py,sha256=mCb4UrIRL4u58QyUbqqH2xAU0VN91pxjK5sa_UwCM_k,279
|
|
11
11
|
ark_sdk_python/args/ark_args_formatter.py,sha256=-Rs_rGMIr1bprD1SfYlMsLoSOFgr_RFrRdREvbmPU6k,9204
|
|
12
12
|
ark_sdk_python/args/ark_pydantic_argparse.py,sha256=AzwkdhUoxHd9Hreki_iWCdT8lY-1um8OOfbvOedduBE,33777
|
|
13
|
-
ark_sdk_python/ark.py,sha256=
|
|
13
|
+
ark_sdk_python/ark.py,sha256=eXBz823l8aF9Ar6aJG87SeJLqIQlzF7Z5kgKH06vfv0,1280
|
|
14
14
|
ark_sdk_python/ark_api.py,sha256=COY0c3Yh6E1hox5f2Dw3sBWpiPDv-R5w8S0blrAFsMc,8600
|
|
15
15
|
ark_sdk_python/auth/__init__.py,sha256=1l29Rf3VhwmV8z3YROiQVcgrZYSeeCqVN4zna77tnlk,620
|
|
16
16
|
ark_sdk_python/auth/ark_auth.py,sha256=eycipVTr2uNHZ4XdqCyXN7Cwx4g_wmoj71OkIVzjSTQ,12947
|
|
17
17
|
ark_sdk_python/auth/ark_isp_auth.py,sha256=Xuf8J7-VgN6a6oJOem5Rf8LzOI5NCNqUeT5Snb4VNK4,9572
|
|
18
18
|
ark_sdk_python/auth/identity/__init__.py,sha256=2Yyc_Rrx-D4PsSdg-ESl5pFFTpqu6LUPSc4ZW59oOP8,328
|
|
19
|
-
ark_sdk_python/auth/identity/ark_identity.py,sha256=
|
|
19
|
+
ark_sdk_python/auth/identity/ark_identity.py,sha256=Z_QRCVFM4X3JoiDPjy8hbMlZ7jGY88IvXI8Sv2WdedM,28454
|
|
20
20
|
ark_sdk_python/auth/identity/ark_identity_fqdn_resolver.py,sha256=_WKm31eVlT-vLRTmp-tTswpXgdl9_Iqqvp5ZPKRvDwg,4777
|
|
21
21
|
ark_sdk_python/auth/identity/ark_identity_service_user.py,sha256=QlqUHGUh4iqmfqmV_YlXs6xNM_U-xz6VqW5hHZoxwSQ,7495
|
|
22
22
|
ark_sdk_python/cli_services/__init__.py,sha256=e9vdwqNiYqhZmK05Wgpz-Hf9SycK_3X-RS3CK9n2lIs,87
|
|
@@ -38,8 +38,8 @@ ark_sdk_python/common/ark_page.py,sha256=4_kycDX8vLloyZOlbM8N9XYXiF2cb5O-l4FbZ5h
|
|
|
38
38
|
ark_sdk_python/common/ark_pollers.py,sha256=PnKprub0A-S4DhGPGIreKI5pwqXSqIcE1DgxxiX7Kmw,3987
|
|
39
39
|
ark_sdk_python/common/ark_random_utils.py,sha256=dmPsvF9lTg90SdrYENmVD6giQdZlb5yjmKkMk9NeMzA,671
|
|
40
40
|
ark_sdk_python/common/ark_system_config.py,sha256=cl44cYSgXZEnoRYu048aBeJwWRPdCT_flC3hTWyytX4,2436
|
|
41
|
-
ark_sdk_python/common/env/__init__.py,sha256=
|
|
42
|
-
ark_sdk_python/common/env/ark_env_mapping.py,sha256=
|
|
41
|
+
ark_sdk_python/common/env/__init__.py,sha256=bClLAUl9fS1QT_AYQ5vpKBplZ_Pjr8b3XwjKh6klbFE,621
|
|
42
|
+
ark_sdk_python/common/env/ark_env_mapping.py,sha256=D_WKns4yyEtCFtC9OCMLFD-K8gGjhxLwcCej9YJyHZU,1369
|
|
43
43
|
ark_sdk_python/common/isp/__init__.py,sha256=363fvrATSpmR4hCxhh_lmYA6_qcVWCmHTTINrn8-Z8Y,116
|
|
44
44
|
ark_sdk_python/common/isp/ark_isp_service_client.py,sha256=CCNqumpUXZj5Evk1Xj0YpRHob3-0MjfLYDbP7M3M2Vs,6261
|
|
45
45
|
ark_sdk_python/examples/create_dpa_db_environment.py,sha256=E_gI-Ct7P1xQtMQGBeiN9FG_kuCg5X-Q8tfRSJx0wI4,3744
|
|
@@ -175,21 +175,22 @@ ark_sdk_python/models/services/dpa/policies/vm/ark_dpa_vm_providers.py,sha256=EV
|
|
|
175
175
|
ark_sdk_python/models/services/dpa/policies/vm/ark_dpa_vm_update_policy.py,sha256=EbLzk6eCnyOOdyvC_eGPZ6bUBQyi0pdr_if2E1L9mA0,1603
|
|
176
176
|
ark_sdk_python/models/services/dpa/secrets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
177
177
|
ark_sdk_python/models/services/dpa/secrets/db/__init__.py,sha256=MQolHX2anpBEIE-UETBiY88DsaYZdXbhNtXclaPONDg,1709
|
|
178
|
-
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_add_secret.py,sha256=
|
|
178
|
+
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_add_secret.py,sha256=Ok61iP6MfoGw_VnoT6_VXPdAD3LNwvAgt4nDfsk1Fu8,2200
|
|
179
179
|
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_delete_secret.py,sha256=XPez7ztN1mAk3iI6V-L12joY6h6PE1bHWEnD_HTKMvs,615
|
|
180
180
|
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_disable_secret.py,sha256=uAHWE-4Chh2h-8ocg5KWiusOAEPRWDcngj2-7K11RME,618
|
|
181
181
|
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_enable_secret.py,sha256=c8-DZhDcuA5IdtvINgxvi3VcO9dkOaxWK7AMqGErsVQ,615
|
|
182
182
|
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_get_secret.py,sha256=O53oRodRr4D-nmhE25J-JDAj_ZSoYgUJFphVLqSewXo,606
|
|
183
183
|
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_secret_metadata.py,sha256=MMpFPMg1zcEwmLTkr0v18K3tGB69w1RXzJk6PyNhN-M,2091
|
|
184
|
-
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_secret_type.py,sha256=
|
|
184
|
+
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_secret_type.py,sha256=Fpz0gVCskjtUwVv9WhKKVUb9dMBd7jTrYIjDkVyGPg8,235
|
|
185
185
|
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_secrets_filter.py,sha256=7ZzshJr2F_jAZCwFXgt3VhAWbJMcP92kthRqK6ioYGU,850
|
|
186
186
|
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_secrets_stats.py,sha256=wArdZYJVENL7ELcrjFdEzi_L3YaEWAhzXLGz2mhk-vs,799
|
|
187
187
|
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_store_descriptor.py,sha256=Fr_P8pMnGpFFAdXToZidmmw9Hgt5maKSQkuUK7ycWKY,403
|
|
188
|
-
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_store_type.py,sha256=
|
|
189
|
-
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_update_secret.py,sha256=
|
|
188
|
+
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_store_type.py,sha256=QL8h8dUMpMgYhPtoByQG4MAYGumrTqKCnKSxSm_uv3c,602
|
|
189
|
+
ark_sdk_python/models/services/dpa/secrets/db/ark_dpa_db_update_secret.py,sha256=l67PNkVLQapH4JcWvU-wVbIgLDW0fHD-gZgohXCbfBc,2257
|
|
190
190
|
ark_sdk_python/models/services/dpa/secrets/db/secret_links/__init__.py,sha256=DtuPJbMMqSDIHzanJ9-LqnK2Yn2BYyHBAZkrFSzIYsA,220
|
|
191
191
|
ark_sdk_python/models/services/dpa/secrets/db/secret_links/ark_dpa_db_pam_account_secret_link.py,sha256=ctGsvrfO-uEueGY4OuIobP_aVH03nKKhihhqcuKfsGU,293
|
|
192
|
-
ark_sdk_python/models/services/dpa/secrets/db/secrets_data/__init__.py,sha256=
|
|
192
|
+
ark_sdk_python/models/services/dpa/secrets/db/secrets_data/__init__.py,sha256=dN-qERq1RX6DL5PBqEMAoOuVf6sH25hWpfgC_bpvL-g,881
|
|
193
|
+
ark_sdk_python/models/services/dpa/secrets/db/secrets_data/ark_dpa_db_atlas_access_keys_secret_data.py,sha256=YBWb_o8HjyRHLe6Vv2KiL5wh4Zwp0JvnQhIkBG_-0pQ,643
|
|
193
194
|
ark_sdk_python/models/services/dpa/secrets/db/secrets_data/ark_dpa_db_iam_user_secret_data.py,sha256=nupq0swDDcVEITsQJc4T_XrhlLWe6JGNJeEu43iOaxo,934
|
|
194
195
|
ark_sdk_python/models/services/dpa/secrets/db/secrets_data/ark_dpa_db_user_password_secret_data.py,sha256=d-BYEzQsqd8XNi7GrkxYyZ2jNQJZVnhMKU7NLFoNBtw,650
|
|
195
196
|
ark_sdk_python/models/services/dpa/sso/__init__.py,sha256=idXyQsCwN1tqNZDEbWBJTWF7SmmmScBtweVEqgOrVdU,1033
|
|
@@ -200,9 +201,9 @@ ark_sdk_python/models/services/dpa/sso/ark_dpa_sso_get_short_lived_password.py,s
|
|
|
200
201
|
ark_sdk_python/models/services/dpa/sso/ark_dpa_sso_get_short_lived_rdp_file.py,sha256=nmWVpq5WfHUPDZmUTxgcN7QLiLqIC81fbeQI0fGT0-E,703
|
|
201
202
|
ark_sdk_python/models/services/dpa/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
202
203
|
ark_sdk_python/models/services/dpa/workspaces/db/__init__.py,sha256=RSRVsg3N20ROmdulkqJAPlPeF8c2wNwwMUK77JacfgY,2440
|
|
203
|
-
ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_add_database.py,sha256=
|
|
204
|
+
ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_add_database.py,sha256=8V40a4ojTTwUxLByMhz99liF9vd1FjbgdVxaV_g_wMo,3567
|
|
204
205
|
ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_auth_method.py,sha256=TAVTiMXqRJAOmyvYokL4NkrduwG4NszlBbkTMiFRNTg,2555
|
|
205
|
-
ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_database.py,sha256=
|
|
206
|
+
ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_database.py,sha256=NrGnklJpslKmFzs8pNkY00-_A9bu0OATUuAu2NvWV0U,3583
|
|
206
207
|
ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_database_info.py,sha256=gF9A3y99d9d5kYV97fzBEF9Nqca2ypezxNy4-u9puHc,2070
|
|
207
208
|
ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_databases_filter.py,sha256=MP72GdHU4UNl-Ix4VoAz6UdgAWvgYf2CMvKzJ_A2xYs,1353
|
|
208
209
|
ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_databases_stats.py,sha256=SuWdUFmQQtgzp2GBtFPSmIqK19cB8QAO8HLAavY6WYE,1476
|
|
@@ -211,7 +212,7 @@ ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_get_database.py,sha2
|
|
|
211
212
|
ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_platform_type_serializer.py,sha256=7Lzyqu89mzIVgakpzP3-kGvunAojoaEP8I7vzhc3Ryk,558
|
|
212
213
|
ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_provider.py,sha256=JnsJvXO9p24BMKZld_tP2D5t9Uonu9jkYo6QN6UcvKY,4041
|
|
213
214
|
ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_tag.py,sha256=qgpffuMUvC6qCZoT3Xo3-LLPbbBRwPPd4GpLYzM4OqY,490
|
|
214
|
-
ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_update_database.py,sha256=
|
|
215
|
+
ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_update_database.py,sha256=J6DoP3hTD7hmzcaPKW6IttJdIOu_D_0wh-c3mD_6ThA,3898
|
|
215
216
|
ark_sdk_python/models/services/dpa/workspaces/db/ark_dpa_db_warning.py,sha256=bJ3-WkMTqNBIP92t8nA28oLUZkq70Lmit4gaoYSg8yg,153
|
|
216
217
|
ark_sdk_python/models/services/identity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
217
218
|
ark_sdk_python/models/services/identity/directories/__init__.py,sha256=ZjQUgqJh3jZeT2_uTJAyWMFY7iLzAr0Kdsttgg1PqZU,848
|
|
@@ -285,16 +286,16 @@ ark_sdk_python/services/dpa/policies/vm/__init__.py,sha256=9nCR_0LNVcpVQJkyZpkhQ
|
|
|
285
286
|
ark_sdk_python/services/dpa/policies/vm/ark_dpa_vm_policies_service.py,sha256=ba2m2s_UyFeg2mJf1Qh592j43bvM3EFWs4G1o2RVWh0,12681
|
|
286
287
|
ark_sdk_python/services/dpa/secrets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
287
288
|
ark_sdk_python/services/dpa/secrets/db/__init__.py,sha256=Dc0ZoMsNZzVN_nOqdxUg__X8tLoz4Znu4DzJriegDOM,139
|
|
288
|
-
ark_sdk_python/services/dpa/secrets/db/ark_dpa_db_secrets_service.py,sha256=
|
|
289
|
+
ark_sdk_python/services/dpa/secrets/db/ark_dpa_db_secrets_service.py,sha256=O9JPIo3h7CvZ4BlJlDa15ZwY0j6SuozLZVCZOKIoDIU,18537
|
|
289
290
|
ark_sdk_python/services/dpa/sso/__init__.py,sha256=cHLin78PGJOQjhvESsycXZlcMvnMM00GGDHbeI8awww,120
|
|
290
291
|
ark_sdk_python/services/dpa/sso/ark_dpa_sso_service.py,sha256=9kmW-fPZp4svOMsrPHiwV6JME_jNC8LLRsV2214e6Vc,16029
|
|
291
292
|
ark_sdk_python/services/dpa/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
292
293
|
ark_sdk_python/services/dpa/workspaces/db/__init__.py,sha256=KsaQ50bkHsBx0QLUCr6qiQVb9CohGvSeL9Y4-DReWrc,148
|
|
293
|
-
ark_sdk_python/services/dpa/workspaces/db/ark_dpa_db_workspace_service.py,sha256=
|
|
294
|
+
ark_sdk_python/services/dpa/workspaces/db/ark_dpa_db_workspace_service.py,sha256=dyYZz1YtE3B9L-YnoEmR80TqpBFyfFpZWgCgCDhA5O0,12299
|
|
294
295
|
ark_sdk_python/services/identity/__init__.py,sha256=k7e_E7UHgk89BRPKlTUVdx858c0dg--D8XFxiLabQOg,107
|
|
295
296
|
ark_sdk_python/services/identity/ark_identity_api.py,sha256=1kRp7EUJ7MTXLnbWpSRH4BF9tOwWIpv7QLua8Yb3ClE,1758
|
|
296
297
|
ark_sdk_python/services/identity/common/__init__.py,sha256=JdGK4IC8Ggn_2Iomk55k7yigKKn7gASNjmfHbNW3bVk,139
|
|
297
|
-
ark_sdk_python/services/identity/common/ark_identity_base_service.py,sha256=
|
|
298
|
+
ark_sdk_python/services/identity/common/ark_identity_base_service.py,sha256=Umu5PVJeLs1592_iE9SDe6sHXe3IGC2nHX6V1yIDPWw,1802
|
|
298
299
|
ark_sdk_python/services/identity/directories/__init__.py,sha256=eWpJ-UALipsUq0CK9jRc3owZvCdJ91-UqADZgHPftfs,165
|
|
299
300
|
ark_sdk_python/services/identity/directories/ark_identity_directories_service.py,sha256=G3f9gspbMB_h4YxrX57YnoGl80FIJIA3Ml9s4UpDMGU,10540
|
|
300
301
|
ark_sdk_python/services/identity/policies/__init__.py,sha256=aZ7Ublu_rdaWVFqZ7y4ab3A3XH08v3kM0gQYIJ1va-E,153
|
|
@@ -305,9 +306,9 @@ ark_sdk_python/services/identity/users/__init__.py,sha256=NcBHmvUNVESleiuGz2s65R
|
|
|
305
306
|
ark_sdk_python/services/identity/users/ark_identity_users_service.py,sha256=GXh6lU_JjrnF6ORksttC_WTUdtrdHnglepFf7SpsLUc,12725
|
|
306
307
|
ark_sdk_python/services/sm/__init__.py,sha256=jzKxEkZYOCW9y_byLfd_odae9m2sh1UfjaaKBVySWY0,95
|
|
307
308
|
ark_sdk_python/services/sm/ark_sm_service.py,sha256=8OYHHrIKVDcpcSOomXQBRW2ReNDn7Bd1FY1N_rNsEKA,11400
|
|
308
|
-
ark_sdk_python-1.1.
|
|
309
|
-
ark_sdk_python-1.1.
|
|
310
|
-
ark_sdk_python-1.1.
|
|
311
|
-
ark_sdk_python-1.1.
|
|
312
|
-
ark_sdk_python-1.1.
|
|
313
|
-
ark_sdk_python-1.1.
|
|
309
|
+
ark_sdk_python-1.1.3.dist-info/LICENSE.txt,sha256=tog-p2RGDyKF8f75MfD9FcNnzH4nXVVQpYMrKq8-CTI,11358
|
|
310
|
+
ark_sdk_python-1.1.3.dist-info/METADATA,sha256=iIXHXIGbyT54Y0vDUZlGOjQ3lhF7o6WeHlxAbGvf8U4,18150
|
|
311
|
+
ark_sdk_python-1.1.3.dist-info/NOTICES.md,sha256=5W8-D3unkf27Oz4j86dawLYLkg72KX_R-q4IrHJozbQ,95918
|
|
312
|
+
ark_sdk_python-1.1.3.dist-info/WHEEL,sha256=M4g2KOPqPuBDzs4fXhen7cAP8dzQGHxeSKE5kd7ZmZE,108
|
|
313
|
+
ark_sdk_python-1.1.3.dist-info/entry_points.txt,sha256=v5bcuRn8w42ZKQspfvX3AliKmLVO6f7Zb_bma77p3vQ,47
|
|
314
|
+
ark_sdk_python-1.1.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|