strongdm 13.2.0__zip → 13.2.1__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-13.2.0 → strongdm-13.2.1}/PKG-INFO +2 -2
  2. {strongdm-13.2.0 → strongdm-13.2.1}/setup.py +2 -2
  3. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/client.py +1 -1
  4. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/drivers_pb2.py +296 -200
  5. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/models.py +358 -0
  6. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/plumbing.py +133 -0
  7. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/svc.py +2 -0
  8. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm.egg-info/PKG-INFO +2 -2
  9. {strongdm-13.2.0 → strongdm-13.2.1}/LICENSE +0 -0
  10. {strongdm-13.2.0 → strongdm-13.2.1}/README.md +0 -0
  11. {strongdm-13.2.0 → strongdm-13.2.1}/setup.cfg +0 -0
  12. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/__init__.py +0 -0
  13. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/access_request_events_history_pb2.py +0 -0
  14. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/access_request_events_history_pb2_grpc.py +0 -0
  15. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/access_requests_history_pb2.py +0 -0
  16. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/access_requests_history_pb2_grpc.py +0 -0
  17. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/access_requests_pb2.py +0 -0
  18. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/access_requests_pb2_grpc.py +0 -0
  19. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/account_attachments_history_pb2.py +0 -0
  20. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/account_attachments_history_pb2_grpc.py +0 -0
  21. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/account_attachments_pb2.py +0 -0
  22. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/account_attachments_pb2_grpc.py +0 -0
  23. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/account_grants_history_pb2.py +0 -0
  24. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/account_grants_history_pb2_grpc.py +0 -0
  25. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/account_grants_pb2.py +0 -0
  26. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/account_grants_pb2_grpc.py +0 -0
  27. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/account_permissions_pb2.py +0 -0
  28. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/account_permissions_pb2_grpc.py +0 -0
  29. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/account_resources_history_pb2.py +0 -0
  30. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/account_resources_history_pb2_grpc.py +0 -0
  31. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/account_resources_pb2.py +0 -0
  32. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/account_resources_pb2_grpc.py +0 -0
  33. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/accounts_history_pb2.py +0 -0
  34. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/accounts_history_pb2_grpc.py +0 -0
  35. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/accounts_pb2.py +0 -0
  36. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/accounts_pb2_grpc.py +0 -0
  37. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/activities_pb2.py +0 -0
  38. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/activities_pb2_grpc.py +0 -0
  39. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/approval_workflow_approvers_history_pb2.py +0 -0
  40. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/approval_workflow_approvers_history_pb2_grpc.py +0 -0
  41. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/approval_workflow_approvers_pb2.py +0 -0
  42. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/approval_workflow_approvers_pb2_grpc.py +0 -0
  43. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/approval_workflow_steps_history_pb2.py +0 -0
  44. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/approval_workflow_steps_history_pb2_grpc.py +0 -0
  45. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/approval_workflow_steps_pb2.py +0 -0
  46. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/approval_workflow_steps_pb2_grpc.py +0 -0
  47. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/approval_workflows_history_pb2.py +0 -0
  48. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/approval_workflows_history_pb2_grpc.py +0 -0
  49. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/approval_workflows_pb2.py +0 -0
  50. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/approval_workflows_pb2_grpc.py +0 -0
  51. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/constants.py +0 -0
  52. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/control_panel_pb2.py +0 -0
  53. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/control_panel_pb2_grpc.py +0 -0
  54. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/drivers_pb2_grpc.py +0 -0
  55. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/errors.py +0 -0
  56. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/health_checks_pb2.py +0 -0
  57. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/health_checks_pb2_grpc.py +0 -0
  58. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/identity_aliases_history_pb2.py +0 -0
  59. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/identity_aliases_history_pb2_grpc.py +0 -0
  60. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/identity_aliases_pb2.py +0 -0
  61. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/identity_aliases_pb2_grpc.py +0 -0
  62. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/identity_sets_history_pb2.py +0 -0
  63. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/identity_sets_history_pb2_grpc.py +0 -0
  64. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/identity_sets_pb2.py +0 -0
  65. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/identity_sets_pb2_grpc.py +0 -0
  66. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/nodes_history_pb2.py +0 -0
  67. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/nodes_history_pb2_grpc.py +0 -0
  68. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/nodes_pb2.py +0 -0
  69. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/nodes_pb2_grpc.py +0 -0
  70. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/options_pb2.py +0 -0
  71. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/options_pb2_grpc.py +0 -0
  72. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/organization_history_pb2.py +0 -0
  73. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/organization_history_pb2_grpc.py +0 -0
  74. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/peering_group_nodes_pb2.py +0 -0
  75. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/peering_group_nodes_pb2_grpc.py +0 -0
  76. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/peering_group_peers_pb2.py +0 -0
  77. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/peering_group_peers_pb2_grpc.py +0 -0
  78. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/peering_group_resources_pb2.py +0 -0
  79. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/peering_group_resources_pb2_grpc.py +0 -0
  80. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/peering_groups_pb2.py +0 -0
  81. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/peering_groups_pb2_grpc.py +0 -0
  82. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/policies_history_pb2.py +0 -0
  83. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/policies_history_pb2_grpc.py +0 -0
  84. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/policies_pb2.py +0 -0
  85. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/policies_pb2_grpc.py +0 -0
  86. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/proxy_cluster_keys_pb2.py +0 -0
  87. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/proxy_cluster_keys_pb2_grpc.py +0 -0
  88. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/queries_pb2.py +0 -0
  89. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/queries_pb2_grpc.py +0 -0
  90. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/remote_identities_history_pb2.py +0 -0
  91. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/remote_identities_history_pb2_grpc.py +0 -0
  92. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/remote_identities_pb2.py +0 -0
  93. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/remote_identities_pb2_grpc.py +0 -0
  94. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/remote_identity_groups_history_pb2.py +0 -0
  95. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/remote_identity_groups_history_pb2_grpc.py +0 -0
  96. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/remote_identity_groups_pb2.py +0 -0
  97. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/remote_identity_groups_pb2_grpc.py +0 -0
  98. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/replays_pb2.py +0 -0
  99. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/replays_pb2_grpc.py +0 -0
  100. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/resources_history_pb2.py +0 -0
  101. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/resources_history_pb2_grpc.py +0 -0
  102. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/resources_pb2.py +0 -0
  103. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/resources_pb2_grpc.py +0 -0
  104. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/role_resources_history_pb2.py +0 -0
  105. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/role_resources_history_pb2_grpc.py +0 -0
  106. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/role_resources_pb2.py +0 -0
  107. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/role_resources_pb2_grpc.py +0 -0
  108. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/roles_history_pb2.py +0 -0
  109. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/roles_history_pb2_grpc.py +0 -0
  110. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/roles_pb2.py +0 -0
  111. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/roles_pb2_grpc.py +0 -0
  112. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/secret_engine_policy_pb2_grpc.py +0 -0
  113. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/secret_engine_types_pb2_grpc.py +0 -0
  114. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/secret_store_healths_pb2.py +0 -0
  115. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/secret_store_healths_pb2_grpc.py +0 -0
  116. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/secret_store_types_pb2.py +0 -0
  117. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/secret_store_types_pb2_grpc.py +0 -0
  118. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/secret_stores_history_pb2.py +0 -0
  119. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/secret_stores_history_pb2_grpc.py +0 -0
  120. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/secret_stores_pb2.py +0 -0
  121. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/secret_stores_pb2_grpc.py +0 -0
  122. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/spec_pb2.py +0 -0
  123. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/spec_pb2_grpc.py +0 -0
  124. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/tags_pb2.py +0 -0
  125. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/tags_pb2_grpc.py +0 -0
  126. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflow_approvers_history_pb2.py +0 -0
  127. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflow_approvers_history_pb2_grpc.py +0 -0
  128. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflow_approvers_pb2.py +0 -0
  129. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflow_approvers_pb2_grpc.py +0 -0
  130. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflow_assignments_history_pb2.py +0 -0
  131. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflow_assignments_history_pb2_grpc.py +0 -0
  132. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflow_assignments_pb2.py +0 -0
  133. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflow_assignments_pb2_grpc.py +0 -0
  134. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflow_roles_history_pb2.py +0 -0
  135. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflow_roles_history_pb2_grpc.py +0 -0
  136. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflow_roles_pb2.py +0 -0
  137. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflow_roles_pb2_grpc.py +0 -0
  138. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflows_history_pb2.py +0 -0
  139. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflows_history_pb2_grpc.py +0 -0
  140. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflows_pb2.py +0 -0
  141. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm/workflows_pb2_grpc.py +0 -0
  142. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm.egg-info/SOURCES.txt +0 -0
  143. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm.egg-info/dependency_links.txt +0 -0
  144. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm.egg-info/requires.txt +0 -0
  145. {strongdm-13.2.0 → strongdm-13.2.1}/strongdm.egg-info/top_level.txt +0 -0
@@ -21637,6 +21637,364 @@ class Redshift:
21637
21637
  )
21638
21638
 
21639
21639
 
21640
+ class RedshiftIAM:
21641
+ '''
21642
+ RedshiftIAM is currently unstable, and its API may change, or it may be removed,
21643
+ without a major version bump.
21644
+ '''
21645
+ __slots__ = [
21646
+ 'bind_interface',
21647
+ 'cluster_id',
21648
+ 'database',
21649
+ 'egress_filter',
21650
+ 'healthy',
21651
+ 'hostname',
21652
+ 'id',
21653
+ 'name',
21654
+ 'override_database',
21655
+ 'port',
21656
+ 'port_override',
21657
+ 'proxy_cluster_id',
21658
+ 'region',
21659
+ 'role_assumption_arn',
21660
+ 'secret_store_id',
21661
+ 'subdomain',
21662
+ 'tags',
21663
+ ]
21664
+
21665
+ def __init__(
21666
+ self,
21667
+ bind_interface=None,
21668
+ cluster_id=None,
21669
+ database=None,
21670
+ egress_filter=None,
21671
+ healthy=None,
21672
+ hostname=None,
21673
+ id=None,
21674
+ name=None,
21675
+ override_database=None,
21676
+ port=None,
21677
+ port_override=None,
21678
+ proxy_cluster_id=None,
21679
+ region=None,
21680
+ role_assumption_arn=None,
21681
+ secret_store_id=None,
21682
+ subdomain=None,
21683
+ tags=None,
21684
+ ):
21685
+ self.bind_interface = bind_interface if bind_interface is not None else ''
21686
+ '''
21687
+ 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.
21688
+ '''
21689
+ self.cluster_id = cluster_id if cluster_id is not None else ''
21690
+ '''
21691
+ Cluster Identified of Redshift cluster
21692
+ '''
21693
+ self.database = database if database is not None else ''
21694
+ '''
21695
+ The initial database to connect to. This setting does not by itself prevent switching to another database after connecting.
21696
+ '''
21697
+ self.egress_filter = egress_filter if egress_filter is not None else ''
21698
+ '''
21699
+ A filter applied to the routing logic to pin datasource to nodes.
21700
+ '''
21701
+ self.healthy = healthy if healthy is not None else False
21702
+ '''
21703
+ True if the datasource is reachable and the credentials are valid.
21704
+ '''
21705
+ self.hostname = hostname if hostname is not None else ''
21706
+ '''
21707
+ The host to dial to initiate a connection from the egress node to this resource.
21708
+ '''
21709
+ self.id = id if id is not None else ''
21710
+ '''
21711
+ Unique identifier of the Resource.
21712
+ '''
21713
+ self.name = name if name is not None else ''
21714
+ '''
21715
+ Unique human-readable name of the Resource.
21716
+ '''
21717
+ self.override_database = override_database if override_database is not None else False
21718
+ '''
21719
+ If set, the database configured cannot be changed by users. This setting is not recommended for most use cases, as some clients will insist their database has changed when it has not, leading to user confusion.
21720
+ '''
21721
+ self.port = port if port is not None else 0
21722
+ '''
21723
+ The port to dial to initiate a connection from the egress node to this resource.
21724
+ '''
21725
+ self.port_override = port_override if port_override is not None else 0
21726
+ '''
21727
+ The local port used by clients to connect to this resource.
21728
+ '''
21729
+ self.proxy_cluster_id = proxy_cluster_id if proxy_cluster_id is not None else ''
21730
+ '''
21731
+ ID of the proxy cluster for this resource, if any.
21732
+ '''
21733
+ self.region = region if region is not None else ''
21734
+ '''
21735
+ The AWS region to connect to.
21736
+ '''
21737
+ self.role_assumption_arn = role_assumption_arn if role_assumption_arn is not None else ''
21738
+ '''
21739
+ If provided, the gateway/relay will try to assume this role instead of the underlying compute's role.
21740
+ '''
21741
+ self.secret_store_id = secret_store_id if secret_store_id is not None else ''
21742
+ '''
21743
+ ID of the secret store containing credentials for this resource, if any.
21744
+ '''
21745
+ self.subdomain = subdomain if subdomain is not None else ''
21746
+ '''
21747
+ Subdomain is the local DNS address. (e.g. app-prod1 turns into app-prod1.your-org-name.sdm.network)
21748
+ '''
21749
+ self.tags = tags if tags is not None else _porcelain_zero_value_tags()
21750
+ '''
21751
+ Tags is a map of key, value pairs.
21752
+ '''
21753
+
21754
+ def __repr__(self):
21755
+ return '<sdm.RedshiftIAM ' + \
21756
+ 'bind_interface: ' + repr(self.bind_interface) + ' ' +\
21757
+ 'cluster_id: ' + repr(self.cluster_id) + ' ' +\
21758
+ 'database: ' + repr(self.database) + ' ' +\
21759
+ 'egress_filter: ' + repr(self.egress_filter) + ' ' +\
21760
+ 'healthy: ' + repr(self.healthy) + ' ' +\
21761
+ 'hostname: ' + repr(self.hostname) + ' ' +\
21762
+ 'id: ' + repr(self.id) + ' ' +\
21763
+ 'name: ' + repr(self.name) + ' ' +\
21764
+ 'override_database: ' + repr(self.override_database) + ' ' +\
21765
+ 'port: ' + repr(self.port) + ' ' +\
21766
+ 'port_override: ' + repr(self.port_override) + ' ' +\
21767
+ 'proxy_cluster_id: ' + repr(self.proxy_cluster_id) + ' ' +\
21768
+ 'region: ' + repr(self.region) + ' ' +\
21769
+ 'role_assumption_arn: ' + repr(self.role_assumption_arn) + ' ' +\
21770
+ 'secret_store_id: ' + repr(self.secret_store_id) + ' ' +\
21771
+ 'subdomain: ' + repr(self.subdomain) + ' ' +\
21772
+ 'tags: ' + repr(self.tags) + ' ' +\
21773
+ '>'
21774
+
21775
+ def to_dict(self):
21776
+ return {
21777
+ 'bind_interface': self.bind_interface,
21778
+ 'cluster_id': self.cluster_id,
21779
+ 'database': self.database,
21780
+ 'egress_filter': self.egress_filter,
21781
+ 'healthy': self.healthy,
21782
+ 'hostname': self.hostname,
21783
+ 'id': self.id,
21784
+ 'name': self.name,
21785
+ 'override_database': self.override_database,
21786
+ 'port': self.port,
21787
+ 'port_override': self.port_override,
21788
+ 'proxy_cluster_id': self.proxy_cluster_id,
21789
+ 'region': self.region,
21790
+ 'role_assumption_arn': self.role_assumption_arn,
21791
+ 'secret_store_id': self.secret_store_id,
21792
+ 'subdomain': self.subdomain,
21793
+ 'tags': self.tags,
21794
+ }
21795
+
21796
+ @classmethod
21797
+ def from_dict(cls, d):
21798
+ return cls(
21799
+ bind_interface=d.get('bind_interface'),
21800
+ cluster_id=d.get('cluster_id'),
21801
+ database=d.get('database'),
21802
+ egress_filter=d.get('egress_filter'),
21803
+ healthy=d.get('healthy'),
21804
+ hostname=d.get('hostname'),
21805
+ id=d.get('id'),
21806
+ name=d.get('name'),
21807
+ override_database=d.get('override_database'),
21808
+ port=d.get('port'),
21809
+ port_override=d.get('port_override'),
21810
+ proxy_cluster_id=d.get('proxy_cluster_id'),
21811
+ region=d.get('region'),
21812
+ role_assumption_arn=d.get('role_assumption_arn'),
21813
+ secret_store_id=d.get('secret_store_id'),
21814
+ subdomain=d.get('subdomain'),
21815
+ tags=d.get('tags'),
21816
+ )
21817
+
21818
+
21819
+ class RedshiftServerlessIAM:
21820
+ '''
21821
+ RedshiftServerlessIAM is currently unstable, and its API may change, or it may be removed,
21822
+ without a major version bump.
21823
+ '''
21824
+ __slots__ = [
21825
+ 'bind_interface',
21826
+ 'database',
21827
+ 'egress_filter',
21828
+ 'healthy',
21829
+ 'hostname',
21830
+ 'id',
21831
+ 'name',
21832
+ 'override_database',
21833
+ 'port',
21834
+ 'port_override',
21835
+ 'proxy_cluster_id',
21836
+ 'region',
21837
+ 'role_assumption_arn',
21838
+ 'secret_store_id',
21839
+ 'subdomain',
21840
+ 'tags',
21841
+ 'workgroup',
21842
+ ]
21843
+
21844
+ def __init__(
21845
+ self,
21846
+ bind_interface=None,
21847
+ database=None,
21848
+ egress_filter=None,
21849
+ healthy=None,
21850
+ hostname=None,
21851
+ id=None,
21852
+ name=None,
21853
+ override_database=None,
21854
+ port=None,
21855
+ port_override=None,
21856
+ proxy_cluster_id=None,
21857
+ region=None,
21858
+ role_assumption_arn=None,
21859
+ secret_store_id=None,
21860
+ subdomain=None,
21861
+ tags=None,
21862
+ workgroup=None,
21863
+ ):
21864
+ self.bind_interface = bind_interface if bind_interface is not None else ''
21865
+ '''
21866
+ 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.
21867
+ '''
21868
+ self.database = database if database is not None else ''
21869
+ '''
21870
+ The initial database to connect to. This setting does not by itself prevent switching to another database after connecting.
21871
+ '''
21872
+ self.egress_filter = egress_filter if egress_filter is not None else ''
21873
+ '''
21874
+ A filter applied to the routing logic to pin datasource to nodes.
21875
+ '''
21876
+ self.healthy = healthy if healthy is not None else False
21877
+ '''
21878
+ True if the datasource is reachable and the credentials are valid.
21879
+ '''
21880
+ self.hostname = hostname if hostname is not None else ''
21881
+ '''
21882
+ The host to dial to initiate a connection from the egress node to this resource.
21883
+ '''
21884
+ self.id = id if id is not None else ''
21885
+ '''
21886
+ Unique identifier of the Resource.
21887
+ '''
21888
+ self.name = name if name is not None else ''
21889
+ '''
21890
+ Unique human-readable name of the Resource.
21891
+ '''
21892
+ self.override_database = override_database if override_database is not None else False
21893
+ '''
21894
+ If set, the database configured cannot be changed by users. This setting is not recommended for most use cases, as some clients will insist their database has changed when it has not, leading to user confusion.
21895
+ '''
21896
+ self.port = port if port is not None else 0
21897
+ '''
21898
+ The port to dial to initiate a connection from the egress node to this resource.
21899
+ '''
21900
+ self.port_override = port_override if port_override is not None else 0
21901
+ '''
21902
+ The local port used by clients to connect to this resource.
21903
+ '''
21904
+ self.proxy_cluster_id = proxy_cluster_id if proxy_cluster_id is not None else ''
21905
+ '''
21906
+ ID of the proxy cluster for this resource, if any.
21907
+ '''
21908
+ self.region = region if region is not None else ''
21909
+ '''
21910
+ The AWS region to connect to.
21911
+ '''
21912
+ self.role_assumption_arn = role_assumption_arn if role_assumption_arn is not None else ''
21913
+ '''
21914
+ If provided, the gateway/relay will try to assume this role instead of the underlying compute's role.
21915
+ '''
21916
+ self.secret_store_id = secret_store_id if secret_store_id is not None else ''
21917
+ '''
21918
+ ID of the secret store containing credentials for this resource, if any.
21919
+ '''
21920
+ self.subdomain = subdomain if subdomain is not None else ''
21921
+ '''
21922
+ Subdomain is the local DNS address. (e.g. app-prod1 turns into app-prod1.your-org-name.sdm.network)
21923
+ '''
21924
+ self.tags = tags if tags is not None else _porcelain_zero_value_tags()
21925
+ '''
21926
+ Tags is a map of key, value pairs.
21927
+ '''
21928
+ self.workgroup = workgroup if workgroup is not None else ''
21929
+ '''
21930
+ Workgroup name in the serverless Redshift
21931
+ '''
21932
+
21933
+ def __repr__(self):
21934
+ return '<sdm.RedshiftServerlessIAM ' + \
21935
+ 'bind_interface: ' + repr(self.bind_interface) + ' ' +\
21936
+ 'database: ' + repr(self.database) + ' ' +\
21937
+ 'egress_filter: ' + repr(self.egress_filter) + ' ' +\
21938
+ 'healthy: ' + repr(self.healthy) + ' ' +\
21939
+ 'hostname: ' + repr(self.hostname) + ' ' +\
21940
+ 'id: ' + repr(self.id) + ' ' +\
21941
+ 'name: ' + repr(self.name) + ' ' +\
21942
+ 'override_database: ' + repr(self.override_database) + ' ' +\
21943
+ 'port: ' + repr(self.port) + ' ' +\
21944
+ 'port_override: ' + repr(self.port_override) + ' ' +\
21945
+ 'proxy_cluster_id: ' + repr(self.proxy_cluster_id) + ' ' +\
21946
+ 'region: ' + repr(self.region) + ' ' +\
21947
+ 'role_assumption_arn: ' + repr(self.role_assumption_arn) + ' ' +\
21948
+ 'secret_store_id: ' + repr(self.secret_store_id) + ' ' +\
21949
+ 'subdomain: ' + repr(self.subdomain) + ' ' +\
21950
+ 'tags: ' + repr(self.tags) + ' ' +\
21951
+ 'workgroup: ' + repr(self.workgroup) + ' ' +\
21952
+ '>'
21953
+
21954
+ def to_dict(self):
21955
+ return {
21956
+ 'bind_interface': self.bind_interface,
21957
+ 'database': self.database,
21958
+ 'egress_filter': self.egress_filter,
21959
+ 'healthy': self.healthy,
21960
+ 'hostname': self.hostname,
21961
+ 'id': self.id,
21962
+ 'name': self.name,
21963
+ 'override_database': self.override_database,
21964
+ 'port': self.port,
21965
+ 'port_override': self.port_override,
21966
+ 'proxy_cluster_id': self.proxy_cluster_id,
21967
+ 'region': self.region,
21968
+ 'role_assumption_arn': self.role_assumption_arn,
21969
+ 'secret_store_id': self.secret_store_id,
21970
+ 'subdomain': self.subdomain,
21971
+ 'tags': self.tags,
21972
+ 'workgroup': self.workgroup,
21973
+ }
21974
+
21975
+ @classmethod
21976
+ def from_dict(cls, d):
21977
+ return cls(
21978
+ bind_interface=d.get('bind_interface'),
21979
+ database=d.get('database'),
21980
+ egress_filter=d.get('egress_filter'),
21981
+ healthy=d.get('healthy'),
21982
+ hostname=d.get('hostname'),
21983
+ id=d.get('id'),
21984
+ name=d.get('name'),
21985
+ override_database=d.get('override_database'),
21986
+ port=d.get('port'),
21987
+ port_override=d.get('port_override'),
21988
+ proxy_cluster_id=d.get('proxy_cluster_id'),
21989
+ region=d.get('region'),
21990
+ role_assumption_arn=d.get('role_assumption_arn'),
21991
+ secret_store_id=d.get('secret_store_id'),
21992
+ subdomain=d.get('subdomain'),
21993
+ tags=d.get('tags'),
21994
+ workgroup=d.get('workgroup'),
21995
+ )
21996
+
21997
+
21640
21998
  class Relay:
