strongdm 11.10.1__zip → 11.11.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 (143) hide show
  1. {strongdm-11.10.1 → strongdm-11.11.0}/PKG-INFO +2 -2
  2. {strongdm-11.10.1 → strongdm-11.11.0}/setup.py +2 -2
  3. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/client.py +20 -1
  4. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/models.py +304 -0
  5. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/nodes_pb2.py +18 -18
  6. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/plumbing.py +203 -0
  7. strongdm-11.11.0/strongdm/proxy_cluster_keys_pb2.py +191 -0
  8. strongdm-11.11.0/strongdm/proxy_cluster_keys_pb2_grpc.py +192 -0
  9. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/svc.py +178 -0
  10. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm.egg-info/PKG-INFO +2 -2
  11. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm.egg-info/SOURCES.txt +2 -0
  12. {strongdm-11.10.1 → strongdm-11.11.0}/LICENSE +0 -0
  13. {strongdm-11.10.1 → strongdm-11.11.0}/README.md +0 -0
  14. {strongdm-11.10.1 → strongdm-11.11.0}/setup.cfg +0 -0
  15. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/__init__.py +0 -0
  16. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/access_request_events_history_pb2.py +0 -0
  17. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/access_request_events_history_pb2_grpc.py +0 -0
  18. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/access_requests_history_pb2.py +0 -0
  19. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/access_requests_history_pb2_grpc.py +0 -0
  20. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/access_requests_pb2.py +0 -0
  21. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/access_requests_pb2_grpc.py +0 -0
  22. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/account_attachments_history_pb2.py +0 -0
  23. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/account_attachments_history_pb2_grpc.py +0 -0
  24. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/account_attachments_pb2.py +0 -0
  25. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/account_attachments_pb2_grpc.py +0 -0
  26. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/account_grants_history_pb2.py +0 -0
  27. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/account_grants_history_pb2_grpc.py +0 -0
  28. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/account_grants_pb2.py +0 -0
  29. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/account_grants_pb2_grpc.py +0 -0
  30. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/account_permissions_pb2.py +0 -0
  31. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/account_permissions_pb2_grpc.py +0 -0
  32. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/account_resources_history_pb2.py +0 -0
  33. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/account_resources_history_pb2_grpc.py +0 -0
  34. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/account_resources_pb2.py +0 -0
  35. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/account_resources_pb2_grpc.py +0 -0
  36. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/accounts_history_pb2.py +0 -0
  37. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/accounts_history_pb2_grpc.py +0 -0
  38. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/accounts_pb2.py +0 -0
  39. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/accounts_pb2_grpc.py +0 -0
  40. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/activities_pb2.py +0 -0
  41. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/activities_pb2_grpc.py +0 -0
  42. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/approval_workflow_approvers_history_pb2.py +0 -0
  43. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/approval_workflow_approvers_history_pb2_grpc.py +0 -0
  44. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/approval_workflow_approvers_pb2.py +0 -0
  45. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/approval_workflow_approvers_pb2_grpc.py +0 -0
  46. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/approval_workflow_steps_history_pb2.py +0 -0
  47. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/approval_workflow_steps_history_pb2_grpc.py +0 -0
  48. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/approval_workflow_steps_pb2.py +0 -0
  49. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/approval_workflow_steps_pb2_grpc.py +0 -0
  50. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/approval_workflows_history_pb2.py +0 -0
  51. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/approval_workflows_history_pb2_grpc.py +0 -0
  52. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/approval_workflows_pb2.py +0 -0
  53. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/approval_workflows_pb2_grpc.py +0 -0
  54. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/constants.py +0 -0
  55. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/control_panel_pb2.py +0 -0
  56. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/control_panel_pb2_grpc.py +0 -0
  57. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/drivers_pb2.py +0 -0
  58. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/drivers_pb2_grpc.py +0 -0
  59. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/errors.py +0 -0
  60. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/identity_aliases_history_pb2.py +0 -0
  61. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/identity_aliases_history_pb2_grpc.py +0 -0
  62. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/identity_aliases_pb2.py +0 -0
  63. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/identity_aliases_pb2_grpc.py +0 -0
  64. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/identity_sets_history_pb2.py +0 -0
  65. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/identity_sets_history_pb2_grpc.py +0 -0
  66. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/identity_sets_pb2.py +0 -0
  67. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/identity_sets_pb2_grpc.py +0 -0
  68. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/nodes_history_pb2.py +0 -0
  69. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/nodes_history_pb2_grpc.py +0 -0
  70. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/nodes_pb2_grpc.py +0 -0
  71. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/options_pb2.py +0 -0
  72. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/options_pb2_grpc.py +0 -0
  73. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/organization_history_pb2.py +0 -0
  74. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/organization_history_pb2_grpc.py +0 -0
  75. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/peering_group_nodes_pb2.py +0 -0
  76. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/peering_group_nodes_pb2_grpc.py +0 -0
  77. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/peering_group_peers_pb2.py +0 -0
  78. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/peering_group_peers_pb2_grpc.py +0 -0
  79. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/peering_group_resources_pb2.py +0 -0
  80. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/peering_group_resources_pb2_grpc.py +0 -0
  81. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/peering_groups_pb2.py +0 -0
  82. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/peering_groups_pb2_grpc.py +0 -0
  83. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/policies_history_pb2.py +0 -0
  84. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/policies_history_pb2_grpc.py +0 -0
  85. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/policies_pb2.py +0 -0
  86. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/policies_pb2_grpc.py +0 -0
  87. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/queries_pb2.py +0 -0
  88. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/queries_pb2_grpc.py +0 -0
  89. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/remote_identities_history_pb2.py +0 -0
  90. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/remote_identities_history_pb2_grpc.py +0 -0
  91. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/remote_identities_pb2.py +0 -0
  92. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/remote_identities_pb2_grpc.py +0 -0
  93. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/remote_identity_groups_history_pb2.py +0 -0
  94. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/remote_identity_groups_history_pb2_grpc.py +0 -0
  95. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/remote_identity_groups_pb2.py +0 -0
  96. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/remote_identity_groups_pb2_grpc.py +0 -0
  97. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/replays_pb2.py +0 -0
  98. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/replays_pb2_grpc.py +0 -0
  99. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/resources_history_pb2.py +0 -0
  100. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/resources_history_pb2_grpc.py +0 -0
  101. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/resources_pb2.py +0 -0
  102. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/resources_pb2_grpc.py +0 -0
  103. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/role_resources_history_pb2.py +0 -0
  104. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/role_resources_history_pb2_grpc.py +0 -0
  105. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/role_resources_pb2.py +0 -0
  106. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/role_resources_pb2_grpc.py +0 -0
  107. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/roles_history_pb2.py +0 -0
  108. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/roles_history_pb2_grpc.py +0 -0
  109. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/roles_pb2.py +0 -0
  110. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/roles_pb2_grpc.py +0 -0
  111. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/secret_engine_policy_pb2_grpc.py +0 -0
  112. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/secret_engine_types_pb2_grpc.py +0 -0
  113. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/secret_store_healths_pb2.py +0 -0
  114. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/secret_store_healths_pb2_grpc.py +0 -0
  115. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/secret_store_types_pb2.py +0 -0
  116. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/secret_store_types_pb2_grpc.py +0 -0
  117. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/secret_stores_history_pb2.py +0 -0
  118. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/secret_stores_history_pb2_grpc.py +0 -0
  119. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/secret_stores_pb2.py +0 -0
  120. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/secret_stores_pb2_grpc.py +0 -0
  121. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/spec_pb2.py +0 -0
  122. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/spec_pb2_grpc.py +0 -0
  123. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/tags_pb2.py +0 -0
  124. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/tags_pb2_grpc.py +0 -0
  125. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflow_approvers_history_pb2.py +0 -0
  126. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflow_approvers_history_pb2_grpc.py +0 -0
  127. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflow_approvers_pb2.py +0 -0
  128. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflow_approvers_pb2_grpc.py +0 -0
  129. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflow_assignments_history_pb2.py +0 -0
  130. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflow_assignments_history_pb2_grpc.py +0 -0
  131. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflow_assignments_pb2.py +0 -0
  132. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflow_assignments_pb2_grpc.py +0 -0
  133. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflow_roles_history_pb2.py +0 -0
  134. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflow_roles_history_pb2_grpc.py +0 -0
  135. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflow_roles_pb2.py +0 -0
  136. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflow_roles_pb2_grpc.py +0 -0
  137. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflows_history_pb2.py +0 -0
  138. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflows_history_pb2_grpc.py +0 -0
  139. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflows_pb2.py +0 -0
  140. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm/workflows_pb2_grpc.py +0 -0
  141. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm.egg-info/dependency_links.txt +0 -0
  142. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm.egg-info/requires.txt +0 -0
  143. {strongdm-11.10.1 → strongdm-11.11.0}/strongdm.egg-info/top_level.txt +0 -0
