strongdm 8.3.0__zip → 9.0.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 (135) hide show
  1. {strongdm-8.3.0 → strongdm-9.0.0}/PKG-INFO +2 -2
  2. {strongdm-8.3.0 → strongdm-9.0.0}/setup.py +2 -2
  3. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/client.py +45 -1
  4. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/drivers_pb2.py +212 -216
  5. strongdm-9.0.0/strongdm/identity_aliases_history_pb2.py +100 -0
  6. strongdm-9.0.0/strongdm/identity_aliases_history_pb2_grpc.py +84 -0
  7. strongdm-9.0.0/strongdm/identity_aliases_pb2.py +220 -0
  8. strongdm-9.0.0/strongdm/identity_aliases_pb2_grpc.py +223 -0
  9. strongdm-9.0.0/strongdm/identity_sets_history_pb2.py +100 -0
  10. strongdm-9.0.0/strongdm/identity_sets_history_pb2_grpc.py +84 -0
  11. strongdm-9.0.0/strongdm/identity_sets_pb2.py +122 -0
  12. strongdm-9.0.0/strongdm/identity_sets_pb2_grpc.py +139 -0
  13. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/models.py +894 -287
  14. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/plumbing.py +495 -72
  15. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identities_history_pb2.py +3 -3
  16. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identities_pb2.py +3 -3
  17. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identity_groups_history_pb2.py +3 -3
  18. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identity_groups_pb2.py +3 -3
  19. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_store_types_pb2.py +92 -44
  20. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/svc.py +418 -0
  21. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm.egg-info/PKG-INFO +2 -2
  22. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm.egg-info/SOURCES.txt +8 -0
  23. {strongdm-8.3.0 → strongdm-9.0.0}/LICENSE +0 -0
  24. {strongdm-8.3.0 → strongdm-9.0.0}/README.md +0 -0
  25. {strongdm-8.3.0 → strongdm-9.0.0}/setup.cfg +0 -0
  26. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/__init__.py +0 -0
  27. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/access_request_events_history_pb2.py +0 -0
  28. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/access_request_events_history_pb2_grpc.py +0 -0
  29. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/access_requests_history_pb2.py +0 -0
  30. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/access_requests_history_pb2_grpc.py +0 -0
  31. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/access_requests_pb2.py +0 -0
  32. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/access_requests_pb2_grpc.py +0 -0
  33. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_attachments_history_pb2.py +0 -0
  34. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_attachments_history_pb2_grpc.py +0 -0
  35. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_attachments_pb2.py +0 -0
  36. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_attachments_pb2_grpc.py +0 -0
  37. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_grants_history_pb2.py +0 -0
  38. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_grants_history_pb2_grpc.py +0 -0
  39. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_grants_pb2.py +0 -0
  40. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_grants_pb2_grpc.py +0 -0
  41. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_permissions_pb2.py +0 -0
  42. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_permissions_pb2_grpc.py +0 -0
  43. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_resources_history_pb2.py +0 -0
  44. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_resources_history_pb2_grpc.py +0 -0
  45. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_resources_pb2.py +0 -0
  46. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_resources_pb2_grpc.py +0 -0
  47. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/accounts_history_pb2.py +0 -0
  48. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/accounts_history_pb2_grpc.py +0 -0
  49. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/accounts_pb2.py +0 -0
  50. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/accounts_pb2_grpc.py +0 -0
  51. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/activities_pb2.py +0 -0
  52. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/activities_pb2_grpc.py +0 -0
  53. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_approvers_history_pb2.py +0 -0
  54. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_approvers_history_pb2_grpc.py +0 -0
  55. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_approvers_pb2.py +0 -0
  56. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_approvers_pb2_grpc.py +0 -0
  57. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_steps_history_pb2.py +0 -0
  58. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_steps_history_pb2_grpc.py +0 -0
  59. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_steps_pb2.py +0 -0
  60. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_steps_pb2_grpc.py +0 -0
  61. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflows_history_pb2.py +0 -0
  62. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflows_history_pb2_grpc.py +0 -0
  63. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflows_pb2.py +0 -0
  64. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflows_pb2_grpc.py +0 -0
  65. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/constants.py +0 -0
  66. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/control_panel_pb2.py +0 -0
  67. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/control_panel_pb2_grpc.py +0 -0
  68. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/drivers_pb2_grpc.py +0 -0
  69. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/errors.py +0 -0
  70. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/nodes_history_pb2.py +0 -0
  71. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/nodes_history_pb2_grpc.py +0 -0
  72. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/nodes_pb2.py +0 -0
  73. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/nodes_pb2_grpc.py +0 -0
  74. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/options_pb2.py +0 -0
  75. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/options_pb2_grpc.py +0 -0
  76. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/organization_history_pb2.py +0 -0
  77. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/organization_history_pb2_grpc.py +0 -0
  78. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_group_nodes_pb2.py +0 -0
  79. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_group_nodes_pb2_grpc.py +0 -0
  80. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_group_peers_pb2.py +0 -0
  81. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_group_peers_pb2_grpc.py +0 -0
  82. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_group_resources_pb2.py +0 -0
  83. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_group_resources_pb2_grpc.py +0 -0
  84. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_groups_pb2.py +0 -0
  85. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_groups_pb2_grpc.py +0 -0
  86. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/queries_pb2.py +0 -0
  87. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/queries_pb2_grpc.py +0 -0
  88. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identities_history_pb2_grpc.py +0 -0
  89. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identities_pb2_grpc.py +0 -0
  90. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identity_groups_history_pb2_grpc.py +0 -0
  91. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identity_groups_pb2_grpc.py +0 -0
  92. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/replays_pb2.py +0 -0
  93. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/replays_pb2_grpc.py +0 -0
  94. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/resources_history_pb2.py +0 -0
  95. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/resources_history_pb2_grpc.py +0 -0
  96. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/resources_pb2.py +0 -0
  97. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/resources_pb2_grpc.py +0 -0
  98. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/role_resources_history_pb2.py +0 -0
  99. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/role_resources_history_pb2_grpc.py +0 -0
  100. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/role_resources_pb2.py +0 -0
  101. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/role_resources_pb2_grpc.py +0 -0
  102. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/roles_history_pb2.py +0 -0
  103. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/roles_history_pb2_grpc.py +0 -0
  104. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/roles_pb2.py +0 -0
  105. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/roles_pb2_grpc.py +0 -0
  106. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_store_healths_pb2.py +0 -0
  107. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_store_healths_pb2_grpc.py +0 -0
  108. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_store_types_pb2_grpc.py +0 -0
  109. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_stores_history_pb2.py +0 -0
  110. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_stores_history_pb2_grpc.py +0 -0
  111. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_stores_pb2.py +0 -0
  112. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_stores_pb2_grpc.py +0 -0
  113. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/spec_pb2.py +0 -0
  114. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/spec_pb2_grpc.py +0 -0
  115. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/tags_pb2.py +0 -0
  116. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/tags_pb2_grpc.py +0 -0
  117. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_approvers_history_pb2.py +0 -0
  118. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_approvers_history_pb2_grpc.py +0 -0
  119. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_approvers_pb2.py +0 -0
  120. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_approvers_pb2_grpc.py +0 -0
  121. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_assignments_history_pb2.py +0 -0
  122. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_assignments_history_pb2_grpc.py +0 -0
  123. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_assignments_pb2.py +0 -0
  124. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_assignments_pb2_grpc.py +0 -0
  125. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_roles_history_pb2.py +0 -0
  126. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_roles_history_pb2_grpc.py +0 -0
  127. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_roles_pb2.py +0 -0
  128. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_roles_pb2_grpc.py +0 -0
  129. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflows_history_pb2.py +0 -0
  130. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflows_history_pb2_grpc.py +0 -0
  131. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflows_pb2.py +0 -0
  132. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflows_pb2_grpc.py +0 -0
  133. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm.egg-info/dependency_links.txt +0 -0
  134. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm.egg-info/requires.txt +0 -0
  135. {strongdm-8.3.0 → strongdm-9.0.0}/strongdm.egg-info/top_level.txt +0 -0
