strongdm 15.2.0__zip → 15.4.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.4.0}/PKG-INFO +2 -2
- {strongdm-15.2.0 → strongdm-15.4.0}/setup.py +2 -2
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_approvers_pb2.py +6 -4
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflows_pb2.py +6 -4
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/client.py +18 -18
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/drivers_pb2.py +313 -223
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/models.py +357 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/plumbing.py +125 -1
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/svc.py +212 -210
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm.egg-info/PKG-INFO +2 -2
- {strongdm-15.2.0 → strongdm-15.4.0}/LICENSE +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/README.md +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/setup.cfg +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/__init__.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/access_request_events_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/access_request_events_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/access_requests_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/access_requests_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/access_requests_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/access_requests_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_attachments_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_attachments_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_attachments_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_attachments_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_grants_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_grants_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_grants_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_grants_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_permissions_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_permissions_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_resources_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_resources_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_resources_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_resources_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/accounts_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/accounts_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/accounts_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/accounts_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/activities_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/activities_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_approvers_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_approvers_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_approvers_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_steps_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_steps_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_steps_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_steps_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflows_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflows_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflows_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/constants.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/control_panel_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/control_panel_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/drivers_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/errors.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/health_checks_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/health_checks_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_aliases_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_aliases_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_aliases_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_aliases_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_sets_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_sets_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_sets_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_sets_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/managed_secrets_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/managed_secrets_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/nodes_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/nodes_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/nodes_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/nodes_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/options_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/options_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/organization_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/organization_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_group_nodes_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_group_nodes_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_group_peers_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_group_peers_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_group_resources_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_group_resources_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_groups_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_groups_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/policies_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/policies_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/policies_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/policies_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/proxy_cluster_keys_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/proxy_cluster_keys_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/queries_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/queries_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identities_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identities_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identities_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identities_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identity_groups_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identity_groups_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identity_groups_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identity_groups_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/replays_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/replays_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/resources_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/resources_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/resources_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/resources_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/role_resources_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/role_resources_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/role_resources_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/role_resources_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/roles_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/roles_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/roles_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/roles_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_engine_policy_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_engine_policy_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_engine_types_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_engine_types_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_engines_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_engines_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_store_healths_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_store_healths_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_store_types_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_store_types_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_stores_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_stores_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_stores_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_stores_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/spec_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/spec_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/tags_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/tags_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_approvers_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_approvers_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_approvers_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_approvers_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_roles_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_roles_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_roles_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_roles_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflows_history_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflows_history_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflows_pb2.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflows_pb2_grpc.py +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm.egg-info/SOURCES.txt +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm.egg-info/dependency_links.txt +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm.egg-info/requires.txt +0 -0
- {strongdm-15.2.0 → strongdm-15.4.0}/strongdm.egg-info/top_level.txt +0 -0
|
@@ -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.
|
|
@@ -5096,6 +5304,7 @@ class Resources:
|
|
|
5096
5304
|
`strongdm.models.AmazonES`
|
|
5097
5305
|
`strongdm.models.AmazonESIAM`
|
|
5098
5306
|
`strongdm.models.AmazonMQAMQP091`
|
|
5307
|
+
`strongdm.models.AMQP`
|
|
5099
5308
|
`strongdm.models.Athena`
|
|
5100
5309
|
`strongdm.models.AthenaIAM`
|
|
5101
5310
|
`strongdm.models.AuroraMysql`
|
|
@@ -5110,6 +5319,7 @@ class Resources:
|
|
|
5110
5319
|
`strongdm.models.AzureCertificate`
|
|
5111
5320
|
`strongdm.models.AzureConsole`
|
|
5112
5321
|
`strongdm.models.AzureMysql`
|
|
5322
|
+
`strongdm.models.AzureMysqlManagedIdentity`
|
|
5113
5323
|
`strongdm.models.AzurePostgres`
|
|
5114
5324
|
`strongdm.models.AzurePostgresManagedIdentity`
|
|
5115
5325
|
`strongdm.models.BigQuery`
|
|
@@ -5642,214 +5852,6 @@ class RoleResourcesHistory:
|
|
|
5642
5852
|
return generator(self, req)
|
|
5643
5853
|
|
|
5644
5854
|
|
|
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
5855
|
class RolesHistory:
|
|
5854
5856
|
'''
|
|
5855
5857
|
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.4.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.4.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_approvers_history_pb2_grpc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|