pulumi-gcp 8.29.0a1746115375__py3-none-any.whl → 8.30.0a1746254470__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.
- pulumi_gcp/__init__.py +24 -0
- pulumi_gcp/alloydb/instance.py +1 -1
- pulumi_gcp/apigee/organization.py +26 -0
- pulumi_gcp/beyondcorp/_inputs.py +129 -0
- pulumi_gcp/beyondcorp/application.py +106 -3
- pulumi_gcp/beyondcorp/outputs.py +93 -0
- pulumi_gcp/bigtable/__init__.py +2 -0
- pulumi_gcp/bigtable/logical_view.py +473 -0
- pulumi_gcp/bigtable/materialized_view.py +524 -0
- pulumi_gcp/certificateauthority/ca_pool.py +12 -0
- pulumi_gcp/certificatemanager/get_certificates.py +29 -0
- pulumi_gcp/clouddeploy/automation.py +66 -10
- pulumi_gcp/compute/_inputs.py +366 -55
- pulumi_gcp/compute/backend_service.py +6 -2
- pulumi_gcp/compute/get_region_disk.py +12 -1
- pulumi_gcp/compute/interconnect.py +25 -24
- pulumi_gcp/compute/outputs.py +380 -48
- pulumi_gcp/compute/region_disk.py +28 -0
- pulumi_gcp/compute/region_resize_request.py +2 -2
- pulumi_gcp/compute/region_security_policy.py +16 -0
- pulumi_gcp/compute/region_security_policy_rule.py +16 -0
- pulumi_gcp/compute/resize_request.py +2 -2
- pulumi_gcp/compute/resource_policy.py +0 -2
- pulumi_gcp/container/_inputs.py +69 -9
- pulumi_gcp/container/outputs.py +71 -7
- pulumi_gcp/dataplex/_inputs.py +219 -1
- pulumi_gcp/dataplex/datascan.py +20 -0
- pulumi_gcp/dataplex/outputs.py +168 -1
- pulumi_gcp/developerconnect/_inputs.py +6 -0
- pulumi_gcp/developerconnect/account_connector.py +56 -0
- pulumi_gcp/developerconnect/outputs.py +4 -0
- pulumi_gcp/dns/_inputs.py +34 -13
- pulumi_gcp/dns/outputs.py +25 -10
- pulumi_gcp/gkehub/_inputs.py +3 -3
- pulumi_gcp/gkehub/feature_membership.py +92 -0
- pulumi_gcp/gkehub/outputs.py +2 -2
- pulumi_gcp/identityplatform/_inputs.py +54 -0
- pulumi_gcp/identityplatform/oauth_idp_config.py +83 -5
- pulumi_gcp/identityplatform/outputs.py +49 -0
- pulumi_gcp/memcache/__init__.py +1 -0
- pulumi_gcp/memcache/get_instance.py +338 -0
- pulumi_gcp/memcache/outputs.py +363 -0
- pulumi_gcp/netapp/storage_pool.py +141 -0
- pulumi_gcp/networkservices/_inputs.py +35 -6
- pulumi_gcp/networkservices/lb_traffic_extension.py +7 -0
- pulumi_gcp/networkservices/outputs.py +22 -4
- pulumi_gcp/osconfig/__init__.py +1 -0
- pulumi_gcp/osconfig/_inputs.py +5400 -0
- pulumi_gcp/osconfig/outputs.py +3952 -0
- pulumi_gcp/osconfig/v2_policy_orchestrator_for_folder.py +1098 -0
- pulumi_gcp/pulumi-plugin.json +1 -1
- pulumi_gcp/spanner/instance_config.py +14 -14
- pulumi_gcp/sql/_inputs.py +83 -0
- pulumi_gcp/sql/database_instance.py +28 -0
- pulumi_gcp/sql/get_database_instance.py +12 -1
- pulumi_gcp/sql/outputs.py +146 -6
- pulumi_gcp/storage/_inputs.py +20 -0
- pulumi_gcp/storage/bucket.py +56 -0
- pulumi_gcp/storage/get_bucket.py +23 -1
- pulumi_gcp/storage/outputs.py +14 -0
- pulumi_gcp/vertex/ai_feature_online_store_featureview.py +2 -14
- {pulumi_gcp-8.29.0a1746115375.dist-info → pulumi_gcp-8.30.0a1746254470.dist-info}/METADATA +1 -1
- {pulumi_gcp-8.29.0a1746115375.dist-info → pulumi_gcp-8.30.0a1746254470.dist-info}/RECORD +65 -61
- {pulumi_gcp-8.29.0a1746115375.dist-info → pulumi_gcp-8.30.0a1746254470.dist-info}/WHEEL +1 -1
- {pulumi_gcp-8.29.0a1746115375.dist-info → pulumi_gcp-8.30.0a1746254470.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,1098 @@
|
|
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 builtins
|
6
|
+
import copy
|
7
|
+
import warnings
|
8
|
+
import sys
|
9
|
+
import pulumi
|
10
|
+
import pulumi.runtime
|
11
|
+
from typing import Any, Mapping, Optional, Sequence, Union, overload
|
12
|
+
if sys.version_info >= (3, 11):
|
13
|
+
from typing import NotRequired, TypedDict, TypeAlias
|
14
|
+
else:
|
15
|
+
from typing_extensions import NotRequired, TypedDict, TypeAlias
|
16
|
+
from .. import _utilities
|
17
|
+
from . import outputs
|
18
|
+
from ._inputs import *
|
19
|
+
|
20
|
+
__all__ = ['V2PolicyOrchestratorForFolderArgs', 'V2PolicyOrchestratorForFolder']
|
21
|
+
|
22
|
+
@pulumi.input_type
|
23
|
+
class V2PolicyOrchestratorForFolderArgs:
|
24
|
+
def __init__(__self__, *,
|
25
|
+
action: pulumi.Input[builtins.str],
|
26
|
+
folder_id: pulumi.Input[builtins.str],
|
27
|
+
orchestrated_resource: pulumi.Input['V2PolicyOrchestratorForFolderOrchestratedResourceArgs'],
|
28
|
+
policy_orchestrator_id: pulumi.Input[builtins.str],
|
29
|
+
description: Optional[pulumi.Input[builtins.str]] = None,
|
30
|
+
labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]] = None,
|
31
|
+
orchestration_scope: Optional[pulumi.Input['V2PolicyOrchestratorForFolderOrchestrationScopeArgs']] = None,
|
32
|
+
state: Optional[pulumi.Input[builtins.str]] = None):
|
33
|
+
"""
|
34
|
+
The set of arguments for constructing a V2PolicyOrchestratorForFolder resource.
|
35
|
+
:param pulumi.Input[builtins.str] action: Action to be done by the orchestrator in
|
36
|
+
`projects/{project_id}/zones/{zone_id}` locations defined by the
|
37
|
+
`orchestration_scope`. Allowed values:
|
38
|
+
- `UPSERT` - Orchestrator will create or update target resources.
|
39
|
+
- `DELETE` - Orchestrator will delete target resources, if they exist
|
40
|
+
:param pulumi.Input[builtins.str] folder_id: The parent resource name in the form of `folders/{folder_id}/locations/global`.
|
41
|
+
:param pulumi.Input['V2PolicyOrchestratorForFolderOrchestratedResourceArgs'] orchestrated_resource: Represents a resource that is being orchestrated by the policy orchestrator.
|
42
|
+
Structure is documented below.
|
43
|
+
:param pulumi.Input[builtins.str] policy_orchestrator_id: The logical identifier of the policy orchestrator, with the following
|
44
|
+
restrictions:
|
45
|
+
* Must contain only lowercase letters, numbers, and hyphens.
|
46
|
+
* Must start with a letter.
|
47
|
+
* Must be between 1-63 characters.
|
48
|
+
* Must end with a number or a letter.
|
49
|
+
* Must be unique within the parent.
|
50
|
+
:param pulumi.Input[builtins.str] description: Freeform text describing the purpose of the resource.
|
51
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]] labels: Labels as key value pairs **Note**: This field is non-authoritative, and will only manage the labels present in your
|
52
|
+
configuration. Please refer to the field 'effective_labels' for all of the labels present on the resource.
|
53
|
+
:param pulumi.Input['V2PolicyOrchestratorForFolderOrchestrationScopeArgs'] orchestration_scope: Defines a set of selectors which drive which resources are in scope of policy orchestration.
|
54
|
+
:param pulumi.Input[builtins.str] state: (Output)
|
55
|
+
State of the iteration.
|
56
|
+
Possible values:
|
57
|
+
PROCESSING
|
58
|
+
COMPLETED
|
59
|
+
FAILED
|
60
|
+
CANCELLED
|
61
|
+
UNKNOWN
|
62
|
+
"""
|
63
|
+
pulumi.set(__self__, "action", action)
|
64
|
+
pulumi.set(__self__, "folder_id", folder_id)
|
65
|
+
pulumi.set(__self__, "orchestrated_resource", orchestrated_resource)
|
66
|
+
pulumi.set(__self__, "policy_orchestrator_id", policy_orchestrator_id)
|
67
|
+
if description is not None:
|
68
|
+
pulumi.set(__self__, "description", description)
|
69
|
+
if labels is not None:
|
70
|
+
pulumi.set(__self__, "labels", labels)
|
71
|
+
if orchestration_scope is not None:
|
72
|
+
pulumi.set(__self__, "orchestration_scope", orchestration_scope)
|
73
|
+
if state is not None:
|
74
|
+
pulumi.set(__self__, "state", state)
|
75
|
+
|
76
|
+
@property
|
77
|
+
@pulumi.getter
|
78
|
+
def action(self) -> pulumi.Input[builtins.str]:
|
79
|
+
"""
|
80
|
+
Action to be done by the orchestrator in
|
81
|
+
`projects/{project_id}/zones/{zone_id}` locations defined by the
|
82
|
+
`orchestration_scope`. Allowed values:
|
83
|
+
- `UPSERT` - Orchestrator will create or update target resources.
|
84
|
+
- `DELETE` - Orchestrator will delete target resources, if they exist
|
85
|
+
"""
|
86
|
+
return pulumi.get(self, "action")
|
87
|
+
|
88
|
+
@action.setter
|
89
|
+
def action(self, value: pulumi.Input[builtins.str]):
|
90
|
+
pulumi.set(self, "action", value)
|
91
|
+
|
92
|
+
@property
|
93
|
+
@pulumi.getter(name="folderId")
|
94
|
+
def folder_id(self) -> pulumi.Input[builtins.str]:
|
95
|
+
"""
|
96
|
+
The parent resource name in the form of `folders/{folder_id}/locations/global`.
|
97
|
+
"""
|
98
|
+
return pulumi.get(self, "folder_id")
|
99
|
+
|
100
|
+
@folder_id.setter
|
101
|
+
def folder_id(self, value: pulumi.Input[builtins.str]):
|
102
|
+
pulumi.set(self, "folder_id", value)
|
103
|
+
|
104
|
+
@property
|
105
|
+
@pulumi.getter(name="orchestratedResource")
|
106
|
+
def orchestrated_resource(self) -> pulumi.Input['V2PolicyOrchestratorForFolderOrchestratedResourceArgs']:
|
107
|
+
"""
|
108
|
+
Represents a resource that is being orchestrated by the policy orchestrator.
|
109
|
+
Structure is documented below.
|
110
|
+
"""
|
111
|
+
return pulumi.get(self, "orchestrated_resource")
|
112
|
+
|
113
|
+
@orchestrated_resource.setter
|
114
|
+
def orchestrated_resource(self, value: pulumi.Input['V2PolicyOrchestratorForFolderOrchestratedResourceArgs']):
|
115
|
+
pulumi.set(self, "orchestrated_resource", value)
|
116
|
+
|
117
|
+
@property
|
118
|
+
@pulumi.getter(name="policyOrchestratorId")
|
119
|
+
def policy_orchestrator_id(self) -> pulumi.Input[builtins.str]:
|
120
|
+
"""
|
121
|
+
The logical identifier of the policy orchestrator, with the following
|
122
|
+
restrictions:
|
123
|
+
* Must contain only lowercase letters, numbers, and hyphens.
|
124
|
+
* Must start with a letter.
|
125
|
+
* Must be between 1-63 characters.
|
126
|
+
* Must end with a number or a letter.
|
127
|
+
* Must be unique within the parent.
|
128
|
+
"""
|
129
|
+
return pulumi.get(self, "policy_orchestrator_id")
|
130
|
+
|
131
|
+
@policy_orchestrator_id.setter
|
132
|
+
def policy_orchestrator_id(self, value: pulumi.Input[builtins.str]):
|
133
|
+
pulumi.set(self, "policy_orchestrator_id", value)
|
134
|
+
|
135
|
+
@property
|
136
|
+
@pulumi.getter
|
137
|
+
def description(self) -> Optional[pulumi.Input[builtins.str]]:
|
138
|
+
"""
|
139
|
+
Freeform text describing the purpose of the resource.
|
140
|
+
"""
|
141
|
+
return pulumi.get(self, "description")
|
142
|
+
|
143
|
+
@description.setter
|
144
|
+
def description(self, value: Optional[pulumi.Input[builtins.str]]):
|
145
|
+
pulumi.set(self, "description", value)
|
146
|
+
|
147
|
+
@property
|
148
|
+
@pulumi.getter
|
149
|
+
def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]]:
|
150
|
+
"""
|
151
|
+
Labels as key value pairs **Note**: This field is non-authoritative, and will only manage the labels present in your
|
152
|
+
configuration. Please refer to the field 'effective_labels' for all of the labels present on the resource.
|
153
|
+
"""
|
154
|
+
return pulumi.get(self, "labels")
|
155
|
+
|
156
|
+
@labels.setter
|
157
|
+
def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]]):
|
158
|
+
pulumi.set(self, "labels", value)
|
159
|
+
|
160
|
+
@property
|
161
|
+
@pulumi.getter(name="orchestrationScope")
|
162
|
+
def orchestration_scope(self) -> Optional[pulumi.Input['V2PolicyOrchestratorForFolderOrchestrationScopeArgs']]:
|
163
|
+
"""
|
164
|
+
Defines a set of selectors which drive which resources are in scope of policy orchestration.
|
165
|
+
"""
|
166
|
+
return pulumi.get(self, "orchestration_scope")
|
167
|
+
|
168
|
+
@orchestration_scope.setter
|
169
|
+
def orchestration_scope(self, value: Optional[pulumi.Input['V2PolicyOrchestratorForFolderOrchestrationScopeArgs']]):
|
170
|
+
pulumi.set(self, "orchestration_scope", value)
|
171
|
+
|
172
|
+
@property
|
173
|
+
@pulumi.getter
|
174
|
+
def state(self) -> Optional[pulumi.Input[builtins.str]]:
|
175
|
+
"""
|
176
|
+
(Output)
|
177
|
+
State of the iteration.
|
178
|
+
Possible values:
|
179
|
+
PROCESSING
|
180
|
+
COMPLETED
|
181
|
+
FAILED
|
182
|
+
CANCELLED
|
183
|
+
UNKNOWN
|
184
|
+
"""
|
185
|
+
return pulumi.get(self, "state")
|
186
|
+
|
187
|
+
@state.setter
|
188
|
+
def state(self, value: Optional[pulumi.Input[builtins.str]]):
|
189
|
+
pulumi.set(self, "state", value)
|
190
|
+
|
191
|
+
|
192
|
+
@pulumi.input_type
|
193
|
+
class _V2PolicyOrchestratorForFolderState:
|
194
|
+
def __init__(__self__, *,
|
195
|
+
action: Optional[pulumi.Input[builtins.str]] = None,
|
196
|
+
create_time: Optional[pulumi.Input[builtins.str]] = None,
|
197
|
+
description: Optional[pulumi.Input[builtins.str]] = None,
|
198
|
+
effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]] = None,
|
199
|
+
etag: Optional[pulumi.Input[builtins.str]] = None,
|
200
|
+
folder_id: Optional[pulumi.Input[builtins.str]] = None,
|
201
|
+
labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]] = None,
|
202
|
+
name: Optional[pulumi.Input[builtins.str]] = None,
|
203
|
+
orchestrated_resource: Optional[pulumi.Input['V2PolicyOrchestratorForFolderOrchestratedResourceArgs']] = None,
|
204
|
+
orchestration_scope: Optional[pulumi.Input['V2PolicyOrchestratorForFolderOrchestrationScopeArgs']] = None,
|
205
|
+
orchestration_states: Optional[pulumi.Input[Sequence[pulumi.Input['V2PolicyOrchestratorForFolderOrchestrationStateArgs']]]] = None,
|
206
|
+
policy_orchestrator_id: Optional[pulumi.Input[builtins.str]] = None,
|
207
|
+
pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]] = None,
|
208
|
+
reconciling: Optional[pulumi.Input[builtins.bool]] = None,
|
209
|
+
state: Optional[pulumi.Input[builtins.str]] = None,
|
210
|
+
update_time: Optional[pulumi.Input[builtins.str]] = None):
|
211
|
+
"""
|
212
|
+
Input properties used for looking up and filtering V2PolicyOrchestratorForFolder resources.
|
213
|
+
:param pulumi.Input[builtins.str] action: Action to be done by the orchestrator in
|
214
|
+
`projects/{project_id}/zones/{zone_id}` locations defined by the
|
215
|
+
`orchestration_scope`. Allowed values:
|
216
|
+
- `UPSERT` - Orchestrator will create or update target resources.
|
217
|
+
- `DELETE` - Orchestrator will delete target resources, if they exist
|
218
|
+
:param pulumi.Input[builtins.str] create_time: Timestamp when the policy orchestrator resource was created.
|
219
|
+
:param pulumi.Input[builtins.str] description: Freeform text describing the purpose of the resource.
|
220
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
|
221
|
+
:param pulumi.Input[builtins.str] etag: This checksum is computed by the server based on the value of other
|
222
|
+
fields, and may be sent on update and delete requests to ensure the
|
223
|
+
client has an up-to-date value before proceeding.
|
224
|
+
:param pulumi.Input[builtins.str] folder_id: The parent resource name in the form of `folders/{folder_id}/locations/global`.
|
225
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]] labels: Labels as key value pairs **Note**: This field is non-authoritative, and will only manage the labels present in your
|
226
|
+
configuration. Please refer to the field 'effective_labels' for all of the labels present on the resource.
|
227
|
+
:param pulumi.Input[builtins.str] name: Identifier. In form of
|
228
|
+
* `organizations/{organization_id}/locations/global/policyOrchestrators/{orchestrator_id}`
|
229
|
+
* `folders/{folder_id}/locations/global/policyOrchestrators/{orchestrator_id}`
|
230
|
+
* `projects/{project_id_or_number}/locations/global/policyOrchestrators/{orchestrator_id}`
|
231
|
+
:param pulumi.Input['V2PolicyOrchestratorForFolderOrchestratedResourceArgs'] orchestrated_resource: Represents a resource that is being orchestrated by the policy orchestrator.
|
232
|
+
Structure is documented below.
|
233
|
+
:param pulumi.Input['V2PolicyOrchestratorForFolderOrchestrationScopeArgs'] orchestration_scope: Defines a set of selectors which drive which resources are in scope of policy orchestration.
|
234
|
+
:param pulumi.Input[Sequence[pulumi.Input['V2PolicyOrchestratorForFolderOrchestrationStateArgs']]] orchestration_states: Describes the state of the orchestration process.
|
235
|
+
Structure is documented below.
|
236
|
+
:param pulumi.Input[builtins.str] policy_orchestrator_id: The logical identifier of the policy orchestrator, with the following
|
237
|
+
restrictions:
|
238
|
+
* Must contain only lowercase letters, numbers, and hyphens.
|
239
|
+
* Must start with a letter.
|
240
|
+
* Must be between 1-63 characters.
|
241
|
+
* Must end with a number or a letter.
|
242
|
+
* Must be unique within the parent.
|
243
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]] pulumi_labels: The combination of labels configured directly on the resource
|
244
|
+
and default labels configured on the provider.
|
245
|
+
:param pulumi.Input[builtins.bool] reconciling: Set to true, if the there are ongoing changes being applied by the
|
246
|
+
orchestrator.
|
247
|
+
:param pulumi.Input[builtins.str] state: (Output)
|
248
|
+
State of the iteration.
|
249
|
+
Possible values:
|
250
|
+
PROCESSING
|
251
|
+
COMPLETED
|
252
|
+
FAILED
|
253
|
+
CANCELLED
|
254
|
+
UNKNOWN
|
255
|
+
:param pulumi.Input[builtins.str] update_time: Timestamp when the policy orchestrator resource was last modified.
|
256
|
+
"""
|
257
|
+
if action is not None:
|
258
|
+
pulumi.set(__self__, "action", action)
|
259
|
+
if create_time is not None:
|
260
|
+
pulumi.set(__self__, "create_time", create_time)
|
261
|
+
if description is not None:
|
262
|
+
pulumi.set(__self__, "description", description)
|
263
|
+
if effective_labels is not None:
|
264
|
+
pulumi.set(__self__, "effective_labels", effective_labels)
|
265
|
+
if etag is not None:
|
266
|
+
pulumi.set(__self__, "etag", etag)
|
267
|
+
if folder_id is not None:
|
268
|
+
pulumi.set(__self__, "folder_id", folder_id)
|
269
|
+
if labels is not None:
|
270
|
+
pulumi.set(__self__, "labels", labels)
|
271
|
+
if name is not None:
|
272
|
+
pulumi.set(__self__, "name", name)
|
273
|
+
if orchestrated_resource is not None:
|
274
|
+
pulumi.set(__self__, "orchestrated_resource", orchestrated_resource)
|
275
|
+
if orchestration_scope is not None:
|
276
|
+
pulumi.set(__self__, "orchestration_scope", orchestration_scope)
|
277
|
+
if orchestration_states is not None:
|
278
|
+
pulumi.set(__self__, "orchestration_states", orchestration_states)
|
279
|
+
if policy_orchestrator_id is not None:
|
280
|
+
pulumi.set(__self__, "policy_orchestrator_id", policy_orchestrator_id)
|
281
|
+
if pulumi_labels is not None:
|
282
|
+
pulumi.set(__self__, "pulumi_labels", pulumi_labels)
|
283
|
+
if reconciling is not None:
|
284
|
+
pulumi.set(__self__, "reconciling", reconciling)
|
285
|
+
if state is not None:
|
286
|
+
pulumi.set(__self__, "state", state)
|
287
|
+
if update_time is not None:
|
288
|
+
pulumi.set(__self__, "update_time", update_time)
|
289
|
+
|
290
|
+
@property
|
291
|
+
@pulumi.getter
|
292
|
+
def action(self) -> Optional[pulumi.Input[builtins.str]]:
|
293
|
+
"""
|
294
|
+
Action to be done by the orchestrator in
|
295
|
+
`projects/{project_id}/zones/{zone_id}` locations defined by the
|
296
|
+
`orchestration_scope`. Allowed values:
|
297
|
+
- `UPSERT` - Orchestrator will create or update target resources.
|
298
|
+
- `DELETE` - Orchestrator will delete target resources, if they exist
|
299
|
+
"""
|
300
|
+
return pulumi.get(self, "action")
|
301
|
+
|
302
|
+
@action.setter
|
303
|
+
def action(self, value: Optional[pulumi.Input[builtins.str]]):
|
304
|
+
pulumi.set(self, "action", value)
|
305
|
+
|
306
|
+
@property
|
307
|
+
@pulumi.getter(name="createTime")
|
308
|
+
def create_time(self) -> Optional[pulumi.Input[builtins.str]]:
|
309
|
+
"""
|
310
|
+
Timestamp when the policy orchestrator resource was created.
|
311
|
+
"""
|
312
|
+
return pulumi.get(self, "create_time")
|
313
|
+
|
314
|
+
@create_time.setter
|
315
|
+
def create_time(self, value: Optional[pulumi.Input[builtins.str]]):
|
316
|
+
pulumi.set(self, "create_time", value)
|
317
|
+
|
318
|
+
@property
|
319
|
+
@pulumi.getter
|
320
|
+
def description(self) -> Optional[pulumi.Input[builtins.str]]:
|
321
|
+
"""
|
322
|
+
Freeform text describing the purpose of the resource.
|
323
|
+
"""
|
324
|
+
return pulumi.get(self, "description")
|
325
|
+
|
326
|
+
@description.setter
|
327
|
+
def description(self, value: Optional[pulumi.Input[builtins.str]]):
|
328
|
+
pulumi.set(self, "description", value)
|
329
|
+
|
330
|
+
@property
|
331
|
+
@pulumi.getter(name="effectiveLabels")
|
332
|
+
def effective_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]]:
|
333
|
+
"""
|
334
|
+
All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
|
335
|
+
"""
|
336
|
+
return pulumi.get(self, "effective_labels")
|
337
|
+
|
338
|
+
@effective_labels.setter
|
339
|
+
def effective_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]]):
|
340
|
+
pulumi.set(self, "effective_labels", value)
|
341
|
+
|
342
|
+
@property
|
343
|
+
@pulumi.getter
|
344
|
+
def etag(self) -> Optional[pulumi.Input[builtins.str]]:
|
345
|
+
"""
|
346
|
+
This checksum is computed by the server based on the value of other
|
347
|
+
fields, and may be sent on update and delete requests to ensure the
|
348
|
+
client has an up-to-date value before proceeding.
|
349
|
+
"""
|
350
|
+
return pulumi.get(self, "etag")
|
351
|
+
|
352
|
+
@etag.setter
|
353
|
+
def etag(self, value: Optional[pulumi.Input[builtins.str]]):
|
354
|
+
pulumi.set(self, "etag", value)
|
355
|
+
|
356
|
+
@property
|
357
|
+
@pulumi.getter(name="folderId")
|
358
|
+
def folder_id(self) -> Optional[pulumi.Input[builtins.str]]:
|
359
|
+
"""
|
360
|
+
The parent resource name in the form of `folders/{folder_id}/locations/global`.
|
361
|
+
"""
|
362
|
+
return pulumi.get(self, "folder_id")
|
363
|
+
|
364
|
+
@folder_id.setter
|
365
|
+
def folder_id(self, value: Optional[pulumi.Input[builtins.str]]):
|
366
|
+
pulumi.set(self, "folder_id", value)
|
367
|
+
|
368
|
+
@property
|
369
|
+
@pulumi.getter
|
370
|
+
def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]]:
|
371
|
+
"""
|
372
|
+
Labels as key value pairs **Note**: This field is non-authoritative, and will only manage the labels present in your
|
373
|
+
configuration. Please refer to the field 'effective_labels' for all of the labels present on the resource.
|
374
|
+
"""
|
375
|
+
return pulumi.get(self, "labels")
|
376
|
+
|
377
|
+
@labels.setter
|
378
|
+
def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]]):
|
379
|
+
pulumi.set(self, "labels", value)
|
380
|
+
|
381
|
+
@property
|
382
|
+
@pulumi.getter
|
383
|
+
def name(self) -> Optional[pulumi.Input[builtins.str]]:
|
384
|
+
"""
|
385
|
+
Identifier. In form of
|
386
|
+
* `organizations/{organization_id}/locations/global/policyOrchestrators/{orchestrator_id}`
|
387
|
+
* `folders/{folder_id}/locations/global/policyOrchestrators/{orchestrator_id}`
|
388
|
+
* `projects/{project_id_or_number}/locations/global/policyOrchestrators/{orchestrator_id}`
|
389
|
+
"""
|
390
|
+
return pulumi.get(self, "name")
|
391
|
+
|
392
|
+
@name.setter
|
393
|
+
def name(self, value: Optional[pulumi.Input[builtins.str]]):
|
394
|
+
pulumi.set(self, "name", value)
|
395
|
+
|
396
|
+
@property
|
397
|
+
@pulumi.getter(name="orchestratedResource")
|
398
|
+
def orchestrated_resource(self) -> Optional[pulumi.Input['V2PolicyOrchestratorForFolderOrchestratedResourceArgs']]:
|
399
|
+
"""
|
400
|
+
Represents a resource that is being orchestrated by the policy orchestrator.
|
401
|
+
Structure is documented below.
|
402
|
+
"""
|
403
|
+
return pulumi.get(self, "orchestrated_resource")
|
404
|
+
|
405
|
+
@orchestrated_resource.setter
|
406
|
+
def orchestrated_resource(self, value: Optional[pulumi.Input['V2PolicyOrchestratorForFolderOrchestratedResourceArgs']]):
|
407
|
+
pulumi.set(self, "orchestrated_resource", value)
|
408
|
+
|
409
|
+
@property
|
410
|
+
@pulumi.getter(name="orchestrationScope")
|
411
|
+
def orchestration_scope(self) -> Optional[pulumi.Input['V2PolicyOrchestratorForFolderOrchestrationScopeArgs']]:
|
412
|
+
"""
|
413
|
+
Defines a set of selectors which drive which resources are in scope of policy orchestration.
|
414
|
+
"""
|
415
|
+
return pulumi.get(self, "orchestration_scope")
|
416
|
+
|
417
|
+
@orchestration_scope.setter
|
418
|
+
def orchestration_scope(self, value: Optional[pulumi.Input['V2PolicyOrchestratorForFolderOrchestrationScopeArgs']]):
|
419
|
+
pulumi.set(self, "orchestration_scope", value)
|
420
|
+
|
421
|
+
@property
|
422
|
+
@pulumi.getter(name="orchestrationStates")
|
423
|
+
def orchestration_states(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['V2PolicyOrchestratorForFolderOrchestrationStateArgs']]]]:
|
424
|
+
"""
|
425
|
+
Describes the state of the orchestration process.
|
426
|
+
Structure is documented below.
|
427
|
+
"""
|
428
|
+
return pulumi.get(self, "orchestration_states")
|
429
|
+
|
430
|
+
@orchestration_states.setter
|
431
|
+
def orchestration_states(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['V2PolicyOrchestratorForFolderOrchestrationStateArgs']]]]):
|
432
|
+
pulumi.set(self, "orchestration_states", value)
|
433
|
+
|
434
|
+
@property
|
435
|
+
@pulumi.getter(name="policyOrchestratorId")
|
436
|
+
def policy_orchestrator_id(self) -> Optional[pulumi.Input[builtins.str]]:
|
437
|
+
"""
|
438
|
+
The logical identifier of the policy orchestrator, with the following
|
439
|
+
restrictions:
|
440
|
+
* Must contain only lowercase letters, numbers, and hyphens.
|
441
|
+
* Must start with a letter.
|
442
|
+
* Must be between 1-63 characters.
|
443
|
+
* Must end with a number or a letter.
|
444
|
+
* Must be unique within the parent.
|
445
|
+
"""
|
446
|
+
return pulumi.get(self, "policy_orchestrator_id")
|
447
|
+
|
448
|
+
@policy_orchestrator_id.setter
|
449
|
+
def policy_orchestrator_id(self, value: Optional[pulumi.Input[builtins.str]]):
|
450
|
+
pulumi.set(self, "policy_orchestrator_id", value)
|
451
|
+
|
452
|
+
@property
|
453
|
+
@pulumi.getter(name="pulumiLabels")
|
454
|
+
def pulumi_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]]:
|
455
|
+
"""
|
456
|
+
The combination of labels configured directly on the resource
|
457
|
+
and default labels configured on the provider.
|
458
|
+
"""
|
459
|
+
return pulumi.get(self, "pulumi_labels")
|
460
|
+
|
461
|
+
@pulumi_labels.setter
|
462
|
+
def pulumi_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]]):
|
463
|
+
pulumi.set(self, "pulumi_labels", value)
|
464
|
+
|
465
|
+
@property
|
466
|
+
@pulumi.getter
|
467
|
+
def reconciling(self) -> Optional[pulumi.Input[builtins.bool]]:
|
468
|
+
"""
|
469
|
+
Set to true, if the there are ongoing changes being applied by the
|
470
|
+
orchestrator.
|
471
|
+
"""
|
472
|
+
return pulumi.get(self, "reconciling")
|
473
|
+
|
474
|
+
@reconciling.setter
|
475
|
+
def reconciling(self, value: Optional[pulumi.Input[builtins.bool]]):
|
476
|
+
pulumi.set(self, "reconciling", value)
|
477
|
+
|
478
|
+
@property
|
479
|
+
@pulumi.getter
|
480
|
+
def state(self) -> Optional[pulumi.Input[builtins.str]]:
|
481
|
+
"""
|
482
|
+
(Output)
|
483
|
+
State of the iteration.
|
484
|
+
Possible values:
|
485
|
+
PROCESSING
|
486
|
+
COMPLETED
|
487
|
+
FAILED
|
488
|
+
CANCELLED
|
489
|
+
UNKNOWN
|
490
|
+
"""
|
491
|
+
return pulumi.get(self, "state")
|
492
|
+
|
493
|
+
@state.setter
|
494
|
+
def state(self, value: Optional[pulumi.Input[builtins.str]]):
|
495
|
+
pulumi.set(self, "state", value)
|
496
|
+
|
497
|
+
@property
|
498
|
+
@pulumi.getter(name="updateTime")
|
499
|
+
def update_time(self) -> Optional[pulumi.Input[builtins.str]]:
|
500
|
+
"""
|
501
|
+
Timestamp when the policy orchestrator resource was last modified.
|
502
|
+
"""
|
503
|
+
return pulumi.get(self, "update_time")
|
504
|
+
|
505
|
+
@update_time.setter
|
506
|
+
def update_time(self, value: Optional[pulumi.Input[builtins.str]]):
|
507
|
+
pulumi.set(self, "update_time", value)
|
508
|
+
|
509
|
+
|
510
|
+
class V2PolicyOrchestratorForFolder(pulumi.CustomResource):
|
511
|
+
|
512
|
+
pulumi_type = "gcp:osconfig/v2PolicyOrchestratorForFolder:V2PolicyOrchestratorForFolder"
|
513
|
+
|
514
|
+
@overload
|
515
|
+
def __init__(__self__,
|
516
|
+
resource_name: str,
|
517
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
518
|
+
action: Optional[pulumi.Input[builtins.str]] = None,
|
519
|
+
description: Optional[pulumi.Input[builtins.str]] = None,
|
520
|
+
folder_id: Optional[pulumi.Input[builtins.str]] = None,
|
521
|
+
labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]] = None,
|
522
|
+
orchestrated_resource: Optional[pulumi.Input[Union['V2PolicyOrchestratorForFolderOrchestratedResourceArgs', 'V2PolicyOrchestratorForFolderOrchestratedResourceArgsDict']]] = None,
|
523
|
+
orchestration_scope: Optional[pulumi.Input[Union['V2PolicyOrchestratorForFolderOrchestrationScopeArgs', 'V2PolicyOrchestratorForFolderOrchestrationScopeArgsDict']]] = None,
|
524
|
+
policy_orchestrator_id: Optional[pulumi.Input[builtins.str]] = None,
|
525
|
+
state: Optional[pulumi.Input[builtins.str]] = None,
|
526
|
+
__props__=None):
|
527
|
+
"""
|
528
|
+
PolicyOrchestrator helps managing project+zone level policy resources (e.g.
|
529
|
+
OS Policy Assignments), by providing tools to create, update and delete them
|
530
|
+
across projects and locations, at scale.
|
531
|
+
|
532
|
+
## Example Usage
|
533
|
+
|
534
|
+
### Osconfigv2 Policy Orchestrator For Folder Basic
|
535
|
+
|
536
|
+
```python
|
537
|
+
import pulumi
|
538
|
+
import pulumi_gcp as gcp
|
539
|
+
import pulumi_time as time
|
540
|
+
|
541
|
+
my_folder = gcp.organizations.Folder("my_folder",
|
542
|
+
display_name="po-folder",
|
543
|
+
parent="organizations/123456789",
|
544
|
+
deletion_protection=False)
|
545
|
+
osconfig_sa = gcp.folder.ServiceIdentity("osconfig_sa",
|
546
|
+
folder=my_folder.folder_id,
|
547
|
+
service="osconfig.googleapis.com")
|
548
|
+
ripple_sa = gcp.folder.ServiceIdentity("ripple_sa",
|
549
|
+
folder=my_folder.folder_id,
|
550
|
+
service="progressiverollout.googleapis.com")
|
551
|
+
wait30_sec = time.index.Sleep("wait_30_sec", create_duration=30s,
|
552
|
+
opts = pulumi.ResourceOptions(depends_on=[
|
553
|
+
osconfig_sa,
|
554
|
+
ripple_sa,
|
555
|
+
]))
|
556
|
+
iam_osconfig_service_agent = gcp.folder.IAMMember("iam_osconfig_service_agent",
|
557
|
+
folder=my_folder.folder_id,
|
558
|
+
role="roles/osconfig.serviceAgent",
|
559
|
+
member=osconfig_sa.member,
|
560
|
+
opts = pulumi.ResourceOptions(depends_on=[wait30_sec]))
|
561
|
+
iam_osconfig_rollout_service_agent = gcp.folder.IAMMember("iam_osconfig_rollout_service_agent",
|
562
|
+
folder=my_folder.folder_id,
|
563
|
+
role="roles/osconfig.rolloutServiceAgent",
|
564
|
+
member=my_folder.folder_id.apply(lambda folder_id: f"serviceAccount:service-folder-{folder_id}@gcp-sa-osconfig-rollout.iam.gserviceaccount.com"),
|
565
|
+
opts = pulumi.ResourceOptions(depends_on=[iam_osconfig_service_agent]))
|
566
|
+
iam_progressiverollout_service_agent = gcp.folder.IAMMember("iam_progressiverollout_service_agent",
|
567
|
+
folder=my_folder.folder_id,
|
568
|
+
role="roles/progressiverollout.serviceAgent",
|
569
|
+
member=ripple_sa.member,
|
570
|
+
opts = pulumi.ResourceOptions(depends_on=[iam_osconfig_rollout_service_agent]))
|
571
|
+
wait3_min = time.index.Sleep("wait_3_min", create_duration=180s,
|
572
|
+
opts = pulumi.ResourceOptions(depends_on=[iam_progressiverollout_service_agent]))
|
573
|
+
policy_orchestrator_for_folder = gcp.osconfig.V2PolicyOrchestratorForFolder("policy_orchestrator_for_folder",
|
574
|
+
policy_orchestrator_id="po-folder",
|
575
|
+
folder_id=my_folder.folder_id,
|
576
|
+
state="ACTIVE",
|
577
|
+
action="UPSERT",
|
578
|
+
orchestrated_resource={
|
579
|
+
"id": "test-orchestrated-resource-folder",
|
580
|
+
"os_policy_assignment_v1_payload": {
|
581
|
+
"os_policies": [{
|
582
|
+
"id": "test-os-policy-folder",
|
583
|
+
"mode": "VALIDATION",
|
584
|
+
"resource_groups": [{
|
585
|
+
"resources": [{
|
586
|
+
"id": "resource-tf",
|
587
|
+
"file": {
|
588
|
+
"content": "file-content-tf",
|
589
|
+
"path": "file-path-tf-1",
|
590
|
+
"state": "PRESENT",
|
591
|
+
},
|
592
|
+
}],
|
593
|
+
}],
|
594
|
+
}],
|
595
|
+
"instance_filter": {
|
596
|
+
"inventories": [{
|
597
|
+
"os_short_name": "windows-10",
|
598
|
+
}],
|
599
|
+
},
|
600
|
+
"rollout": {
|
601
|
+
"disruption_budget": {
|
602
|
+
"percent": 100,
|
603
|
+
},
|
604
|
+
"min_wait_duration": "60s",
|
605
|
+
},
|
606
|
+
},
|
607
|
+
},
|
608
|
+
labels={
|
609
|
+
"state": "active",
|
610
|
+
},
|
611
|
+
orchestration_scope={
|
612
|
+
"selectors": [{
|
613
|
+
"location_selector": {
|
614
|
+
"included_locations": [""],
|
615
|
+
},
|
616
|
+
}],
|
617
|
+
},
|
618
|
+
opts = pulumi.ResourceOptions(depends_on=[wait3_min]))
|
619
|
+
```
|
620
|
+
|
621
|
+
## Import
|
622
|
+
|
623
|
+
PolicyOrchestratorForFolder can be imported using any of these accepted formats:
|
624
|
+
|
625
|
+
* `folders/{{folder_id}}/locations/global/policyOrchestrators/{{policy_orchestrator_id}}`
|
626
|
+
|
627
|
+
* `{{folder_id}}/{{policy_orchestrator_id}}`
|
628
|
+
|
629
|
+
When using the `pulumi import` command, PolicyOrchestratorForFolder can be imported using one of the formats above. For example:
|
630
|
+
|
631
|
+
```sh
|
632
|
+
$ pulumi import gcp:osconfig/v2PolicyOrchestratorForFolder:V2PolicyOrchestratorForFolder default folders/{{folder_id}}/locations/global/policyOrchestrators/{{policy_orchestrator_id}}
|
633
|
+
```
|
634
|
+
|
635
|
+
```sh
|
636
|
+
$ pulumi import gcp:osconfig/v2PolicyOrchestratorForFolder:V2PolicyOrchestratorForFolder default {{folder_id}}/{{policy_orchestrator_id}}
|
637
|
+
```
|
638
|
+
|
639
|
+
:param str resource_name: The name of the resource.
|
640
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
641
|
+
:param pulumi.Input[builtins.str] action: Action to be done by the orchestrator in
|
642
|
+
`projects/{project_id}/zones/{zone_id}` locations defined by the
|
643
|
+
`orchestration_scope`. Allowed values:
|
644
|
+
- `UPSERT` - Orchestrator will create or update target resources.
|
645
|
+
- `DELETE` - Orchestrator will delete target resources, if they exist
|
646
|
+
:param pulumi.Input[builtins.str] description: Freeform text describing the purpose of the resource.
|
647
|
+
:param pulumi.Input[builtins.str] folder_id: The parent resource name in the form of `folders/{folder_id}/locations/global`.
|
648
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]] labels: Labels as key value pairs **Note**: This field is non-authoritative, and will only manage the labels present in your
|
649
|
+
configuration. Please refer to the field 'effective_labels' for all of the labels present on the resource.
|
650
|
+
:param pulumi.Input[Union['V2PolicyOrchestratorForFolderOrchestratedResourceArgs', 'V2PolicyOrchestratorForFolderOrchestratedResourceArgsDict']] orchestrated_resource: Represents a resource that is being orchestrated by the policy orchestrator.
|
651
|
+
Structure is documented below.
|
652
|
+
:param pulumi.Input[Union['V2PolicyOrchestratorForFolderOrchestrationScopeArgs', 'V2PolicyOrchestratorForFolderOrchestrationScopeArgsDict']] orchestration_scope: Defines a set of selectors which drive which resources are in scope of policy orchestration.
|
653
|
+
:param pulumi.Input[builtins.str] policy_orchestrator_id: The logical identifier of the policy orchestrator, with the following
|
654
|
+
restrictions:
|
655
|
+
* Must contain only lowercase letters, numbers, and hyphens.
|
656
|
+
* Must start with a letter.
|
657
|
+
* Must be between 1-63 characters.
|
658
|
+
* Must end with a number or a letter.
|
659
|
+
* Must be unique within the parent.
|
660
|
+
:param pulumi.Input[builtins.str] state: (Output)
|
661
|
+
State of the iteration.
|
662
|
+
Possible values:
|
663
|
+
PROCESSING
|
664
|
+
COMPLETED
|
665
|
+
FAILED
|
666
|
+
CANCELLED
|
667
|
+
UNKNOWN
|
668
|
+
"""
|
669
|
+
...
|
670
|
+
@overload
|
671
|
+
def __init__(__self__,
|
672
|
+
resource_name: str,
|
673
|
+
args: V2PolicyOrchestratorForFolderArgs,
|
674
|
+
opts: Optional[pulumi.ResourceOptions] = None):
|
675
|
+
"""
|
676
|
+
PolicyOrchestrator helps managing project+zone level policy resources (e.g.
|
677
|
+
OS Policy Assignments), by providing tools to create, update and delete them
|
678
|
+
across projects and locations, at scale.
|
679
|
+
|
680
|
+
## Example Usage
|
681
|
+
|
682
|
+
### Osconfigv2 Policy Orchestrator For Folder Basic
|
683
|
+
|
684
|
+
```python
|
685
|
+
import pulumi
|
686
|
+
import pulumi_gcp as gcp
|
687
|
+
import pulumi_time as time
|
688
|
+
|
689
|
+
my_folder = gcp.organizations.Folder("my_folder",
|
690
|
+
display_name="po-folder",
|
691
|
+
parent="organizations/123456789",
|
692
|
+
deletion_protection=False)
|
693
|
+
osconfig_sa = gcp.folder.ServiceIdentity("osconfig_sa",
|
694
|
+
folder=my_folder.folder_id,
|
695
|
+
service="osconfig.googleapis.com")
|
696
|
+
ripple_sa = gcp.folder.ServiceIdentity("ripple_sa",
|
697
|
+
folder=my_folder.folder_id,
|
698
|
+
service="progressiverollout.googleapis.com")
|
699
|
+
wait30_sec = time.index.Sleep("wait_30_sec", create_duration=30s,
|
700
|
+
opts = pulumi.ResourceOptions(depends_on=[
|
701
|
+
osconfig_sa,
|
702
|
+
ripple_sa,
|
703
|
+
]))
|
704
|
+
iam_osconfig_service_agent = gcp.folder.IAMMember("iam_osconfig_service_agent",
|
705
|
+
folder=my_folder.folder_id,
|
706
|
+
role="roles/osconfig.serviceAgent",
|
707
|
+
member=osconfig_sa.member,
|
708
|
+
opts = pulumi.ResourceOptions(depends_on=[wait30_sec]))
|
709
|
+
iam_osconfig_rollout_service_agent = gcp.folder.IAMMember("iam_osconfig_rollout_service_agent",
|
710
|
+
folder=my_folder.folder_id,
|
711
|
+
role="roles/osconfig.rolloutServiceAgent",
|
712
|
+
member=my_folder.folder_id.apply(lambda folder_id: f"serviceAccount:service-folder-{folder_id}@gcp-sa-osconfig-rollout.iam.gserviceaccount.com"),
|
713
|
+
opts = pulumi.ResourceOptions(depends_on=[iam_osconfig_service_agent]))
|
714
|
+
iam_progressiverollout_service_agent = gcp.folder.IAMMember("iam_progressiverollout_service_agent",
|
715
|
+
folder=my_folder.folder_id,
|
716
|
+
role="roles/progressiverollout.serviceAgent",
|
717
|
+
member=ripple_sa.member,
|
718
|
+
opts = pulumi.ResourceOptions(depends_on=[iam_osconfig_rollout_service_agent]))
|
719
|
+
wait3_min = time.index.Sleep("wait_3_min", create_duration=180s,
|
720
|
+
opts = pulumi.ResourceOptions(depends_on=[iam_progressiverollout_service_agent]))
|
721
|
+
policy_orchestrator_for_folder = gcp.osconfig.V2PolicyOrchestratorForFolder("policy_orchestrator_for_folder",
|
722
|
+
policy_orchestrator_id="po-folder",
|
723
|
+
folder_id=my_folder.folder_id,
|
724
|
+
state="ACTIVE",
|
725
|
+
action="UPSERT",
|
726
|
+
orchestrated_resource={
|
727
|
+
"id": "test-orchestrated-resource-folder",
|
728
|
+
"os_policy_assignment_v1_payload": {
|
729
|
+
"os_policies": [{
|
730
|
+
"id": "test-os-policy-folder",
|
731
|
+
"mode": "VALIDATION",
|
732
|
+
"resource_groups": [{
|
733
|
+
"resources": [{
|
734
|
+
"id": "resource-tf",
|
735
|
+
"file": {
|
736
|
+
"content": "file-content-tf",
|
737
|
+
"path": "file-path-tf-1",
|
738
|
+
"state": "PRESENT",
|
739
|
+
},
|
740
|
+
}],
|
741
|
+
}],
|
742
|
+
}],
|
743
|
+
"instance_filter": {
|
744
|
+
"inventories": [{
|
745
|
+
"os_short_name": "windows-10",
|
746
|
+
}],
|
747
|
+
},
|
748
|
+
"rollout": {
|
749
|
+
"disruption_budget": {
|
750
|
+
"percent": 100,
|
751
|
+
},
|
752
|
+
"min_wait_duration": "60s",
|
753
|
+
},
|
754
|
+
},
|
755
|
+
},
|
756
|
+
labels={
|
757
|
+
"state": "active",
|
758
|
+
},
|
759
|
+
orchestration_scope={
|
760
|
+
"selectors": [{
|
761
|
+
"location_selector": {
|
762
|
+
"included_locations": [""],
|
763
|
+
},
|
764
|
+
}],
|
765
|
+
},
|
766
|
+
opts = pulumi.ResourceOptions(depends_on=[wait3_min]))
|
767
|
+
```
|
768
|
+
|
769
|
+
## Import
|
770
|
+
|
771
|
+
PolicyOrchestratorForFolder can be imported using any of these accepted formats:
|
772
|
+
|
773
|
+
* `folders/{{folder_id}}/locations/global/policyOrchestrators/{{policy_orchestrator_id}}`
|
774
|
+
|
775
|
+
* `{{folder_id}}/{{policy_orchestrator_id}}`
|
776
|
+
|
777
|
+
When using the `pulumi import` command, PolicyOrchestratorForFolder can be imported using one of the formats above. For example:
|
778
|
+
|
779
|
+
```sh
|
780
|
+
$ pulumi import gcp:osconfig/v2PolicyOrchestratorForFolder:V2PolicyOrchestratorForFolder default folders/{{folder_id}}/locations/global/policyOrchestrators/{{policy_orchestrator_id}}
|
781
|
+
```
|
782
|
+
|
783
|
+
```sh
|
784
|
+
$ pulumi import gcp:osconfig/v2PolicyOrchestratorForFolder:V2PolicyOrchestratorForFolder default {{folder_id}}/{{policy_orchestrator_id}}
|
785
|
+
```
|
786
|
+
|
787
|
+
:param str resource_name: The name of the resource.
|
788
|
+
:param V2PolicyOrchestratorForFolderArgs args: The arguments to use to populate this resource's properties.
|
789
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
790
|
+
"""
|
791
|
+
...
|
792
|
+
def __init__(__self__, resource_name: str, *args, **kwargs):
|
793
|
+
resource_args, opts = _utilities.get_resource_args_opts(V2PolicyOrchestratorForFolderArgs, pulumi.ResourceOptions, *args, **kwargs)
|
794
|
+
if resource_args is not None:
|
795
|
+
__self__._internal_init(resource_name, opts, **resource_args.__dict__)
|
796
|
+
else:
|
797
|
+
__self__._internal_init(resource_name, *args, **kwargs)
|
798
|
+
|
799
|
+
def _internal_init(__self__,
|
800
|
+
resource_name: str,
|
801
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
802
|
+
action: Optional[pulumi.Input[builtins.str]] = None,
|
803
|
+
description: Optional[pulumi.Input[builtins.str]] = None,
|
804
|
+
folder_id: Optional[pulumi.Input[builtins.str]] = None,
|
805
|
+
labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]] = None,
|
806
|
+
orchestrated_resource: Optional[pulumi.Input[Union['V2PolicyOrchestratorForFolderOrchestratedResourceArgs', 'V2PolicyOrchestratorForFolderOrchestratedResourceArgsDict']]] = None,
|
807
|
+
orchestration_scope: Optional[pulumi.Input[Union['V2PolicyOrchestratorForFolderOrchestrationScopeArgs', 'V2PolicyOrchestratorForFolderOrchestrationScopeArgsDict']]] = None,
|
808
|
+
policy_orchestrator_id: Optional[pulumi.Input[builtins.str]] = None,
|
809
|
+
state: Optional[pulumi.Input[builtins.str]] = None,
|
810
|
+
__props__=None):
|
811
|
+
opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
|
812
|
+
if not isinstance(opts, pulumi.ResourceOptions):
|
813
|
+
raise TypeError('Expected resource options to be a ResourceOptions instance')
|
814
|
+
if opts.id is None:
|
815
|
+
if __props__ is not None:
|
816
|
+
raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
|
817
|
+
__props__ = V2PolicyOrchestratorForFolderArgs.__new__(V2PolicyOrchestratorForFolderArgs)
|
818
|
+
|
819
|
+
if action is None and not opts.urn:
|
820
|
+
raise TypeError("Missing required property 'action'")
|
821
|
+
__props__.__dict__["action"] = action
|
822
|
+
__props__.__dict__["description"] = description
|
823
|
+
if folder_id is None and not opts.urn:
|
824
|
+
raise TypeError("Missing required property 'folder_id'")
|
825
|
+
__props__.__dict__["folder_id"] = folder_id
|
826
|
+
__props__.__dict__["labels"] = labels
|
827
|
+
if orchestrated_resource is None and not opts.urn:
|
828
|
+
raise TypeError("Missing required property 'orchestrated_resource'")
|
829
|
+
__props__.__dict__["orchestrated_resource"] = orchestrated_resource
|
830
|
+
__props__.__dict__["orchestration_scope"] = orchestration_scope
|
831
|
+
if policy_orchestrator_id is None and not opts.urn:
|
832
|
+
raise TypeError("Missing required property 'policy_orchestrator_id'")
|
833
|
+
__props__.__dict__["policy_orchestrator_id"] = policy_orchestrator_id
|
834
|
+
__props__.__dict__["state"] = state
|
835
|
+
__props__.__dict__["create_time"] = None
|
836
|
+
__props__.__dict__["effective_labels"] = None
|
837
|
+
__props__.__dict__["etag"] = None
|
838
|
+
__props__.__dict__["name"] = None
|
839
|
+
__props__.__dict__["orchestration_states"] = None
|
840
|
+
__props__.__dict__["pulumi_labels"] = None
|
841
|
+
__props__.__dict__["reconciling"] = None
|
842
|
+
__props__.__dict__["update_time"] = None
|
843
|
+
secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["effectiveLabels", "pulumiLabels"])
|
844
|
+
opts = pulumi.ResourceOptions.merge(opts, secret_opts)
|
845
|
+
super(V2PolicyOrchestratorForFolder, __self__).__init__(
|
846
|
+
'gcp:osconfig/v2PolicyOrchestratorForFolder:V2PolicyOrchestratorForFolder',
|
847
|
+
resource_name,
|
848
|
+
__props__,
|
849
|
+
opts)
|
850
|
+
|
851
|
+
@staticmethod
|
852
|
+
def get(resource_name: str,
|
853
|
+
id: pulumi.Input[str],
|
854
|
+
opts: Optional[pulumi.ResourceOptions] = None,
|
855
|
+
action: Optional[pulumi.Input[builtins.str]] = None,
|
856
|
+
create_time: Optional[pulumi.Input[builtins.str]] = None,
|
857
|
+
description: Optional[pulumi.Input[builtins.str]] = None,
|
858
|
+
effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]] = None,
|
859
|
+
etag: Optional[pulumi.Input[builtins.str]] = None,
|
860
|
+
folder_id: Optional[pulumi.Input[builtins.str]] = None,
|
861
|
+
labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]] = None,
|
862
|
+
name: Optional[pulumi.Input[builtins.str]] = None,
|
863
|
+
orchestrated_resource: Optional[pulumi.Input[Union['V2PolicyOrchestratorForFolderOrchestratedResourceArgs', 'V2PolicyOrchestratorForFolderOrchestratedResourceArgsDict']]] = None,
|
864
|
+
orchestration_scope: Optional[pulumi.Input[Union['V2PolicyOrchestratorForFolderOrchestrationScopeArgs', 'V2PolicyOrchestratorForFolderOrchestrationScopeArgsDict']]] = None,
|
865
|
+
orchestration_states: Optional[pulumi.Input[Sequence[pulumi.Input[Union['V2PolicyOrchestratorForFolderOrchestrationStateArgs', 'V2PolicyOrchestratorForFolderOrchestrationStateArgsDict']]]]] = None,
|
866
|
+
policy_orchestrator_id: Optional[pulumi.Input[builtins.str]] = None,
|
867
|
+
pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]] = None,
|
868
|
+
reconciling: Optional[pulumi.Input[builtins.bool]] = None,
|
869
|
+
state: Optional[pulumi.Input[builtins.str]] = None,
|
870
|
+
update_time: Optional[pulumi.Input[builtins.str]] = None) -> 'V2PolicyOrchestratorForFolder':
|
871
|
+
"""
|
872
|
+
Get an existing V2PolicyOrchestratorForFolder resource's state with the given name, id, and optional extra
|
873
|
+
properties used to qualify the lookup.
|
874
|
+
|
875
|
+
:param str resource_name: The unique name of the resulting resource.
|
876
|
+
:param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
|
877
|
+
:param pulumi.ResourceOptions opts: Options for the resource.
|
878
|
+
:param pulumi.Input[builtins.str] action: Action to be done by the orchestrator in
|
879
|
+
`projects/{project_id}/zones/{zone_id}` locations defined by the
|
880
|
+
`orchestration_scope`. Allowed values:
|
881
|
+
- `UPSERT` - Orchestrator will create or update target resources.
|
882
|
+
- `DELETE` - Orchestrator will delete target resources, if they exist
|
883
|
+
:param pulumi.Input[builtins.str] create_time: Timestamp when the policy orchestrator resource was created.
|
884
|
+
:param pulumi.Input[builtins.str] description: Freeform text describing the purpose of the resource.
|
885
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
|
886
|
+
:param pulumi.Input[builtins.str] etag: This checksum is computed by the server based on the value of other
|
887
|
+
fields, and may be sent on update and delete requests to ensure the
|
888
|
+
client has an up-to-date value before proceeding.
|
889
|
+
:param pulumi.Input[builtins.str] folder_id: The parent resource name in the form of `folders/{folder_id}/locations/global`.
|
890
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]] labels: Labels as key value pairs **Note**: This field is non-authoritative, and will only manage the labels present in your
|
891
|
+
configuration. Please refer to the field 'effective_labels' for all of the labels present on the resource.
|
892
|
+
:param pulumi.Input[builtins.str] name: Identifier. In form of
|
893
|
+
* `organizations/{organization_id}/locations/global/policyOrchestrators/{orchestrator_id}`
|
894
|
+
* `folders/{folder_id}/locations/global/policyOrchestrators/{orchestrator_id}`
|
895
|
+
* `projects/{project_id_or_number}/locations/global/policyOrchestrators/{orchestrator_id}`
|
896
|
+
:param pulumi.Input[Union['V2PolicyOrchestratorForFolderOrchestratedResourceArgs', 'V2PolicyOrchestratorForFolderOrchestratedResourceArgsDict']] orchestrated_resource: Represents a resource that is being orchestrated by the policy orchestrator.
|
897
|
+
Structure is documented below.
|
898
|
+
:param pulumi.Input[Union['V2PolicyOrchestratorForFolderOrchestrationScopeArgs', 'V2PolicyOrchestratorForFolderOrchestrationScopeArgsDict']] orchestration_scope: Defines a set of selectors which drive which resources are in scope of policy orchestration.
|
899
|
+
:param pulumi.Input[Sequence[pulumi.Input[Union['V2PolicyOrchestratorForFolderOrchestrationStateArgs', 'V2PolicyOrchestratorForFolderOrchestrationStateArgsDict']]]] orchestration_states: Describes the state of the orchestration process.
|
900
|
+
Structure is documented below.
|
901
|
+
:param pulumi.Input[builtins.str] policy_orchestrator_id: The logical identifier of the policy orchestrator, with the following
|
902
|
+
restrictions:
|
903
|
+
* Must contain only lowercase letters, numbers, and hyphens.
|
904
|
+
* Must start with a letter.
|
905
|
+
* Must be between 1-63 characters.
|
906
|
+
* Must end with a number or a letter.
|
907
|
+
* Must be unique within the parent.
|
908
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]] pulumi_labels: The combination of labels configured directly on the resource
|
909
|
+
and default labels configured on the provider.
|
910
|
+
:param pulumi.Input[builtins.bool] reconciling: Set to true, if the there are ongoing changes being applied by the
|
911
|
+
orchestrator.
|
912
|
+
:param pulumi.Input[builtins.str] state: (Output)
|
913
|
+
State of the iteration.
|
914
|
+
Possible values:
|
915
|
+
PROCESSING
|
916
|
+
COMPLETED
|
917
|
+
FAILED
|
918
|
+
CANCELLED
|
919
|
+
UNKNOWN
|
920
|
+
:param pulumi.Input[builtins.str] update_time: Timestamp when the policy orchestrator resource was last modified.
|
921
|
+
"""
|
922
|
+
opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
|
923
|
+
|
924
|
+
__props__ = _V2PolicyOrchestratorForFolderState.__new__(_V2PolicyOrchestratorForFolderState)
|
925
|
+
|
926
|
+
__props__.__dict__["action"] = action
|
927
|
+
__props__.__dict__["create_time"] = create_time
|
928
|
+
__props__.__dict__["description"] = description
|
929
|
+
__props__.__dict__["effective_labels"] = effective_labels
|
930
|
+
__props__.__dict__["etag"] = etag
|
931
|
+
__props__.__dict__["folder_id"] = folder_id
|
932
|
+
__props__.__dict__["labels"] = labels
|
933
|
+
__props__.__dict__["name"] = name
|
934
|
+
__props__.__dict__["orchestrated_resource"] = orchestrated_resource
|
935
|
+
__props__.__dict__["orchestration_scope"] = orchestration_scope
|
936
|
+
__props__.__dict__["orchestration_states"] = orchestration_states
|
937
|
+
__props__.__dict__["policy_orchestrator_id"] = policy_orchestrator_id
|
938
|
+
__props__.__dict__["pulumi_labels"] = pulumi_labels
|
939
|
+
__props__.__dict__["reconciling"] = reconciling
|
940
|
+
__props__.__dict__["state"] = state
|
941
|
+
__props__.__dict__["update_time"] = update_time
|
942
|
+
return V2PolicyOrchestratorForFolder(resource_name, opts=opts, __props__=__props__)
|
943
|
+
|
944
|
+
@property
|
945
|
+
@pulumi.getter
|
946
|
+
def action(self) -> pulumi.Output[builtins.str]:
|
947
|
+
"""
|
948
|
+
Action to be done by the orchestrator in
|
949
|
+
`projects/{project_id}/zones/{zone_id}` locations defined by the
|
950
|
+
`orchestration_scope`. Allowed values:
|
951
|
+
- `UPSERT` - Orchestrator will create or update target resources.
|
952
|
+
- `DELETE` - Orchestrator will delete target resources, if they exist
|
953
|
+
"""
|
954
|
+
return pulumi.get(self, "action")
|
955
|
+
|
956
|
+
@property
|
957
|
+
@pulumi.getter(name="createTime")
|
958
|
+
def create_time(self) -> pulumi.Output[builtins.str]:
|
959
|
+
"""
|
960
|
+
Timestamp when the policy orchestrator resource was created.
|
961
|
+
"""
|
962
|
+
return pulumi.get(self, "create_time")
|
963
|
+
|
964
|
+
@property
|
965
|
+
@pulumi.getter
|
966
|
+
def description(self) -> pulumi.Output[Optional[builtins.str]]:
|
967
|
+
"""
|
968
|
+
Freeform text describing the purpose of the resource.
|
969
|
+
"""
|
970
|
+
return pulumi.get(self, "description")
|
971
|
+
|
972
|
+
@property
|
973
|
+
@pulumi.getter(name="effectiveLabels")
|
974
|
+
def effective_labels(self) -> pulumi.Output[Mapping[str, builtins.str]]:
|
975
|
+
"""
|
976
|
+
All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
|
977
|
+
"""
|
978
|
+
return pulumi.get(self, "effective_labels")
|
979
|
+
|
980
|
+
@property
|
981
|
+
@pulumi.getter
|
982
|
+
def etag(self) -> pulumi.Output[builtins.str]:
|
983
|
+
"""
|
984
|
+
This checksum is computed by the server based on the value of other
|
985
|
+
fields, and may be sent on update and delete requests to ensure the
|
986
|
+
client has an up-to-date value before proceeding.
|
987
|
+
"""
|
988
|
+
return pulumi.get(self, "etag")
|
989
|
+
|
990
|
+
@property
|
991
|
+
@pulumi.getter(name="folderId")
|
992
|
+
def folder_id(self) -> pulumi.Output[builtins.str]:
|
993
|
+
"""
|
994
|
+
The parent resource name in the form of `folders/{folder_id}/locations/global`.
|
995
|
+
"""
|
996
|
+
return pulumi.get(self, "folder_id")
|
997
|
+
|
998
|
+
@property
|
999
|
+
@pulumi.getter
|
1000
|
+
def labels(self) -> pulumi.Output[Optional[Mapping[str, builtins.str]]]:
|
1001
|
+
"""
|
1002
|
+
Labels as key value pairs **Note**: This field is non-authoritative, and will only manage the labels present in your
|
1003
|
+
configuration. Please refer to the field 'effective_labels' for all of the labels present on the resource.
|
1004
|
+
"""
|
1005
|
+
return pulumi.get(self, "labels")
|
1006
|
+
|
1007
|
+
@property
|
1008
|
+
@pulumi.getter
|
1009
|
+
def name(self) -> pulumi.Output[builtins.str]:
|
1010
|
+
"""
|
1011
|
+
Identifier. In form of
|
1012
|
+
* `organizations/{organization_id}/locations/global/policyOrchestrators/{orchestrator_id}`
|
1013
|
+
* `folders/{folder_id}/locations/global/policyOrchestrators/{orchestrator_id}`
|
1014
|
+
* `projects/{project_id_or_number}/locations/global/policyOrchestrators/{orchestrator_id}`
|
1015
|
+
"""
|
1016
|
+
return pulumi.get(self, "name")
|
1017
|
+
|
1018
|
+
@property
|
1019
|
+
@pulumi.getter(name="orchestratedResource")
|
1020
|
+
def orchestrated_resource(self) -> pulumi.Output['outputs.V2PolicyOrchestratorForFolderOrchestratedResource']:
|
1021
|
+
"""
|
1022
|
+
Represents a resource that is being orchestrated by the policy orchestrator.
|
1023
|
+
Structure is documented below.
|
1024
|
+
"""
|
1025
|
+
return pulumi.get(self, "orchestrated_resource")
|
1026
|
+
|
1027
|
+
@property
|
1028
|
+
@pulumi.getter(name="orchestrationScope")
|
1029
|
+
def orchestration_scope(self) -> pulumi.Output[Optional['outputs.V2PolicyOrchestratorForFolderOrchestrationScope']]:
|
1030
|
+
"""
|
1031
|
+
Defines a set of selectors which drive which resources are in scope of policy orchestration.
|
1032
|
+
"""
|
1033
|
+
return pulumi.get(self, "orchestration_scope")
|
1034
|
+
|
1035
|
+
@property
|
1036
|
+
@pulumi.getter(name="orchestrationStates")
|
1037
|
+
def orchestration_states(self) -> pulumi.Output[Sequence['outputs.V2PolicyOrchestratorForFolderOrchestrationState']]:
|
1038
|
+
"""
|
1039
|
+
Describes the state of the orchestration process.
|
1040
|
+
Structure is documented below.
|
1041
|
+
"""
|
1042
|
+
return pulumi.get(self, "orchestration_states")
|
1043
|
+
|
1044
|
+
@property
|
1045
|
+
@pulumi.getter(name="policyOrchestratorId")
|
1046
|
+
def policy_orchestrator_id(self) -> pulumi.Output[builtins.str]:
|
1047
|
+
"""
|
1048
|
+
The logical identifier of the policy orchestrator, with the following
|
1049
|
+
restrictions:
|
1050
|
+
* Must contain only lowercase letters, numbers, and hyphens.
|
1051
|
+
* Must start with a letter.
|
1052
|
+
* Must be between 1-63 characters.
|
1053
|
+
* Must end with a number or a letter.
|
1054
|
+
* Must be unique within the parent.
|
1055
|
+
"""
|
1056
|
+
return pulumi.get(self, "policy_orchestrator_id")
|
1057
|
+
|
1058
|
+
@property
|
1059
|
+
@pulumi.getter(name="pulumiLabels")
|
1060
|
+
def pulumi_labels(self) -> pulumi.Output[Mapping[str, builtins.str]]:
|
1061
|
+
"""
|
1062
|
+
The combination of labels configured directly on the resource
|
1063
|
+
and default labels configured on the provider.
|
1064
|
+
"""
|
1065
|
+
return pulumi.get(self, "pulumi_labels")
|
1066
|
+
|
1067
|
+
@property
|
1068
|
+
@pulumi.getter
|
1069
|
+
def reconciling(self) -> pulumi.Output[builtins.bool]:
|
1070
|
+
"""
|
1071
|
+
Set to true, if the there are ongoing changes being applied by the
|
1072
|
+
orchestrator.
|
1073
|
+
"""
|
1074
|
+
return pulumi.get(self, "reconciling")
|
1075
|
+
|
1076
|
+
@property
|
1077
|
+
@pulumi.getter
|
1078
|
+
def state(self) -> pulumi.Output[Optional[builtins.str]]:
|
1079
|
+
"""
|
1080
|
+
(Output)
|
1081
|
+
State of the iteration.
|
1082
|
+
Possible values:
|
1083
|
+
PROCESSING
|
1084
|
+
COMPLETED
|
1085
|
+
FAILED
|
1086
|
+
CANCELLED
|
1087
|
+
UNKNOWN
|
1088
|
+
"""
|
1089
|
+
return pulumi.get(self, "state")
|
1090
|
+
|
1091
|
+
@property
|
1092
|
+
@pulumi.getter(name="updateTime")
|
1093
|
+
def update_time(self) -> pulumi.Output[builtins.str]:
|
1094
|
+
"""
|
1095
|
+
Timestamp when the policy orchestrator resource was last modified.
|
1096
|
+
"""
|
1097
|
+
return pulumi.get(self, "update_time")
|
1098
|
+
|