@@ -66,6 +66,14 @@ from .control_panel_pb2 import *
66
66
  from .control_panel_pb2_grpc import *
67
67
  from .drivers_pb2 import *
68
68
  from .drivers_pb2_grpc import *
69
+ from .identity_aliases_pb2 import *
70
+ from .identity_aliases_pb2_grpc import *
71
+ from .identity_aliases_history_pb2 import *
72
+ from .identity_aliases_history_pb2_grpc import *
73
+ from .identity_sets_pb2 import *
74
+ from .identity_sets_pb2_grpc import *
75
+ from .identity_sets_history_pb2 import *
76
+ from .identity_sets_history_pb2_grpc import *
69
77
  from .nodes_pb2 import *
70
78
  from .nodes_pb2_grpc import *
71
79
  from .nodes_history_pb2 import *
@@ -2055,6 +2063,414 @@ class ControlPanel:
2055
2063
  return resp
2056
2064
 
2057
2065
 
2066
+ class IdentityAliases:
2067
+ '''
2068
+ IdentityAliases assign an alias to an account within an IdentitySet.
2069
+ The alias is used as the username when connecting to a identity supported resource.
2070
+ See `strongdm.models.IdentityAlias`.
2071
+ '''
2072
+ def __init__(self, channel, client):
2073
+ self.parent = client
2074
+ self.stub = IdentityAliasesStub(channel)
2075
+
2076
+ def create(self, identity_alias, timeout=None):
2077
+ '''
2078
+ Create registers a new IdentityAlias.
2079
+ '''
2080
+ req = IdentityAliasCreateRequest()
2081
+
2082
+ if identity_alias is not None:
2083
+ req.identity_alias.CopyFrom(
2084
+ plumbing.convert_identity_alias_to_plumbing(identity_alias))
2085
+ tries = 0
2086
+ plumbing_response = None
2087
+ while True:
2088
+ try:
2089
+ plumbing_response = self.stub.Create(
2090
+ req,
2091
+ metadata=self.parent.get_metadata('IdentityAliases.Create',
2092
+ req),
2093
+ timeout=timeout)
2094
+ except Exception as e:
2095
+ if self.parent.shouldRetry(tries, e):
2096
+ tries += 1
2097
+ self.parent.jitterSleep(tries)
2098
+ continue
2099
+ raise plumbing.convert_error_to_porcelain(e) from e
2100
+ break
2101
+
2102
+ resp = models.IdentityAliasCreateResponse()
2103
+ resp.identity_alias = plumbing.convert_identity_alias_to_porcelain(
2104
+ plumbing_response.identity_alias)
2105
+ resp.meta = plumbing.convert_create_response_metadata_to_porcelain(
2106
+ plumbing_response.meta)
2107
+ resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
2108
+ plumbing_response.rate_limit)
2109
+ return resp
2110
+
2111
+ def get(self, id, timeout=None):
2112
+ '''
2113
+ Get reads one IdentityAlias by ID.
2114
+ '''
2115
+ req = IdentityAliasGetRequest()
2116
+ if self.parent.snapshot_datetime is not None:
2117
+ req.meta.CopyFrom(GetRequestMetadata())
2118
+ req.meta.snapshot_at.FromDatetime(self.parent.snapshot_datetime)
2119
+
2120
+ req.id = (id)
2121
+ tries = 0
2122
+ plumbing_response = None
2123
+ while True:
2124
+ try:
2125
+ plumbing_response = self.stub.Get(
2126
+ req,
2127
+ metadata=self.parent.get_metadata('IdentityAliases.Get',
2128
+ req),
2129
+ timeout=timeout)
2130
+ except Exception as e:
2131
+ if self.parent.shouldRetry(tries, e):
2132
+ tries += 1
2133
+ self.parent.jitterSleep(tries)
2134
+ continue
2135
+ raise plumbing.convert_error_to_porcelain(e) from e
2136
+ break
2137
+
2138
+ resp = models.IdentityAliasGetResponse()
2139
+ resp.identity_alias = plumbing.convert_identity_alias_to_porcelain(
2140
+ plumbing_response.identity_alias)
2141
+ resp.meta = plumbing.convert_get_response_metadata_to_porcelain(
2142
+ plumbing_response.meta)
2143
+ resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
2144
+ plumbing_response.rate_limit)
2145
+ return resp
2146
+
2147
+ def update(self, identity_alias, timeout=None):
2148
+ '''
2149
+ Update replaces all the fields of a IdentityAlias by ID.
2150
+ '''
2151
+ req = IdentityAliasUpdateRequest()
2152
+
2153
+ if identity_alias is not None:
2154
+ req.identity_alias.CopyFrom(
2155
+ plumbing.convert_identity_alias_to_plumbing(identity_alias))
2156
+ tries = 0
2157
+ plumbing_response = None
2158
+ while True:
2159
+ try:
2160
+ plumbing_response = self.stub.Update(
2161
+ req,
2162
+ metadata=self.parent.get_metadata('IdentityAliases.Update',
2163
+ req),
2164
+ timeout=timeout)
2165
+ except Exception as e:
2166
+ if self.parent.shouldRetry(tries, e):
2167
+ tries += 1
2168
+ self.parent.jitterSleep(tries)
2169
+ continue
2170
+ raise plumbing.convert_error_to_porcelain(e) from e
2171
+ break
2172
+
2173
+ resp = models.IdentityAliasUpdateResponse()
2174
+ resp.identity_alias = plumbing.convert_identity_alias_to_porcelain(
2175
+ plumbing_response.identity_alias)
2176
+ resp.meta = plumbing.convert_update_response_metadata_to_porcelain(
2177
+ plumbing_response.meta)
2178
+ resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
2179
+ plumbing_response.rate_limit)
2180
+ return resp
2181
+
2182
+ def delete(self, id, timeout=None):
2183
+ '''
2184
+ Delete removes a IdentityAlias by ID.
2185
+ '''
2186
+ req = IdentityAliasDeleteRequest()
2187
+
2188
+ req.id = (id)
2189
+ tries = 0
2190
+ plumbing_response = None
2191
+ while True:
2192
+ try:
2193
+ plumbing_response = self.stub.Delete(
2194
+ req,
2195
+ metadata=self.parent.get_metadata('IdentityAliases.Delete',
2196
+ req),
2197
+ timeout=timeout)
2198
+ except Exception as e:
2199
+ if self.parent.shouldRetry(tries, e):
2200
+ tries += 1
2201
+ self.parent.jitterSleep(tries)
2202
+ continue
2203
+ raise plumbing.convert_error_to_porcelain(e) from e
2204
+ break
2205
+
2206
+ resp = models.IdentityAliasDeleteResponse()
2207
+ resp.meta = plumbing.convert_delete_response_metadata_to_porcelain(
2208
+ plumbing_response.meta)
2209
+ resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
2210
+ plumbing_response.rate_limit)
2211
+ return resp
2212
+
2213
+ def list(self, filter, *args, timeout=None):
2214
+ '''
2215
+ List gets a list of IdentityAliases matching a given set of criteria.
2216
+ '''
2217
+ req = IdentityAliasListRequest()
2218
+ req.meta.CopyFrom(ListRequestMetadata())
2219
+ if self.parent.page_limit > 0:
2220
+ req.meta.limit = self.parent.page_limit
2221
+ if self.parent.snapshot_datetime is not None:
2222
+ req.meta.snapshot_at.FromDatetime(self.parent.snapshot_datetime)
2223
+
2224
+ req.filter = plumbing.quote_filter_args(filter, *args)
2225
+
2226
+ def generator(svc, req):
2227
+ tries = 0
2228
+ while True:
2229
+ try:
2230
+ plumbing_response = svc.stub.List(
2231
+ req,
2232
+ metadata=svc.parent.get_metadata(
2233
+ 'IdentityAliases.List', req),
2234
+ timeout=timeout)
2235
+ except Exception as e:
2236
+ if self.parent.shouldRetry(tries, e):
2237
+ tries += 1
2238
+ self.parent.jitterSleep(tries)
2239
+ continue
2240
+ raise plumbing.convert_error_to_porcelain(e) from e
2241
+ tries = 0
2242
+ for plumbing_item in plumbing_response.identity_aliases:
2243
+ yield plumbing.convert_identity_alias_to_porcelain(
2244
+ plumbing_item)
2245
+ if plumbing_response.meta.next_cursor == '':
2246
+ break
2247
+ req.meta.cursor = plumbing_response.meta.next_cursor
2248
+
2249
+ return generator(self, req)
2250
+
2251
+
2252
+ class SnapshotIdentityAliases:
2253
+ '''
2254
+ SnapshotIdentityAliases exposes the read only methods of the IdentityAliases
2255
+ service for historical queries.
2256
+ '''
2257
+ def __init__(self, identity_aliases):
2258
+ self.identity_aliases = identity_aliases
2259
+
2260
+ def get(self, id, timeout=None):
2261
+ '''
2262
+ Get reads one IdentityAlias by ID.
2263
+ '''
2264
+ return self.identity_aliases.get(id, timeout=timeout)
2265
+
2266
+ def list(self, filter, *args, timeout=None):
2267
+ '''
2268
+ List gets a list of IdentityAliases matching a given set of criteria.
2269
+ '''
2270
+ return self.identity_aliases.list(filter, *args, timeout=timeout)
2271
+
2272
+
2273
+ class IdentityAliasesHistory:
2274
+ '''
2275
+ IdentityAliasesHistory records all changes to the state of a IdentityAlias.
2276
+ See `strongdm.models.IdentityAliasHistory`.
2277
+ '''
2278
+ def __init__(self, channel, client):
2279
+ self.parent = client
2280
+ self.stub = IdentityAliasesHistoryStub(channel)
2281
+
2282
+ def list(self, filter, *args, timeout=None):
2283
+ '''
2284
+ List gets a list of IdentityAliasHistory records matching a given set of criteria.
2285
+ '''
2286
+ req = IdentityAliasHistoryListRequest()
2287
+ req.meta.CopyFrom(ListRequestMetadata())
2288
+ if self.parent.page_limit > 0:
2289
+ req.meta.limit = self.parent.page_limit
2290
+ if self.parent.snapshot_datetime is not None:
2291
+ req.meta.snapshot_at.FromDatetime(self.parent.snapshot_datetime)
2292
+
2293
+ req.filter = plumbing.quote_filter_args(filter, *args)
2294
+
2295
+ def generator(svc, req):
2296
+ tries = 0
2297
+ while True:
2298
+ try:
2299
+ plumbing_response = svc.stub.List(
2300
+ req,
2301
+ metadata=svc.parent.get_metadata(
2302
+ 'IdentityAliasesHistory.List', req),
2303
+ timeout=timeout)
2304
+ except Exception as e:
2305
+ if self.parent.shouldRetry(tries, e):
2306
+ tries += 1
2307
+ self.parent.jitterSleep(tries)
2308
+ continue
2309
+ raise plumbing.convert_error_to_porcelain(e) from e
2310
+ tries = 0
2311
+ for plumbing_item in plumbing_response.history:
2312
+ yield plumbing.convert_identity_alias_history_to_porcelain(
2313
+ plumbing_item)
2314
+ if plumbing_response.meta.next_cursor == '':
2315
+ break
2316
+ req.meta.cursor = plumbing_response.meta.next_cursor
2317
+
2318
+ return generator(self, req)
2319
+
2320
+
2321
+ class IdentitySets:
2322
+ '''
2323
+ A IdentitySet is a named grouping of Identity Aliases for Accounts.
2324
+ An Account's relationship to a IdentitySet is defined via IdentityAlias objects.
2325
+ See `strongdm.models.IdentitySet`.
2326
+ '''
2327
+ def __init__(self, channel, client):
2328
+ self.parent = client
2329
+ self.stub = IdentitySetsStub(channel)
2330
+
2331
+ def get(self, id, timeout=None):
2332
+ '''
2333
+ Get reads one IdentitySet by ID.
2334
+ '''
2335
+ req = IdentitySetGetRequest()
2336
+ if self.parent.snapshot_datetime is not None:
2337
+ req.meta.CopyFrom(GetRequestMetadata())
2338
+ req.meta.snapshot_at.FromDatetime(self.parent.snapshot_datetime)
2339
+
2340
+ req.id = (id)
2341
+ tries = 0
2342
+ plumbing_response = None
2343
+ while True:
2344
+ try:
2345
+ plumbing_response = self.stub.Get(
2346
+ req,
2347
+ metadata=self.parent.get_metadata('IdentitySets.Get', req),
2348
+ timeout=timeout)
2349
+ except Exception as e:
2350
+ if self.parent.shouldRetry(tries, e):
2351
+ tries += 1
2352
+ self.parent.jitterSleep(tries)
2353
+ continue
2354
+ raise plumbing.convert_error_to_porcelain(e) from e
2355
+ break
2356
+
2357
+ resp = models.IdentitySetGetResponse()
2358
+ resp.identity_set = plumbing.convert_identity_set_to_porcelain(
2359
+ plumbing_response.identity_set)
2360
+ resp.meta = plumbing.convert_get_response_metadata_to_porcelain(
2361
+ plumbing_response.meta)
2362
+ resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
2363
+ plumbing_response.rate_limit)
2364
+ return resp
2365
+
2366
+ def list(self, filter, *args, timeout=None):
2367
+ '''
2368
+ List gets a list of IdentitySets matching a given set of criteria.
2369
+ '''
2370
+ req = IdentitySetListRequest()
2371
+ req.meta.CopyFrom(ListRequestMetadata())
2372
+ if self.parent.page_limit > 0:
2373
+ req.meta.limit = self.parent.page_limit
2374
+ if self.parent.snapshot_datetime is not None:
2375
+ req.meta.snapshot_at.FromDatetime(self.parent.snapshot_datetime)
2376
+
2377
+ req.filter = plumbing.quote_filter_args(filter, *args)
2378
+
2379
+ def generator(svc, req):
2380
+ tries = 0
2381
+ while True:
2382
+ try:
2383
+ plumbing_response = svc.stub.List(
2384
+ req,
2385
+ metadata=svc.parent.get_metadata(
2386
+ 'IdentitySets.List', req),
2387
+ timeout=timeout)
2388
+ except Exception as e:
2389
+ if self.parent.shouldRetry(tries, e):
2390
+ tries += 1
2391
+ self.parent.jitterSleep(tries)
2392
+ continue
2393
+ raise plumbing.convert_error_to_porcelain(e) from e
2394
+ tries = 0
2395
+ for plumbing_item in plumbing_response.identity_sets:
2396
+ yield plumbing.convert_identity_set_to_porcelain(
2397
+ plumbing_item)
2398
+ if plumbing_response.meta.next_cursor == '':
2399
+ break
2400
+ req.meta.cursor = plumbing_response.meta.next_cursor
2401
+
2402
+ return generator(self, req)
2403
+
2404
+
2405
+ class SnapshotIdentitySets:
2406
+ '''
2407
+ SnapshotIdentitySets exposes the read only methods of the IdentitySets
2408
+ service for historical queries.
2409
+ '''
2410
+ def __init__(self, identity_sets):
2411
+ self.identity_sets = identity_sets
2412
+
2413
+ def get(self, id, timeout=None):
2414
+ '''
2415
+ Get reads one IdentitySet by ID.
2416
+ '''
2417
+ return self.identity_sets.get(id, timeout=timeout)
2418
+
2419
+ def list(self, filter, *args, timeout=None):
2420
+ '''
2421
+ List gets a list of IdentitySets matching a given set of criteria.
2422
+ '''
2423
+ return self.identity_sets.list(filter, *args, timeout=timeout)
2424
+
2425
+
2426
+ class IdentitySetsHistory:
2427
+ '''
2428
+ IdentitySetsHistory records all changes to the state of a IdentitySet.
2429
+ See `strongdm.models.IdentitySetHistory`.
2430
+ '''
2431
+ def __init__(self, channel, client):
2432
+ self.parent = client
2433
+ self.stub = IdentitySetsHistoryStub(channel)
2434
+
2435
+ def list(self, filter, *args, timeout=None):
2436
+ '''
2437
+ List gets a list of IdentitySetHistory records matching a given set of criteria.
2438
+ '''
2439
+ req = IdentitySetHistoryListRequest()
2440
+ req.meta.CopyFrom(ListRequestMetadata())
2441
+ if self.parent.page_limit > 0:
2442
+ req.meta.limit = self.parent.page_limit
2443
+ if self.parent.snapshot_datetime is not None:
2444
+ req.meta.snapshot_at.FromDatetime(self.parent.snapshot_datetime)
2445
+
2446
+ req.filter = plumbing.quote_filter_args(filter, *args)
2447
+
2448
+ def generator(svc, req):
2449
+ tries = 0
2450
+ while True:
2451
+ try:
2452
+ plumbing_response = svc.stub.List(
2453
+ req,
2454
+ metadata=svc.parent.get_metadata(
2455
+ 'IdentitySetsHistory.List', req),
2456
+ timeout=timeout)
2457
+ except Exception as e:
2458
+ if self.parent.shouldRetry(tries, e):
2459
+ tries += 1
2460
+ self.parent.jitterSleep(tries)
2461
+ continue
2462
+ raise plumbing.convert_error_to_porcelain(e) from e
2463
+ tries = 0
2464
+ for plumbing_item in plumbing_response.history:
2465
+ yield plumbing.convert_identity_set_history_to_porcelain(
2466
+ plumbing_item)
2467
+ if plumbing_response.meta.next_cursor == '':
2468
+ break
2469
+ req.meta.cursor = plumbing_response.meta.next_cursor
2470
+
2471
+ return generator(self, req)
2472
+
2473
+
2058
2474
  class Nodes:
