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.
Files changed (147) hide show
  1. {strongdm-15.2.0 → strongdm-15.4.0}/PKG-INFO +2 -2
  2. {strongdm-15.2.0 → strongdm-15.4.0}/setup.py +2 -2
  3. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_approvers_pb2.py +6 -4
  4. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflows_pb2.py +6 -4
  5. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/client.py +18 -18
  6. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/drivers_pb2.py +313 -223
  7. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/models.py +357 -0
  8. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/plumbing.py +125 -1
  9. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/svc.py +212 -210
  10. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm.egg-info/PKG-INFO +2 -2
  11. {strongdm-15.2.0 → strongdm-15.4.0}/LICENSE +0 -0
  12. {strongdm-15.2.0 → strongdm-15.4.0}/README.md +0 -0
  13. {strongdm-15.2.0 → strongdm-15.4.0}/setup.cfg +0 -0
  14. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/__init__.py +0 -0
  15. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/access_request_events_history_pb2.py +0 -0
  16. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/access_request_events_history_pb2_grpc.py +0 -0
  17. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/access_requests_history_pb2.py +0 -0
  18. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/access_requests_history_pb2_grpc.py +0 -0
  19. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/access_requests_pb2.py +0 -0
  20. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/access_requests_pb2_grpc.py +0 -0
  21. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_attachments_history_pb2.py +0 -0
  22. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_attachments_history_pb2_grpc.py +0 -0
  23. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_attachments_pb2.py +0 -0
  24. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_attachments_pb2_grpc.py +0 -0
  25. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_grants_history_pb2.py +0 -0
  26. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_grants_history_pb2_grpc.py +0 -0
  27. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_grants_pb2.py +0 -0
  28. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_grants_pb2_grpc.py +0 -0
  29. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_permissions_pb2.py +0 -0
  30. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_permissions_pb2_grpc.py +0 -0
  31. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_resources_history_pb2.py +0 -0
  32. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_resources_history_pb2_grpc.py +0 -0
  33. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_resources_pb2.py +0 -0
  34. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/account_resources_pb2_grpc.py +0 -0
  35. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/accounts_history_pb2.py +0 -0
  36. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/accounts_history_pb2_grpc.py +0 -0
  37. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/accounts_pb2.py +0 -0
  38. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/accounts_pb2_grpc.py +0 -0
  39. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/activities_pb2.py +0 -0
  40. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/activities_pb2_grpc.py +0 -0
  41. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_approvers_history_pb2.py +0 -0
  42. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_approvers_history_pb2_grpc.py +0 -0
  43. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_approvers_pb2_grpc.py +0 -0
  44. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_steps_history_pb2.py +0 -0
  45. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_steps_history_pb2_grpc.py +0 -0
  46. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_steps_pb2.py +0 -0
  47. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflow_steps_pb2_grpc.py +0 -0
  48. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflows_history_pb2.py +0 -0
  49. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflows_history_pb2_grpc.py +0 -0
  50. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/approval_workflows_pb2_grpc.py +0 -0
  51. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/constants.py +0 -0
  52. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/control_panel_pb2.py +0 -0
  53. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/control_panel_pb2_grpc.py +0 -0
  54. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/drivers_pb2_grpc.py +0 -0
  55. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/errors.py +0 -0
  56. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/health_checks_pb2.py +0 -0
  57. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/health_checks_pb2_grpc.py +0 -0
  58. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_aliases_history_pb2.py +0 -0
  59. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_aliases_history_pb2_grpc.py +0 -0
  60. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_aliases_pb2.py +0 -0
  61. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_aliases_pb2_grpc.py +0 -0
  62. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_sets_history_pb2.py +0 -0
  63. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_sets_history_pb2_grpc.py +0 -0
  64. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_sets_pb2.py +0 -0
  65. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/identity_sets_pb2_grpc.py +0 -0
  66. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/managed_secrets_pb2.py +0 -0
  67. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/managed_secrets_pb2_grpc.py +0 -0
  68. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/nodes_history_pb2.py +0 -0
  69. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/nodes_history_pb2_grpc.py +0 -0
  70. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/nodes_pb2.py +0 -0
  71. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/nodes_pb2_grpc.py +0 -0
  72. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/options_pb2.py +0 -0
  73. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/options_pb2_grpc.py +0 -0
  74. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/organization_history_pb2.py +0 -0
  75. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/organization_history_pb2_grpc.py +0 -0
  76. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_group_nodes_pb2.py +0 -0
  77. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_group_nodes_pb2_grpc.py +0 -0
  78. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_group_peers_pb2.py +0 -0
  79. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_group_peers_pb2_grpc.py +0 -0
  80. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_group_resources_pb2.py +0 -0
  81. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_group_resources_pb2_grpc.py +0 -0
  82. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_groups_pb2.py +0 -0
  83. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/peering_groups_pb2_grpc.py +0 -0
  84. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/policies_history_pb2.py +0 -0
  85. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/policies_history_pb2_grpc.py +0 -0
  86. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/policies_pb2.py +0 -0
  87. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/policies_pb2_grpc.py +0 -0
  88. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/proxy_cluster_keys_pb2.py +0 -0
  89. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/proxy_cluster_keys_pb2_grpc.py +0 -0
  90. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/queries_pb2.py +0 -0
  91. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/queries_pb2_grpc.py +0 -0
  92. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identities_history_pb2.py +0 -0
  93. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identities_history_pb2_grpc.py +0 -0
  94. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identities_pb2.py +0 -0
  95. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identities_pb2_grpc.py +0 -0
  96. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identity_groups_history_pb2.py +0 -0
  97. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identity_groups_history_pb2_grpc.py +0 -0
  98. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identity_groups_pb2.py +0 -0
  99. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/remote_identity_groups_pb2_grpc.py +0 -0
  100. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/replays_pb2.py +0 -0
  101. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/replays_pb2_grpc.py +0 -0
  102. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/resources_history_pb2.py +0 -0
  103. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/resources_history_pb2_grpc.py +0 -0
  104. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/resources_pb2.py +0 -0
  105. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/resources_pb2_grpc.py +0 -0
  106. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/role_resources_history_pb2.py +0 -0
  107. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/role_resources_history_pb2_grpc.py +0 -0
  108. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/role_resources_pb2.py +0 -0
  109. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/role_resources_pb2_grpc.py +0 -0
  110. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/roles_history_pb2.py +0 -0
  111. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/roles_history_pb2_grpc.py +0 -0
  112. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/roles_pb2.py +0 -0
  113. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/roles_pb2_grpc.py +0 -0
  114. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_engine_policy_pb2.py +0 -0
  115. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_engine_policy_pb2_grpc.py +0 -0
  116. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_engine_types_pb2.py +0 -0
  117. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_engine_types_pb2_grpc.py +0 -0
  118. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_engines_pb2.py +0 -0
  119. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_engines_pb2_grpc.py +0 -0
  120. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_store_healths_pb2.py +0 -0
  121. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_store_healths_pb2_grpc.py +0 -0
  122. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_store_types_pb2.py +0 -0
  123. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_store_types_pb2_grpc.py +0 -0
  124. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_stores_history_pb2.py +0 -0
  125. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_stores_history_pb2_grpc.py +0 -0
  126. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_stores_pb2.py +0 -0
  127. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/secret_stores_pb2_grpc.py +0 -0
  128. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/spec_pb2.py +0 -0
  129. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/spec_pb2_grpc.py +0 -0
  130. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/tags_pb2.py +0 -0
  131. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/tags_pb2_grpc.py +0 -0
  132. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_approvers_history_pb2.py +0 -0
  133. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_approvers_history_pb2_grpc.py +0 -0
  134. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_approvers_pb2.py +0 -0
  135. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_approvers_pb2_grpc.py +0 -0
  136. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_roles_history_pb2.py +0 -0
  137. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_roles_history_pb2_grpc.py +0 -0
  138. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_roles_pb2.py +0 -0
  139. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflow_roles_pb2_grpc.py +0 -0
  140. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflows_history_pb2.py +0 -0
  141. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflows_history_pb2_grpc.py +0 -0
  142. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflows_pb2.py +0 -0
  143. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm/workflows_pb2_grpc.py +0 -0
  144. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm.egg-info/SOURCES.txt +0 -0
  145. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm.egg-info/dependency_links.txt +0 -0
  146. {strongdm-15.2.0 → strongdm-15.4.0}/strongdm.egg-info/requires.txt +0 -0
  147. {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.2.0
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.2.0.tar.gz
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