ark-sdk-python 2.1.1__py3-none-any.whl → 2.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/auth/identity/ark_identity.py +55 -12
- ark_sdk_python/common/ark_version.py +1 -1
- ark_sdk_python/models/actions/services/ark_sia_exec_action_consts.py +7 -1
- ark_sdk_python/models/common/identity/ark_identity_auth_schemas.py +15 -1
- ark_sdk_python/models/services/sia/access/__init__.py +2 -0
- ark_sdk_python/services/sia/access/ark_sia_access_service.py +31 -0
- {ark_sdk_python-2.1.1.dist-info → ark_sdk_python-2.1.3.dist-info}/METADATA +2 -2
- {ark_sdk_python-2.1.1.dist-info → ark_sdk_python-2.1.3.dist-info}/RECORD +12 -12
- {ark_sdk_python-2.1.1.dist-info → ark_sdk_python-2.1.3.dist-info}/LICENSE.txt +0 -0
- {ark_sdk_python-2.1.1.dist-info → ark_sdk_python-2.1.3.dist-info}/NOTICES.md +0 -0
- {ark_sdk_python-2.1.1.dist-info → ark_sdk_python-2.1.3.dist-info}/WHEEL +0 -0
- {ark_sdk_python-2.1.1.dist-info → ark_sdk_python-2.1.3.dist-info}/entry_points.txt +0 -0
|
@@ -92,11 +92,11 @@ class ArkIdentity:
|
|
|
92
92
|
) -> None:
|
|
93
93
|
self.__username = username
|
|
94
94
|
self.__password = password
|
|
95
|
+
self.__logger = logger or get_logger(app=self.__class__.__name__)
|
|
95
96
|
self.__identity_url = self.__resolve_fqdn_from_username_or_subdomain(identity_url, identity_tenant_subdomain)
|
|
96
97
|
if not self.__identity_url.startswith('https://'):
|
|
97
98
|
self.__identity_url = f'https://{self.__identity_url}'
|
|
98
99
|
self.__mfa_type = mfa_type or 'email'
|
|
99
|
-
self.__logger = logger or get_logger(app=self.__class__.__name__)
|
|
100
100
|
self.__interaction_process: Optional[Process] = None
|
|
101
101
|
self.__is_polling: bool = False
|
|
102
102
|
self.__keyring = ArkKeyring(self.__class__.__name__.lower()) if cache_authentication else None
|
|
@@ -204,17 +204,20 @@ class ArkIdentity:
|
|
|
204
204
|
return parsed_res
|
|
205
205
|
|
|
206
206
|
def __advance_authentication(
|
|
207
|
-
self, mechanism_id: str, session_id: str, answer: str, action: str
|
|
208
|
-
) -> Union[AdvanceAuthMidResponse, AdvanceAuthResponse]:
|
|
207
|
+
self, mechanism_id: str, session_id: str, answer: str, action: str, is_idp_auth: bool = False
|
|
208
|
+
) -> Union[AdvanceAuthMidResponse, AdvanceAuthResponse, IdpAuthStatusResponse]:
|
|
209
209
|
self.__logger.info(f'Advancing authentication with user {self.__username} and fqdn {self.__identity_url} and action {action}')
|
|
210
210
|
response = self.__session.post(
|
|
211
211
|
url=f'{self.__identity_url}/Security/AdvanceAuthentication',
|
|
212
212
|
json={'SessionId': session_id, 'MechanismId': mechanism_id, 'Action': action, 'Answer': answer},
|
|
213
213
|
)
|
|
214
214
|
try:
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
215
|
+
if is_idp_auth:
|
|
216
|
+
parsed_res: IdpAuthStatusResponse = IdpAuthStatusResponse.model_validate_json(response.text)
|
|
217
|
+
else:
|
|
218
|
+
parsed_res: AdvanceAuthMidResponse = AdvanceAuthMidResponse.model_validate_json(response.text)
|
|
219
|
+
if parsed_res.result.summary == 'LoginSuccess':
|
|
220
|
+
parsed_res: AdvanceAuthResponse = AdvanceAuthResponse.model_validate_json(response.text)
|
|
218
221
|
except (ValidationError, TypeError) as ex:
|
|
219
222
|
raise ArkException(f'Identity advance authentication failed to be parsed / validated [{response.text}]') from ex
|
|
220
223
|
return parsed_res
|
|
@@ -281,14 +284,16 @@ class ArkIdentity:
|
|
|
281
284
|
if output_conn.poll():
|
|
282
285
|
mfa_code = output_conn.recv()
|
|
283
286
|
advance_resp = self.__advance_authentication(
|
|
284
|
-
mechanism.mechanism_id, start_auth_response.result.session_id, mfa_code, 'Answer'
|
|
287
|
+
mechanism.mechanism_id, start_auth_response.result.session_id, mfa_code, 'Answer', False
|
|
285
288
|
)
|
|
286
289
|
if isinstance(advance_resp, AdvanceAuthResponse):
|
|
287
290
|
input_conn.send('DONE')
|
|
288
291
|
else:
|
|
289
292
|
input_conn.send('CONTINUE')
|
|
290
293
|
else:
|
|
291
|
-
advance_resp = self.__advance_authentication(
|
|
294
|
+
advance_resp = self.__advance_authentication(
|
|
295
|
+
mechanism.mechanism_id, start_auth_response.result.session_id, '', 'Poll', False
|
|
296
|
+
)
|
|
292
297
|
if isinstance(advance_resp, AdvanceAuthResponse):
|
|
293
298
|
# Done here, save the token
|
|
294
299
|
self.__is_polling = False
|
|
@@ -340,6 +345,37 @@ class ArkIdentity:
|
|
|
340
345
|
self.__mfa_type = next(filter(lambda f: factors[f] == answers['mfa'], factors.keys()))
|
|
341
346
|
return next(filter(lambda m: factors[m.name.lower()] == answers['mfa'], supported_mechanisms))
|
|
342
347
|
|
|
348
|
+
def __perform_pin_code_idp_authentication(
|
|
349
|
+
self, start_auth_response: StartAuthResponse, profile: Optional[ArkProfile] = None, interactive: bool = False
|
|
350
|
+
) -> None:
|
|
351
|
+
if not interactive:
|
|
352
|
+
raise ArkException('Non-interactive mode is not supported for OOB PIN code authentication')
|
|
353
|
+
answers = inquirer.prompt(
|
|
354
|
+
[inquirer.Password('answer', message='Please enter the PIN code displayed after you logged in to your identity provider')],
|
|
355
|
+
render=ArkInquirerRender(),
|
|
356
|
+
)
|
|
357
|
+
if not answers:
|
|
358
|
+
raise ArkAuthException('Canceled by user')
|
|
359
|
+
pin_code = answers['answer']
|
|
360
|
+
result = self.__advance_authentication('OOBAUTHPIN', start_auth_response.result.idp_login_session_id, pin_code, 'Answer', True)
|
|
361
|
+
if (
|
|
362
|
+
not result
|
|
363
|
+
or not result.success
|
|
364
|
+
or not isinstance(result, IdpAuthStatusResponse)
|
|
365
|
+
or not result.result.summary
|
|
366
|
+
or result.result.summary != 'LoginSuccess'
|
|
367
|
+
or not result.result.token
|
|
368
|
+
):
|
|
369
|
+
raise ArkAuthException('Failed to perform idp authentication with OOB PIN')
|
|
370
|
+
# We managed to successfully authenticate
|
|
371
|
+
# Done here, save the token
|
|
372
|
+
self.__session_details = result.result
|
|
373
|
+
self.__session.headers.update({'Authorization': f'Bearer {result.result.token}', **ArkIdentityFQDNResolver.default_headers()})
|
|
374
|
+
delta = self.__session_details.token_lifetime or DEFAULT_TOKEN_LIFETIME_SECONDS
|
|
375
|
+
self.__session_exp = datetime.now() + timedelta(seconds=delta)
|
|
376
|
+
if self.__cache_authentication:
|
|
377
|
+
self.__save_cache(profile)
|
|
378
|
+
|
|
343
379
|
def __perform_idp_authentication(
|
|
344
380
|
self, start_auth_response: StartAuthResponse, profile: Optional[ArkProfile] = None, interactive: bool = False
|
|
345
381
|
) -> None:
|
|
@@ -356,6 +392,11 @@ class ArkIdentity:
|
|
|
356
392
|
# Error can be ignored
|
|
357
393
|
webbrowser.open(start_auth_response.result.idp_redirect_short_url, new=0, autoraise=True)
|
|
358
394
|
|
|
395
|
+
# Pin code flow
|
|
396
|
+
if start_auth_response.result.idp_oob_auth_pin_required:
|
|
397
|
+
self.__perform_pin_code_idp_authentication(start_auth_response, profile, interactive)
|
|
398
|
+
return
|
|
399
|
+
|
|
359
400
|
# Start polling for idp auth
|
|
360
401
|
self.__is_polling = True
|
|
361
402
|
start_time = datetime.now()
|
|
@@ -400,7 +441,7 @@ class ArkIdentity:
|
|
|
400
441
|
raise ArkAuthException('Canceled by user')
|
|
401
442
|
self.__password = answers['answer']
|
|
402
443
|
advance_resp = self.__advance_authentication(
|
|
403
|
-
mechanism.mechanism_id, start_auth_response.result.session_id, self.__password, 'Answer'
|
|
444
|
+
mechanism.mechanism_id, start_auth_response.result.session_id, self.__password, 'Answer', False
|
|
404
445
|
)
|
|
405
446
|
if isinstance(advance_resp, AdvanceAuthResponse) and len(start_auth_response.result.challenges) == 1:
|
|
406
447
|
# Done here, save the token
|
|
@@ -568,7 +609,7 @@ class ArkIdentity:
|
|
|
568
609
|
return
|
|
569
610
|
else:
|
|
570
611
|
oob_advance_resp = self.__advance_authentication(
|
|
571
|
-
mechanism.mechanism_id, start_auth_response.result.session_id, '', 'StartOOB'
|
|
612
|
+
mechanism.mechanism_id, start_auth_response.result.session_id, '', 'StartOOB', False
|
|
572
613
|
)
|
|
573
614
|
self.__poll_authentication(profile, mechanism, start_auth_response, oob_advance_resp, interactive)
|
|
574
615
|
if self.__session_details:
|
|
@@ -591,7 +632,7 @@ class ArkIdentity:
|
|
|
591
632
|
for mechanism in start_auth_response.result.challenges[current_challenge_idx].mechanisms:
|
|
592
633
|
if mechanism.name.lower() == self.__mfa_type.lower():
|
|
593
634
|
oob_advance_resp = self.__advance_authentication(
|
|
594
|
-
mechanism.mechanism_id, start_auth_response.result.session_id, '', 'StartOOB'
|
|
635
|
+
mechanism.mechanism_id, start_auth_response.result.session_id, '', 'StartOOB', False
|
|
595
636
|
)
|
|
596
637
|
self.__poll_authentication(profile, mechanism, start_auth_response, oob_advance_resp, interactive)
|
|
597
638
|
return
|
|
@@ -602,7 +643,9 @@ class ArkIdentity:
|
|
|
602
643
|
# Handle the rest of the challenges, might also handle the first challenge if no password is in the mechanisms
|
|
603
644
|
for challenge in start_auth_response.result.challenges[current_challenge_idx:]:
|
|
604
645
|
mechanism = self.__pick_mechanism(challenge)
|
|
605
|
-
oob_advance_resp = self.__advance_authentication(
|
|
646
|
+
oob_advance_resp = self.__advance_authentication(
|
|
647
|
+
mechanism.mechanism_id, start_auth_response.result.session_id, '', 'StartOOB', False
|
|
648
|
+
)
|
|
606
649
|
self.__poll_authentication(profile, mechanism, start_auth_response, oob_advance_resp, interactive)
|
|
607
650
|
|
|
608
651
|
# pylint: disable=unused-argument
|
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '2.1.
|
|
1
|
+
__version__ = '2.1.3'
|
|
@@ -14,7 +14,12 @@ from ark_sdk_python.models.cli_services.sia.policies_editor.common import (
|
|
|
14
14
|
)
|
|
15
15
|
from ark_sdk_python.models.cli_services.sia.policies_editor.db import ArkSIADBGeneratePolicy
|
|
16
16
|
from ark_sdk_python.models.cli_services.sia.policies_editor.vm import ArkSIAVMGeneratePolicy
|
|
17
|
-
from ark_sdk_python.models.services.sia.access import
|
|
17
|
+
from ark_sdk_python.models.services.sia.access import (
|
|
18
|
+
ArkSIAGetConnectorSetupScript,
|
|
19
|
+
ArkSIAInstallConnector,
|
|
20
|
+
ArkSIATestConnectorReachability,
|
|
21
|
+
ArkSIAUninstallConnector,
|
|
22
|
+
)
|
|
18
23
|
from ark_sdk_python.models.services.sia.certificates import (
|
|
19
24
|
ArkSIACertificatesFilter,
|
|
20
25
|
ArkSIACreateCertificate,
|
|
@@ -249,6 +254,7 @@ ACCESS_ACTION_TO_SCHEMA_MAP: Final[Dict[str, Optional[Type[ArkModel]]]] = {
|
|
|
249
254
|
'connector-setup-script': ArkSIAGetConnectorSetupScript,
|
|
250
255
|
'install-connector': ArkSIAInstallConnector,
|
|
251
256
|
'uninstall-connector': ArkSIAUninstallConnector,
|
|
257
|
+
'test-connector-reachability': ArkSIATestConnectorReachability,
|
|
252
258
|
}
|
|
253
259
|
ACCESS_ACTION: Final[ArkServiceActionDefinition] = ArkServiceActionDefinition(
|
|
254
260
|
action_name='access',
|
|
@@ -49,14 +49,28 @@ class StartAuthResult(ArkModel):
|
|
|
49
49
|
idp_login_session_id: Optional[str] = Field(default=None, alias='IdpLoginSessionId')
|
|
50
50
|
idp_redirect_short_url: Optional[str] = Field(default=None, alias='IdpRedirectShortUrl')
|
|
51
51
|
idp_short_url_id: Optional[str] = Field(default=None, alias='IdpShortUrlId')
|
|
52
|
+
idp_oob_auth_pin_required: Optional[bool] = Field(default=None, alias='IdpOobAuthPinRequired')
|
|
52
53
|
tenant_id: Optional[str] = Field(default=None, alias='TenantId')
|
|
53
54
|
|
|
54
55
|
|
|
55
56
|
class IdpAuthStatusResult(ArkModel):
|
|
56
|
-
|
|
57
|
+
auth_level: Optional[str] = Field(default=None, alias='AuthLevel')
|
|
58
|
+
display_name: Optional[str] = Field(default=None, alias='DisplayName')
|
|
59
|
+
auth: Optional[str] = Field(default=None, alias='Auth')
|
|
60
|
+
user_id: Optional[str] = Field(default=None, alias='UserId')
|
|
61
|
+
state: Optional[str] = Field(default=None, alias='State')
|
|
57
62
|
token_lifetime: Optional[int] = Field(default=None, alias='TokenLifetime')
|
|
58
63
|
token: Optional[str] = Field(default=None, alias='Token')
|
|
59
64
|
refresh_token: Optional[str] = Field(default=None, alias='RefreshToken')
|
|
65
|
+
email_address: Optional[str] = Field(default=None, alias='EmailAddress')
|
|
66
|
+
user_directory: Optional[str] = Field(default=None, alias='UserDirectory')
|
|
67
|
+
pod_fqdn: Optional[str] = Field(default=None, alias='PodFqdn')
|
|
68
|
+
user: Optional[str] = Field(default=None, alias='User')
|
|
69
|
+
customer_id: Optional[str] = Field(default=None, alias='CustomerID')
|
|
70
|
+
forest: Optional[str] = Field(default=None, alias='Forest')
|
|
71
|
+
system_id: Optional[str] = Field(default=None, alias='SystemID')
|
|
72
|
+
source_ds_type: Optional[str] = Field(default=None, alias='SourceDsType')
|
|
73
|
+
summary: Optional[str] = Field(default=None, alias='Summary')
|
|
60
74
|
|
|
61
75
|
|
|
62
76
|
class TenantFqdnResponse(IdentityApiResponse):
|
|
@@ -2,6 +2,7 @@ from ark_sdk_python.models.services.sia.access.ark_sia_access_workspace_type_ser
|
|
|
2
2
|
from ark_sdk_python.models.services.sia.access.ark_sia_connector_setup_script import ArkSIAConnectorSetupScript
|
|
3
3
|
from ark_sdk_python.models.services.sia.access.ark_sia_get_connector_setup_script import ArkSIAGetConnectorSetupScript
|
|
4
4
|
from ark_sdk_python.models.services.sia.access.ark_sia_install_connector import ArkSIAInstallConnector
|
|
5
|
+
from ark_sdk_python.models.services.sia.access.ark_sia_test_connector_reachability import ArkSIATestConnectorReachability
|
|
5
6
|
from ark_sdk_python.models.services.sia.access.ark_sia_uninstall_connector import ArkSIAUninstallConnector
|
|
6
7
|
|
|
7
8
|
__all__ = [
|
|
@@ -9,5 +10,6 @@ __all__ = [
|
|
|
9
10
|
'ArkSIAConnectorSetupScript',
|
|
10
11
|
'ArkSIAInstallConnector',
|
|
11
12
|
'ArkSIAUninstallConnector',
|
|
13
|
+
'ArkSIATestConnectorReachability',
|
|
12
14
|
'serialize_access_workspace_type',
|
|
13
15
|
]
|
|
@@ -22,15 +22,18 @@ from ark_sdk_python.models.services.sia.access import (
|
|
|
22
22
|
ArkSIAConnectorSetupScript,
|
|
23
23
|
ArkSIAGetConnectorSetupScript,
|
|
24
24
|
ArkSIAInstallConnector,
|
|
25
|
+
ArkSIATestConnectorReachability,
|
|
25
26
|
ArkSIAUninstallConnector,
|
|
26
27
|
serialize_access_workspace_type,
|
|
27
28
|
)
|
|
29
|
+
from ark_sdk_python.models.services.sia.access.ark_sia_test_connector_reachability import ArkSIATestConnectorReachabilityResponse
|
|
28
30
|
from ark_sdk_python.services.ark_service import ArkService
|
|
29
31
|
|
|
30
32
|
SERVICE_CONFIG: Final[ArkServiceConfig] = ArkServiceConfig(
|
|
31
33
|
service_name='sia-access', required_authenticator_names=['isp'], optional_authenticator_names=[]
|
|
32
34
|
)
|
|
33
35
|
CONNECTORS_SETUP_SCRIPT_API: Final[str] = 'api/connectors/setup-script'
|
|
36
|
+
TEST_CONNECTOR_REACHABILITY_API: Final[str] = 'api/connectors/{connector_id}/reachability'
|
|
34
37
|
|
|
35
38
|
# Linux / Darwin Commands
|
|
36
39
|
UNIX_STOP_CONNECTOR_SERVICE_CMD: Final[str] = 'sudo systemctl stop cyberark-dpa-connector'
|
|
@@ -177,6 +180,34 @@ class ArkSIAAccessService(ArkService):
|
|
|
177
180
|
connection.run_command(ArkConnectionCommand(command=cmdset['remove-connector-service']))
|
|
178
181
|
connection.run_command(ArkConnectionCommand(command=cmdset['remove-connector-files']))
|
|
179
182
|
|
|
183
|
+
def test_connector_reachability(
|
|
184
|
+
self, test_connector_reachability: ArkSIATestConnectorReachability
|
|
185
|
+
) -> ArkSIATestConnectorReachabilityResponse:
|
|
186
|
+
"""
|
|
187
|
+
Tests reachability to backend endpoints and target hostname/port from specified connector
|
|
188
|
+
|
|
189
|
+
Args:
|
|
190
|
+
test_connector_reachability (ArkSIATestConnectorReachability): _description_
|
|
191
|
+
|
|
192
|
+
Raises:
|
|
193
|
+
ArkServiceException: _description_
|
|
194
|
+
|
|
195
|
+
Returns:
|
|
196
|
+
Reachability test result: _description_
|
|
197
|
+
"""
|
|
198
|
+
body = {
|
|
199
|
+
'checkBackendEndpoints': test_connector_reachability.check_backend_endpoints,
|
|
200
|
+
}
|
|
201
|
+
if test_connector_reachability.target_hostname and test_connector_reachability.target_port:
|
|
202
|
+
body['targets'] = [{'hostname': test_connector_reachability.target_hostname, 'port': test_connector_reachability.target_port}]
|
|
203
|
+
resp: Response = self.__client.post(
|
|
204
|
+
TEST_CONNECTOR_REACHABILITY_API.format(connector_id=test_connector_reachability.connector_id),
|
|
205
|
+
json=body,
|
|
206
|
+
)
|
|
207
|
+
if resp.status_code == HTTPStatus.OK:
|
|
208
|
+
return ArkSIATestConnectorReachabilityResponse(**resp.json())
|
|
209
|
+
raise ArkServiceException(f'Failed to test connector reachability [{resp.text}] - [{resp.status_code}]')
|
|
210
|
+
|
|
180
211
|
def connector_setup_script(self, get_connector_setup_script: ArkSIAGetConnectorSetupScript) -> ArkSIAConnectorSetupScript:
|
|
181
212
|
"""
|
|
182
213
|
Retrieves a new connector installation setup script
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: ark-sdk-python
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.3
|
|
4
4
|
Summary: Official Ark SDK / CLI for CyberArk Identity Security Platform
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Author: CyberArk
|
|
@@ -18,7 +18,7 @@ Requires-Dist: aenum
|
|
|
18
18
|
Requires-Dist: argcomplete
|
|
19
19
|
Requires-Dist: cachetools
|
|
20
20
|
Requires-Dist: colorama
|
|
21
|
-
Requires-Dist: deepdiff (==
|
|
21
|
+
Requires-Dist: deepdiff (==8.*)
|
|
22
22
|
Requires-Dist: dill
|
|
23
23
|
Requires-Dist: fake-useragent (==1.5.1)
|
|
24
24
|
Requires-Dist: inquirer
|
|
@@ -16,7 +16,7 @@ ark_sdk_python/auth/__init__.py,sha256=1l29Rf3VhwmV8z3YROiQVcgrZYSeeCqVN4zna77tn
|
|
|
16
16
|
ark_sdk_python/auth/ark_auth.py,sha256=2fPlABM3AwWmb1h0lQPQAz93u1ZluYKv7axlfg4lq5Q,12988
|
|
17
17
|
ark_sdk_python/auth/ark_isp_auth.py,sha256=i8GIA5ldsT7loJSG898-XQQyg84M-1CJ0aUZa1zcLSc,9689
|
|
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=Shf4VL7ZVpwstrEaIqbN716PEMw6kKEagqa6GSi-bAc,34482
|
|
20
20
|
ark_sdk_python/auth/identity/ark_identity_fqdn_resolver.py,sha256=a2FA8CA4DkVHsiOw_NwTZ-TmE3s19l-kPUoO57nowYc,4715
|
|
21
21
|
ark_sdk_python/auth/identity/ark_identity_service_user.py,sha256=pspgsG3dg5PE0XueVParz3CshTdtQJFLdsoMzrx2wfA,7901
|
|
22
22
|
ark_sdk_python/cli_services/__init__.py,sha256=e9vdwqNiYqhZmK05Wgpz-Hf9SycK_3X-RS3CK9n2lIs,87
|
|
@@ -42,7 +42,7 @@ ark_sdk_python/common/ark_random_utils.py,sha256=dmPsvF9lTg90SdrYENmVD6giQdZlb5y
|
|
|
42
42
|
ark_sdk_python/common/ark_retry.py,sha256=fWkKYLIK2z5U14NFzhqUP_o0VkSG9F9EiZIhdfa_EYY,1815
|
|
43
43
|
ark_sdk_python/common/ark_system_config.py,sha256=cl44cYSgXZEnoRYu048aBeJwWRPdCT_flC3hTWyytX4,2436
|
|
44
44
|
ark_sdk_python/common/ark_user_agent.py,sha256=76v92ulwh_AlfBN1cz5BYkYUzPDfEsQchRXKBG4BTrw,213
|
|
45
|
-
ark_sdk_python/common/ark_version.py,sha256=
|
|
45
|
+
ark_sdk_python/common/ark_version.py,sha256=hgD1miBO_f3fboq1GKyV4DdK_igCLGJFnZRD7l9oNRs,22
|
|
46
46
|
ark_sdk_python/common/connections/__init__.py,sha256=RyARha6jTeaUw1cIGBSR7nOYxCV3fC24juKb-17yXLw,104
|
|
47
47
|
ark_sdk_python/common/connections/ark_connection.py,sha256=wjYpn_9EJ-B679006VqQREFeTOhINmw-heiRqlpuCnY,1613
|
|
48
48
|
ark_sdk_python/common/connections/ssh/__init__.py,sha256=Ycv3BDI2iw-N7BdRkpAv2Qi90O4bp8sPyNsJnuQLfWo,256
|
|
@@ -73,7 +73,7 @@ ark_sdk_python/models/actions/services/__init__.py,sha256=s8mLt4B7UgTazy-pEDtY3t
|
|
|
73
73
|
ark_sdk_python/models/actions/services/ark_cmgr_exec_action_consts.py,sha256=bIVlfhR5ulC0IKQl5VOZRSSQ9gk5Ei97MgKqXppRSAc,2029
|
|
74
74
|
ark_sdk_python/models/actions/services/ark_identity_exec_action_consts.py,sha256=uFn9o3xmrMrjV23vVvntTOdpi0rGMvKnjDq0lzvp6GI,5052
|
|
75
75
|
ark_sdk_python/models/actions/services/ark_pcloud_exec_action_consts.py,sha256=uqgZjgXgmHHXkGm_l5vvRfxNWRAI97r1m0icxi2uMYE,6473
|
|
76
|
-
ark_sdk_python/models/actions/services/ark_sia_exec_action_consts.py,sha256=
|
|
76
|
+
ark_sdk_python/models/actions/services/ark_sia_exec_action_consts.py,sha256=m2b544IEUwvCMtsU6wlj_ngDsXdT5T2wxTiyxJrCfA4,12327
|
|
77
77
|
ark_sdk_python/models/actions/services/ark_sm_exec_action_consts.py,sha256=xMfQ79d7XKG5iZ5ItqNRN5lre5FWWN3VWXDGwVegfY4,1161
|
|
78
78
|
ark_sdk_python/models/actions/services/ark_uap_exec_action_consts.py,sha256=aUdW0y3Vgg7FOiY4NAs38u9WAZrTv4XBH-WSS0lhVJc,3389
|
|
79
79
|
ark_sdk_python/models/ark_exceptions.py,sha256=lW4-kyHvHiKJEThl1j50mffmNGbv-anUixXNLUpjJe4,562
|
|
@@ -132,7 +132,7 @@ ark_sdk_python/models/common/connections/connection_data/__init__.py,sha256=_zey
|
|
|
132
132
|
ark_sdk_python/models/common/connections/connection_data/ark_ssh_connection_data.py,sha256=41yOuJhRrpJf2T8xg6yuhOwo1eZ1WqNi3Aex1dgE5J8,92
|
|
133
133
|
ark_sdk_python/models/common/connections/connection_data/ark_winrm_connection_data.py,sha256=gH2mEk0NSHsPwpt7NgNIxQQODQq5DSZ_kgW9WrEOS4U,254
|
|
134
134
|
ark_sdk_python/models/common/identity/__init__.py,sha256=E-WPD6ZxroVZ4HOrQJdjWrrJYZ-XGBOsjO525DEniHA,1945
|
|
135
|
-
ark_sdk_python/models/common/identity/ark_identity_auth_schemas.py,sha256=
|
|
135
|
+
ark_sdk_python/models/common/identity/ark_identity_auth_schemas.py,sha256=zv890mNMURdN7FuIHMJARpt_gTu7sCYxBsypoC03Pn4,4920
|
|
136
136
|
ark_sdk_python/models/common/identity/ark_identity_common_schemas.py,sha256=nhlP-Wa08u_NKRiYdrl4E4fQpIECj6BocXdNfQlgmW8,498
|
|
137
137
|
ark_sdk_python/models/common/identity/ark_identity_directory_schemas.py,sha256=DYM0TigGIqt_ZSyhA-ikN1uDQLkn1WZwZO2Bi6XnUJY,5137
|
|
138
138
|
ark_sdk_python/models/common/isp/__init__.py,sha256=QSvRKyNiBSpzZggBk4p3TzH5YcGF-M5uu08hK2msPBk,141
|
|
@@ -286,7 +286,7 @@ ark_sdk_python/models/services/pcloud/safes/ark_pcloud_safes_stats.py,sha256=Vbv
|
|
|
286
286
|
ark_sdk_python/models/services/pcloud/safes/ark_pcloud_update_safe.py,sha256=ZqVRZ2hoi6WXBZhNF6XxXG0E8UjE3R5HlJZQm7SrZ4g,224
|
|
287
287
|
ark_sdk_python/models/services/pcloud/safes/ark_pcloud_update_safe_member.py,sha256=uFmWlNozcMctzSQvheMYgzFOdTt2o_qe3A3TTAwBerY,933
|
|
288
288
|
ark_sdk_python/models/services/sia/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
289
|
-
ark_sdk_python/models/services/sia/access/__init__.py,sha256=
|
|
289
|
+
ark_sdk_python/models/services/sia/access/__init__.py,sha256=b1bXCFFEfb3zUQ13NOnYHjfOfJ6vAhf799mZmvNO_no,916
|
|
290
290
|
ark_sdk_python/models/services/sia/access/ark_sia_access_workspace_type_serializer.py,sha256=25f6BDI4k255TKFb4LRk9h90Bwz2vUw6NIiZNxAWumM,635
|
|
291
291
|
ark_sdk_python/models/services/sia/access/ark_sia_connector_setup_script.py,sha256=vbNAs7jgxgfIcDnHZA-6wY6Unc5BR0rhgPwyrmqb_-E,610
|
|
292
292
|
ark_sdk_python/models/services/sia/access/ark_sia_get_connector_setup_script.py,sha256=fCPawE4CGwiMJ2RC3pY_lmFalVKSNtfarlO-2eo8ukU,2887
|
|
@@ -534,7 +534,7 @@ ark_sdk_python/services/pcloud/safes/__init__.py,sha256=H8KaS6PCUXDk81dsAK4PpMSO
|
|
|
534
534
|
ark_sdk_python/services/pcloud/safes/ark_pcloud_safes_service.py,sha256=fk2JCVuW51fo5TBNrHwqk0reoKC9uYorgNF9Y2Q42gg,24450
|
|
535
535
|
ark_sdk_python/services/sia/__init__.py,sha256=QxQOlifbM6z_1xd8wagjwbxwQOGQI2yXpo2M93sU6O8,87
|
|
536
536
|
ark_sdk_python/services/sia/access/__init__.py,sha256=rc_2Ua9Fe4qlmKYrmFLJcK_MOjSIob_atXZ4onhGFiw,125
|
|
537
|
-
ark_sdk_python/services/sia/access/ark_sia_access_service.py,sha256=
|
|
537
|
+
ark_sdk_python/services/sia/access/ark_sia_access_service.py,sha256=k2h8FH-wpnyTspDH_M4fuI4yZ5n8QJ4ZCG_gs8yuCU0,14042
|
|
538
538
|
ark_sdk_python/services/sia/ark_sia_api.py,sha256=9B4uthI98Ek0Si4Bu35IFnqDT_vEeRhTuldJUFeYxKY,5015
|
|
539
539
|
ark_sdk_python/services/sia/certificates/__init__.py,sha256=GGHlBqeLP7O7jRHNW5iUor1Qct5iiP0bOJG_UTP24as,149
|
|
540
540
|
ark_sdk_python/services/sia/certificates/ark_sia_certificates_service.py,sha256=ej9ZaIuSl1Cv_xBnAeqzpoNN3wtlmSuniuM1IeWhxnE,8626
|
|
@@ -577,9 +577,9 @@ ark_sdk_python/services/uap/sia/db/__init__.py,sha256=wnRWgugupaIX-47EkyIplpr17w
|
|
|
577
577
|
ark_sdk_python/services/uap/sia/db/ark_uap_sia_db_service.py,sha256=cgRFTtwaPssNiF_PmGx3nD1ywSsuxE5kJs5K5xKh3Z4,4017
|
|
578
578
|
ark_sdk_python/services/uap/sia/vm/__init__.py,sha256=-vorR4le7AbvkMIUAdaEDQ774mlFT_Ye_FWqPlwX-C0,123
|
|
579
579
|
ark_sdk_python/services/uap/sia/vm/ark_uap_sia_vm_service.py,sha256=sF0B-fo-LXUlHXMfZbggmdUH5gkjeGAPau8MZ_bBfkU,4015
|
|
580
|
-
ark_sdk_python-2.1.
|
|
581
|
-
ark_sdk_python-2.1.
|
|
582
|
-
ark_sdk_python-2.1.
|
|
583
|
-
ark_sdk_python-2.1.
|
|
584
|
-
ark_sdk_python-2.1.
|
|
585
|
-
ark_sdk_python-2.1.
|
|
580
|
+
ark_sdk_python-2.1.3.dist-info/LICENSE.txt,sha256=d4EzYx2apA3-GqrFY23wLtc6UmQNXG05gyLfZ3oWVRs,11358
|
|
581
|
+
ark_sdk_python-2.1.3.dist-info/METADATA,sha256=tWORiUUkNUXKXYfndxalVL7TlqkTzzVogh_7q0QgSwc,22039
|
|
582
|
+
ark_sdk_python-2.1.3.dist-info/NOTICES.md,sha256=vRzFZEsfBw5q3H1_cgZV50AVhNTqF8Smz9fSvn49Y1E,125803
|
|
583
|
+
ark_sdk_python-2.1.3.dist-info/WHEEL,sha256=0IJoS5KyK2sZuSvGyrwXyRwSVwTkTkpEcRzz5xcYUMQ,110
|
|
584
|
+
ark_sdk_python-2.1.3.dist-info/entry_points.txt,sha256=v5bcuRn8w42ZKQspfvX3AliKmLVO6f7Zb_bma77p3vQ,47
|
|
585
|
+
ark_sdk_python-2.1.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|