strongdm 15.41.0__tar.gz → 15.44.0__tar.gz

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 (161) hide show
  1. {strongdm-15.41.0 → strongdm-15.44.0}/PKG-INFO +2 -2
  2. {strongdm-15.41.0 → strongdm-15.44.0}/setup.py +4 -4
  3. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/client.py +132 -1
  4. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/constants.py +1 -0
  5. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/discovery_connectors_pb2.py +12 -10
  6. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/models.py +36 -27
  7. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/plumbing.py +8 -6
  8. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm.egg-info/PKG-INFO +2 -2
  9. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm.egg-info/requires.txt +1 -0
  10. {strongdm-15.41.0 → strongdm-15.44.0}/LICENSE +0 -0
  11. {strongdm-15.41.0 → strongdm-15.44.0}/README.md +0 -0
  12. {strongdm-15.41.0 → strongdm-15.44.0}/setup.cfg +0 -0
  13. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/__init__.py +0 -0
  14. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/access_request_events_history_pb2.py +0 -0
  15. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/access_request_events_history_pb2_grpc.py +0 -0
  16. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/access_requests_history_pb2.py +0 -0
  17. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/access_requests_history_pb2_grpc.py +0 -0
  18. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/access_requests_pb2.py +0 -0
  19. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/access_requests_pb2_grpc.py +0 -0
  20. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/account_attachments_history_pb2.py +0 -0
  21. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/account_attachments_history_pb2_grpc.py +0 -0
  22. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/account_attachments_pb2.py +0 -0
  23. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/account_attachments_pb2_grpc.py +0 -0
  24. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/account_grants_history_pb2.py +0 -0
  25. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/account_grants_history_pb2_grpc.py +0 -0
  26. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/account_grants_pb2.py +0 -0
  27. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/account_grants_pb2_grpc.py +0 -0
  28. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/account_permissions_pb2.py +0 -0
  29. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/account_permissions_pb2_grpc.py +0 -0
  30. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/account_resources_history_pb2.py +0 -0
  31. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/account_resources_history_pb2_grpc.py +0 -0
  32. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/account_resources_pb2.py +0 -0
  33. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/account_resources_pb2_grpc.py +0 -0
  34. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/accounts_groups_history_pb2.py +0 -0
  35. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/accounts_groups_history_pb2_grpc.py +0 -0
  36. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/accounts_groups_pb2.py +0 -0
  37. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/accounts_groups_pb2_grpc.py +0 -0
  38. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/accounts_history_pb2.py +0 -0
  39. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/accounts_history_pb2_grpc.py +0 -0
  40. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/accounts_pb2.py +0 -0
  41. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/accounts_pb2_grpc.py +0 -0
  42. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/activities_pb2.py +0 -0
  43. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/activities_pb2_grpc.py +0 -0
  44. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/approval_workflow_approvers_history_pb2.py +0 -0
  45. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/approval_workflow_approvers_history_pb2_grpc.py +0 -0
  46. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/approval_workflow_approvers_pb2.py +0 -0
  47. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/approval_workflow_approvers_pb2_grpc.py +0 -0
  48. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/approval_workflow_steps_history_pb2.py +0 -0
  49. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/approval_workflow_steps_history_pb2_grpc.py +0 -0
  50. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/approval_workflow_steps_pb2.py +0 -0
  51. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/approval_workflow_steps_pb2_grpc.py +0 -0
  52. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/approval_workflows_history_pb2.py +0 -0
  53. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/approval_workflows_history_pb2_grpc.py +0 -0
  54. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/approval_workflows_pb2.py +0 -0
  55. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/approval_workflows_pb2_grpc.py +0 -0
  56. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/control_panel_pb2.py +0 -0
  57. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/control_panel_pb2_grpc.py +0 -0
  58. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/discovery_connectors_pb2_grpc.py +0 -0
  59. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/drivers_pb2.py +0 -0
  60. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/drivers_pb2_grpc.py +0 -0
  61. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/errors.py +0 -0
  62. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/groups_history_pb2.py +0 -0
  63. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/groups_history_pb2_grpc.py +0 -0
  64. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/groups_pb2.py +0 -0
  65. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/groups_pb2_grpc.py +0 -0
  66. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/groups_roles_history_pb2.py +0 -0
  67. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/groups_roles_history_pb2_grpc.py +0 -0
  68. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/groups_roles_pb2.py +0 -0
  69. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/groups_roles_pb2_grpc.py +0 -0
  70. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/health_checks_pb2.py +0 -0
  71. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/health_checks_pb2_grpc.py +0 -0
  72. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/identity_aliases_history_pb2.py +0 -0
  73. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/identity_aliases_history_pb2_grpc.py +0 -0
  74. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/identity_aliases_pb2.py +0 -0
  75. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/identity_aliases_pb2_grpc.py +0 -0
  76. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/identity_sets_history_pb2.py +0 -0
  77. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/identity_sets_history_pb2_grpc.py +0 -0
  78. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/identity_sets_pb2.py +0 -0
  79. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/identity_sets_pb2_grpc.py +0 -0
  80. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/managed_secrets_pb2.py +0 -0
  81. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/managed_secrets_pb2_grpc.py +0 -0
  82. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/nodes_history_pb2.py +0 -0
  83. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/nodes_history_pb2_grpc.py +0 -0
  84. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/nodes_pb2.py +0 -0
  85. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/nodes_pb2_grpc.py +0 -0
  86. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/options_pb2.py +0 -0
  87. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/options_pb2_grpc.py +0 -0
  88. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/organization_history_pb2.py +0 -0
  89. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/organization_history_pb2_grpc.py +0 -0
  90. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/peering_group_nodes_pb2.py +0 -0
  91. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/peering_group_nodes_pb2_grpc.py +0 -0
  92. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/peering_group_peers_pb2.py +0 -0
  93. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/peering_group_peers_pb2_grpc.py +0 -0
  94. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/peering_group_resources_pb2.py +0 -0
  95. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/peering_group_resources_pb2_grpc.py +0 -0
  96. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/peering_groups_pb2.py +0 -0
  97. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/peering_groups_pb2_grpc.py +0 -0
  98. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/policies_history_pb2.py +0 -0
  99. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/policies_history_pb2_grpc.py +0 -0
  100. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/policies_pb2.py +0 -0
  101. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/policies_pb2_grpc.py +0 -0
  102. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/proxy_cluster_keys_pb2.py +0 -0
  103. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/proxy_cluster_keys_pb2_grpc.py +0 -0
  104. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/queries_pb2.py +0 -0
  105. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/queries_pb2_grpc.py +0 -0
  106. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/remote_identities_history_pb2.py +0 -0
  107. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/remote_identities_history_pb2_grpc.py +0 -0
  108. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/remote_identities_pb2.py +0 -0
  109. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/remote_identities_pb2_grpc.py +0 -0
  110. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/remote_identity_groups_history_pb2.py +0 -0
  111. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/remote_identity_groups_history_pb2_grpc.py +0 -0
  112. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/remote_identity_groups_pb2.py +0 -0
  113. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/remote_identity_groups_pb2_grpc.py +0 -0
  114. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/replays_pb2.py +0 -0
  115. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/replays_pb2_grpc.py +0 -0
  116. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/resources_history_pb2.py +0 -0
  117. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/resources_history_pb2_grpc.py +0 -0
  118. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/resources_pb2.py +0 -0
  119. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/resources_pb2_grpc.py +0 -0
  120. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/role_resources_history_pb2.py +0 -0
  121. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/role_resources_history_pb2_grpc.py +0 -0
  122. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/role_resources_pb2.py +0 -0
  123. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/role_resources_pb2_grpc.py +0 -0
  124. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/roles_history_pb2.py +0 -0
  125. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/roles_history_pb2_grpc.py +0 -0
  126. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/roles_pb2.py +0 -0
  127. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/roles_pb2_grpc.py +0 -0
  128. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/secret_engine_policy_pb2.py +0 -0
  129. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/secret_engine_policy_pb2_grpc.py +0 -0
  130. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/secret_engine_types_pb2.py +0 -0
  131. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/secret_engine_types_pb2_grpc.py +0 -0
  132. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/secret_engines_pb2.py +0 -0
  133. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/secret_engines_pb2_grpc.py +0 -0
  134. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/secret_store_healths_pb2.py +0 -0
  135. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/secret_store_healths_pb2_grpc.py +0 -0
  136. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/secret_store_types_pb2.py +0 -0
  137. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/secret_store_types_pb2_grpc.py +0 -0
  138. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/secret_stores_history_pb2.py +0 -0
  139. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/secret_stores_history_pb2_grpc.py +0 -0
  140. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/secret_stores_pb2.py +0 -0
  141. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/secret_stores_pb2_grpc.py +0 -0
  142. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/spec_pb2.py +0 -0
  143. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/spec_pb2_grpc.py +0 -0
  144. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/svc.py +0 -0
  145. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/tags_pb2.py +0 -0
  146. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/tags_pb2_grpc.py +0 -0
  147. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/workflow_approvers_history_pb2.py +0 -0
  148. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/workflow_approvers_history_pb2_grpc.py +0 -0
  149. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/workflow_approvers_pb2.py +0 -0
  150. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/workflow_approvers_pb2_grpc.py +0 -0
  151. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/workflow_roles_history_pb2.py +0 -0
  152. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/workflow_roles_history_pb2_grpc.py +0 -0
  153. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/workflow_roles_pb2.py +0 -0
  154. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/workflow_roles_pb2_grpc.py +0 -0
  155. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/workflows_history_pb2.py +0 -0
  156. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/workflows_history_pb2_grpc.py +0 -0
  157. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/workflows_pb2.py +0 -0
  158. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm/workflows_pb2_grpc.py +0 -0
  159. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm.egg-info/SOURCES.txt +0 -0
  160. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm.egg-info/dependency_links.txt +0 -0
  161. {strongdm-15.41.0 → strongdm-15.44.0}/strongdm.egg-info/top_level.txt +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: strongdm
