pulumi-gcp 7.20.0a1713984378__py3-none-any.whl → 7.21.0__py3-none-any.whl

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 (131) hide show
  1. pulumi_gcp/__init__.py +48 -0
  2. pulumi_gcp/alloydb/_inputs.py +74 -0
  3. pulumi_gcp/alloydb/backup.py +0 -12
  4. pulumi_gcp/alloydb/cluster.py +0 -12
  5. pulumi_gcp/alloydb/instance.py +90 -81
  6. pulumi_gcp/alloydb/outputs.py +98 -0
  7. pulumi_gcp/apigee/environment.py +47 -0
  8. pulumi_gcp/apigee/organization.py +162 -0
  9. pulumi_gcp/apigee/sharedflow.py +0 -20
  10. pulumi_gcp/appengine/flexible_app_version.py +0 -20
  11. pulumi_gcp/applicationintegration/__init__.py +1 -0
  12. pulumi_gcp/applicationintegration/_inputs.py +843 -0
  13. pulumi_gcp/applicationintegration/auth_config.py +998 -0
  14. pulumi_gcp/applicationintegration/outputs.py +891 -0
  15. pulumi_gcp/artifactregistry/_inputs.py +186 -0
  16. pulumi_gcp/artifactregistry/outputs.py +297 -4
  17. pulumi_gcp/artifactregistry/repository.py +346 -16
  18. pulumi_gcp/bigquery/table.py +61 -0
  19. pulumi_gcp/bigquerydatapolicy/_inputs.py +21 -4
  20. pulumi_gcp/bigquerydatapolicy/data_policy.py +78 -0
  21. pulumi_gcp/bigquerydatapolicy/outputs.py +16 -3
  22. pulumi_gcp/billing/budget.py +54 -0
  23. pulumi_gcp/certificateauthority/_inputs.py +92 -12
  24. pulumi_gcp/certificateauthority/authority.py +117 -27
  25. pulumi_gcp/certificateauthority/certificate.py +176 -0
  26. pulumi_gcp/certificateauthority/outputs.py +144 -12
  27. pulumi_gcp/cloudbuild/worker_pool.py +0 -12
  28. pulumi_gcp/cloudbuildv2/connection.py +0 -12
  29. pulumi_gcp/cloudbuildv2/repository.py +0 -12
  30. pulumi_gcp/clouddeploy/automation.py +0 -12
  31. pulumi_gcp/clouddeploy/custom_target_type.py +0 -12
  32. pulumi_gcp/clouddeploy/delivery_pipeline.py +0 -12
  33. pulumi_gcp/clouddeploy/target.py +0 -12
  34. pulumi_gcp/cloudfunctionsv2/_inputs.py +16 -0
  35. pulumi_gcp/cloudfunctionsv2/function.py +110 -0
  36. pulumi_gcp/cloudfunctionsv2/outputs.py +25 -0
  37. pulumi_gcp/cloudrunv2/job.py +0 -12
  38. pulumi_gcp/cloudrunv2/service.py +0 -12
  39. pulumi_gcp/composer/__init__.py +1 -0
  40. pulumi_gcp/composer/environment.py +35 -47
  41. pulumi_gcp/composer/user_workloads_secret.py +441 -0
  42. pulumi_gcp/compute/__init__.py +1 -0
  43. pulumi_gcp/compute/_inputs.py +169 -58
  44. pulumi_gcp/compute/forwarding_rule.py +0 -13
  45. pulumi_gcp/compute/get_instance_group_manager.py +11 -1
  46. pulumi_gcp/compute/global_address.py +0 -12
  47. pulumi_gcp/compute/global_forwarding_rule.py +0 -282
  48. pulumi_gcp/compute/instance_from_machine_image.py +14 -46
  49. pulumi_gcp/compute/instance_from_template.py +14 -46
  50. pulumi_gcp/compute/instance_group_manager.py +68 -21
  51. pulumi_gcp/compute/outputs.py +213 -65
  52. pulumi_gcp/compute/region_instance_group_manager.py +61 -14
  53. pulumi_gcp/compute/region_instance_template.py +0 -13
  54. pulumi_gcp/compute/region_target_https_proxy.py +257 -0
  55. pulumi_gcp/compute/region_url_map.py +0 -470
  56. pulumi_gcp/compute/security_policy_rule.py +850 -0
  57. pulumi_gcp/container/attached_cluster.py +0 -12
  58. pulumi_gcp/container/aws_cluster.py +0 -12
  59. pulumi_gcp/container/aws_node_pool.py +0 -12
  60. pulumi_gcp/container/azure_cluster.py +0 -12
  61. pulumi_gcp/container/azure_node_pool.py +0 -12
  62. pulumi_gcp/container/cluster.py +0 -20
  63. pulumi_gcp/container/outputs.py +4 -4
  64. pulumi_gcp/dataflow/flex_template_job.py +0 -39
  65. pulumi_gcp/dataloss/__init__.py +1 -0
  66. pulumi_gcp/dataloss/_inputs.py +1040 -0
  67. pulumi_gcp/dataloss/outputs.py +1123 -0
  68. pulumi_gcp/dataloss/prevention_discovery_config.py +737 -0
  69. pulumi_gcp/dataproc/cluster.py +0 -20
  70. pulumi_gcp/dataproc/workflow_template.py +21 -26
  71. pulumi_gcp/deploymentmanager/deployment.py +0 -34
  72. pulumi_gcp/dns/_inputs.py +2 -130
  73. pulumi_gcp/dns/get_keys.py +1 -1
  74. pulumi_gcp/dns/get_managed_zones.py +3 -9
  75. pulumi_gcp/dns/get_record_set.py +3 -0
  76. pulumi_gcp/dns/outputs.py +36 -58
  77. pulumi_gcp/dns/record_set.py +2 -36
  78. pulumi_gcp/filestore/get_instance.py +11 -1
  79. pulumi_gcp/filestore/instance.py +101 -0
  80. pulumi_gcp/firebase/_inputs.py +16 -0
  81. pulumi_gcp/firebase/android_app.py +0 -27
  82. pulumi_gcp/firebase/app_check_play_integrity_config.py +20 -0
  83. pulumi_gcp/firebase/app_check_recaptcha_enterprise_config.py +10 -0
  84. pulumi_gcp/firebase/app_check_service_config.py +0 -125
  85. pulumi_gcp/firebase/apple_app.py +0 -27
  86. pulumi_gcp/firebase/hosting_custom_domain.py +0 -27
  87. pulumi_gcp/firebase/hosting_version.py +44 -0
  88. pulumi_gcp/firebase/outputs.py +12 -0
  89. pulumi_gcp/firebase/web_app.py +0 -20
  90. pulumi_gcp/firestore/database.py +0 -68
  91. pulumi_gcp/firestore/document.py +4 -4
  92. pulumi_gcp/gkeonprem/bare_metal_admin_cluster.py +0 -12
  93. pulumi_gcp/gkeonprem/bare_metal_cluster.py +0 -12
  94. pulumi_gcp/gkeonprem/bare_metal_node_pool.py +0 -12
  95. pulumi_gcp/gkeonprem/v_mware_cluster.py +0 -12
  96. pulumi_gcp/gkeonprem/v_mware_node_pool.py +0 -12
  97. pulumi_gcp/logging/folder_sink.py +54 -0
  98. pulumi_gcp/logging/organization_sink.py +54 -0
  99. pulumi_gcp/monitoring/_inputs.py +46 -2
  100. pulumi_gcp/monitoring/outputs.py +40 -2
  101. pulumi_gcp/monitoring/uptime_check_config.py +6 -0
  102. pulumi_gcp/netapp/active_directory.py +0 -20
  103. pulumi_gcp/netapp/volume_replication.py +0 -68
  104. pulumi_gcp/networkconnectivity/__init__.py +1 -0
  105. pulumi_gcp/networkconnectivity/internal_range.py +1024 -0
  106. pulumi_gcp/organizations/get_active_folder.py +18 -3
  107. pulumi_gcp/projects/__init__.py +1 -0
  108. pulumi_gcp/projects/iam_member_remove.py +313 -0
  109. pulumi_gcp/provider.py +3 -1
  110. pulumi_gcp/secretmanager/get_secret.py +13 -3
  111. pulumi_gcp/secretmanager/outputs.py +20 -1
  112. pulumi_gcp/secretmanager/secret.py +90 -15
  113. pulumi_gcp/servicenetworking/connection.py +0 -20
  114. pulumi_gcp/spanner/database.py +0 -41
  115. pulumi_gcp/spanner/instance.py +0 -40
  116. pulumi_gcp/storage/__init__.py +1 -0
  117. pulumi_gcp/storage/bucket.py +0 -12
  118. pulumi_gcp/storage/get_bucket_objects.py +153 -0
  119. pulumi_gcp/storage/outputs.py +63 -0
  120. pulumi_gcp/vmwareengine/_inputs.py +63 -5
  121. pulumi_gcp/vmwareengine/get_private_cloud.py +1 -21
  122. pulumi_gcp/vmwareengine/outputs.py +113 -5
  123. pulumi_gcp/vmwareengine/private_cloud.py +0 -94
  124. pulumi_gcp/workbench/instance.py +4 -4
  125. pulumi_gcp/workstations/workstation.py +0 -12
  126. pulumi_gcp/workstations/workstation_cluster.py +32 -12
  127. pulumi_gcp/workstations/workstation_config.py +0 -12
  128. {pulumi_gcp-7.20.0a1713984378.dist-info → pulumi_gcp-7.21.0.dist-info}/METADATA +1 -1
  129. {pulumi_gcp-7.20.0a1713984378.dist-info → pulumi_gcp-7.21.0.dist-info}/RECORD +131 -124
  130. {pulumi_gcp-7.20.0a1713984378.dist-info → pulumi_gcp-7.21.0.dist-info}/WHEEL +0 -0
  131. {pulumi_gcp-7.20.0a1713984378.dist-info → pulumi_gcp-7.21.0.dist-info}/top_level.txt +0 -0
