strongdm 11.17.0__zip → 11.18.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 (145) hide show
  1. {strongdm-11.17.0 → strongdm-11.18.0}/PKG-INFO +2 -2
  2. {strongdm-11.17.0 → strongdm-11.18.0}/setup.py +2 -2
  3. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/client.py +1 -1
  4. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/drivers_pb2.py +268 -178
  5. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/models.py +335 -0
  6. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/plumbing.py +123 -0
  7. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/svc.py +2 -0
  8. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm.egg-info/PKG-INFO +2 -2
  9. {strongdm-11.17.0 → strongdm-11.18.0}/LICENSE +0 -0
  10. {strongdm-11.17.0 → strongdm-11.18.0}/README.md +0 -0
  11. {strongdm-11.17.0 → strongdm-11.18.0}/setup.cfg +0 -0
  12. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/__init__.py +0 -0
  13. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/access_request_events_history_pb2.py +0 -0
  14. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/access_request_events_history_pb2_grpc.py +0 -0
  15. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/access_requests_history_pb2.py +0 -0
  16. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/access_requests_history_pb2_grpc.py +0 -0
  17. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/access_requests_pb2.py +0 -0
  18. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/access_requests_pb2_grpc.py +0 -0
  19. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/account_attachments_history_pb2.py +0 -0
  20. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/account_attachments_history_pb2_grpc.py +0 -0
  21. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/account_attachments_pb2.py +0 -0
  22. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/account_attachments_pb2_grpc.py +0 -0
  23. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/account_grants_history_pb2.py +0 -0
  24. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/account_grants_history_pb2_grpc.py +0 -0
  25. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/account_grants_pb2.py +0 -0
  26. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/account_grants_pb2_grpc.py +0 -0
  27. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/account_permissions_pb2.py +0 -0
  28. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/account_permissions_pb2_grpc.py +0 -0
  29. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/account_resources_history_pb2.py +0 -0
  30. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/account_resources_history_pb2_grpc.py +0 -0
  31. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/account_resources_pb2.py +0 -0
  32. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/account_resources_pb2_grpc.py +0 -0
  33. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/accounts_history_pb2.py +0 -0
  34. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/accounts_history_pb2_grpc.py +0 -0
  35. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/accounts_pb2.py +0 -0
  36. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/accounts_pb2_grpc.py +0 -0
  37. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/activities_pb2.py +0 -0
  38. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/activities_pb2_grpc.py +0 -0
  39. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/approval_workflow_approvers_history_pb2.py +0 -0
  40. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/approval_workflow_approvers_history_pb2_grpc.py +0 -0
  41. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/approval_workflow_approvers_pb2.py +0 -0
  42. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/approval_workflow_approvers_pb2_grpc.py +0 -0
  43. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/approval_workflow_steps_history_pb2.py +0 -0
  44. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/approval_workflow_steps_history_pb2_grpc.py +0 -0
  45. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/approval_workflow_steps_pb2.py +0 -0
  46. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/approval_workflow_steps_pb2_grpc.py +0 -0
  47. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/approval_workflows_history_pb2.py +0 -0
  48. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/approval_workflows_history_pb2_grpc.py +0 -0
  49. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/approval_workflows_pb2.py +0 -0
  50. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/approval_workflows_pb2_grpc.py +0 -0
  51. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/constants.py +0 -0
  52. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/control_panel_pb2.py +0 -0
  53. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/control_panel_pb2_grpc.py +0 -0
  54. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/drivers_pb2_grpc.py +0 -0
  55. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/errors.py +0 -0
  56. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/health_checks_pb2.py +0 -0
  57. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/health_checks_pb2_grpc.py +0 -0
  58. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/identity_aliases_history_pb2.py +0 -0
  59. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/identity_aliases_history_pb2_grpc.py +0 -0
  60. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/identity_aliases_pb2.py +0 -0
  61. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/identity_aliases_pb2_grpc.py +0 -0
  62. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/identity_sets_history_pb2.py +0 -0
  63. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/identity_sets_history_pb2_grpc.py +0 -0
  64. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/identity_sets_pb2.py +0 -0
  65. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/identity_sets_pb2_grpc.py +0 -0
  66. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/nodes_history_pb2.py +0 -0
  67. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/nodes_history_pb2_grpc.py +0 -0
  68. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/nodes_pb2.py +0 -0
  69. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/nodes_pb2_grpc.py +0 -0
  70. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/options_pb2.py +0 -0
  71. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/options_pb2_grpc.py +0 -0
  72. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/organization_history_pb2.py +0 -0
  73. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/organization_history_pb2_grpc.py +0 -0
  74. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/peering_group_nodes_pb2.py +0 -0
  75. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/peering_group_nodes_pb2_grpc.py +0 -0
  76. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/peering_group_peers_pb2.py +0 -0
  77. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/peering_group_peers_pb2_grpc.py +0 -0
  78. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/peering_group_resources_pb2.py +0 -0
  79. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/peering_group_resources_pb2_grpc.py +0 -0
  80. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/peering_groups_pb2.py +0 -0
  81. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/peering_groups_pb2_grpc.py +0 -0
  82. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/policies_history_pb2.py +0 -0
  83. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/policies_history_pb2_grpc.py +0 -0
  84. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/policies_pb2.py +0 -0
  85. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/policies_pb2_grpc.py +0 -0
  86. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/proxy_cluster_keys_pb2.py +0 -0
  87. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/proxy_cluster_keys_pb2_grpc.py +0 -0
  88. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/queries_pb2.py +0 -0
  89. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/queries_pb2_grpc.py +0 -0
  90. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/remote_identities_history_pb2.py +0 -0
  91. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/remote_identities_history_pb2_grpc.py +0 -0
  92. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/remote_identities_pb2.py +0 -0
  93. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/remote_identities_pb2_grpc.py +0 -0
  94. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/remote_identity_groups_history_pb2.py +0 -0
  95. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/remote_identity_groups_history_pb2_grpc.py +0 -0
  96. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/remote_identity_groups_pb2.py +0 -0
  97. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/remote_identity_groups_pb2_grpc.py +0 -0
  98. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/replays_pb2.py +0 -0
  99. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/replays_pb2_grpc.py +0 -0
  100. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/resources_history_pb2.py +0 -0
  101. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/resources_history_pb2_grpc.py +0 -0
  102. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/resources_pb2.py +0 -0
  103. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/resources_pb2_grpc.py +0 -0
  104. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/role_resources_history_pb2.py +0 -0
  105. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/role_resources_history_pb2_grpc.py +0 -0
  106. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/role_resources_pb2.py +0 -0
  107. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/role_resources_pb2_grpc.py +0 -0
  108. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/roles_history_pb2.py +0 -0
  109. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/roles_history_pb2_grpc.py +0 -0
  110. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/roles_pb2.py +0 -0
  111. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/roles_pb2_grpc.py +0 -0
  112. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/secret_engine_policy_pb2_grpc.py +0 -0
  113. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/secret_engine_types_pb2_grpc.py +0 -0
  114. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/secret_store_healths_pb2.py +0 -0
  115. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/secret_store_healths_pb2_grpc.py +0 -0
  116. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/secret_store_types_pb2.py +0 -0
  117. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/secret_store_types_pb2_grpc.py +0 -0
  118. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/secret_stores_history_pb2.py +0 -0
  119. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/secret_stores_history_pb2_grpc.py +0 -0
  120. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/secret_stores_pb2.py +0 -0
  121. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/secret_stores_pb2_grpc.py +0 -0
  122. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/spec_pb2.py +0 -0
  123. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/spec_pb2_grpc.py +0 -0
  124. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/tags_pb2.py +0 -0
  125. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/tags_pb2_grpc.py +0 -0
  126. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflow_approvers_history_pb2.py +0 -0
  127. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflow_approvers_history_pb2_grpc.py +0 -0
  128. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflow_approvers_pb2.py +0 -0
  129. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflow_approvers_pb2_grpc.py +0 -0
  130. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflow_assignments_history_pb2.py +0 -0
  131. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflow_assignments_history_pb2_grpc.py +0 -0
  132. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflow_assignments_pb2.py +0 -0
  133. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflow_assignments_pb2_grpc.py +0 -0
  134. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflow_roles_history_pb2.py +0 -0
  135. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflow_roles_history_pb2_grpc.py +0 -0
  136. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflow_roles_pb2.py +0 -0
  137. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflow_roles_pb2_grpc.py +0 -0
  138. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflows_history_pb2.py +0 -0
  139. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflows_history_pb2_grpc.py +0 -0
  140. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflows_pb2.py +0 -0
  141. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm/workflows_pb2_grpc.py +0 -0
  142. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm.egg-info/SOURCES.txt +0 -0
  143. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm.egg-info/dependency_links.txt +0 -0
  144. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm.egg-info/requires.txt +0 -0
  145. {strongdm-11.17.0 → strongdm-11.18.0}/strongdm.egg-info/top_level.txt +0 -0