2059
2475
  '''
2060
2476
  Nodes make up the strongDM network, and allow your users to connect securely to your resources. There are two types of nodes:
@@ -4317,6 +4733,8 @@ class SecretStores:
4317
4733
  `strongdm.models.VaultAppRoleStore`
4318
4734
  `strongdm.models.VaultAppRoleCertSSHStore`
4319
4735
  `strongdm.models.VaultAppRoleCertX509Store`
4736
+ `strongdm.models.VaultAWSEC2Store`
4737
+ `strongdm.models.VaultAWSIAMStore`
4320
4738
  `strongdm.models.VaultTLSStore`
4321
4739
  `strongdm.models.VaultTLSCertSSHStore`
4322
4740
  `strongdm.models.VaultTLSCertX509Store`
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: strongdm
3
- Version: 8.3.0
3
+ Version: 9.0.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/v8.3.0.tar.gz
9
+ Download-URL: https://github.com/strongdm/strongdm-sdk-python/archive/v9.0.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
@@ -47,6 +47,14 @@ strongdm/control_panel_pb2_grpc.py
47
47
  strongdm/drivers_pb2.py
48
48
  strongdm/drivers_pb2_grpc.py
49
49
  strongdm/errors.py
50
+ strongdm/identity_aliases_history_pb2.py
51
+ strongdm/identity_aliases_history_pb2_grpc.py
52
+ strongdm/identity_aliases_pb2.py
53
+ strongdm/identity_aliases_pb2_grpc.py
54
+ strongdm/identity_sets_history_pb2.py
55
+ strongdm/identity_sets_history_pb2_grpc.py
56
+ strongdm/identity_sets_pb2.py
57
+ strongdm/identity_sets_pb2_grpc.py
50
58
  strongdm/models.py
51
59
  strongdm/nodes_history_pb2.py
52
60
  strongdm/nodes_history_pb2_grpc.py
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes