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.
- {strongdm-8.3.0 → strongdm-9.0.0}/PKG-INFO +2 -2
- {strongdm-8.3.0 → strongdm-9.0.0}/setup.py +2 -2
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/client.py +45 -1
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/drivers_pb2.py +212 -216
- strongdm-9.0.0/strongdm/identity_aliases_history_pb2.py +100 -0
- strongdm-9.0.0/strongdm/identity_aliases_history_pb2_grpc.py +84 -0
- strongdm-9.0.0/strongdm/identity_aliases_pb2.py +220 -0
- strongdm-9.0.0/strongdm/identity_aliases_pb2_grpc.py +223 -0
- strongdm-9.0.0/strongdm/identity_sets_history_pb2.py +100 -0
- strongdm-9.0.0/strongdm/identity_sets_history_pb2_grpc.py +84 -0
- strongdm-9.0.0/strongdm/identity_sets_pb2.py +122 -0
- strongdm-9.0.0/strongdm/identity_sets_pb2_grpc.py +139 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/models.py +894 -287
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/plumbing.py +495 -72
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identities_history_pb2.py +3 -3
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identities_pb2.py +3 -3
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identity_groups_history_pb2.py +3 -3
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identity_groups_pb2.py +3 -3
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_store_types_pb2.py +92 -44
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/svc.py +418 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm.egg-info/PKG-INFO +2 -2
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm.egg-info/SOURCES.txt +8 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/LICENSE +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/README.md +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/setup.cfg +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/__init__.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/access_request_events_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/access_request_events_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/access_requests_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/access_requests_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/access_requests_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/access_requests_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_attachments_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_attachments_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_attachments_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_attachments_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_grants_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_grants_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_grants_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_grants_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_permissions_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_permissions_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_resources_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_resources_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_resources_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/account_resources_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/accounts_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/accounts_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/accounts_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/accounts_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/activities_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/activities_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_approvers_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_approvers_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_approvers_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_approvers_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_steps_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_steps_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_steps_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflow_steps_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflows_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflows_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflows_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/approval_workflows_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/constants.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/control_panel_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/control_panel_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/drivers_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/errors.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/nodes_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/nodes_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/nodes_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/nodes_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/options_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/options_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/organization_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/organization_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_group_nodes_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_group_nodes_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_group_peers_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_group_peers_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_group_resources_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_group_resources_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_groups_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/peering_groups_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/queries_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/queries_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identities_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identities_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identity_groups_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/remote_identity_groups_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/replays_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/replays_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/resources_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/resources_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/resources_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/resources_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/role_resources_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/role_resources_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/role_resources_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/role_resources_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/roles_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/roles_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/roles_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/roles_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_store_healths_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_store_healths_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_store_types_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_stores_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_stores_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_stores_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/secret_stores_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/spec_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/spec_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/tags_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/tags_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_approvers_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_approvers_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_approvers_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_approvers_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_assignments_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_assignments_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_assignments_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_assignments_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_roles_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_roles_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_roles_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflow_roles_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflows_history_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflows_history_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflows_pb2.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm/workflows_pb2_grpc.py +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm.egg-info/dependency_links.txt +0 -0
- {strongdm-8.3.0 → strongdm-9.0.0}/strongdm.egg-info/requires.txt +0 -0
- {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:
|
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/
|
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
|
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
|
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
|