@@ -10268,6 +10268,169 @@ class GCPCertX509Store:
10268
10268
  )
10269
10269
 
10270
10270
 
10271
+ class GCPConsole:
10272
+ '''
10273
+ GCPConsole is currently unstable, and its API may change, or it may be removed,
10274
+ without a major version bump.
10275
+ '''
10276
+ __slots__ = [
10277
+ 'bind_interface',
10278
+ 'egress_filter',
10279
+ 'healthy',
10280
+ 'id',
10281
+ 'identity_alias_healthcheck_username',
10282
+ 'identity_set_id',
10283
+ 'name',
10284
+ 'port_override',
10285
+ 'proxy_cluster_id',
10286
+ 'secret_store_id',
10287
+ 'session_expiry',
10288
+ 'subdomain',
10289
+ 'tags',
10290
+ 'workforce_pool_id',
10291
+ 'workforce_provider_id',
10292
+ ]
10293
+
10294
+ def __init__(
10295
+ self,
10296
+ bind_interface=None,
10297
+ egress_filter=None,
10298
+ healthy=None,
10299
+ id=None,
10300
+ identity_alias_healthcheck_username=None,
10301
+ identity_set_id=None,
10302
+ name=None,
10303
+ port_override=None,
10304
+ proxy_cluster_id=None,
10305
+ secret_store_id=None,
10306
+ session_expiry=None,
10307
+ subdomain=None,
10308
+ tags=None,
10309
+ workforce_pool_id=None,
10310
+ workforce_provider_id=None,
10311
+ ):
10312
+ self.bind_interface = bind_interface if bind_interface is not None else ''
10313
+ '''
10314
+ The bind interface is the IP address to which the port override of a resource is bound (for example, 127.0.0.1). It is automatically generated if not provided.
10315
+ '''
10316
+ self.egress_filter = egress_filter if egress_filter is not None else ''
10317
+ '''
10318
+ A filter applied to the routing logic to pin datasource to nodes.
10319
+ '''
10320
+ self.healthy = healthy if healthy is not None else False
10321
+ '''
10322
+ True if the datasource is reachable and the credentials are valid.
10323
+ '''
10324
+ self.id = id if id is not None else ''
10325
+ '''
10326
+ Unique identifier of the Resource.
10327
+ '''
10328
+ self.identity_alias_healthcheck_username = identity_alias_healthcheck_username if identity_alias_healthcheck_username is not None else ''
10329
+ '''
10330
+ The username to use for healthchecks, when clients otherwise connect with their own identity alias username.
10331
+ '''
10332
+ self.identity_set_id = identity_set_id if identity_set_id is not None else ''
10333
+ '''
10334
+ The ID of the identity set to use for identity connections.
10335
+ '''
10336
+ self.name = name if name is not None else ''
10337
+ '''
10338
+ Unique human-readable name of the Resource.
10339
+ '''
10340
+ self.port_override = port_override if port_override is not None else 0
10341
+ '''
10342
+ The local port used by clients to connect to this resource.
10343
+ '''
10344
+ self.proxy_cluster_id = proxy_cluster_id if proxy_cluster_id is not None else ''
10345
+ '''
10346
+ ID of the proxy cluster for this resource, if any.
10347
+ '''
10348
+ self.secret_store_id = secret_store_id if secret_store_id is not None else ''
10349
+ '''
10350
+ ID of the secret store containing credentials for this resource, if any.
10351
+ '''
10352
+ self.session_expiry = session_expiry if session_expiry is not None else 0
10353
+ '''
10354
+ The length of time in seconds console sessions will live before needing to reauthenticate.
10355
+ '''
10356
+ self.subdomain = subdomain if subdomain is not None else ''
10357
+ '''
10358
+ Subdomain is the local DNS address. (e.g. app-prod1 turns into app-prod1.your-org-name.sdm.network)
10359
+ '''
10360
+ self.tags = tags if tags is not None else _porcelain_zero_value_tags()
10361
+ '''
10362
+ Tags is a map of key, value pairs.
10363
+ '''
10364
+ self.workforce_pool_id = workforce_pool_id if workforce_pool_id is not None else ''
10365
+ '''
10366
+ The ID of the Workforce Identity Pool in GCP to use for federated authentication.
10367
+ '''
10368
+ self.workforce_provider_id = workforce_provider_id if workforce_provider_id is not None else ''
10369
+ '''
10370
+ The ID of the Workforce Identity Provider in GCP to use for federated authentication.
10371
+ '''
10372
+
10373
+ def __repr__(self):
10374
+ return '<sdm.GCPConsole ' + \
10375
+ 'bind_interface: ' + repr(self.bind_interface) + ' ' +\
10376
+ 'egress_filter: ' + repr(self.egress_filter) + ' ' +\
10377
+ 'healthy: ' + repr(self.healthy) + ' ' +\
10378
+ 'id: ' + repr(self.id) + ' ' +\
10379
+ 'identity_alias_healthcheck_username: ' + repr(self.identity_alias_healthcheck_username) + ' ' +\
10380
+ 'identity_set_id: ' + repr(self.identity_set_id) + ' ' +\
10381
+ 'name: ' + repr(self.name) + ' ' +\
10382
+ 'port_override: ' + repr(self.port_override) + ' ' +\
10383
+ 'proxy_cluster_id: ' + repr(self.proxy_cluster_id) + ' ' +\
10384
+ 'secret_store_id: ' + repr(self.secret_store_id) + ' ' +\
10385
+ 'session_expiry: ' + repr(self.session_expiry) + ' ' +\
10386
+ 'subdomain: ' + repr(self.subdomain) + ' ' +\
10387
+ 'tags: ' + repr(self.tags) + ' ' +\
10388
+ 'workforce_pool_id: ' + repr(self.workforce_pool_id) + ' ' +\
10389
+ 'workforce_provider_id: ' + repr(self.workforce_provider_id) + ' ' +\
10390
+ '>'
10391
+
10392
+ def to_dict(self):
10393
+ return {
10394
+ 'bind_interface': self.bind_interface,
10395
+ 'egress_filter': self.egress_filter,
10396
+ 'healthy': self.healthy,
10397
+ 'id': self.id,
10398
+ 'identity_alias_healthcheck_username':
10399
+ self.identity_alias_healthcheck_username,
10400
+ 'identity_set_id': self.identity_set_id,
10401
+ 'name': self.name,
10402
+ 'port_override': self.port_override,
10403
+ 'proxy_cluster_id': self.proxy_cluster_id,
10404
+ 'secret_store_id': self.secret_store_id,
10405
+ 'session_expiry': self.session_expiry,
10406
+ 'subdomain': self.subdomain,
10407
+ 'tags': self.tags,
10408
+ 'workforce_pool_id': self.workforce_pool_id,
10409
+ 'workforce_provider_id': self.workforce_provider_id,
10410
+ }
10411
+
10412
+ @classmethod
10413
+ def from_dict(cls, d):
10414
+ return cls(
10415
+ bind_interface=d.get('bind_interface'),
10416
+ egress_filter=d.get('egress_filter'),
10417
+ healthy=d.get('healthy'),
10418
+ id=d.get('id'),
10419
+ identity_alias_healthcheck_username=d.get(
10420
+ 'identity_alias_healthcheck_username'),
10421
+ identity_set_id=d.get('identity_set_id'),
10422
+ name=d.get('name'),
10423
+ port_override=d.get('port_override'),
10424
+ proxy_cluster_id=d.get('proxy_cluster_id'),
10425
+ secret_store_id=d.get('secret_store_id'),
10426
+ session_expiry=d.get('session_expiry'),
10427
+ subdomain=d.get('subdomain'),
10428
+ tags=d.get('tags'),
10429
+ workforce_pool_id=d.get('workforce_pool_id'),
10430
+ workforce_provider_id=d.get('workforce_provider_id'),
10431
+ )
10432
+
10433
+
10271
10434
  class GCPStore:
10272
10435
  __slots__ = [
10273
10436
  'id',
@@ -10326,6 +10489,178 @@ class GCPStore:
10326
10489
  )
10327
10490
 
10328
10491
 
10492
+ class GCPWIF:
10493
+ '''
10494
+ GCPWIF is currently unstable, and its API may change, or it may be removed,
10495
+ without a major version bump.
10496
+ '''
10497
+ __slots__ = [
10498
+ 'bind_interface',
10499
+ 'egress_filter',
10500
+ 'healthy',
10501
+ 'id',
10502
+ 'identity_alias_healthcheck_username',
10503
+ 'identity_set_id',
10504
+ 'name',
10505
+ 'port_override',
10506
+ 'proxy_cluster_id',
10507
+ 'scopes',
10508
+ 'secret_store_id',
10509
+ 'session_expiry',
10510
+ 'subdomain',
10511
+ 'tags',
10512
+ 'workforce_pool_id',
10513
+ 'workforce_provider_id',
10514
+ ]
10515
+
10516
+ def __init__(
10517
+ self,
10518
+ bind_interface=None,
10519
+ egress_filter=None,
10520
+ healthy=None,
10521
+ id=None,
10522
+ identity_alias_healthcheck_username=None,
10523
+ identity_set_id=None,
10524
+ name=None,
10525
+ port_override=None,
10526
+ proxy_cluster_id=None,
10527
+ scopes=None,
10528
+ secret_store_id=None,
10529
+ session_expiry=None,
10530
+ subdomain=None,
10531
+ tags=None,
10532
+ workforce_pool_id=None,
10533
+ workforce_provider_id=None,
10534
+ ):
10535
+ self.bind_interface = bind_interface if bind_interface is not None else ''
10536
+ '''
10537
+ The bind interface is the IP address to which the port override of a resource is bound (for example, 127.0.0.1). It is automatically generated if not provided.
10538
+ '''
10539
+ self.egress_filter = egress_filter if egress_filter is not None else ''
10540
+ '''
10541
+ A filter applied to the routing logic to pin datasource to nodes.
10542
+ '''
10543
+ self.healthy = healthy if healthy is not None else False
10544
+ '''
10545
+ True if the datasource is reachable and the credentials are valid.
10546
+ '''
10547
+ self.id = id if id is not None else ''
10548
+ '''
10549
+ Unique identifier of the Resource.
10550
+ '''
10551
+ self.identity_alias_healthcheck_username = identity_alias_healthcheck_username if identity_alias_healthcheck_username is not None else ''
10552
+ '''
10553
+ The username to use for healthchecks, when clients otherwise connect with their own identity alias username.
10554
+ '''
10555
+ self.identity_set_id = identity_set_id if identity_set_id is not None else ''
10556
+ '''
10557
+ The ID of the identity set to use for identity connections.
10558
+ '''
10559
+ self.name = name if name is not None else ''
10560
+ '''
10561
+ Unique human-readable name of the Resource.
10562
+ '''
10563
+ self.port_override = port_override if port_override is not None else 0
10564
+ '''
10565
+ The local port used by clients to connect to this resource.
10566
+ '''
10567
+ self.proxy_cluster_id = proxy_cluster_id if proxy_cluster_id is not None else ''
10568
+ '''
10569
+ ID of the proxy cluster for this resource, if any.
10570
+ '''
10571
+ self.scopes = scopes if scopes is not None else ''
10572
+ '''
10573
+ Space separated scopes that this login should assume into when authenticating.
10574
+ '''
10575
+ self.secret_store_id = secret_store_id if secret_store_id is not None else ''
10576
+ '''
10577
+ ID of the secret store containing credentials for this resource, if any.
10578
+ '''
10579
+ self.session_expiry = session_expiry if session_expiry is not None else 0
10580
+ '''
10581
+ The length of time in seconds console sessions will live before needing to reauthenticate.
10582
+ '''
10583
+ self.subdomain = subdomain if subdomain is not None else ''
10584
+ '''
10585
+ Subdomain is the local DNS address. (e.g. app-prod1 turns into app-prod1.your-org-name.sdm.network)
10586
+ '''
10587
+ self.tags = tags if tags is not None else _porcelain_zero_value_tags()
10588
+ '''
10589
+ Tags is a map of key, value pairs.
10590
+ '''
10591
+ self.workforce_pool_id = workforce_pool_id if workforce_pool_id is not None else ''
10592
+ '''
10593
+ The ID of the Workforce Identity Pool in GCP to use for federated authentication.
10594
+ '''
10595
+ self.workforce_provider_id = workforce_provider_id if workforce_provider_id is not None else ''
10596
+ '''
10597
+ The ID of the Workforce Identity Provider in GCP to use for federated authentication.
10598
+ '''
10599
+
10600
+ def __repr__(self):
10601
+ return '<sdm.GCPWIF ' + \
10602
+ 'bind_interface: ' + repr(self.bind_interface) + ' ' +\
10603
+ 'egress_filter: ' + repr(self.egress_filter) + ' ' +\
10604
+ 'healthy: ' + repr(self.healthy) + ' ' +\
10605
+ 'id: ' + repr(self.id) + ' ' +\
10606
+ 'identity_alias_healthcheck_username: ' + repr(self.identity_alias_healthcheck_username) + ' ' +\
10607
+ 'identity_set_id: ' + repr(self.identity_set_id) + ' ' +\
10608
+ 'name: ' + repr(self.name) + ' ' +\
10609
+ 'port_override: ' + repr(self.port_override) + ' ' +\
10610
+ 'proxy_cluster_id: ' + repr(self.proxy_cluster_id) + ' ' +\
10611
+ 'scopes: ' + repr(self.scopes) + ' ' +\
10612
+ 'secret_store_id: ' + repr(self.secret_store_id) + ' ' +\
10613
+ 'session_expiry: ' + repr(self.session_expiry) + ' ' +\
10614
+ 'subdomain: ' + repr(self.subdomain) + ' ' +\
10615
+ 'tags: ' + repr(self.tags) + ' ' +\
10616
+ 'workforce_pool_id: ' + repr(self.workforce_pool_id) + ' ' +\
10617
+ 'workforce_provider_id: ' + repr(self.workforce_provider_id) + ' ' +\
10618
+ '>'
10619
+
10620
+ def to_dict(self):
10621
+ return {
10622
+ 'bind_interface': self.bind_interface,
10623
+ 'egress_filter': self.egress_filter,
10624
+ 'healthy': self.healthy,
10625
+ 'id': self.id,
10626
+ 'identity_alias_healthcheck_username':
10627
+ self.identity_alias_healthcheck_username,
10628
+ 'identity_set_id': self.identity_set_id,
10629
+ 'name': self.name,
10630
+ 'port_override': self.port_override,
10631
+ 'proxy_cluster_id': self.proxy_cluster_id,
10632
+ 'scopes': self.scopes,
10633
+ 'secret_store_id': self.secret_store_id,
10634
+ 'session_expiry': self.session_expiry,
10635
+ 'subdomain': self.subdomain,
10636
+ 'tags': self.tags,
10637
+ 'workforce_pool_id': self.workforce_pool_id,
10638
+ 'workforce_provider_id': self.workforce_provider_id,
10639
+ }
10640
+
10641
+ @classmethod
10642
+ def from_dict(cls, d):
10643
+ return cls(
10644
+ bind_interface=d.get('bind_interface'),
10645
+ egress_filter=d.get('egress_filter'),
10646
+ healthy=d.get('healthy'),
10647
+ id=d.get('id'),
10648
+ identity_alias_healthcheck_username=d.get(
10649
+ 'identity_alias_healthcheck_username'),
10650
+ identity_set_id=d.get('identity_set_id'),
10651
+ name=d.get('name'),
10652
+ port_override=d.get('port_override'),
10653
+ proxy_cluster_id=d.get('proxy_cluster_id'),
10654
+ scopes=d.get('scopes'),
10655
+ secret_store_id=d.get('secret_store_id'),
10656
+ session_expiry=d.get('session_expiry'),
10657
+ subdomain=d.get('subdomain'),
10658
+ tags=d.get('tags'),
10659
+ workforce_pool_id=d.get('workforce_pool_id'),
10660
+ workforce_provider_id=d.get('workforce_provider_id'),
10661
+ )
10662
+
10663
+
10329
10664
  class Gateway:
10330
10665
  '''
10331
10666
  Gateway represents a StrongDM CLI installation running in gateway mode.
@@ -4894,6 +4894,64 @@ def convert_repeated_gcp_cert_x_509_store_to_porcelain(plumbings):
4894
4894
  ]
4895
4895
 
4896
4896
 
4897
+ def convert_gcp_console_to_porcelain(plumbing):
4898
+ if plumbing is None:
4899
+ return None
4900
+ porcelain = models.GCPConsole()
4901
+ porcelain.bind_interface = (plumbing.bind_interface)
4902
+ porcelain.egress_filter = (plumbing.egress_filter)
4903
+ porcelain.healthy = (plumbing.healthy)
4904
+ porcelain.id = (plumbing.id)
4905
+ porcelain.identity_alias_healthcheck_username = (
4906
+ plumbing.identity_alias_healthcheck_username)
4907
+ porcelain.identity_set_id = (plumbing.identity_set_id)
4908
+ porcelain.name = (plumbing.name)
4909
+ porcelain.port_override = (plumbing.port_override)
4910
+ porcelain.proxy_cluster_id = (plumbing.proxy_cluster_id)
4911
+ porcelain.secret_store_id = (plumbing.secret_store_id)
4912
+ porcelain.session_expiry = (plumbing.session_expiry)
4913
+ porcelain.subdomain = (plumbing.subdomain)
4914
+ porcelain.tags = convert_tags_to_porcelain(plumbing.tags)
4915
+ porcelain.workforce_pool_id = (plumbing.workforce_pool_id)
4916
+ porcelain.workforce_provider_id = (plumbing.workforce_provider_id)
4917
+ return porcelain
4918
+
4919
+
4920
+ def convert_gcp_console_to_plumbing(porcelain):
4921
+ plumbing = GCPConsole()
4922
+ if porcelain is None:
4923
+ return plumbing
4924
+ plumbing.bind_interface = (porcelain.bind_interface)
4925
+ plumbing.egress_filter = (porcelain.egress_filter)
4926
+ plumbing.healthy = (porcelain.healthy)
4927
+ plumbing.id = (porcelain.id)
4928
+ plumbing.identity_alias_healthcheck_username = (
4929
+ porcelain.identity_alias_healthcheck_username)
4930
+ plumbing.identity_set_id = (porcelain.identity_set_id)
4931
+ plumbing.name = (porcelain.name)
4932
+ plumbing.port_override = (porcelain.port_override)
4933
+ plumbing.proxy_cluster_id = (porcelain.proxy_cluster_id)
4934
+ plumbing.secret_store_id = (porcelain.secret_store_id)
4935
+ plumbing.session_expiry = (porcelain.session_expiry)
4936
+ plumbing.subdomain = (porcelain.subdomain)
4937
+ plumbing.tags.CopyFrom(convert_tags_to_plumbing(porcelain.tags))
4938
+ plumbing.workforce_pool_id = (porcelain.workforce_pool_id)
4939
+ plumbing.workforce_provider_id = (porcelain.workforce_provider_id)
4940
+ return plumbing
4941
+
4942
+
4943
+ def convert_repeated_gcp_console_to_plumbing(porcelains):
4944
+ return [
4945
+ convert_gcp_console_to_plumbing(porcelain) for porcelain in porcelains
4946
+ ]
4947
+
4948
+
4949
+ def convert_repeated_gcp_console_to_porcelain(plumbings):
4950
+ return [
4951
+ convert_gcp_console_to_porcelain(plumbing) for plumbing in plumbings
4952
+ ]
4953
+
4954
+
4897
4955
  def convert_gcp_store_to_porcelain(plumbing):
4898
4956
  if plumbing is None:
4899
4957
  return None
@@ -4926,6 +4984,62 @@ def convert_repeated_gcp_store_to_porcelain(plumbings):
4926
4984
  return [convert_gcp_store_to_porcelain(plumbing) for plumbing in plumbings]
4927
4985
 
4928
4986
 
4987
+ def convert_gcpwif_to_porcelain(plumbing):
4988
+ if plumbing is None:
4989
+ return None
4990
+ porcelain = models.GCPWIF()
4991
+ porcelain.bind_interface = (plumbing.bind_interface)
4992
+ porcelain.egress_filter = (plumbing.egress_filter)
4993
+ porcelain.healthy = (plumbing.healthy)
4994
+ porcelain.id = (plumbing.id)
4995
+ porcelain.identity_alias_healthcheck_username = (
4996
+ plumbing.identity_alias_healthcheck_username)
4997
+ porcelain.identity_set_id = (plumbing.identity_set_id)
4998
+ porcelain.name = (plumbing.name)
4999
+ porcelain.port_override = (plumbing.port_override)
5000
+ porcelain.proxy_cluster_id = (plumbing.proxy_cluster_id)
5001
+ porcelain.scopes = (plumbing.scopes)
5002
+ porcelain.secret_store_id = (plumbing.secret_store_id)
5003
+ porcelain.session_expiry = (plumbing.session_expiry)
5004
+ porcelain.subdomain = (plumbing.subdomain)
5005
+ porcelain.tags = convert_tags_to_porcelain(plumbing.tags)
5006
+ porcelain.workforce_pool_id = (plumbing.workforce_pool_id)
5007
+ porcelain.workforce_provider_id = (plumbing.workforce_provider_id)
5008
+ return porcelain
5009
+
5010
+
5011
+ def convert_gcpwif_to_plumbing(porcelain):
5012
+ plumbing = GCPWIF()
5013
+ if porcelain is None:
5014
+ return plumbing
5015
+ plumbing.bind_interface = (porcelain.bind_interface)
5016
+ plumbing.egress_filter = (porcelain.egress_filter)
5017
+ plumbing.healthy = (porcelain.healthy)
5018
+ plumbing.id = (porcelain.id)
5019
+ plumbing.identity_alias_healthcheck_username = (
5020
+ porcelain.identity_alias_healthcheck_username)
5021
+ plumbing.identity_set_id = (porcelain.identity_set_id)
5022
+ plumbing.name = (porcelain.name)
5023
+ plumbing.port_override = (porcelain.port_override)
5024
+ plumbing.proxy_cluster_id = (porcelain.proxy_cluster_id)
5025
+ plumbing.scopes = (porcelain.scopes)
5026
+ plumbing.secret_store_id = (porcelain.secret_store_id)
5027
+ plumbing.session_expiry = (porcelain.session_expiry)
5028
+ plumbing.subdomain = (porcelain.subdomain)
5029
+ plumbing.tags.CopyFrom(convert_tags_to_plumbing(porcelain.tags))
5030
+ plumbing.workforce_pool_id = (porcelain.workforce_pool_id)
5031
+ plumbing.workforce_provider_id = (porcelain.workforce_provider_id)
5032
+ return plumbing
5033
+
5034
+
5035
+ def convert_repeated_gcpwif_to_plumbing(porcelains):
5036
+ return [convert_gcpwif_to_plumbing(porcelain) for porcelain in porcelains]
5037
+
5038
+
5039
+ def convert_repeated_gcpwif_to_porcelain(plumbings):
5040
+ return [convert_gcpwif_to_porcelain(plumbing) for plumbing in plumbings]
5041
+
5042
+
4929
5043
  def convert_gateway_to_porcelain(plumbing):
4930
5044
  if plumbing is None:
4931
5045
  return None
@@ -9878,6 +9992,11 @@ def convert_resource_to_plumbing(porcelain):
9878
9992
  convert_elasticache_redis_to_plumbing(porcelain))
9879
9993
  if isinstance(porcelain, models.GCP):
9880
9994
  plumbing.gcp.CopyFrom(convert_gcp_to_plumbing(porcelain))
9995
+ if isinstance(porcelain, models.GCPConsole):
9996
+ plumbing.gcp_console.CopyFrom(
9997
+ convert_gcp_console_to_plumbing(porcelain))
9998
+ if isinstance(porcelain, models.GCPWIF):
9999
+ plumbing.gcpwif.CopyFrom(convert_gcpwif_to_plumbing(porcelain))
9881
10000
  if isinstance(porcelain, models.GoogleGKE):
9882
10001
  plumbing.google_gke.CopyFrom(convert_google_gke_to_plumbing(porcelain))
9883
10002
  if isinstance(porcelain, models.GoogleGKEUserImpersonation):
@@ -10096,6 +10215,10 @@ def convert_resource_to_porcelain(plumbing):
10096
10215
  plumbing.elasticache_redis)
10097
10216
  if plumbing.HasField('gcp'):
10098
10217
  return convert_gcp_to_porcelain(plumbing.gcp)
10218
+ if plumbing.HasField('gcp_console'):
10219
+ return convert_gcp_console_to_porcelain(plumbing.gcp_console)
10220
+ if plumbing.HasField('gcpwif'):
10221
+ return convert_gcpwif_to_porcelain(plumbing.gcpwif)
10099
10222
  if plumbing.HasField('google_gke'):
10100
10223
  return convert_google_gke_to_porcelain(plumbing.google_gke)
10101
10224
  if plumbing.HasField('google_gke_user_impersonation'):
@@ -4494,6 +4494,8 @@ class Resources:
4494
4494
  `strongdm.models.Elastic`
4495
4495
  `strongdm.models.ElasticacheRedis`
4496
4496
  `strongdm.models.GCP`
4497
+ `strongdm.models.GCPConsole`
4498
+ `strongdm.models.GCPWIF`
4497
4499
  `strongdm.models.GoogleGKE`
4498
4500
  `strongdm.models.GoogleGKEUserImpersonation`
4499
4501
  `strongdm.models.Greenplum`
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: strongdm
3
- Version: 11.17.0
3
+ Version: 11.18.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.17.0.tar.gz
9
+ Download-URL: https://github.com/strongdm/strongdm-sdk-python/archive/v11.18.0.tar.gz
10
10
  Keywords: strongDM,sdm,api,automation,security,audit,database,server,ssh,rdp
11
11
  Platform: UNKNOWN
12
12
  Classifier: Development Status :: 4 - Beta
File without changes
File without changes
File without changes