strongdm 15.2.0__zip → 15.5.0__zip
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.
- {strongdm-15.2.0 → strongdm-15.5.0}/PKG-INFO +2 -2
- {strongdm-15.2.0 → strongdm-15.5.0}/setup.py +2 -2
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/approval_workflow_approvers_pb2.py +6 -4
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/approval_workflows_pb2.py +6 -4
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/client.py +18 -18
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/drivers_pb2.py +313 -223
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/managed_secrets_pb2.py +4 -2
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/managed_secrets_pb2_grpc.py +34 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/models.py +357 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/plumbing.py +125 -1
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/svc.py +243 -210
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm.egg-info/PKG-INFO +2 -2
- {strongdm-15.2.0 → strongdm-15.5.0}/LICENSE +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/README.md +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/setup.cfg +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/__init__.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/access_request_events_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/access_request_events_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/access_requests_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/access_requests_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/access_requests_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/access_requests_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/account_attachments_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/account_attachments_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/account_attachments_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/account_attachments_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/account_grants_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/account_grants_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/account_grants_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/account_grants_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/account_permissions_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/account_permissions_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/account_resources_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/account_resources_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/account_resources_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/account_resources_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/accounts_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/accounts_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/accounts_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/accounts_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/activities_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/activities_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/approval_workflow_approvers_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/approval_workflow_approvers_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/approval_workflow_approvers_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/approval_workflow_steps_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/approval_workflow_steps_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/approval_workflow_steps_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/approval_workflow_steps_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/approval_workflows_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/approval_workflows_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/approval_workflows_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/constants.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/control_panel_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/control_panel_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/drivers_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/errors.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/health_checks_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/health_checks_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/identity_aliases_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/identity_aliases_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/identity_aliases_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/identity_aliases_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/identity_sets_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/identity_sets_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/identity_sets_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/identity_sets_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/nodes_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/nodes_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/nodes_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/nodes_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/options_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/options_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/organization_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/organization_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/peering_group_nodes_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/peering_group_nodes_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/peering_group_peers_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/peering_group_peers_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/peering_group_resources_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/peering_group_resources_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/peering_groups_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/peering_groups_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/policies_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/policies_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/policies_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/policies_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/proxy_cluster_keys_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/proxy_cluster_keys_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/queries_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/queries_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/remote_identities_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/remote_identities_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/remote_identities_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/remote_identities_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/remote_identity_groups_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/remote_identity_groups_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/remote_identity_groups_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/remote_identity_groups_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/replays_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/replays_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/resources_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/resources_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/resources_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/resources_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/role_resources_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/role_resources_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/role_resources_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/role_resources_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/roles_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/roles_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/roles_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/roles_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/secret_engine_policy_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/secret_engine_policy_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/secret_engine_types_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/secret_engine_types_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/secret_engines_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/secret_engines_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/secret_store_healths_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/secret_store_healths_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/secret_store_types_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/secret_store_types_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/secret_stores_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/secret_stores_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/secret_stores_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/secret_stores_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/spec_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/spec_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/tags_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/tags_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/workflow_approvers_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/workflow_approvers_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/workflow_approvers_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/workflow_approvers_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/workflow_roles_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/workflow_roles_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/workflow_roles_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/workflow_roles_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/workflows_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/workflows_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/workflows_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm/workflows_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm.egg-info/SOURCES.txt +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm.egg-info/dependency_links.txt +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm.egg-info/requires.txt +0 -0
- {strongdm-15.2.0 → strongdm-15.5.0}/strongdm.egg-info/top_level.txt +0 -0
|
@@ -48,6 +48,7 @@ from .approval_workflow_steps_history_pb2 import *
|
|
|
48
48
|
from .approval_workflows_pb2 import *
|
|
49
49
|
from .approval_workflows_history_pb2 import *
|
|
50
50
|
from .control_panel_pb2 import *
|
|
51
|
+
from .roles_pb2 import *
|
|
51
52
|
from .health_checks_pb2 import *
|
|
52
53
|
from .identity_aliases_pb2 import *
|
|
53
54
|
from .identity_aliases_history_pb2 import *
|
|
@@ -74,7 +75,6 @@ from .resources_pb2 import *
|
|
|
74
75
|
from .resources_history_pb2 import *
|
|
75
76
|
from .role_resources_pb2 import *
|
|
76
77
|
from .role_resources_history_pb2 import *
|
|
77
|
-
from .roles_pb2 import *
|
|
78
78
|
from .roles_history_pb2 import *
|
|
79
79
|
from .secret_engine_policy_pb2 import *
|
|
80
80
|
from .secret_engine_types_pb2 import *
|
|
@@ -505,6 +505,58 @@ def convert_repeated_aks_user_impersonation_to_porcelain(plumbings):
|
|
|
505
505
|
]
|
|
506
506
|
|
|
507
507
|
|
|
508
|
+
def convert_amqp_to_porcelain(plumbing):
|
|
509
|
+
if plumbing is None:
|
|
510
|
+
return None
|
|
511
|
+
porcelain = models.AMQP()
|
|
512
|
+
porcelain.bind_interface = (plumbing.bind_interface)
|
|
513
|
+
porcelain.egress_filter = (plumbing.egress_filter)
|
|
514
|
+
porcelain.healthy = (plumbing.healthy)
|
|
515
|
+
porcelain.hostname = (plumbing.hostname)
|
|
516
|
+
porcelain.id = (plumbing.id)
|
|
517
|
+
porcelain.name = (plumbing.name)
|
|
518
|
+
porcelain.password = (plumbing.password)
|
|
519
|
+
porcelain.port = (plumbing.port)
|
|
520
|
+
porcelain.port_override = (plumbing.port_override)
|
|
521
|
+
porcelain.proxy_cluster_id = (plumbing.proxy_cluster_id)
|
|
522
|
+
porcelain.secret_store_id = (plumbing.secret_store_id)
|
|
523
|
+
porcelain.subdomain = (plumbing.subdomain)
|
|
524
|
+
porcelain.tags = convert_tags_to_porcelain(plumbing.tags)
|
|
525
|
+
porcelain.tls_required = (plumbing.tls_required)
|
|
526
|
+
porcelain.username = (plumbing.username)
|
|
527
|
+
return porcelain
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
def convert_amqp_to_plumbing(porcelain):
|
|
531
|
+
plumbing = AMQP()
|
|
532
|
+
if porcelain is None:
|
|
533
|
+
return plumbing
|
|
534
|
+
plumbing.bind_interface = (porcelain.bind_interface)
|
|
535
|
+
plumbing.egress_filter = (porcelain.egress_filter)
|
|
536
|
+
plumbing.healthy = (porcelain.healthy)
|
|
537
|
+
plumbing.hostname = (porcelain.hostname)
|
|
538
|
+
plumbing.id = (porcelain.id)
|
|
539
|
+
plumbing.name = (porcelain.name)
|
|
540
|
+
plumbing.password = (porcelain.password)
|
|
541
|
+
plumbing.port = (porcelain.port)
|
|
542
|
+
plumbing.port_override = (porcelain.port_override)
|
|
543
|
+
plumbing.proxy_cluster_id = (porcelain.proxy_cluster_id)
|
|
544
|
+
plumbing.secret_store_id = (porcelain.secret_store_id)
|
|
545
|
+
plumbing.subdomain = (porcelain.subdomain)
|
|
546
|
+
plumbing.tags.CopyFrom(convert_tags_to_plumbing(porcelain.tags))
|
|
547
|
+
plumbing.tls_required = (porcelain.tls_required)
|
|
548
|
+
plumbing.username = (porcelain.username)
|
|
549
|
+
return plumbing
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
def convert_repeated_amqp_to_plumbing(porcelains):
|
|
553
|
+
return [convert_amqp_to_plumbing(porcelain) for porcelain in porcelains]
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
def convert_repeated_amqp_to_porcelain(plumbings):
|
|
557
|
+
return [convert_amqp_to_porcelain(plumbing) for plumbing in plumbings]
|
|
558
|
+
|
|
559
|
+
|
|
508
560
|
def convert_aws_to_porcelain(plumbing):
|
|
509
561
|
if plumbing is None:
|
|
510
562
|
return None
|
|
@@ -3994,6 +4046,68 @@ def convert_repeated_azure_mysql_to_porcelain(plumbings):
|
|
|
3994
4046
|
]
|
|
3995
4047
|
|
|
3996
4048
|
|
|
4049
|
+
def convert_azure_mysql_managed_identity_to_porcelain(plumbing):
|
|
4050
|
+
if plumbing is None:
|
|
4051
|
+
return None
|
|
4052
|
+
porcelain = models.AzureMysqlManagedIdentity()
|
|
4053
|
+
porcelain.bind_interface = (plumbing.bind_interface)
|
|
4054
|
+
porcelain.database = (plumbing.database)
|
|
4055
|
+
porcelain.egress_filter = (plumbing.egress_filter)
|
|
4056
|
+
porcelain.healthy = (plumbing.healthy)
|
|
4057
|
+
porcelain.hostname = (plumbing.hostname)
|
|
4058
|
+
porcelain.id = (plumbing.id)
|
|
4059
|
+
porcelain.name = (plumbing.name)
|
|
4060
|
+
porcelain.password = (plumbing.password)
|
|
4061
|
+
porcelain.port = (plumbing.port)
|
|
4062
|
+
porcelain.port_override = (plumbing.port_override)
|
|
4063
|
+
porcelain.proxy_cluster_id = (plumbing.proxy_cluster_id)
|
|
4064
|
+
porcelain.secret_store_id = (plumbing.secret_store_id)
|
|
4065
|
+
porcelain.subdomain = (plumbing.subdomain)
|
|
4066
|
+
porcelain.tags = convert_tags_to_porcelain(plumbing.tags)
|
|
4067
|
+
porcelain.use_azure_single_server_usernames = (
|
|
4068
|
+
plumbing.use_azure_single_server_usernames)
|
|
4069
|
+
porcelain.username = (plumbing.username)
|
|
4070
|
+
return porcelain
|
|
4071
|
+
|
|
4072
|
+
|
|
4073
|
+
def convert_azure_mysql_managed_identity_to_plumbing(porcelain):
|
|
4074
|
+
plumbing = AzureMysqlManagedIdentity()
|
|
4075
|
+
if porcelain is None:
|
|
4076
|
+
return plumbing
|
|
4077
|
+
plumbing.bind_interface = (porcelain.bind_interface)
|
|
4078
|
+
plumbing.database = (porcelain.database)
|
|
4079
|
+
plumbing.egress_filter = (porcelain.egress_filter)
|
|
4080
|
+
plumbing.healthy = (porcelain.healthy)
|
|
4081
|
+
plumbing.hostname = (porcelain.hostname)
|
|
4082
|
+
plumbing.id = (porcelain.id)
|
|
4083
|
+
plumbing.name = (porcelain.name)
|
|
4084
|
+
plumbing.password = (porcelain.password)
|
|
4085
|
+
plumbing.port = (porcelain.port)
|
|
4086
|
+
plumbing.port_override = (porcelain.port_override)
|
|
4087
|
+
plumbing.proxy_cluster_id = (porcelain.proxy_cluster_id)
|
|
4088
|
+
plumbing.secret_store_id = (porcelain.secret_store_id)
|
|
4089
|
+
plumbing.subdomain = (porcelain.subdomain)
|
|
4090
|
+
plumbing.tags.CopyFrom(convert_tags_to_plumbing(porcelain.tags))
|
|
4091
|
+
plumbing.use_azure_single_server_usernames = (
|
|
4092
|
+
porcelain.use_azure_single_server_usernames)
|
|
4093
|
+
plumbing.username = (porcelain.username)
|
|
4094
|
+
return plumbing
|
|
4095
|
+
|
|
4096
|
+
|
|
4097
|
+
def convert_repeated_azure_mysql_managed_identity_to_plumbing(porcelains):
|
|
4098
|
+
return [
|
|
4099
|
+
convert_azure_mysql_managed_identity_to_plumbing(porcelain)
|
|
4100
|
+
for porcelain in porcelains
|
|
4101
|
+
]
|
|
4102
|
+
|
|
4103
|
+
|
|
4104
|
+
def convert_repeated_azure_mysql_managed_identity_to_porcelain(plumbings):
|
|
4105
|
+
return [
|
|
4106
|
+
convert_azure_mysql_managed_identity_to_porcelain(plumbing)
|
|
4107
|
+
for plumbing in plumbings
|
|
4108
|
+
]
|
|
4109
|
+
|
|
4110
|
+
|
|
3997
4111
|
def convert_azure_postgres_to_porcelain(plumbing):
|
|
3998
4112
|
if plumbing is None:
|
|
3999
4113
|
return None
|
|
@@ -12165,6 +12279,8 @@ def convert_resource_to_plumbing(porcelain):
|
|
|
12165
12279
|
if isinstance(porcelain, models.AmazonMQAMQP091):
|
|
12166
12280
|
plumbing.amazon_mqamqp_091.CopyFrom(
|
|
12167
12281
|
convert_amazon_mqamqp_091_to_plumbing(porcelain))
|
|
12282
|
+
if isinstance(porcelain, models.AMQP):
|
|
12283
|
+
plumbing.amqp.CopyFrom(convert_amqp_to_plumbing(porcelain))
|
|
12168
12284
|
if isinstance(porcelain, models.Athena):
|
|
12169
12285
|
plumbing.athena.CopyFrom(convert_athena_to_plumbing(porcelain))
|
|
12170
12286
|
if isinstance(porcelain, models.AthenaIAM):
|
|
@@ -12203,6 +12319,9 @@ def convert_resource_to_plumbing(porcelain):
|
|
|
12203
12319
|
if isinstance(porcelain, models.AzureMysql):
|
|
12204
12320
|
plumbing.azure_mysql.CopyFrom(
|
|
12205
12321
|
convert_azure_mysql_to_plumbing(porcelain))
|
|
12322
|
+
if isinstance(porcelain, models.AzureMysqlManagedIdentity):
|
|
12323
|
+
plumbing.azure_mysql_managed_identity.CopyFrom(
|
|
12324
|
+
convert_azure_mysql_managed_identity_to_plumbing(porcelain))
|
|
12206
12325
|
if isinstance(porcelain, models.AzurePostgres):
|
|
12207
12326
|
plumbing.azure_postgres.CopyFrom(
|
|
12208
12327
|
convert_azure_postgres_to_plumbing(porcelain))
|
|
@@ -12441,6 +12560,8 @@ def convert_resource_to_porcelain(plumbing):
|
|
|
12441
12560
|
if plumbing.HasField('amazon_mqamqp_091'):
|
|
12442
12561
|
return convert_amazon_mqamqp_091_to_porcelain(
|
|
12443
12562
|
plumbing.amazon_mqamqp_091)
|
|
12563
|
+
if plumbing.HasField('amqp'):
|
|
12564
|
+
return convert_amqp_to_porcelain(plumbing.amqp)
|
|
12444
12565
|
if plumbing.HasField('athena'):
|
|
12445
12566
|
return convert_athena_to_porcelain(plumbing.athena)
|
|
12446
12567
|
if plumbing.HasField('athena_iam'):
|
|
@@ -12473,6 +12594,9 @@ def convert_resource_to_porcelain(plumbing):
|
|
|
12473
12594
|
return convert_azure_console_to_porcelain(plumbing.azure_console)
|
|
12474
12595
|
if plumbing.HasField('azure_mysql'):
|
|
12475
12596
|
return convert_azure_mysql_to_porcelain(plumbing.azure_mysql)
|
|
12597
|
+
if plumbing.HasField('azure_mysql_managed_identity'):
|
|
12598
|
+
return convert_azure_mysql_managed_identity_to_porcelain(
|
|
12599
|
+
plumbing.azure_mysql_managed_identity)
|
|
12476
12600
|
if plumbing.HasField('azure_postgres'):
|
|
12477
12601
|
return convert_azure_postgres_to_porcelain(plumbing.azure_postgres)
|
|
12478
12602
|
if plumbing.HasField('azure_postgres_managed_identity'):
|
|
@@ -66,6 +66,8 @@ from .approval_workflows_history_pb2 import *
|
|
|
66
66
|
from .approval_workflows_history_pb2_grpc import *
|
|
67
67
|
from .control_panel_pb2 import *
|
|
68
68
|
from .control_panel_pb2_grpc import *
|
|
69
|
+
from .roles_pb2 import *
|
|
70
|
+
from .roles_pb2_grpc import *
|
|
69
71
|
from .health_checks_pb2 import *
|
|
70
72
|
from .health_checks_pb2_grpc import *
|
|
71
73
|
from .identity_aliases_pb2 import *
|
|
@@ -118,8 +120,6 @@ from .role_resources_pb2 import *
|
|
|
118
120
|
from .role_resources_pb2_grpc import *
|
|
119
121
|
from .role_resources_history_pb2 import *
|
|
120
122
|
from .role_resources_history_pb2_grpc import *
|
|
121
|
-
from .roles_pb2 import *
|
|
122
|
-
from .roles_pb2_grpc import *
|
|
123
123
|
from .roles_history_pb2 import *
|
|
124
124
|
from .roles_history_pb2_grpc import *
|
|
125
125
|
from .secret_engine_policy_pb2 import *
|
|
@@ -2181,6 +2181,214 @@ class ControlPanel:
|
|
|
2181
2181
|
return resp
|
|
2182
2182
|
|
|
2183
2183
|
|
|
2184
|
+
class Roles:
|
|
2185
|
+
'''
|
|
2186
|
+
A Role has a list of access rules which determine which Resources the members
|
|
2187
|
+
of the Role have access to. An Account can be a member of multiple Roles via
|
|
2188
|
+
AccountAttachments.
|
|
2189
|
+
See `strongdm.models.Role`.
|
|
2190
|
+
'''
|
|
2191
|
+
def __init__(self, channel, client):
|
|
2192
|
+
self.parent = client
|
|
2193
|
+
self.stub = RolesStub(channel)
|
|
2194
|
+
|
|
2195
|
+
def create(self, role, timeout=None):
|
|
2196
|
+
'''
|
|
2197
|
+
Create registers a new Role.
|
|
2198
|
+
'''
|
|
2199
|
+
deadline = None if timeout is None else time.time() + timeout
|
|
2200
|
+
req = RoleCreateRequest()
|
|
2201
|
+
|
|
2202
|
+
if role is not None:
|
|
2203
|
+
req.role.CopyFrom(plumbing.convert_role_to_plumbing(role))
|
|
2204
|
+
tries = 0
|
|
2205
|
+
plumbing_response = None
|
|
2206
|
+
while True:
|
|
2207
|
+
t = None if deadline is None else deadline - time.time()
|
|
2208
|
+
try:
|
|
2209
|
+
plumbing_response = self.stub.Create(
|
|
2210
|
+
req,
|
|
2211
|
+
metadata=self.parent.get_metadata('Roles.Create', req),
|
|
2212
|
+
timeout=t)
|
|
2213
|
+
except Exception as e:
|
|
2214
|
+
if self.parent.shouldRetry(tries, e, deadline):
|
|
2215
|
+
tries += 1
|
|
2216
|
+
time.sleep(self.parent.exponentialBackoff(tries, deadline))
|
|
2217
|
+
continue
|
|
2218
|
+
raise plumbing.convert_error_to_porcelain(e) from e
|
|
2219
|
+
break
|
|
2220
|
+
|
|
2221
|
+
resp = models.RoleCreateResponse()
|
|
2222
|
+
resp.meta = plumbing.convert_create_response_metadata_to_porcelain(
|
|
2223
|
+
plumbing_response.meta)
|
|
2224
|
+
resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
|
|
2225
|
+
plumbing_response.rate_limit)
|
|
2226
|
+
resp.role = plumbing.convert_role_to_porcelain(plumbing_response.role)
|
|
2227
|
+
return resp
|
|
2228
|
+
|
|
2229
|
+
def get(self, id, timeout=None):
|
|
2230
|
+
'''
|
|
2231
|
+
Get reads one Role by ID.
|
|
2232
|
+
'''
|
|
2233
|
+
deadline = None if timeout is None else time.time() + timeout
|
|
2234
|
+
req = RoleGetRequest()
|
|
2235
|
+
if self.parent.snapshot_datetime is not None:
|
|
2236
|
+
req.meta.CopyFrom(GetRequestMetadata())
|
|
2237
|
+
req.meta.snapshot_at.FromDatetime(self.parent.snapshot_datetime)
|
|
2238
|
+
|
|
2239
|
+
req.id = (id)
|
|
2240
|
+
tries = 0
|
|
2241
|
+
plumbing_response = None
|
|
2242
|
+
while True:
|
|
2243
|
+
t = None if deadline is None else deadline - time.time()
|
|
2244
|
+
try:
|
|
2245
|
+
plumbing_response = self.stub.Get(
|
|
2246
|
+
req,
|
|
2247
|
+
metadata=self.parent.get_metadata('Roles.Get', req),
|
|
2248
|
+
timeout=t)
|
|
2249
|
+
except Exception as e:
|
|
2250
|
+
if self.parent.shouldRetry(tries, e, deadline):
|
|
2251
|
+
tries += 1
|
|
2252
|
+
time.sleep(self.parent.exponentialBackoff(tries, deadline))
|
|
2253
|
+
continue
|
|
2254
|
+
raise plumbing.convert_error_to_porcelain(e) from e
|
|
2255
|
+
break
|
|
2256
|
+
|
|
2257
|
+
resp = models.RoleGetResponse()
|
|
2258
|
+
resp.meta = plumbing.convert_get_response_metadata_to_porcelain(
|
|
2259
|
+
plumbing_response.meta)
|
|
2260
|
+
resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
|
|
2261
|
+
plumbing_response.rate_limit)
|
|
2262
|
+
resp.role = plumbing.convert_role_to_porcelain(plumbing_response.role)
|
|
2263
|
+
return resp
|
|
2264
|
+
|
|
2265
|
+
def update(self, role, timeout=None):
|
|
2266
|
+
'''
|
|
2267
|
+
Update replaces all the fields of a Role by ID.
|
|
2268
|
+
'''
|
|
2269
|
+
deadline = None if timeout is None else time.time() + timeout
|
|
2270
|
+
req = RoleUpdateRequest()
|
|
2271
|
+
|
|
2272
|
+
if role is not None:
|
|
2273
|
+
req.role.CopyFrom(plumbing.convert_role_to_plumbing(role))
|
|
2274
|
+
tries = 0
|
|
2275
|
+
plumbing_response = None
|
|
2276
|
+
while True:
|
|
2277
|
+
t = None if deadline is None else deadline - time.time()
|
|
2278
|
+
try:
|
|
2279
|
+
plumbing_response = self.stub.Update(
|
|
2280
|
+
req,
|
|
2281
|
+
metadata=self.parent.get_metadata('Roles.Update', req),
|
|
2282
|
+
timeout=t)
|
|
2283
|
+
except Exception as e:
|
|
2284
|
+
if self.parent.shouldRetry(tries, e, deadline):
|
|
2285
|
+
tries += 1
|
|
2286
|
+
time.sleep(self.parent.exponentialBackoff(tries, deadline))
|
|
2287
|
+
continue
|
|
2288
|
+
raise plumbing.convert_error_to_porcelain(e) from e
|
|
2289
|
+
break
|
|
2290
|
+
|
|
2291
|
+
resp = models.RoleUpdateResponse()
|
|
2292
|
+
resp.meta = plumbing.convert_update_response_metadata_to_porcelain(
|
|
2293
|
+
plumbing_response.meta)
|
|
2294
|
+
resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
|
|
2295
|
+
plumbing_response.rate_limit)
|
|
2296
|
+
resp.role = plumbing.convert_role_to_porcelain(plumbing_response.role)
|
|
2297
|
+
return resp
|
|
2298
|
+
|
|
2299
|
+
def delete(self, id, timeout=None):
|
|
2300
|
+
'''
|
|
2301
|
+
Delete removes a Role by ID.
|
|
2302
|
+
'''
|
|
2303
|
+
deadline = None if timeout is None else time.time() + timeout
|
|
2304
|
+
req = RoleDeleteRequest()
|
|
2305
|
+
|
|
2306
|
+
req.id = (id)
|
|
2307
|
+
tries = 0
|
|
2308
|
+
plumbing_response = None
|
|
2309
|
+
while True:
|
|
2310
|
+
t = None if deadline is None else deadline - time.time()
|
|
2311
|
+
try:
|
|
2312
|
+
plumbing_response = self.stub.Delete(
|
|
2313
|
+
req,
|
|
2314
|
+
metadata=self.parent.get_metadata('Roles.Delete', req),
|
|
2315
|
+
timeout=t)
|
|
2316
|
+
except Exception as e:
|
|
2317
|
+
if self.parent.shouldRetry(tries, e, deadline):
|
|
2318
|
+
tries += 1
|
|
2319
|
+
time.sleep(self.parent.exponentialBackoff(tries, deadline))
|
|
2320
|
+
continue
|
|
2321
|
+
raise plumbing.convert_error_to_porcelain(e) from e
|
|
2322
|
+
break
|
|
2323
|
+
|
|
2324
|
+
resp = models.RoleDeleteResponse()
|
|
2325
|
+
resp.meta = plumbing.convert_delete_response_metadata_to_porcelain(
|
|
2326
|
+
plumbing_response.meta)
|
|
2327
|
+
resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
|
|
2328
|
+
plumbing_response.rate_limit)
|
|
2329
|
+
return resp
|
|
2330
|
+
|
|
2331
|
+
def list(self, filter, *args, timeout=None):
|
|
2332
|
+
'''
|
|
2333
|
+
List gets a list of Roles matching a given set of criteria.
|
|
2334
|
+
'''
|
|
2335
|
+
deadline = None if timeout is None else time.time() + timeout
|
|
2336
|
+
req = RoleListRequest()
|
|
2337
|
+
req.meta.CopyFrom(ListRequestMetadata())
|
|
2338
|
+
if self.parent.page_limit > 0:
|
|
2339
|
+
req.meta.limit = self.parent.page_limit
|
|
2340
|
+
if self.parent.snapshot_datetime is not None:
|
|
2341
|
+
req.meta.snapshot_at.FromDatetime(self.parent.snapshot_datetime)
|
|
2342
|
+
|
|
2343
|
+
req.filter = plumbing.quote_filter_args(filter, *args)
|
|
2344
|
+
|
|
2345
|
+
def generator(svc, req):
|
|
2346
|
+
tries = 0
|
|
2347
|
+
while True:
|
|
2348
|
+
t = None if deadline is None else deadline - time.time()
|
|
2349
|
+
try:
|
|
2350
|
+
plumbing_response = svc.stub.List(
|
|
2351
|
+
req,
|
|
2352
|
+
metadata=svc.parent.get_metadata('Roles.List', req),
|
|
2353
|
+
timeout=t)
|
|
2354
|
+
except Exception as e:
|
|
2355
|
+
if self.parent.shouldRetry(tries, e, deadline):
|
|
2356
|
+
tries += 1
|
|
2357
|
+
time.sleep(
|
|
2358
|
+
self.parent.exponentialBackoff(tries, deadline))
|
|
2359
|
+
continue
|
|
2360
|
+
raise plumbing.convert_error_to_porcelain(e) from e
|
|
2361
|
+
tries = 0
|
|
2362
|
+
for plumbing_item in plumbing_response.roles:
|
|
2363
|
+
yield plumbing.convert_role_to_porcelain(plumbing_item)
|
|
2364
|
+
if plumbing_response.meta.next_cursor == '':
|
|
2365
|
+
break
|
|
2366
|
+
req.meta.cursor = plumbing_response.meta.next_cursor
|
|
2367
|
+
|
|
2368
|
+
return generator(self, req)
|
|
2369
|
+
|
|
2370
|
+
|
|
2371
|
+
class SnapshotRoles:
|
|
2372
|
+
'''
|
|
2373
|
+
SnapshotRoles exposes the read only methods of the Roles
|
|
2374
|
+
service for historical queries.
|
|
2375
|
+
'''
|
|
2376
|
+
def __init__(self, roles):
|
|
2377
|
+
self.roles = roles
|
|
2378
|
+
|
|
2379
|
+
def get(self, id, timeout=None):
|
|
2380
|
+
'''
|
|
2381
|
+
Get reads one Role by ID.
|
|
2382
|
+
'''
|
|
2383
|
+
return self.roles.get(id, timeout=timeout)
|
|
2384
|
+
|
|
2385
|
+
def list(self, filter, *args, timeout=None):
|
|
2386
|
+
'''
|
|
2387
|
+
List gets a list of Roles matching a given set of criteria.
|
|
2388
|
+
'''
|
|
2389
|
+
return self.roles.list(filter, *args, timeout=timeout)
|
|
2390
|
+
|
|
2391
|
+
|
|
2184
2392
|
class HealthChecks:
|
|
2185
2393
|
'''
|
|
2186
2394
|
HealthChecks lists the last healthcheck between each node and resource.
|
|
@@ -3001,6 +3209,37 @@ class ManagedSecrets:
|
|
|
3001
3209
|
plumbing_response.rate_limit)
|
|
3002
3210
|
return resp
|
|
3003
3211
|
|
|
3212
|
+
def force_delete(self, id, timeout=None):
|
|
3213
|
+
'''
|
|
3214
|
+
ForceDelete deletes a Managed Secret regardless of errors on external system
|
|
3215
|
+
'''
|
|
3216
|
+
deadline = None if timeout is None else time.time() + timeout
|
|
3217
|
+
req = ManagedSecretDeleteRequest()
|
|
3218
|
+
|
|
3219
|
+
req.id = (id)
|
|
3220
|
+
tries = 0
|
|
3221
|
+
plumbing_response = None
|
|
3222
|
+
while True:
|
|
3223
|
+
t = None if deadline is None else deadline - time.time()
|
|
3224
|
+
try:
|
|
3225
|
+
plumbing_response = self.stub.ForceDelete(
|
|
3226
|
+
req,
|
|
3227
|
+
metadata=self.parent.get_metadata(
|
|
3228
|
+
'ManagedSecrets.ForceDelete', req),
|
|
3229
|
+
timeout=t)
|
|
3230
|
+
except Exception as e:
|
|
3231
|
+
if self.parent.shouldRetry(tries, e, deadline):
|
|
3232
|
+
tries += 1
|
|
3233
|
+
time.sleep(self.parent.exponentialBackoff(tries, deadline))
|
|
3234
|
+
continue
|
|
3235
|
+
raise plumbing.convert_error_to_porcelain(e) from e
|
|
3236
|
+
break
|
|
3237
|
+
|
|
3238
|
+
resp = models.ManagedSecretDeleteResponse()
|
|
3239
|
+
resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
|
|
3240
|
+
plumbing_response.rate_limit)
|
|
3241
|
+
return resp
|
|
3242
|
+
|
|
3004
3243
|
def get(self, id, timeout=None):
|
|
3005
3244
|
'''
|
|
3006
3245
|
Get gets details of a Managed Secret without sensitive data
|
|
@@ -5096,6 +5335,7 @@ class Resources:
|
|
|
5096
5335
|
`strongdm.models.AmazonES`
|
|
5097
5336
|
`strongdm.models.AmazonESIAM`
|
|
5098
5337
|
`strongdm.models.AmazonMQAMQP091`
|
|
5338
|
+
`strongdm.models.AMQP`
|
|
5099
5339
|
`strongdm.models.Athena`
|
|
5100
5340
|
`strongdm.models.AthenaIAM`
|
|
5101
5341
|
`strongdm.models.AuroraMysql`
|
|
@@ -5110,6 +5350,7 @@ class Resources:
|
|
|
5110
5350
|
`strongdm.models.AzureCertificate`
|
|
5111
5351
|
`strongdm.models.AzureConsole`
|
|
5112
5352
|
`strongdm.models.AzureMysql`
|
|
5353
|
+
`strongdm.models.AzureMysqlManagedIdentity`
|
|
5113
5354
|
`strongdm.models.AzurePostgres`
|
|
5114
5355
|
`strongdm.models.AzurePostgresManagedIdentity`
|
|
5115
5356
|
`strongdm.models.BigQuery`
|
|
@@ -5642,214 +5883,6 @@ class RoleResourcesHistory:
|
|
|
5642
5883
|
return generator(self, req)
|
|
5643
5884
|
|
|
5644
5885
|
|
|
5645
|
-
class Roles:
|
|
5646
|
-
'''
|
|
5647
|
-
A Role has a list of access rules which determine which Resources the members
|
|
5648
|
-
of the Role have access to. An Account can be a member of multiple Roles via
|
|
5649
|
-
AccountAttachments.
|
|
5650
|
-
See `strongdm.models.Role`.
|
|
5651
|
-
'''
|
|
5652
|
-
def __init__(self, channel, client):
|
|
5653
|
-
self.parent = client
|
|
5654
|
-
self.stub = RolesStub(channel)
|
|
5655
|
-
|
|
5656
|
-
def create(self, role, timeout=None):
|
|
5657
|
-
'''
|
|
5658
|
-
Create registers a new Role.
|
|
5659
|
-
'''
|
|
5660
|
-
deadline = None if timeout is None else time.time() + timeout
|
|
5661
|
-
req = RoleCreateRequest()
|
|
5662
|
-
|
|
5663
|
-
if role is not None:
|
|
5664
|
-
req.role.CopyFrom(plumbing.convert_role_to_plumbing(role))
|
|
5665
|
-
tries = 0
|
|
5666
|
-
plumbing_response = None
|
|
5667
|
-
while True:
|
|
5668
|
-
t = None if deadline is None else deadline - time.time()
|
|
5669
|
-
try:
|
|
5670
|
-
plumbing_response = self.stub.Create(
|
|
5671
|
-
req,
|
|
5672
|
-
metadata=self.parent.get_metadata('Roles.Create', req),
|
|
5673
|
-
timeout=t)
|
|
5674
|
-
except Exception as e:
|
|
5675
|
-
if self.parent.shouldRetry(tries, e, deadline):
|
|
5676
|
-
tries += 1
|
|
5677
|
-
time.sleep(self.parent.exponentialBackoff(tries, deadline))
|
|
5678
|
-
continue
|
|
5679
|
-
raise plumbing.convert_error_to_porcelain(e) from e
|
|
5680
|
-
break
|
|
5681
|
-
|
|
5682
|
-
resp = models.RoleCreateResponse()
|
|
5683
|
-
resp.meta = plumbing.convert_create_response_metadata_to_porcelain(
|
|
5684
|
-
plumbing_response.meta)
|
|
5685
|
-
resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
|
|
5686
|
-
plumbing_response.rate_limit)
|
|
5687
|
-
resp.role = plumbing.convert_role_to_porcelain(plumbing_response.role)
|
|
5688
|
-
return resp
|
|
5689
|
-
|
|
5690
|
-
def get(self, id, timeout=None):
|
|
5691
|
-
'''
|
|
5692
|
-
Get reads one Role by ID.
|
|
5693
|
-
'''
|
|
5694
|
-
deadline = None if timeout is None else time.time() + timeout
|
|
5695
|
-
req = RoleGetRequest()
|
|
5696
|
-
if self.parent.snapshot_datetime is not None:
|
|
5697
|
-
req.meta.CopyFrom(GetRequestMetadata())
|
|
5698
|
-
req.meta.snapshot_at.FromDatetime(self.parent.snapshot_datetime)
|
|
5699
|
-
|
|
5700
|
-
req.id = (id)
|
|
5701
|
-
tries = 0
|
|
5702
|
-
plumbing_response = None
|
|
5703
|
-
while True:
|
|
5704
|
-
t = None if deadline is None else deadline - time.time()
|
|
5705
|
-
try:
|
|
5706
|
-
plumbing_response = self.stub.Get(
|
|
5707
|
-
req,
|
|
5708
|
-
metadata=self.parent.get_metadata('Roles.Get', req),
|
|
5709
|
-
timeout=t)
|
|
5710
|
-
except Exception as e:
|
|
5711
|
-
if self.parent.shouldRetry(tries, e, deadline):
|
|
5712
|
-
tries += 1
|
|
5713
|
-
time.sleep(self.parent.exponentialBackoff(tries, deadline))
|
|
5714
|
-
continue
|
|
5715
|
-
raise plumbing.convert_error_to_porcelain(e) from e
|
|
5716
|
-
break
|
|
5717
|
-
|
|
5718
|
-
resp = models.RoleGetResponse()
|
|
5719
|
-
resp.meta = plumbing.convert_get_response_metadata_to_porcelain(
|
|
5720
|
-
plumbing_response.meta)
|
|
5721
|
-
resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
|
|
5722
|
-
plumbing_response.rate_limit)
|
|
5723
|
-
resp.role = plumbing.convert_role_to_porcelain(plumbing_response.role)
|
|
5724
|
-
return resp
|
|
5725
|
-
|
|
5726
|
-
def update(self, role, timeout=None):
|
|
5727
|
-
'''
|
|
5728
|
-
Update replaces all the fields of a Role by ID.
|
|
5729
|
-
'''
|
|
5730
|
-
deadline = None if timeout is None else time.time() + timeout
|
|
5731
|
-
req = RoleUpdateRequest()
|
|
5732
|
-
|
|
5733
|
-
if role is not None:
|
|
5734
|
-
req.role.CopyFrom(plumbing.convert_role_to_plumbing(role))
|
|
5735
|
-
tries = 0
|
|
5736
|
-
plumbing_response = None
|
|
5737
|
-
while True:
|
|
5738
|
-
t = None if deadline is None else deadline - time.time()
|
|
5739
|
-
try:
|
|
5740
|
-
plumbing_response = self.stub.Update(
|
|
5741
|
-
req,
|
|
5742
|
-
metadata=self.parent.get_metadata('Roles.Update', req),
|
|
5743
|
-
timeout=t)
|
|
5744
|
-
except Exception as e:
|
|
5745
|
-
if self.parent.shouldRetry(tries, e, deadline):
|
|
5746
|
-
tries += 1
|
|
5747
|
-
time.sleep(self.parent.exponentialBackoff(tries, deadline))
|
|
5748
|
-
continue
|
|
5749
|
-
raise plumbing.convert_error_to_porcelain(e) from e
|
|
5750
|
-
break
|
|
5751
|
-
|
|
5752
|
-
resp = models.RoleUpdateResponse()
|
|
5753
|
-
resp.meta = plumbing.convert_update_response_metadata_to_porcelain(
|
|
5754
|
-
plumbing_response.meta)
|
|
5755
|
-
resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
|
|
5756
|
-
plumbing_response.rate_limit)
|
|
5757
|
-
resp.role = plumbing.convert_role_to_porcelain(plumbing_response.role)
|
|
5758
|
-
return resp
|
|
5759
|
-
|
|
5760
|
-
def delete(self, id, timeout=None):
|
|
5761
|
-
'''
|
|
5762
|
-
Delete removes a Role by ID.
|
|
5763
|
-
'''
|
|
5764
|
-
deadline = None if timeout is None else time.time() + timeout
|
|
5765
|
-
req = RoleDeleteRequest()
|
|
5766
|
-
|
|
5767
|
-
req.id = (id)
|
|
5768
|
-
tries = 0
|
|
5769
|
-
plumbing_response = None
|
|
5770
|
-
while True:
|
|
5771
|
-
t = None if deadline is None else deadline - time.time()
|
|
5772
|
-
try:
|
|
5773
|
-
plumbing_response = self.stub.Delete(
|
|
5774
|
-
req,
|
|
5775
|
-
metadata=self.parent.get_metadata('Roles.Delete', req),
|
|
5776
|
-
timeout=t)
|
|
5777
|
-
except Exception as e:
|
|
5778
|
-
if self.parent.shouldRetry(tries, e, deadline):
|
|
5779
|
-
tries += 1
|
|
5780
|
-
time.sleep(self.parent.exponentialBackoff(tries, deadline))
|
|
5781
|
-
continue
|
|
5782
|
-
raise plumbing.convert_error_to_porcelain(e) from e
|
|
5783
|
-
break
|
|
5784
|
-
|
|
5785
|
-
resp = models.RoleDeleteResponse()
|
|
5786
|
-
resp.meta = plumbing.convert_delete_response_metadata_to_porcelain(
|
|
5787
|
-
plumbing_response.meta)
|
|
5788
|
-
resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
|
|
5789
|
-
plumbing_response.rate_limit)
|
|
5790
|
-
return resp
|
|
5791
|
-
|
|
5792
|
-
def list(self, filter, *args, timeout=None):
|
|
5793
|
-
'''
|
|
5794
|
-
List gets a list of Roles matching a given set of criteria.
|
|
5795
|
-
'''
|
|
5796
|
-
deadline = None if timeout is None else time.time() + timeout
|
|
5797
|
-
req = RoleListRequest()
|
|
5798
|
-
req.meta.CopyFrom(ListRequestMetadata())
|
|
5799
|
-
if self.parent.page_limit > 0:
|
|
5800
|
-
req.meta.limit = self.parent.page_limit
|
|
5801
|
-
if self.parent.snapshot_datetime is not None:
|
|
5802
|
-
req.meta.snapshot_at.FromDatetime(self.parent.snapshot_datetime)
|
|
5803
|
-
|
|
5804
|
-
req.filter = plumbing.quote_filter_args(filter, *args)
|
|
5805
|
-
|
|
5806
|
-
def generator(svc, req):
|
|
5807
|
-
tries = 0
|
|
5808
|
-
while True:
|
|
5809
|
-
t = None if deadline is None else deadline - time.time()
|
|
5810
|
-
try:
|
|
5811
|
-
plumbing_response = svc.stub.List(
|
|
5812
|
-
req,
|
|
5813
|
-
metadata=svc.parent.get_metadata('Roles.List', req),
|
|
5814
|
-
timeout=t)
|
|
5815
|
-
except Exception as e:
|
|
5816
|
-
if self.parent.shouldRetry(tries, e, deadline):
|
|
5817
|
-
tries += 1
|
|
5818
|
-
time.sleep(
|
|
5819
|
-
self.parent.exponentialBackoff(tries, deadline))
|
|
5820
|
-
continue
|
|
5821
|
-
raise plumbing.convert_error_to_porcelain(e) from e
|
|
5822
|
-
tries = 0
|
|
5823
|
-
for plumbing_item in plumbing_response.roles:
|
|
5824
|
-
yield plumbing.convert_role_to_porcelain(plumbing_item)
|
|
5825
|
-
if plumbing_response.meta.next_cursor == '':
|
|
5826
|
-
break
|
|
5827
|
-
req.meta.cursor = plumbing_response.meta.next_cursor
|
|
5828
|
-
|
|
5829
|
-
return generator(self, req)
|
|
5830
|
-
|
|
5831
|
-
|
|
5832
|
-
class SnapshotRoles:
|
|
5833
|
-
'''
|
|
5834
|
-
SnapshotRoles exposes the read only methods of the Roles
|
|
5835
|
-
service for historical queries.
|
|
5836
|
-
'''
|
|
5837
|
-
def __init__(self, roles):
|
|
5838
|
-
self.roles = roles
|
|
5839
|
-
|
|
5840
|
-
def get(self, id, timeout=None):
|
|
5841
|
-
'''
|
|
5842
|
-
Get reads one Role by ID.
|
|
5843
|
-
'''
|
|
5844
|
-
return self.roles.get(id, timeout=timeout)
|
|
5845
|
-
|
|
5846
|
-
def list(self, filter, *args, timeout=None):
|
|
5847
|
-
'''
|
|
5848
|
-
List gets a list of Roles matching a given set of criteria.
|
|
5849
|
-
'''
|
|
5850
|
-
return self.roles.list(filter, *args, timeout=timeout)
|
|
5851
|
-
|
|
5852
|
-
|
|
5853
5886
|
class RolesHistory:
|
|
5854
5887
|
'''
|
|
5855
5888
|
RolesHistory records all changes to the state of a Role.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: strongdm
|
|
3
|
-
Version: 15.
|
|
3
|
+
Version: 15.5.0
|
|
4
4
|
Summary: strongDM SDK for the Python programming language.
|
|
5
5
|
Home-page: https://github.com/strongdm/strongdm-sdk-python
|
|
6
6
|
Author: strongDM Team
|
|
7
7
|
Author-email: sdk-feedback@strongdm.com
|
|
8
8
|
License: apache-2.0
|
|
9
|
-
Download-URL: https://github.com/strongdm/strongdm-sdk-python/archive/v15.
|
|
9
|
+
Download-URL: https://github.com/strongdm/strongdm-sdk-python/archive/v15.5.0.tar.gz
|
|
10
10
|
Keywords: strongDM,sdm,api,automation,security,audit,database,server,ssh,rdp
|
|
11
11
|
Platform: UNKNOWN
|
|
12
12
|
Classifier: Development Status :: 4 - Beta
|
|
File without changes
|
|
File without changes
|
|
File without changes
|