21641
21999
  '''
21642
22000
  Relay represents a StrongDM CLI installation running in relay mode.
@@ -9922,6 +9922,128 @@ def convert_repeated_redshift_to_porcelain(plumbings):
9922
9922
  return [convert_redshift_to_porcelain(plumbing) for plumbing in plumbings]
9923
9923
 
9924
9924
 
9925
+ def convert_redshift_iam_to_porcelain(plumbing):
9926
+ if plumbing is None:
9927
+ return None
9928
+ porcelain = models.RedshiftIAM()
9929
+ porcelain.bind_interface = (plumbing.bind_interface)
9930
+ porcelain.cluster_id = (plumbing.cluster_id)
9931
+ porcelain.database = (plumbing.database)
9932
+ porcelain.egress_filter = (plumbing.egress_filter)
9933
+ porcelain.healthy = (plumbing.healthy)
9934
+ porcelain.hostname = (plumbing.hostname)
9935
+ porcelain.id = (plumbing.id)
9936
+ porcelain.name = (plumbing.name)
9937
+ porcelain.override_database = (plumbing.override_database)
9938
+ porcelain.port = (plumbing.port)
9939
+ porcelain.port_override = (plumbing.port_override)
9940
+ porcelain.proxy_cluster_id = (plumbing.proxy_cluster_id)
9941
+ porcelain.region = (plumbing.region)
9942
+ porcelain.role_assumption_arn = (plumbing.role_assumption_arn)
9943
+ porcelain.secret_store_id = (plumbing.secret_store_id)
9944
+ porcelain.subdomain = (plumbing.subdomain)
9945
+ porcelain.tags = convert_tags_to_porcelain(plumbing.tags)
9946
+ return porcelain
9947
+
9948
+
9949
+ def convert_redshift_iam_to_plumbing(porcelain):
9950
+ plumbing = RedshiftIAM()
9951
+ if porcelain is None:
9952
+ return plumbing
9953
+ plumbing.bind_interface = (porcelain.bind_interface)
9954
+ plumbing.cluster_id = (porcelain.cluster_id)
9955
+ plumbing.database = (porcelain.database)
9956
+ plumbing.egress_filter = (porcelain.egress_filter)
9957
+ plumbing.healthy = (porcelain.healthy)
9958
+ plumbing.hostname = (porcelain.hostname)
9959
+ plumbing.id = (porcelain.id)
9960
+ plumbing.name = (porcelain.name)
9961
+ plumbing.override_database = (porcelain.override_database)
9962
+ plumbing.port = (porcelain.port)
9963
+ plumbing.port_override = (porcelain.port_override)
9964
+ plumbing.proxy_cluster_id = (porcelain.proxy_cluster_id)
9965
+ plumbing.region = (porcelain.region)
9966
+ plumbing.role_assumption_arn = (porcelain.role_assumption_arn)
9967
+ plumbing.secret_store_id = (porcelain.secret_store_id)
9968
+ plumbing.subdomain = (porcelain.subdomain)
9969
+ plumbing.tags.CopyFrom(convert_tags_to_plumbing(porcelain.tags))
9970
+ return plumbing
9971
+
9972
+
9973
+ def convert_repeated_redshift_iam_to_plumbing(porcelains):
9974
+ return [
9975
+ convert_redshift_iam_to_plumbing(porcelain) for porcelain in porcelains
9976
+ ]
9977
+
9978
+
9979
+ def convert_repeated_redshift_iam_to_porcelain(plumbings):
9980
+ return [
9981
+ convert_redshift_iam_to_porcelain(plumbing) for plumbing in plumbings
9982
+ ]
9983
+
9984
+
9985
+ def convert_redshift_serverless_iam_to_porcelain(plumbing):
9986
+ if plumbing is None:
9987
+ return None
9988
+ porcelain = models.RedshiftServerlessIAM()
9989
+ porcelain.bind_interface = (plumbing.bind_interface)
9990
+ porcelain.database = (plumbing.database)
9991
+ porcelain.egress_filter = (plumbing.egress_filter)
9992
+ porcelain.healthy = (plumbing.healthy)
9993
+ porcelain.hostname = (plumbing.hostname)
9994
+ porcelain.id = (plumbing.id)
9995
+ porcelain.name = (plumbing.name)
9996
+ porcelain.override_database = (plumbing.override_database)
9997
+ porcelain.port = (plumbing.port)
9998
+ porcelain.port_override = (plumbing.port_override)
9999
+ porcelain.proxy_cluster_id = (plumbing.proxy_cluster_id)
10000
+ porcelain.region = (plumbing.region)
10001
+ porcelain.role_assumption_arn = (plumbing.role_assumption_arn)
10002
+ porcelain.secret_store_id = (plumbing.secret_store_id)
10003
+ porcelain.subdomain = (plumbing.subdomain)
10004
+ porcelain.tags = convert_tags_to_porcelain(plumbing.tags)
10005
+ porcelain.workgroup = (plumbing.workgroup)
10006
+ return porcelain
10007
+
10008
+
10009
+ def convert_redshift_serverless_iam_to_plumbing(porcelain):
10010
+ plumbing = RedshiftServerlessIAM()
10011
+ if porcelain is None:
10012
+ return plumbing
10013
+ plumbing.bind_interface = (porcelain.bind_interface)
10014
+ plumbing.database = (porcelain.database)
10015
+ plumbing.egress_filter = (porcelain.egress_filter)
10016
+ plumbing.healthy = (porcelain.healthy)
10017
+ plumbing.hostname = (porcelain.hostname)
10018
+ plumbing.id = (porcelain.id)
10019
+ plumbing.name = (porcelain.name)
10020
+ plumbing.override_database = (porcelain.override_database)
10021
+ plumbing.port = (porcelain.port)
10022
+ plumbing.port_override = (porcelain.port_override)
10023
+ plumbing.proxy_cluster_id = (porcelain.proxy_cluster_id)
10024
+ plumbing.region = (porcelain.region)
10025
+ plumbing.role_assumption_arn = (porcelain.role_assumption_arn)
10026
+ plumbing.secret_store_id = (porcelain.secret_store_id)
10027
+ plumbing.subdomain = (porcelain.subdomain)
10028
+ plumbing.tags.CopyFrom(convert_tags_to_plumbing(porcelain.tags))
10029
+ plumbing.workgroup = (porcelain.workgroup)
10030
+ return plumbing
10031
+
10032
+
10033
+ def convert_repeated_redshift_serverless_iam_to_plumbing(porcelains):
10034
+ return [
10035
+ convert_redshift_serverless_iam_to_plumbing(porcelain)
10036
+ for porcelain in porcelains
10037
+ ]
10038
+
10039
+
10040
+ def convert_repeated_redshift_serverless_iam_to_porcelain(plumbings):
10041
+ return [
10042
+ convert_redshift_serverless_iam_to_porcelain(plumbing)
10043
+ for plumbing in plumbings
10044
+ ]
10045
+
10046
+
9925
10047
  def convert_relay_to_porcelain(plumbing):
9926
10048
  if plumbing is None:
9927
10049
  return None
@@ -10646,6 +10768,12 @@ def convert_resource_to_plumbing(porcelain):
10646
10768
  plumbing.redis.CopyFrom(convert_redis_to_plumbing(porcelain))
10647
10769
  if isinstance(porcelain, models.Redshift):
10648
10770
  plumbing.redshift.CopyFrom(convert_redshift_to_plumbing(porcelain))
10771
+ if isinstance(porcelain, models.RedshiftIAM):
10772
+ plumbing.redshift_iam.CopyFrom(
10773
+ convert_redshift_iam_to_plumbing(porcelain))
10774
+ if isinstance(porcelain, models.RedshiftServerlessIAM):
10775
+ plumbing.redshift_serverless_iam.CopyFrom(
10776
+ convert_redshift_serverless_iam_to_plumbing(porcelain))
10649
10777
  if isinstance(porcelain, models.SingleStore):
10650
10778
  plumbing.single_store.CopyFrom(
10651
10779
  convert_single_store_to_plumbing(porcelain))
@@ -10883,6 +11011,11 @@ def convert_resource_to_porcelain(plumbing):
10883
11011
  return convert_redis_to_porcelain(plumbing.redis)
10884
11012
  if plumbing.HasField('redshift'):
10885
11013
  return convert_redshift_to_porcelain(plumbing.redshift)
11014
+ if plumbing.HasField('redshift_iam'):
11015
+ return convert_redshift_iam_to_porcelain(plumbing.redshift_iam)
11016
+ if plumbing.HasField('redshift_serverless_iam'):
11017
+ return convert_redshift_serverless_iam_to_porcelain(
11018
+ plumbing.redshift_serverless_iam)
10886
11019
  if plumbing.HasField('single_store'):
10887
11020
  return convert_single_store_to_porcelain(plumbing.single_store)
10888
11021
  if plumbing.HasField('snowflake'):
@@ -4539,6 +4539,8 @@ class Resources:
4539
4539
  `strongdm.models.RDSPostgresIAM`
4540
4540
  `strongdm.models.Redis`
4541
4541
  `strongdm.models.Redshift`
4542
+ `strongdm.models.RedshiftIAM`
4543
+ `strongdm.models.RedshiftServerlessIAM`
4542
4544
  `strongdm.models.SingleStore`
4543
4545
  `strongdm.models.Snowflake`
4544
4546
  `strongdm.models.Snowsight`
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: strongdm
3
- Version: 13.2.0
3
+ Version: 13.2.1
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/v13.2.0.tar.gz
9
+ Download-URL: https://github.com/strongdm/strongdm-sdk-python/archive/v13.2.1.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
File without changes