@@ -92,6 +92,8 @@ from .policies_pb2 import *
92
92
  from .policies_pb2_grpc import *
93
93
  from .policies_history_pb2 import *
94
94
  from .policies_history_pb2_grpc import *
95
+ from .proxy_cluster_keys_pb2 import *
96
+ from .proxy_cluster_keys_pb2_grpc import *
95
97
  from .queries_pb2 import *
96
98
  from .queries_pb2_grpc import *
97
99
  from .remote_identities_pb2 import *
@@ -2583,6 +2585,7 @@ class Nodes:
2583
2585
  - **Relays** are used to extend the strongDM network into segmented subnets. They provide access to databases and servers but do not listen for incoming connections.
2584
2586
  See:
2585
2587
  `strongdm.models.Gateway`
2588
+ `strongdm.models.ProxyCluster`
2586
2589
  `strongdm.models.Relay`
2587
2590
  '''
2588
2591
  def __init__(self, channel, client):
@@ -3716,6 +3719,181 @@ class PoliciesHistory:
3716
3719
  return generator(self, req)
3717
3720
 
3718
3721
 
3722
+ class ProxyClusterKeys:
3723
+ '''
3724
+ Proxy Cluster Keys are authentication keys for all proxies within a cluster.
3725
+ The proxies within a cluster share the same key. One cluster can have
3726
+ multiple keys in order to facilitate key rotation.
3727
+ See `strongdm.models.ProxyClusterKey`.
3728
+ '''
3729
+ def __init__(self, channel, client):
3730
+ self.parent = client
3731
+ self.stub = ProxyClusterKeysStub(channel)
3732
+
3733
+ def create(self, proxy_cluster_key, timeout=None):
3734
+ '''
3735
+ Create registers a new ProxyClusterKey.
3736
+ '''
3737
+ req = ProxyClusterKeyCreateRequest()
3738
+
3739
+ if proxy_cluster_key is not None:
3740
+ req.proxy_cluster_key.CopyFrom(
3741
+ plumbing.convert_proxy_cluster_key_to_plumbing(
3742
+ proxy_cluster_key))
3743
+ tries = 0
3744
+ plumbing_response = None
3745
+ while True:
3746
+ try:
3747
+ plumbing_response = self.stub.Create(
3748
+ req,
3749
+ metadata=self.parent.get_metadata(
3750
+ 'ProxyClusterKeys.Create', req),
3751
+ timeout=timeout)
3752
+ except Exception as e:
3753
+ if self.parent.shouldRetry(tries, e):
3754
+ tries += 1
3755
+ self.parent.jitterSleep(tries)
3756
+ continue
3757
+ raise plumbing.convert_error_to_porcelain(e) from e
3758
+ break
3759
+
3760
+ resp = models.ProxyClusterKeyCreateResponse()
3761
+ resp.meta = plumbing.convert_create_response_metadata_to_porcelain(
3762
+ plumbing_response.meta)
3763
+ resp.proxy_cluster_key = plumbing.convert_proxy_cluster_key_to_porcelain(
3764
+ plumbing_response.proxy_cluster_key)
3765
+ resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
3766
+ plumbing_response.rate_limit)
3767
+ resp.secret_key = (plumbing_response.secret_key)
3768
+ return resp
3769
+
3770
+ def get(self, id, timeout=None):
3771
+ '''
3772
+ Get reads one ProxyClusterKey by ID.
3773
+ '''
3774
+ req = ProxyClusterKeyGetRequest()
3775
+ if self.parent.snapshot_datetime is not None:
3776
+ req.meta.CopyFrom(GetRequestMetadata())
3777
+ req.meta.snapshot_at.FromDatetime(self.parent.snapshot_datetime)
3778
+
3779
+ req.id = (id)
3780
+ tries = 0
3781
+ plumbing_response = None
3782
+ while True:
3783
+ try:
3784
+ plumbing_response = self.stub.Get(
3785
+ req,
3786
+ metadata=self.parent.get_metadata('ProxyClusterKeys.Get',
3787
+ req),
3788
+ timeout=timeout)
3789
+ except Exception as e:
3790
+ if self.parent.shouldRetry(tries, e):
3791
+ tries += 1
3792
+ self.parent.jitterSleep(tries)
3793
+ continue
3794
+ raise plumbing.convert_error_to_porcelain(e) from e
3795
+ break
3796
+
3797
+ resp = models.ProxyClusterKeyGetResponse()
3798
+ resp.meta = plumbing.convert_get_response_metadata_to_porcelain(
3799
+ plumbing_response.meta)
3800
+ resp.proxy_cluster_key = plumbing.convert_proxy_cluster_key_to_porcelain(
3801
+ plumbing_response.proxy_cluster_key)
3802
+ resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
3803
+ plumbing_response.rate_limit)
3804
+ return resp
3805
+
3806
+ def delete(self, id, timeout=None):
3807
+ '''
3808
+ Delete removes a ProxyClusterKey by ID.
3809
+ '''
3810
+ req = ProxyClusterKeyDeleteRequest()
3811
+
3812
+ req.id = (id)
3813
+ tries = 0
3814
+ plumbing_response = None
3815
+ while True:
3816
+ try:
3817
+ plumbing_response = self.stub.Delete(
3818
+ req,
3819
+ metadata=self.parent.get_metadata(
3820
+ 'ProxyClusterKeys.Delete', req),
3821
+ timeout=timeout)
3822
+ except Exception as e:
3823
+ if self.parent.shouldRetry(tries, e):
3824
+ tries += 1
3825
+ self.parent.jitterSleep(tries)
3826
+ continue
3827
+ raise plumbing.convert_error_to_porcelain(e) from e
3828
+ break
3829
+
3830
+ resp = models.ProxyClusterKeyDeleteResponse()
3831
+ resp.meta = plumbing.convert_delete_response_metadata_to_porcelain(
3832
+ plumbing_response.meta)
3833
+ resp.rate_limit = plumbing.convert_rate_limit_metadata_to_porcelain(
3834
+ plumbing_response.rate_limit)
3835
+ return resp
3836
+
3837
+ def list(self, filter, *args, timeout=None):
3838
+ '''
3839
+ List gets a list of ProxyClusterKeys matching a given set of criteria.
3840
+ '''
3841
+ req = ProxyClusterKeyListRequest()
3842
+ req.meta.CopyFrom(ListRequestMetadata())
3843
+ if self.parent.page_limit > 0:
3844
+ req.meta.limit = self.parent.page_limit
3845
+ if self.parent.snapshot_datetime is not None:
3846
+ req.meta.snapshot_at.FromDatetime(self.parent.snapshot_datetime)
3847
+
3848
+ req.filter = plumbing.quote_filter_args(filter, *args)
3849
+
3850
+ def generator(svc, req):
3851
+ tries = 0
3852
+ while True:
3853
+ try:
3854
+ plumbing_response = svc.stub.List(
3855
+ req,
3856
+ metadata=svc.parent.get_metadata(
3857
+ 'ProxyClusterKeys.List', req),
3858
+ timeout=timeout)
3859
+ except Exception as e:
3860
+ if self.parent.shouldRetry(tries, e):
3861
+ tries += 1
3862
+ self.parent.jitterSleep(tries)
3863
+ continue
3864
+ raise plumbing.convert_error_to_porcelain(e) from e
3865
+ tries = 0
3866
+ for plumbing_item in plumbing_response.proxy_cluster_keys:
3867
+ yield plumbing.convert_proxy_cluster_key_to_porcelain(
3868
+ plumbing_item)
3869
+ if plumbing_response.meta.next_cursor == '':
3870
+ break
3871
+ req.meta.cursor = plumbing_response.meta.next_cursor
3872
+
3873
+ return generator(self, req)
3874
+
3875
+
3876
+ class SnapshotProxyClusterKeys:
3877
+ '''
3878
+ SnapshotProxyClusterKeys exposes the read only methods of the ProxyClusterKeys
3879
+ service for historical queries.
3880
+ '''
3881
+ def __init__(self, proxy_cluster_keys):
3882
+ self.proxy_cluster_keys = proxy_cluster_keys
3883
+
3884
+ def get(self, id, timeout=None):
3885
+ '''
3886
+ Get reads one ProxyClusterKey by ID.
3887
+ '''
3888
+ return self.proxy_cluster_keys.get(id, timeout=timeout)
3889
+
3890
+ def list(self, filter, *args, timeout=None):
3891
+ '''
3892
+ List gets a list of ProxyClusterKeys matching a given set of criteria.
3893
+ '''
3894
+ return self.proxy_cluster_keys.list(filter, *args, timeout=timeout)
3895
+
3896
+
3719
3897
  class Queries:
3720
3898
  '''
3721
3899
  A Query is a record of a single client request to a resource, such as a SQL query.
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: strongdm
3
- Version: 11.10.1
3
+ Version: 11.11.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/v11.10.1.tar.gz
9
+ Download-URL: https://github.com/strongdm/strongdm-sdk-python/archive/v11.11.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
@@ -77,6 +77,8 @@ strongdm/policies_history_pb2.py
77
77
  strongdm/policies_history_pb2_grpc.py
78
78
  strongdm/policies_pb2.py
79
79
  strongdm/policies_pb2_grpc.py
80
+ strongdm/proxy_cluster_keys_pb2.py
81
+ strongdm/proxy_cluster_keys_pb2_grpc.py
80
82
  strongdm/queries_pb2.py
81
83
  strongdm/queries_pb2_grpc.py
82
84
  strongdm/remote_identities_history_pb2.py
File without changes
File without changes
File without changes