3
- Version: 15.41.0
3
+ Version: 15.44.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.41.0.tar.gz
9
+ Download-URL: https://github.com/strongdm/strongdm-sdk-python/archive/v15.44.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
@@ -23,7 +23,7 @@ from setuptools import setup
23
23
  setup(
24
24
  name='strongdm',
25
25
  packages=['strongdm'],
26
- version='15.41.0',
26
+ version='15.44.0',
27
27
  license='apache-2.0',
28
28
  description='strongDM SDK for the Python programming language.',
29
29
  long_description=long_description,
@@ -32,14 +32,14 @@ setup(
32
32
  author_email='sdk-feedback@strongdm.com',
33
33
  url='https://github.com/strongdm/strongdm-sdk-python',
34
34
  download_url=
35
- 'https://github.com/strongdm/strongdm-sdk-python/archive/v15.41.0.tar.gz',
35
+ 'https://github.com/strongdm/strongdm-sdk-python/archive/v15.44.0.tar.gz',
36
36
  keywords=[
37
37
  'strongDM', 'sdm', 'api', 'automation', 'security', 'audit',
38
38
  'database', 'server', 'ssh', 'rdp'
39
39
  ],
40
40
  install_requires=[
41
- 'grpcio>=1.42.0',
42
- 'googleapis-common-protos>1.56.2,<2',
41
+ 'grpcio >= 1.42.0', 'googleapis-common-protos>1.56.2,<2',
42
+ 'cryptography >= 46.0.0'
43
43
  ],
44
44
  classifiers=[
45
45
  'Development Status :: 4 - Beta', # Chose either "3 - Alpha", "4 - Beta" or "5 - Production/Stable" as the current state of your package
@@ -16,17 +16,23 @@
16
16
  # Code generated by protogen. DO NOT EDIT.
17
17
 
18
18
  import base64
19
+ import collections
19
20
  import copy
20
21
  import datetime
22
+ import functools
21
23
  import grpc
22
24
  import hashlib
23
25
  import hmac
24
26
  import random
27
+ import re
25
28
  import time
26
29
  from . import errors
27
30
  from . import plumbing
28
31
  from . import svc
29
32
 
33
+ from cryptography.hazmat.primitives.asymmetric import rsa, padding
34
+ from cryptography.hazmat.primitives import serialization, hashes
35
+
30
36
  # These defaults are taken from AWS. Customization of these values
31
37
  # is a future step in the API.
32
38
  DEFAULT_BASE_RETRY_DELAY = 1 # 1 second
@@ -34,7 +40,131 @@ DEFAULT_MAX_RETRY_DELAY = 120 # 120 seconds
34
40
  DEFAULT_RETRY_FACTOR = 1.6
35
41
  DEFAULT_RETRY_JITTER = 0.2
36
42
  API_VERSION = '2025-04-14'
37
- USER_AGENT = 'strongdm-sdk-python/15.41.0'
43
+ USER_AGENT = 'strongdm-sdk-python/15.44.0'
44
+
45
+ method_regexp = re.compile(r'\W+')
46
+
47
+
48
+ class _ClientCallDetails(
49
+ collections.namedtuple(
50
+ "_ClientCallDetails",
51
+ ("method", "timeout", "metadata", "credentials")),
52
+ grpc.ClientCallDetails,
53
+ ):
54
+ """ _ClientCallDetails is used to override some of the attributes of the client_call_details in the interceptors"""
55
+ pass
56
+
57
+
58
+ class _EncryptionInterceptor(grpc.UnaryUnaryClientInterceptor):
59
+ """ _EncryptionInterceptor is used to add transparent encryption/decryption support for managed secrets"""
60
+ def __init__(self, client):
61
+ self.client = client
62
+ self.public_key_cache = {}
63
+
64
+ def intercept_unary_unary(self, continuation, client_call_details,
65
+ request):
66
+ method = method_regexp.sub("_", client_call_details.method.lower())
67
+ callback = getattr(self, method, None)
68
+ if callback is not None:
69
+ return callback(continuation, client_call_details, request)
70
+ return continuation(client_call_details, request)
71
+
72
+ @functools.cached_property
73
+ def private_key(self):
74
+ return rsa.generate_private_key(
75
+ public_exponent=65537,
76
+ key_size=4096,
77
+ )
78
+
79
+ def _encrypt_secret(self, method, continuation, client_call_details,
80
+ request):
81
+ secret = request.managed_secret
82
+ if len(secret.value) != 0:
83
+ if secret.secret_engine_id not in self.public_key_cache:
84
+ try:
85
+ # fetch secret engine details to fill up self.public_key_cache
86
+ # if it fails the call to create/update will fail as well
87
+ self.client.secret_engines.get(secret.secret_engine_id)
88
+ except errors.RPCError:
89
+ pass
90
+ key = self.public_key_cache.get(secret.secret_engine_id)
91
+ if key is not None:
92
+ encrypted = key.encrypt(
93
+ secret.value,
94
+ padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()),
95
+ algorithm=hashes.SHA256(),
96
+ label=None))
97
+ secret.value = encrypted
98
+ client_call_details = _ClientCallDetails(
99
+ method=client_call_details.method,
100
+ timeout=client_call_details.timeout,
101
+ metadata=self.client.get_metadata(method, request),
102
+ credentials=client_call_details.credentials)
103
+ return continuation(client_call_details, request)
104
+
105
+ def _v1_managedsecrets_create(self, continuation, client_call_details,
106
+ request):
107
+ return self._encrypt_secret("ManagedSecrets.Create", continuation,
108
+ client_call_details, request)
109
+
110
+ def _v1_managedsecrets_update(self, continuation, client_call_details,
111
+ request):
112
+ return self._encrypt_secret("ManagedSecrets.Update", continuation,
113
+ client_call_details, request)
114
+
115
+ def _v1_managedsecrets_retrieve(self, continuation, client_call_details,
116
+ request):
117
+ if len(request.public_key) != 0:
118
+ return continuation(client_call_details, request)
119
+
120
+ privKey = self.private_key
121
+ request.public_key = privKey.public_key().public_bytes(
122
+ serialization.Encoding.PEM,
123
+ serialization.PublicFormat.SubjectPublicKeyInfo)
124
+ client_call_details = _ClientCallDetails(
125
+ method=client_call_details.method,
126
+ timeout=client_call_details.timeout,
127
+ metadata=self.client.get_metadata("ManagedSecrets.Retrieve",
128
+ request),
129
+ credentials=client_call_details.credentials)
130
+ resp = continuation(client_call_details, request)
131
+ if resp.code() != grpc.StatusCode.OK:
132
+ return resp
133
+ result = resp.result()
134
+ plaintext = privKey.decrypt(
135
+ result.managed_secret.value,
136
+ padding.OAEP(
137
+ mgf=padding.MGF1(algorithm=hashes.SHA256()),
138
+ algorithm=hashes.SHA256(),
139
+ label=None,
140
+ ))
141
+ result.managed_secret.value = plaintext
142
+ return resp
143
+
144
+ def _v1_secretengines_get(self, continuation, client_call_details,
145
+ request):
146
+ response = continuation(client_call_details, request)
147
+ if response.code() != grpc.StatusCode.OK:
148
+ return response
149
+ result = response.result()
150
+ engine = plumbing.convert_secret_engine_to_porcelain(
151
+ result.secret_engine)
152
+ engineKey = serialization.load_pem_public_key(engine.public_key)
153
+ self.public_key_cache[engine.id] = engineKey
154
+ return response
155
+
156
+ def _v1_secretengines_list(self, continuation, client_call_details,
157
+ request):
158
+ response = continuation(client_call_details, request)
159
+ if response.code() != grpc.StatusCode.OK:
160
+ return response
161
+ result = response.result()
162
+ for plumbing_engine in result.secret_engines:
163
+ engine = plumbing.convert_secret_engine_to_porcelain(
164
+ plumbing_engine)
165
+ engineKey = serialization.load_pem_public_key(engine.public_key)
166
+ self.public_key_cache[engine.id] = engineKey
167
+ return response
38
168
 
39
169
 
40
170
  class Client:
@@ -70,6 +200,7 @@ class Client:
70
200
  channel = grpc.secure_channel(host, creds)
71
201
  except Exception as e:
72
202
  raise plumbing.convert_error_to_porcelain(e) from e
203
+ channel = grpc.intercept_channel(channel, _EncryptionInterceptor(self))
73
204
  self.channel = channel
74
205
  self.access_requests = svc.AccessRequests(channel, self)
75
206
  '''
@@ -332,6 +332,7 @@ class ActivityVerb:
332
332
  RESOURCE_LOCKED = "user locked a resource"
333
333
  RESOURCE_UNLOCKED = "user unlocked a resource"
334
334
  RESOURCE_FORCE_UNLOCKED = "admin force-unlocked a resource"
335
+ RESOURCE_LOCK_REJECTED = "user lock rejected for a resource"
335
336
  CONCURRENT_AUTHENTICATION_REVOKED_PER_ORG_SETTING = "concurrent authentications revoked per organization settings"
336
337
  PEERING_GROUP_TOGGLED = "peering group toggled"
337
338
  PEERING_GROUP_CREATED = "peering group created"
@@ -31,7 +31,7 @@ from . import spec_pb2 as spec__pb2
31
31
  from . import tags_pb2 as tags__pb2
32
32
 
33
33
 
34
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x64iscovery_connectors.proto\x12\x02v1\x1a\roptions.proto\x1a\nspec.proto\x1a\ntags.proto\"\x89\x01\n\x16\x43onnectorCreateRequest\x12\'\n\x04meta\x18\x01 \x01(\x0b\x32\x19.v1.CreateRequestMetadata\x12,\n\tconnector\x18\x02 \x01(\x0b\x32\r.v1.ConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xc2\x01\n\x17\x43onnectorCreateResponse\x12(\n\x04meta\x18\x01 \x01(\x0b\x32\x1a.v1.CreateResponseMetadata\x12,\n\tconnector\x18\x02 \x01(\x0b\x32\r.v1.ConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x35\n\nrate_limit\x18\x03 \x01(\x0b\x32\x15.v1.RateLimitMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"m\n\x13\x43onnectorGetRequest\x12$\n\x04meta\x18\x01 \x01(\x0b\x32\x16.v1.GetRequestMetadata\x12\x16\n\x02id\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xc8\x01\n\x14\x43onnectorGetResponse\x12\x31\n\x04meta\x18\x01 \x01(\x0b\x32\x17.v1.GetResponseMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12,\n\tconnector\x18\x02 \x01(\x0b\x32\r.v1.ConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x35\n\nrate_limit\x18\x03 \x01(\x0b\x32\x15.v1.RateLimitMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\x95\x01\n\x16\x43onnectorUpdateRequest\x12\'\n\x04meta\x18\x01 \x01(\x0b\x32\x19.v1.UpdateRequestMetadata\x12\n\n\x02id\x18\x02 \x01(\t\x12,\n\tconnector\x18\x03 \x01(\x0b\x32\r.v1.ConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xc2\x01\n\x17\x43onnectorUpdateResponse\x12(\n\x04meta\x18\x01 \x01(\x0b\x32\x1a.v1.UpdateResponseMetadata\x12,\n\tconnector\x18\x02 \x01(\x0b\x32\r.v1.ConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x35\n\nrate_limit\x18\x03 \x01(\x0b\x32\x15.v1.RateLimitMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"s\n\x16\x43onnectorDeleteRequest\x12\'\n\x04meta\x18\x01 \x01(\x0b\x32\x19.v1.DeleteRequestMetadata\x12\x16\n\x02id\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xa0\x01\n\x17\x43onnectorDeleteResponse\x12\x34\n\x04meta\x18\x01 \x01(\x0b\x32\x1a.v1.DeleteResponseMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x35\n\nrate_limit\x18\x02 \x01(\x0b\x32\x15.v1.RateLimitMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"s\n\x14\x43onnectorListRequest\x12%\n\x04meta\x18\x01 \x01(\x0b\x32\x17.v1.ListRequestMetadata\x12\x1a\n\x06\x66ilter\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xbf\x01\n\x15\x43onnectorListResponse\x12&\n\x04meta\x18\x01 \x01(\x0b\x32\x18.v1.ListResponseMetadata\x12-\n\nconnectors\x18\x02 \x03(\x0b\x32\r.v1.ConnectorB\n\xf2\xf8\xb3\x07\x05\xb8\xf3\xb3\x07\x01\x12\x35\n\nrate_limit\x18\x03 \x01(\x0b\x32\x15.v1.RateLimitMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xc2\x02\n\tConnector\x12+\n\x03\x61ws\x18\x64 \x01(\x0b\x32\x10.v1.AWSConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01H\x00\x12/\n\x05\x61zure\x18\x65 \x01(\x0b\x32\x12.v1.AzureConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01H\x00\x12+\n\x03gcp\x18\x66 \x01(\x0b\x32\x10.v1.GCPConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01H\x00:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63liB\x8f\x01\n\x05\x63loud\x12\x85\x01\xaa\xf8\xb3\x07\t\xaa\xf8\xb3\x07\x04name\xaa\xf8\xb3\x07\x10\xaa\xf8\xb3\x07\x0b\x64\x65scription\xaa\xf8\xb3\x07\r\xaa\xf8\xb3\x07\x08services\xaa\xf8\xb3\x07\x11\xaa\xf8\xb3\x07\x0cinclude_tags\xaa\xf8\xb3\x07\x11\xaa\xf8\xb3\x07\x0c\x65xclude_tags\xaa\xf8\xb3\x07\x10\xaa\xf8\xb3\x07\x0bscan_period\xaa\xf8\xb3\x07\n\xb2\xf8\xb3\x07\x05\x63loud\"\xa4\x03\n\x0c\x41WSConnector\x12\x16\n\x02id\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1d\n\x04name\x18\x02 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1f\n\x0b\x64\x65scription\x18\x03 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1f\n\x0bscan_period\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08services\x18\x05 \x03(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12)\n\x0cinclude_tags\x18\x06 \x03(\x0b\x32\x07.v1.TagB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12)\n\x0c\x65xclude_tags\x18\x07 \x03(\x0b\x32\x07.v1.TagB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\'\n\trole_name\x18\x14 \x01(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01\x12)\n\x0b\x61\x63\x63ount_ids\x18\x15 \x03(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01:S\xfa\xf8\xb3\x07N\xa8\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x36\xc2\xf4\xb3\x07\x19\n\x12terraform-provider\x12\x03\x61ws\xc2\xf4\xb3\x07\x13\n\x0cjson_gateway\x12\x03\x61ws\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xd8\x03\n\x0e\x41zureConnector\x12\x16\n\x02id\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1d\n\x04name\x18\x02 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1f\n\x0b\x64\x65scription\x18\x03 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1f\n\x0bscan_period\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08services\x18\x05 \x03(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12)\n\x0cinclude_tags\x18\x06 \x03(\x0b\x32\x07.v1.TagB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12)\n\x0c\x65xclude_tags\x18\x07 \x03(\x0b\x32\x07.v1.TagB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\'\n\ttenant_id\x18\x14 \x01(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01\x12\'\n\tclient_id\x18\x15 \x01(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01\x12.\n\x10subscription_ids\x18\x16 \x03(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01:W\xfa\xf8\xb3\x07R\xa8\xf3\xb3\x07\x01\xca\xf3\xb3\x07:\xc2\xf4\xb3\x07\x1b\n\x12terraform-provider\x12\x05\x61zure\xc2\xf4\xb3\x07\x15\n\x0cjson_gateway\x12\x05\x61zure\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xfb\x03\n\x0cGCPConnector\x12\x16\n\x02id\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1d\n\x04name\x18\x02 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1f\n\x0b\x64\x65scription\x18\x03 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1f\n\x0bscan_period\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08services\x18\x05 \x03(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12)\n\x0cinclude_tags\x18\x06 \x03(\x0b\x32\x07.v1.TagB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12)\n\x0c\x65xclude_tags\x18\x07 \x03(\x0b\x32\x07.v1.TagB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12,\n\x0eproject_number\x18\x14 \x01(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01\x12)\n\x0bprovider_id\x18\x15 \x01(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01\x12%\n\x07pool_id\x18\x16 \x01(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01\x12)\n\x0bproject_ids\x18\x17 \x03(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01:S\xfa\xf8\xb3\x07N\xa8\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x36\xc2\xf4\xb3\x07\x19\n\x12terraform-provider\x12\x03gcp\xc2\xf4\xb3\x07\x13\n\x0cjson_gateway\x12\x03gcp\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li2\xd7\x04\n\x13\x44iscoveryConnectors\x12i\n\x06\x43reate\x12\x1a.v1.ConnectorCreateRequest\x1a\x1b.v1.ConnectorCreateResponse\"&\x82\xf9\xb3\x07\t\xa2\xf3\xb3\x07\x04post\x82\xf9\xb3\x07\x13\xaa\xf3\xb3\x07\x0e/v1/connectors\x12\x64\n\x03Get\x12\x17.v1.ConnectorGetRequest\x1a\x18.v1.ConnectorGetResponse\"*\x82\xf9\xb3\x07\x08\xa2\xf3\xb3\x07\x03get\x82\xf9\xb3\x07\x18\xaa\xf3\xb3\x07\x13/v1/connectors/{id}\x12m\n\x06Update\x12\x1a.v1.ConnectorUpdateRequest\x1a\x1b.v1.ConnectorUpdateResponse\"*\x82\xf9\xb3\x07\x08\xa2\xf3\xb3\x07\x03put\x82\xf9\xb3\x07\x18\xaa\xf3\xb3\x07\x13/v1/connectors/{id}\x12p\n\x06\x44\x65lete\x12\x1a.v1.ConnectorDeleteRequest\x1a\x1b.v1.ConnectorDeleteResponse\"-\x82\xf9\xb3\x07\x0b\xa2\xf3\xb3\x07\x06\x64\x65lete\x82\xf9\xb3\x07\x18\xaa\xf3\xb3\x07\x13/v1/connectors/{id}\x12\x62\n\x04List\x12\x18.v1.ConnectorListRequest\x1a\x19.v1.ConnectorListResponse\"%\x82\xf9\xb3\x07\x08\xa2\xf3\xb3\x07\x03get\x82\xf9\xb3\x07\x13\xaa\xf3\xb3\x07\x0e/v1/connectors\x1a*\xca\xf9\xb3\x07%\xc2\xf9\xb3\x07\tConnector\xca\xf9\xb3\x07\x01*\xca\xf9\xb3\x07\x03\x63li\xd2\xf9\xb3\x07\x04\x63on-B\x87\x01\n\x19\x63om.strongdm.api.plumbingB\x1b\x44iscoveryConnectorsPlumbingZ5github.com/strongdm/strongdm-sdk-go/v3/internal/v1;v1\xc2\x92\xb4\x07\x06\xa2\x8c\xb4\x07\x01*\xc2\x92\xb4\x07\x08\xa2\x8c\xb4\x07\x03\x63lib\x06proto3')
34
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x64iscovery_connectors.proto\x12\x02v1\x1a\roptions.proto\x1a\nspec.proto\x1a\ntags.proto\"\x89\x01\n\x16\x43onnectorCreateRequest\x12\'\n\x04meta\x18\x01 \x01(\x0b\x32\x19.v1.CreateRequestMetadata\x12,\n\tconnector\x18\x02 \x01(\x0b\x32\r.v1.ConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xc2\x01\n\x17\x43onnectorCreateResponse\x12(\n\x04meta\x18\x01 \x01(\x0b\x32\x1a.v1.CreateResponseMetadata\x12,\n\tconnector\x18\x02 \x01(\x0b\x32\r.v1.ConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x35\n\nrate_limit\x18\x03 \x01(\x0b\x32\x15.v1.RateLimitMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"m\n\x13\x43onnectorGetRequest\x12$\n\x04meta\x18\x01 \x01(\x0b\x32\x16.v1.GetRequestMetadata\x12\x16\n\x02id\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xc8\x01\n\x14\x43onnectorGetResponse\x12\x31\n\x04meta\x18\x01 \x01(\x0b\x32\x17.v1.GetResponseMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12,\n\tconnector\x18\x02 \x01(\x0b\x32\r.v1.ConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x35\n\nrate_limit\x18\x03 \x01(\x0b\x32\x15.v1.RateLimitMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\x95\x01\n\x16\x43onnectorUpdateRequest\x12\'\n\x04meta\x18\x01 \x01(\x0b\x32\x19.v1.UpdateRequestMetadata\x12\n\n\x02id\x18\x02 \x01(\t\x12,\n\tconnector\x18\x03 \x01(\x0b\x32\r.v1.ConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xc2\x01\n\x17\x43onnectorUpdateResponse\x12(\n\x04meta\x18\x01 \x01(\x0b\x32\x1a.v1.UpdateResponseMetadata\x12,\n\tconnector\x18\x02 \x01(\x0b\x32\r.v1.ConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x35\n\nrate_limit\x18\x03 \x01(\x0b\x32\x15.v1.RateLimitMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"s\n\x16\x43onnectorDeleteRequest\x12\'\n\x04meta\x18\x01 \x01(\x0b\x32\x19.v1.DeleteRequestMetadata\x12\x16\n\x02id\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xa0\x01\n\x17\x43onnectorDeleteResponse\x12\x34\n\x04meta\x18\x01 \x01(\x0b\x32\x1a.v1.DeleteResponseMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x35\n\nrate_limit\x18\x02 \x01(\x0b\x32\x15.v1.RateLimitMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"s\n\x14\x43onnectorListRequest\x12%\n\x04meta\x18\x01 \x01(\x0b\x32\x17.v1.ListRequestMetadata\x12\x1a\n\x06\x66ilter\x18\x02 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xbf\x01\n\x15\x43onnectorListResponse\x12&\n\x04meta\x18\x01 \x01(\x0b\x32\x18.v1.ListResponseMetadata\x12-\n\nconnectors\x18\x02 \x03(\x0b\x32\r.v1.ConnectorB\n\xf2\xf8\xb3\x07\x05\xb8\xf3\xb3\x07\x01\x12\x35\n\nrate_limit\x18\x03 \x01(\x0b\x32\x15.v1.RateLimitMetadataB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xc2\x02\n\tConnector\x12+\n\x03\x61ws\x18\x64 \x01(\x0b\x32\x10.v1.AWSConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01H\x00\x12/\n\x05\x61zure\x18\x65 \x01(\x0b\x32\x12.v1.AzureConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01H\x00\x12+\n\x03gcp\x18\x66 \x01(\x0b\x32\x10.v1.GCPConnectorB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01H\x00:\x18\xfa\xf8\xb3\x07\x13\xa8\xf3\xb3\x07\x01\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63liB\x8f\x01\n\x05\x63loud\x12\x85\x01\xaa\xf8\xb3\x07\t\xaa\xf8\xb3\x07\x04name\xaa\xf8\xb3\x07\x10\xaa\xf8\xb3\x07\x0b\x64\x65scription\xaa\xf8\xb3\x07\r\xaa\xf8\xb3\x07\x08services\xaa\xf8\xb3\x07\x11\xaa\xf8\xb3\x07\x0cinclude_tags\xaa\xf8\xb3\x07\x11\xaa\xf8\xb3\x07\x0c\x65xclude_tags\xaa\xf8\xb3\x07\x10\xaa\xf8\xb3\x07\x0bscan_period\xaa\xf8\xb3\x07\n\xb2\xf8\xb3\x07\x05\x63loud\"\xa4\x03\n\x0c\x41WSConnector\x12\x16\n\x02id\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1d\n\x04name\x18\x02 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1f\n\x0b\x64\x65scription\x18\x03 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1f\n\x0bscan_period\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08services\x18\x05 \x03(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12)\n\x0cinclude_tags\x18\x06 \x03(\x0b\x32\x07.v1.TagB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12)\n\x0c\x65xclude_tags\x18\x07 \x03(\x0b\x32\x07.v1.TagB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\'\n\trole_name\x18\x14 \x01(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01\x12)\n\x0b\x61\x63\x63ount_ids\x18\x15 \x03(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01:S\xfa\xf8\xb3\x07N\xa8\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x36\xc2\xf4\xb3\x07\x19\n\x12terraform-provider\x12\x03\x61ws\xc2\xf4\xb3\x07\x13\n\x0cjson_gateway\x12\x03\x61ws\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xd8\x03\n\x0e\x41zureConnector\x12\x16\n\x02id\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1d\n\x04name\x18\x02 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1f\n\x0b\x64\x65scription\x18\x03 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1f\n\x0bscan_period\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08services\x18\x05 \x03(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12)\n\x0cinclude_tags\x18\x06 \x03(\x0b\x32\x07.v1.TagB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12)\n\x0c\x65xclude_tags\x18\x07 \x03(\x0b\x32\x07.v1.TagB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\'\n\ttenant_id\x18\x14 \x01(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01\x12\'\n\tclient_id\x18\x15 \x01(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01\x12.\n\x10subscription_ids\x18\x16 \x03(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01:W\xfa\xf8\xb3\x07R\xa8\xf3\xb3\x07\x01\xca\xf3\xb3\x07:\xc2\xf4\xb3\x07\x1b\n\x12terraform-provider\x12\x05\x61zure\xc2\xf4\xb3\x07\x15\n\x0cjson_gateway\x12\x05\x61zure\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li\"\xc9\x04\n\x0cGCPConnector\x12\x16\n\x02id\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1d\n\x04name\x18\x02 \x01(\tB\x0f\xf2\xf8\xb3\x07\n\xb0\xf3\xb3\x07\x01\xc0\xf3\xb3\x07\x01\x12\x1f\n\x0b\x64\x65scription\x18\x03 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1f\n\x0bscan_period\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1c\n\x08services\x18\x05 \x03(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12)\n\x0cinclude_tags\x18\x06 \x03(\x0b\x32\x07.v1.TagB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12)\n\x0c\x65xclude_tags\x18\x07 \x03(\x0b\x32\x07.v1.TagB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12)\n\x0bproject_ids\x18\x17 \x03(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01\x12\x35\n\x17workload_project_number\x18\x18 \x01(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01\x12\x31\n\x13workload_project_id\x18\x19 \x01(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01\x12\x32\n\x14workload_provider_id\x18\x1a \x01(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01\x12.\n\x10workload_pool_id\x18\x1b \x01(\tB\x14\xf2\xf8\xb3\x07\x0f\xb0\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x05\x88\xf4\xb3\x07\x01:S\xfa\xf8\xb3\x07N\xa8\xf3\xb3\x07\x01\xca\xf3\xb3\x07\x36\xc2\xf4\xb3\x07\x19\n\x12terraform-provider\x12\x03gcp\xc2\xf4\xb3\x07\x13\n\x0cjson_gateway\x12\x03gcp\xd2\xf3\xb3\x07\x01*\xd2\xf3\xb3\x07\x03\x63li2\xd7\x04\n\x13\x44iscoveryConnectors\x12i\n\x06\x43reate\x12\x1a.v1.ConnectorCreateRequest\x1a\x1b.v1.ConnectorCreateResponse\"&\x82\xf9\xb3\x07\t\xa2\xf3\xb3\x07\x04post\x82\xf9\xb3\x07\x13\xaa\xf3\xb3\x07\x0e/v1/connectors\x12\x64\n\x03Get\x12\x17.v1.ConnectorGetRequest\x1a\x18.v1.ConnectorGetResponse\"*\x82\xf9\xb3\x07\x08\xa2\xf3\xb3\x07\x03get\x82\xf9\xb3\x07\x18\xaa\xf3\xb3\x07\x13/v1/connectors/{id}\x12m\n\x06Update\x12\x1a.v1.ConnectorUpdateRequest\x1a\x1b.v1.ConnectorUpdateResponse\"*\x82\xf9\xb3\x07\x08\xa2\xf3\xb3\x07\x03put\x82\xf9\xb3\x07\x18\xaa\xf3\xb3\x07\x13/v1/connectors/{id}\x12p\n\x06\x44\x65lete\x12\x1a.v1.ConnectorDeleteRequest\x1a\x1b.v1.ConnectorDeleteResponse\"-\x82\xf9\xb3\x07\x0b\xa2\xf3\xb3\x07\x06\x64\x65lete\x82\xf9\xb3\x07\x18\xaa\xf3\xb3\x07\x13/v1/connectors/{id}\x12\x62\n\x04List\x12\x18.v1.ConnectorListRequest\x1a\x19.v1.ConnectorListResponse\"%\x82\xf9\xb3\x07\x08\xa2\xf3\xb3\x07\x03get\x82\xf9\xb3\x07\x13\xaa\xf3\xb3\x07\x0e/v1/connectors\x1a*\xca\xf9\xb3\x07%\xc2\xf9\xb3\x07\tConnector\xca\xf9\xb3\x07\x01*\xca\xf9\xb3\x07\x03\x63li\xd2\xf9\xb3\x07\x04\x63on-B\x87\x01\n\x19\x63om.strongdm.api.plumbingB\x1b\x44iscoveryConnectorsPlumbingZ5github.com/strongdm/strongdm-sdk-go/v3/internal/v1;v1\xc2\x92\xb4\x07\x06\xa2\x8c\xb4\x07\x01*\xc2\x92\xb4\x07\x08\xa2\x8c\xb4\x07\x03\x63lib\x06proto3')
35
35
 
36
36
 
37
37
 
@@ -270,14 +270,16 @@ if _descriptor._USE_C_DESCRIPTORS == False:
270
270
  _GCPCONNECTOR.fields_by_name['include_tags']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001'
271
271
  _GCPCONNECTOR.fields_by_name['exclude_tags']._options = None
272
272
  _GCPCONNECTOR.fields_by_name['exclude_tags']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001'
273
- _GCPCONNECTOR.fields_by_name['project_number']._options = None
274
- _GCPCONNECTOR.fields_by_name['project_number']._serialized_options = b'\362\370\263\007\017\260\363\263\007\001\312\363\263\007\005\210\364\263\007\001'
275
- _GCPCONNECTOR.fields_by_name['provider_id']._options = None
276
- _GCPCONNECTOR.fields_by_name['provider_id']._serialized_options = b'\362\370\263\007\017\260\363\263\007\001\312\363\263\007\005\210\364\263\007\001'
277
- _GCPCONNECTOR.fields_by_name['pool_id']._options = None
278
- _GCPCONNECTOR.fields_by_name['pool_id']._serialized_options = b'\362\370\263\007\017\260\363\263\007\001\312\363\263\007\005\210\364\263\007\001'
279
273
  _GCPCONNECTOR.fields_by_name['project_ids']._options = None
280
274
  _GCPCONNECTOR.fields_by_name['project_ids']._serialized_options = b'\362\370\263\007\017\260\363\263\007\001\312\363\263\007\005\210\364\263\007\001'
275
+ _GCPCONNECTOR.fields_by_name['workload_project_number']._options = None
276
+ _GCPCONNECTOR.fields_by_name['workload_project_number']._serialized_options = b'\362\370\263\007\017\260\363\263\007\001\312\363\263\007\005\210\364\263\007\001'
277
+ _GCPCONNECTOR.fields_by_name['workload_project_id']._options = None
278
+ _GCPCONNECTOR.fields_by_name['workload_project_id']._serialized_options = b'\362\370\263\007\017\260\363\263\007\001\312\363\263\007\005\210\364\263\007\001'
279
+ _GCPCONNECTOR.fields_by_name['workload_provider_id']._options = None
280
+ _GCPCONNECTOR.fields_by_name['workload_provider_id']._serialized_options = b'\362\370\263\007\017\260\363\263\007\001\312\363\263\007\005\210\364\263\007\001'
281
+ _GCPCONNECTOR.fields_by_name['workload_pool_id']._options = None
282
+ _GCPCONNECTOR.fields_by_name['workload_pool_id']._serialized_options = b'\362\370\263\007\017\260\363\263\007\001\312\363\263\007\005\210\364\263\007\001'
281
283
  _GCPCONNECTOR._options = None
282
284
  _GCPCONNECTOR._serialized_options = b'\372\370\263\007N\250\363\263\007\001\312\363\263\0076\302\364\263\007\031\n\022terraform-provider\022\003gcp\302\364\263\007\023\n\014json_gateway\022\003gcp\322\363\263\007\001*\322\363\263\007\003cli'
283
285
  _DISCOVERYCONNECTORS._options = None
@@ -319,7 +321,7 @@ if _descriptor._USE_C_DESCRIPTORS == False:
319
321
  _AZURECONNECTOR._serialized_start=2413
320
322
  _AZURECONNECTOR._serialized_end=2885
321
323
  _GCPCONNECTOR._serialized_start=2888
322
- _GCPCONNECTOR._serialized_end=3395
323
- _DISCOVERYCONNECTORS._serialized_start=3398
324
- _DISCOVERYCONNECTORS._serialized_end=3997
324
+ _GCPCONNECTOR._serialized_end=3473
325
+ _DISCOVERYCONNECTORS._serialized_start=3476
326
+ _DISCOVERYCONNECTORS._serialized_end=4075
325
327
  # @@protoc_insertion_point(module_scope)
@@ -13949,12 +13949,13 @@ class GCPConnector:
13949
13949
  'id',
13950
13950
  'include_tags',
13951
13951
  'name',
13952
- 'pool_id',
13953
13952
  'project_ids',
13954
- 'project_number',
13955
- 'provider_id',
13956
13953
  'scan_period',
13957
13954
  'services',
13955
+ 'workload_pool_id',
13956
+ 'workload_project_id',
13957
+ 'workload_project_number',
13958
+ 'workload_provider_id',
13958
13959
  ]
13959
13960
 
13960
13961
  def __init__(
@@ -13964,12 +13965,13 @@ class GCPConnector:
13964
13965
  id=None,
13965
13966
  include_tags=None,
13966
13967
  name=None,
13967
- pool_id=None,
13968
13968
  project_ids=None,
13969
- project_number=None,
13970
- provider_id=None,
13971
13969
  scan_period=None,
13972
13970
  services=None,
13971
+ workload_pool_id=None,
13972
+ workload_project_id=None,
13973
+ workload_project_number=None,
13974
+ workload_provider_id=None,
13973
13975
  ):
13974
13976
  self.description = description if description is not None else ''
13975
13977
  '''
@@ -13993,22 +13995,10 @@ class GCPConnector:
13993
13995
  '''
13994
13996
  Unique human-readable name of the Connector.
13995
13997
  '''
13996
- self.pool_id = pool_id if pool_id is not None else ''
13997
- '''
13998
- PoolId is the GCP Workload Pool Identifier used to authenticate our JWT
13999
- '''
14000
13998
  self.project_ids = project_ids if project_ids is not None else []
14001
13999
  '''
14002
14000
  ProjectIds is the list of GCP Projects the connector will scan
14003
14001
  '''
14004
- self.project_number = project_number if project_number is not None else ''
14005
- '''
14006
- ProjectNumber is the GCP Project the Workload Pool is defined in
14007
- '''
14008
- self.provider_id = provider_id if provider_id is not None else ''
14009
- '''
14010
- ProviderId is the GCP Workload Provider Identifier used to authenticate our JWT
14011
- '''
14012
14002
  self.scan_period = scan_period if scan_period is not None else ''
14013
14003
  '''
14014
14004
  ScanPeriod identifies which remote system this Connector discovers
@@ -14017,6 +14007,22 @@ class GCPConnector:
14017
14007
  '''
14018
14008
  Services is a list of services this connector should scan.
14019
14009
  '''
14010
+ self.workload_pool_id = workload_pool_id if workload_pool_id is not None else ''
14011
+ '''
14012
+ WorkloadPoolId is the GCP Workload Pool Identifier used to authenticate our JWT
14013
+ '''
14014
+ self.workload_project_id = workload_project_id if workload_project_id is not None else ''
14015
+ '''
14016
+ WorkloadProjectId is the GCP Project ID where the Workload Pool is defined
14017
+ '''
14018
+ self.workload_project_number = workload_project_number if workload_project_number is not None else ''
14019
+ '''
14020
+ WorkloadProjectNumber is the GCP Project Number where the Workload Pool is defined
14021
+ '''
14022
+ self.workload_provider_id = workload_provider_id if workload_provider_id is not None else ''
14023
+ '''
14024
+ WorkloadProviderId is the GCP Workload Provider Identifier used to authenticate our JWT
14025
+ '''
14020
14026
 
14021
14027
  def __repr__(self):
14022
14028
  return '<sdm.GCPConnector ' + \
@@ -14025,12 +14031,13 @@ class GCPConnector:
14025
14031
  'id: ' + repr(self.id) + ' ' +\
14026
14032
  'include_tags: ' + repr(self.include_tags) + ' ' +\
14027
14033
  'name: ' + repr(self.name) + ' ' +\
14028
- 'pool_id: ' + repr(self.pool_id) + ' ' +\
14029
14034
  'project_ids: ' + repr(self.project_ids) + ' ' +\
14030
- 'project_number: ' + repr(self.project_number) + ' ' +\
14031
- 'provider_id: ' + repr(self.provider_id) + ' ' +\
14032
14035
  'scan_period: ' + repr(self.scan_period) + ' ' +\
14033
14036
  'services: ' + repr(self.services) + ' ' +\
14037
+ 'workload_pool_id: ' + repr(self.workload_pool_id) + ' ' +\
14038
+ 'workload_project_id: ' + repr(self.workload_project_id) + ' ' +\
14039
+ 'workload_project_number: ' + repr(self.workload_project_number) + ' ' +\
14040
+ 'workload_provider_id: ' + repr(self.workload_provider_id) + ' ' +\
14034
14041
  '>'
14035
14042
 
14036
14043
  def to_dict(self):
@@ -14040,12 +14047,13 @@ class GCPConnector:
14040
14047
  'id': self.id,
14041
14048
  'include_tags': self.include_tags,
14042
14049
  'name': self.name,
14043
- 'pool_id': self.pool_id,
14044
14050
  'project_ids': self.project_ids,
14045
- 'project_number': self.project_number,
14046
- 'provider_id': self.provider_id,
14047
14051
  'scan_period': self.scan_period,
14048
14052
  'services': self.services,
14053
+ 'workload_pool_id': self.workload_pool_id,
14054
+ 'workload_project_id': self.workload_project_id,
14055
+ 'workload_project_number': self.workload_project_number,
14056
+ 'workload_provider_id': self.workload_provider_id,
14049
14057
  }
14050
14058
 
14051
14059
  @classmethod
@@ -14056,12 +14064,13 @@ class GCPConnector:
14056
14064
  id=d.get('id'),
14057
14065
  include_tags=d.get('include_tags'),
14058
14066
  name=d.get('name'),
14059
- pool_id=d.get('pool_id'),
14060
14067
  project_ids=d.get('project_ids'),
14061
- project_number=d.get('project_number'),
14062
- provider_id=d.get('provider_id'),
14063
14068
  scan_period=d.get('scan_period'),
14064
14069
  services=d.get('services'),
14070
+ workload_pool_id=d.get('workload_pool_id'),
14071
+ workload_project_id=d.get('workload_project_id'),
14072
+ workload_project_number=d.get('workload_project_number'),
14073
+ workload_provider_id=d.get('workload_provider_id'),
14065
14074
  )
14066
14075
 
14067
14076
 
@@ -6739,12 +6739,13 @@ def convert_gcp_connector_to_porcelain(plumbing):
6739
6739
  porcelain.include_tags = convert_repeated_tag_to_porcelain(
6740
6740
  plumbing.include_tags)
6741
6741
  porcelain.name = (plumbing.name)
6742
- porcelain.pool_id = (plumbing.pool_id)
6743
6742
  porcelain.project_ids = (plumbing.project_ids)
6744
- porcelain.project_number = (plumbing.project_number)
6745
- porcelain.provider_id = (plumbing.provider_id)
6746
6743
  porcelain.scan_period = (plumbing.scan_period)
6747
6744
  porcelain.services = (plumbing.services)
6745
+ porcelain.workload_pool_id = (plumbing.workload_pool_id)
6746
+ porcelain.workload_project_id = (plumbing.workload_project_id)
6747
+ porcelain.workload_project_number = (plumbing.workload_project_number)
6748
+ porcelain.workload_provider_id = (plumbing.workload_provider_id)
6748
6749
  return porcelain
6749
6750
 
6750
6751
 
@@ -6761,14 +6762,15 @@ def convert_gcp_connector_to_plumbing(porcelain):
6761
6762
  plumbing.include_tags.extend(
6762
6763
  convert_repeated_tag_to_plumbing(porcelain.include_tags))
6763
6764
  plumbing.name = (porcelain.name)
6764
- plumbing.pool_id = (porcelain.pool_id)
6765
6765
  del plumbing.project_ids[:]
6766
6766
  plumbing.project_ids.extend((porcelain.project_ids))
6767
- plumbing.project_number = (porcelain.project_number)
6768
- plumbing.provider_id = (porcelain.provider_id)
6769
6767
  plumbing.scan_period = (porcelain.scan_period)
6770
6768
  del plumbing.services[:]
6771
6769
  plumbing.services.extend((porcelain.services))
6770
+ plumbing.workload_pool_id = (porcelain.workload_pool_id)
6771
+ plumbing.workload_project_id = (porcelain.workload_project_id)
6772
+ plumbing.workload_project_number = (porcelain.workload_project_number)
6773
+ plumbing.workload_provider_id = (porcelain.workload_provider_id)
6772
6774
  return plumbing
6773
6775
 
6774
6776
 
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: strongdm
3
- Version: 15.41.0
3
+ Version: 15.44.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.41.0.tar.gz
9
+ Download-URL: https://github.com/strongdm/strongdm-sdk-python/archive/v15.44.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
@@ -1,2 +1,3 @@
1
+ cryptography>=46.0.0
1
2
  googleapis-common-protos<2,>1.56.2
2
3
  grpcio>=1.42.0
File without changes
File without changes
File without changes
File without changes