@@ -21,7 +21,10 @@ class GetActiveFolderResult:
21
21
  """
22
22
  A collection of values returned by getActiveFolder.
23
23
  """
24
- def __init__(__self__, display_name=None, id=None, name=None, parent=None):
24
+ def __init__(__self__, api_method=None, display_name=None, id=None, name=None, parent=None):
25
+ if api_method and not isinstance(api_method, str):
26
+ raise TypeError("Expected argument 'api_method' to be a str")
27
+ pulumi.set(__self__, "api_method", api_method)
25
28
  if display_name and not isinstance(display_name, str):
26
29
  raise TypeError("Expected argument 'display_name' to be a str")
27
30
  pulumi.set(__self__, "display_name", display_name)
@@ -35,6 +38,11 @@ class GetActiveFolderResult:
35
38
  raise TypeError("Expected argument 'parent' to be a str")
36
39
  pulumi.set(__self__, "parent", parent)
37
40
 
41
+ @property
42
+ @pulumi.getter(name="apiMethod")
43
+ def api_method(self) -> Optional[str]:
44
+ return pulumi.get(self, "api_method")
45
+
38
46
  @property
39
47
  @pulumi.getter(name="displayName")
40
48
  def display_name(self) -> str:
@@ -68,13 +76,15 @@ class AwaitableGetActiveFolderResult(GetActiveFolderResult):
68
76
  if False:
69
77
  yield self
70
78
  return GetActiveFolderResult(
79
+ api_method=self.api_method,
71
80
  display_name=self.display_name,
72
81
  id=self.id,
73
82
  name=self.name,
74
83
  parent=self.parent)
75
84
 
76
85
 
77
- def get_active_folder(display_name: Optional[str] = None,
86
+ def get_active_folder(api_method: Optional[str] = None,
87
+ display_name: Optional[str] = None,
78
88
  parent: Optional[str] = None,
79
89
  opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetActiveFolderResult:
80
90
  """
@@ -83,16 +93,19 @@ def get_active_folder(display_name: Optional[str] = None,
83
93
  ## Example Usage
84
94
 
85
95
 
96
+ :param str api_method: The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on.
86
97
  :param str display_name: The folder's display name.
87
98
  :param str parent: The resource name of the parent Folder or Organization.
88
99
  """
89
100
  __args__ = dict()
101
+ __args__['apiMethod'] = api_method
90
102
  __args__['displayName'] = display_name
91
103
  __args__['parent'] = parent
92
104
  opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
93
105
  __ret__ = pulumi.runtime.invoke('gcp:organizations/getActiveFolder:getActiveFolder', __args__, opts=opts, typ=GetActiveFolderResult).value
94
106
 
95
107
  return AwaitableGetActiveFolderResult(
108
+ api_method=pulumi.get(__ret__, 'api_method'),
96
109
  display_name=pulumi.get(__ret__, 'display_name'),
97
110
  id=pulumi.get(__ret__, 'id'),
98
111
  name=pulumi.get(__ret__, 'name'),
@@ -100,7 +113,8 @@ def get_active_folder(display_name: Optional[str] = None,
100
113
 
101
114
 
102
115
  @_utilities.lift_output_func(get_active_folder)
103
- def get_active_folder_output(display_name: Optional[pulumi.Input[str]] = None,
116
+ def get_active_folder_output(api_method: Optional[pulumi.Input[Optional[str]]] = None,
117
+ display_name: Optional[pulumi.Input[str]] = None,
104
118
  parent: Optional[pulumi.Input[str]] = None,
105
119
  opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetActiveFolderResult]:
106
120
  """
@@ -109,6 +123,7 @@ def get_active_folder_output(display_name: Optional[pulumi.Input[str]] = None,
109
123
  ## Example Usage
110
124
 
111
125
 
126
+ :param str api_method: The API method to use to search for the folder. Valid values are `LIST` and `SEARCH`. Default Value is `LIST`. `LIST` is [strongly consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#:~:text=list()%20provides%20a-,strongly%20consistent,-view%20of%20the) and requires `resourcemanager.folders.list` on the parent folder, while `SEARCH` is [eventually consistent](https://cloud.google.com/resource-manager/reference/rest/v3/folders/search#:~:text=eventually%20consistent) and only returns folders that the user has `resourcemanager.folders.get` permission on.
112
127
  :param str display_name: The folder's display name.
113
128
  :param str parent: The resource name of the parent Folder or Organization.
114
129
  """
@@ -16,6 +16,7 @@ from .iam_audit_config import *
16
16
  from .iam_binding import *
17
17
  from .iam_custom_role import *
18
18
  from .iam_member import *
19
+ from .iam_member_remove import *
19
20
  from .iam_policy import *
20
21
  from .organization_policy import *
21
22
  from .service import *
@@ -0,0 +1,313 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import pulumi
8
+ import pulumi.runtime
9
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
10
+ from .. import _utilities
11
+
12
+ __all__ = ['IamMemberRemoveArgs', 'IamMemberRemove']
13
+
14
+ @pulumi.input_type
15
+ class IamMemberRemoveArgs:
16
+ def __init__(__self__, *,
17
+ member: pulumi.Input[str],
18
+ project: pulumi.Input[str],
19
+ role: pulumi.Input[str]):
20
+ """
21
+ The set of arguments for constructing a IamMemberRemove resource.
22
+ :param pulumi.Input[str] member: The IAM principal that should not have the target role.
23
+ Each entry can have one of the following values:
24
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
25
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
26
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
27
+ * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
28
+ :param pulumi.Input[str] project: The project id of the target project.
29
+ :param pulumi.Input[str] role: The target role that should be removed.
30
+ """
31
+ pulumi.set(__self__, "member", member)
32
+ pulumi.set(__self__, "project", project)
33
+ pulumi.set(__self__, "role", role)
34
+
35
+ @property
36
+ @pulumi.getter
37
+ def member(self) -> pulumi.Input[str]:
38
+ """
39
+ The IAM principal that should not have the target role.
40
+ Each entry can have one of the following values:
41
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
42
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
43
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
44
+ * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
45
+ """
46
+ return pulumi.get(self, "member")
47
+
48
+ @member.setter
49
+ def member(self, value: pulumi.Input[str]):
50
+ pulumi.set(self, "member", value)
51
+
52
+ @property
53
+ @pulumi.getter
54
+ def project(self) -> pulumi.Input[str]:
55
+ """
56
+ The project id of the target project.
57
+ """
58
+ return pulumi.get(self, "project")
59
+
60
+ @project.setter
61
+ def project(self, value: pulumi.Input[str]):
62
+ pulumi.set(self, "project", value)
63
+
64
+ @property
65
+ @pulumi.getter
66
+ def role(self) -> pulumi.Input[str]:
67
+ """
68
+ The target role that should be removed.
69
+ """
70
+ return pulumi.get(self, "role")
71
+
72
+ @role.setter
73
+ def role(self, value: pulumi.Input[str]):
74
+ pulumi.set(self, "role", value)
75
+
76
+
77
+ @pulumi.input_type
78
+ class _IamMemberRemoveState:
79
+ def __init__(__self__, *,
80
+ member: Optional[pulumi.Input[str]] = None,
81
+ project: Optional[pulumi.Input[str]] = None,
82
+ role: Optional[pulumi.Input[str]] = None):
83
+ """
84
+ Input properties used for looking up and filtering IamMemberRemove resources.
85
+ :param pulumi.Input[str] member: The IAM principal that should not have the target role.
86
+ Each entry can have one of the following values:
87
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
88
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
89
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
90
+ * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
91
+ :param pulumi.Input[str] project: The project id of the target project.
92
+ :param pulumi.Input[str] role: The target role that should be removed.
93
+ """
94
+ if member is not None:
95
+ pulumi.set(__self__, "member", member)
96
+ if project is not None:
97
+ pulumi.set(__self__, "project", project)
98
+ if role is not None:
99
+ pulumi.set(__self__, "role", role)
100
+
101
+ @property
102
+ @pulumi.getter
103
+ def member(self) -> Optional[pulumi.Input[str]]:
104
+ """
105
+ The IAM principal that should not have the target role.
106
+ Each entry can have one of the following values:
107
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
108
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
109
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
110
+ * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
111
+ """
112
+ return pulumi.get(self, "member")
113
+
114
+ @member.setter
115
+ def member(self, value: Optional[pulumi.Input[str]]):
116
+ pulumi.set(self, "member", value)
117
+
118
+ @property
119
+ @pulumi.getter
120
+ def project(self) -> Optional[pulumi.Input[str]]:
121
+ """
122
+ The project id of the target project.
123
+ """
124
+ return pulumi.get(self, "project")
125
+
126
+ @project.setter
127
+ def project(self, value: Optional[pulumi.Input[str]]):
128
+ pulumi.set(self, "project", value)
129
+
130
+ @property
131
+ @pulumi.getter
132
+ def role(self) -> Optional[pulumi.Input[str]]:
133
+ """
134
+ The target role that should be removed.
135
+ """
136
+ return pulumi.get(self, "role")
137
+
138
+ @role.setter
139
+ def role(self, value: Optional[pulumi.Input[str]]):
140
+ pulumi.set(self, "role", value)
141
+
142
+
143
+ class IamMemberRemove(pulumi.CustomResource):
144
+ @overload
145
+ def __init__(__self__,
146
+ resource_name: str,
147
+ opts: Optional[pulumi.ResourceOptions] = None,
148
+ member: Optional[pulumi.Input[str]] = None,
149
+ project: Optional[pulumi.Input[str]] = None,
150
+ role: Optional[pulumi.Input[str]] = None,
151
+ __props__=None):
152
+ """
153
+ Ensures that a member:role pairing does not exist in a project's IAM policy.
154
+
155
+ On create, this resource will modify the policy to remove the `member` from the
156
+ `role`. If the membership is ever re-added, the next refresh will clear this
157
+ resource from state, proposing re-adding it to correct the membership. Import is
158
+ not supported- this resource will acquire the current policy and modify it as
159
+ part of creating the resource.
160
+
161
+ This resource will conflict with `projects.IAMPolicy` and
162
+ `projects.IAMBinding` resources that share a role, as well as
163
+ `projects.IAMMember` resources that target the same membership. When
164
+ multiple resources conflict the final state is not guaranteed to include or omit
165
+ the membership. Subsequent `pulumi up` calls will always show a diff
166
+ until the configuration is corrected.
167
+
168
+ For more information see
169
+ [the official documentation](https://cloud.google.com/iam/docs/granting-changing-revoking-access)
170
+ and
171
+ [API reference](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy).
172
+
173
+ :param str resource_name: The name of the resource.
174
+ :param pulumi.ResourceOptions opts: Options for the resource.
175
+ :param pulumi.Input[str] member: The IAM principal that should not have the target role.
176
+ Each entry can have one of the following values:
177
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
178
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
179
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
180
+ * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
181
+ :param pulumi.Input[str] project: The project id of the target project.
182
+ :param pulumi.Input[str] role: The target role that should be removed.
183
+ """
184
+ ...
185
+ @overload
186
+ def __init__(__self__,
187
+ resource_name: str,
188
+ args: IamMemberRemoveArgs,
189
+ opts: Optional[pulumi.ResourceOptions] = None):
190
+ """
191
+ Ensures that a member:role pairing does not exist in a project's IAM policy.
192
+
193
+ On create, this resource will modify the policy to remove the `member` from the
194
+ `role`. If the membership is ever re-added, the next refresh will clear this
195
+ resource from state, proposing re-adding it to correct the membership. Import is
196
+ not supported- this resource will acquire the current policy and modify it as
197
+ part of creating the resource.
198
+
199
+ This resource will conflict with `projects.IAMPolicy` and
200
+ `projects.IAMBinding` resources that share a role, as well as
201
+ `projects.IAMMember` resources that target the same membership. When
202
+ multiple resources conflict the final state is not guaranteed to include or omit
203
+ the membership. Subsequent `pulumi up` calls will always show a diff
204
+ until the configuration is corrected.
205
+
206
+ For more information see
207
+ [the official documentation](https://cloud.google.com/iam/docs/granting-changing-revoking-access)
208
+ and
209
+ [API reference](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy).
210
+
211
+ :param str resource_name: The name of the resource.
212
+ :param IamMemberRemoveArgs args: The arguments to use to populate this resource's properties.
213
+ :param pulumi.ResourceOptions opts: Options for the resource.
214
+ """
215
+ ...
216
+ def __init__(__self__, resource_name: str, *args, **kwargs):
217
+ resource_args, opts = _utilities.get_resource_args_opts(IamMemberRemoveArgs, pulumi.ResourceOptions, *args, **kwargs)
218
+ if resource_args is not None:
219
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
220
+ else:
221
+ __self__._internal_init(resource_name, *args, **kwargs)
222
+
223
+ def _internal_init(__self__,
224
+ resource_name: str,
225
+ opts: Optional[pulumi.ResourceOptions] = None,
226
+ member: Optional[pulumi.Input[str]] = None,
227
+ project: Optional[pulumi.Input[str]] = None,
228
+ role: Optional[pulumi.Input[str]] = None,
229
+ __props__=None):
230
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
231
+ if not isinstance(opts, pulumi.ResourceOptions):
232
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
233
+ if opts.id is None:
234
+ if __props__ is not None:
235
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
236
+ __props__ = IamMemberRemoveArgs.__new__(IamMemberRemoveArgs)
237
+
238
+ if member is None and not opts.urn:
239
+ raise TypeError("Missing required property 'member'")
240
+ __props__.__dict__["member"] = member
241
+ if project is None and not opts.urn:
242
+ raise TypeError("Missing required property 'project'")
243
+ __props__.__dict__["project"] = project
244
+ if role is None and not opts.urn:
245
+ raise TypeError("Missing required property 'role'")
246
+ __props__.__dict__["role"] = role
247
+ super(IamMemberRemove, __self__).__init__(
248
+ 'gcp:projects/iamMemberRemove:IamMemberRemove',
249
+ resource_name,
250
+ __props__,
251
+ opts)
252
+
253
+ @staticmethod
254
+ def get(resource_name: str,
255
+ id: pulumi.Input[str],
256
+ opts: Optional[pulumi.ResourceOptions] = None,
257
+ member: Optional[pulumi.Input[str]] = None,
258
+ project: Optional[pulumi.Input[str]] = None,
259
+ role: Optional[pulumi.Input[str]] = None) -> 'IamMemberRemove':
260
+ """
261
+ Get an existing IamMemberRemove resource's state with the given name, id, and optional extra
262
+ properties used to qualify the lookup.
263
+
264
+ :param str resource_name: The unique name of the resulting resource.
265
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
266
+ :param pulumi.ResourceOptions opts: Options for the resource.
267
+ :param pulumi.Input[str] member: The IAM principal that should not have the target role.
268
+ Each entry can have one of the following values:
269
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
270
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
271
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
272
+ * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
273
+ :param pulumi.Input[str] project: The project id of the target project.
274
+ :param pulumi.Input[str] role: The target role that should be removed.
275
+ """
276
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
277
+
278
+ __props__ = _IamMemberRemoveState.__new__(_IamMemberRemoveState)
279
+
280
+ __props__.__dict__["member"] = member
281
+ __props__.__dict__["project"] = project
282
+ __props__.__dict__["role"] = role
283
+ return IamMemberRemove(resource_name, opts=opts, __props__=__props__)
284
+
285
+ @property
286
+ @pulumi.getter
287
+ def member(self) -> pulumi.Output[str]:
288
+ """
289
+ The IAM principal that should not have the target role.
290
+ Each entry can have one of the following values:
291
+ * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
292
+ * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
293
+ * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
294
+ * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
295
+ """
296
+ return pulumi.get(self, "member")
297
+
298
+ @property
299
+ @pulumi.getter
300
+ def project(self) -> pulumi.Output[str]:
301
+ """
302
+ The project id of the target project.
303
+ """
304
+ return pulumi.get(self, "project")
305
+
306
+ @property
307
+ @pulumi.getter
308
+ def role(self) -> pulumi.Output[str]:
309
+ """
310
+ The target role that should be removed.
311
+ """
312
+ return pulumi.get(self, "role")
313
+
pulumi_gcp/provider.py CHANGED
@@ -2431,7 +2431,7 @@ class Provider(pulumi.ProviderResource):
2431
2431
 
2432
2432
  __props__.__dict__["access_approval_custom_endpoint"] = access_approval_custom_endpoint
2433
2433
  __props__.__dict__["access_context_manager_custom_endpoint"] = access_context_manager_custom_endpoint
2434
- __props__.__dict__["access_token"] = access_token
2434
+ __props__.__dict__["access_token"] = None if access_token is None else pulumi.Output.secret(access_token)
2435
2435
  __props__.__dict__["active_directory_custom_endpoint"] = active_directory_custom_endpoint
2436
2436
  __props__.__dict__["add_terraform_attribution_label"] = pulumi.Output.from_input(add_terraform_attribution_label).apply(pulumi.runtime.to_json) if add_terraform_attribution_label is not None else None
2437
2437
  __props__.__dict__["alloydb_custom_endpoint"] = alloydb_custom_endpoint
@@ -2603,6 +2603,8 @@ class Provider(pulumi.ProviderResource):
2603
2603
  if zone is None:
2604
2604
  zone = _utilities.get_env('GOOGLE_ZONE', 'GCLOUD_ZONE', 'CLOUDSDK_COMPUTE_ZONE')
2605
2605
  __props__.__dict__["zone"] = zone
2606
+ secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["accessToken"])
2607
+ opts = pulumi.ResourceOptions.merge(opts, secret_opts)
2606
2608
  super(Provider, __self__).__init__(
2607
2609
  'gcp',
2608
2610
  resource_name,
@@ -22,7 +22,7 @@ class GetSecretResult:
22
22
  """
23
23
  A collection of values returned by getSecret.
24
24
  """
25
- def __init__(__self__, annotations=None, create_time=None, effective_annotations=None, effective_labels=None, expire_time=None, id=None, labels=None, name=None, project=None, pulumi_labels=None, replications=None, rotations=None, secret_id=None, topics=None, ttl=None, version_aliases=None):
25
+ def __init__(__self__, annotations=None, create_time=None, effective_annotations=None, effective_labels=None, expire_time=None, id=None, labels=None, name=None, project=None, pulumi_labels=None, replications=None, rotations=None, secret_id=None, topics=None, ttl=None, version_aliases=None, version_destroy_ttl=None):
26
26
  if annotations and not isinstance(annotations, dict):
27
27
  raise TypeError("Expected argument 'annotations' to be a dict")
28
28
  pulumi.set(__self__, "annotations", annotations)
@@ -71,6 +71,9 @@ class GetSecretResult:
71
71
  if version_aliases and not isinstance(version_aliases, dict):
72
72
  raise TypeError("Expected argument 'version_aliases' to be a dict")
73
73
  pulumi.set(__self__, "version_aliases", version_aliases)
74
+ if version_destroy_ttl and not isinstance(version_destroy_ttl, str):
75
+ raise TypeError("Expected argument 'version_destroy_ttl' to be a str")
76
+ pulumi.set(__self__, "version_destroy_ttl", version_destroy_ttl)
74
77
 
75
78
  @property
76
79
  @pulumi.getter
@@ -155,6 +158,11 @@ class GetSecretResult:
155
158
  def version_aliases(self) -> Mapping[str, str]:
156
159
  return pulumi.get(self, "version_aliases")
157
160
 
161
+ @property
162
+ @pulumi.getter(name="versionDestroyTtl")
163
+ def version_destroy_ttl(self) -> str:
164
+ return pulumi.get(self, "version_destroy_ttl")
165
+
158
166
 
159
167
  class AwaitableGetSecretResult(GetSecretResult):
160
168
  # pylint: disable=using-constant-test
@@ -177,7 +185,8 @@ class AwaitableGetSecretResult(GetSecretResult):
177
185
  secret_id=self.secret_id,
178
186
  topics=self.topics,
179
187
  ttl=self.ttl,
180
- version_aliases=self.version_aliases)
188
+ version_aliases=self.version_aliases,
189
+ version_destroy_ttl=self.version_destroy_ttl)
181
190
 
182
191
 
183
192
  def get_secret(project: Optional[str] = None,
@@ -221,7 +230,8 @@ def get_secret(project: Optional[str] = None,
221
230
  secret_id=pulumi.get(__ret__, 'secret_id'),
222
231
  topics=pulumi.get(__ret__, 'topics'),
223
232
  ttl=pulumi.get(__ret__, 'ttl'),
224
- version_aliases=pulumi.get(__ret__, 'version_aliases'))
233
+ version_aliases=pulumi.get(__ret__, 'version_aliases'),
234
+ version_destroy_ttl=pulumi.get(__ret__, 'version_destroy_ttl'))
225
235
 
226
236
 
227
237
  @_utilities.lift_output_func(get_secret)
@@ -613,7 +613,8 @@ class GetSecretsSecretResult(dict):
613
613
  secret_id: str,
614
614
  topics: Sequence['outputs.GetSecretsSecretTopicResult'],
615
615
  ttl: str,
616
- version_aliases: Mapping[str, str]):
616
+ version_aliases: Mapping[str, str],
617
+ version_destroy_ttl: str):
617
618
  """
618
619
  :param Mapping[str, str] annotations: Custom metadata about the secret.
619
620
  :param str create_time: The time at which the Secret was created.
@@ -634,6 +635,11 @@ class GetSecretsSecretResult(dict):
634
635
  A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s".
635
636
  Only one of 'ttl' or 'expire_time' can be provided.
636
637
  :param Mapping[str, str] version_aliases: Mapping from version alias to version name.
638
+ :param str version_destroy_ttl: Secret Version TTL after destruction request.
639
+ This is a part of the delayed delete feature on Secret Version.
640
+ For secret with versionDestroyTtl>0, version destruction doesn't happen immediately
641
+ on calling destroy instead the version goes to a disabled state and
642
+ the actual destruction happens after this TTL expires.
637
643
  """
638
644
  pulumi.set(__self__, "annotations", annotations)
639
645
  pulumi.set(__self__, "create_time", create_time)
@@ -650,6 +656,7 @@ class GetSecretsSecretResult(dict):
650
656
  pulumi.set(__self__, "topics", topics)
651
657
  pulumi.set(__self__, "ttl", ttl)
652
658
  pulumi.set(__self__, "version_aliases", version_aliases)
659
+ pulumi.set(__self__, "version_destroy_ttl", version_destroy_ttl)
653
660
 
654
661
  @property
655
662
  @pulumi.getter
@@ -771,6 +778,18 @@ class GetSecretsSecretResult(dict):
771
778
  """
772
779
  return pulumi.get(self, "version_aliases")
773
780
 
781
+ @property
782
+ @pulumi.getter(name="versionDestroyTtl")
783
+ def version_destroy_ttl(self) -> str:
784
+ """
785
+ Secret Version TTL after destruction request.
786
+ This is a part of the delayed delete feature on Secret Version.
787
+ For secret with versionDestroyTtl>0, version destruction doesn't happen immediately
788
+ on calling destroy instead the version goes to a disabled state and
789
+ the actual destruction happens after this TTL expires.
790
+ """
791
+ return pulumi.get(self, "version_destroy_ttl")
792
+
774
793
 
775
794
  @pulumi.output_type
776
795
  class GetSecretsSecretReplicationResult(dict):