pulumi-gcp 7.12.0a1709365001__py3-none-any.whl → 7.13.0a1709814369__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. pulumi_gcp/__init__.py +72 -0
  2. pulumi_gcp/appengine/application_url_dispatch_rules.py +2 -2
  3. pulumi_gcp/appengine/engine_split_traffic.py +4 -4
  4. pulumi_gcp/appengine/service_network_settings.py +2 -2
  5. pulumi_gcp/appengine/standard_app_version.py +4 -4
  6. pulumi_gcp/bigquery/_inputs.py +88 -0
  7. pulumi_gcp/bigquery/dataset_iam_binding.py +35 -28
  8. pulumi_gcp/bigquery/dataset_iam_member.py +35 -28
  9. pulumi_gcp/bigquery/dataset_iam_policy.py +35 -28
  10. pulumi_gcp/bigquery/outputs.py +91 -0
  11. pulumi_gcp/bigquery/routine.py +118 -12
  12. pulumi_gcp/certificatemanager/dns_authorization.py +63 -14
  13. pulumi_gcp/clouddeploy/__init__.py +4 -0
  14. pulumi_gcp/clouddeploy/_inputs.py +80 -0
  15. pulumi_gcp/clouddeploy/automation.py +16 -0
  16. pulumi_gcp/clouddeploy/get_target_iam_policy.py +162 -0
  17. pulumi_gcp/clouddeploy/outputs.py +56 -0
  18. pulumi_gcp/clouddeploy/target_iam_binding.py +324 -0
  19. pulumi_gcp/clouddeploy/target_iam_member.py +324 -0
  20. pulumi_gcp/clouddeploy/target_iam_policy.py +253 -0
  21. pulumi_gcp/cloudfunctionsv2/function.py +0 -2
  22. pulumi_gcp/cloudrunv2/_inputs.py +4 -2
  23. pulumi_gcp/cloudrunv2/outputs.py +8 -4
  24. pulumi_gcp/composer/_inputs.py +18 -2
  25. pulumi_gcp/composer/outputs.py +29 -4
  26. pulumi_gcp/compute/__init__.py +1 -0
  27. pulumi_gcp/compute/get_forwarding_rules.py +142 -0
  28. pulumi_gcp/compute/instance_group_membership.py +4 -4
  29. pulumi_gcp/compute/outputs.py +816 -0
  30. pulumi_gcp/compute/region_network_endpoint.py +2 -2
  31. pulumi_gcp/compute/region_target_https_proxy.py +162 -37
  32. pulumi_gcp/compute/router_nat.py +8 -8
  33. pulumi_gcp/container/_inputs.py +80 -0
  34. pulumi_gcp/container/cluster.py +20 -16
  35. pulumi_gcp/container/outputs.py +115 -1
  36. pulumi_gcp/firebase/__init__.py +4 -0
  37. pulumi_gcp/firebase/app_check_app_attest_config.py +461 -0
  38. pulumi_gcp/firebase/app_check_play_integrity_config.py +465 -0
  39. pulumi_gcp/firebase/app_check_recaptcha_enterprise_config.py +474 -0
  40. pulumi_gcp/firebase/app_check_recaptcha_v3_config.py +511 -0
  41. pulumi_gcp/gkehub/scope.py +85 -0
  42. pulumi_gcp/integrationconnectors/connection.py +4 -4
  43. pulumi_gcp/looker/_inputs.py +42 -0
  44. pulumi_gcp/looker/instance.py +90 -0
  45. pulumi_gcp/looker/outputs.py +34 -0
  46. pulumi_gcp/migrationcenter/__init__.py +3 -0
  47. pulumi_gcp/migrationcenter/_inputs.py +500 -0
  48. pulumi_gcp/migrationcenter/outputs.py +562 -0
  49. pulumi_gcp/migrationcenter/preference_set.py +687 -0
  50. pulumi_gcp/monitoring/custom_service.py +4 -2
  51. pulumi_gcp/monitoring/generic_service.py +4 -2
  52. pulumi_gcp/monitoring/get_app_engine_service.py +2 -2
  53. pulumi_gcp/netapp/__init__.py +1 -0
  54. pulumi_gcp/netapp/_inputs.py +275 -0
  55. pulumi_gcp/netapp/outputs.py +290 -0
  56. pulumi_gcp/netapp/volume.py +140 -2
  57. pulumi_gcp/netapp/volume_replication.py +1292 -0
  58. pulumi_gcp/notebooks/instance.py +1 -1
  59. pulumi_gcp/securityposture/_inputs.py +22 -19
  60. pulumi_gcp/securityposture/outputs.py +18 -15
  61. pulumi_gcp/securityposture/posture.py +28 -48
  62. pulumi_gcp/spanner/_inputs.py +20 -0
  63. pulumi_gcp/spanner/database_iam_binding.py +134 -0
  64. pulumi_gcp/spanner/database_iam_member.py +134 -0
  65. pulumi_gcp/spanner/database_iam_policy.py +114 -0
  66. pulumi_gcp/spanner/outputs.py +20 -0
  67. pulumi_gcp/workbench/_inputs.py +157 -2
  68. pulumi_gcp/workbench/instance.py +52 -0
  69. pulumi_gcp/workbench/outputs.py +154 -2
  70. {pulumi_gcp-7.12.0a1709365001.dist-info → pulumi_gcp-7.13.0a1709814369.dist-info}/METADATA +1 -1
  71. {pulumi_gcp-7.12.0a1709365001.dist-info → pulumi_gcp-7.13.0a1709814369.dist-info}/RECORD +73 -60
  72. {pulumi_gcp-7.12.0a1709365001.dist-info → pulumi_gcp-7.13.0a1709814369.dist-info}/WHEEL +0 -0
  73. {pulumi_gcp-7.12.0a1709365001.dist-info → pulumi_gcp-7.13.0a1709814369.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,1292 @@
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
+ from . import outputs
12
+ from ._inputs import *
13
+
14
+ __all__ = ['VolumeReplicationArgs', 'VolumeReplication']
15
+
16
+ @pulumi.input_type
17
+ class VolumeReplicationArgs:
18
+ def __init__(__self__, *,
19
+ location: pulumi.Input[str],
20
+ replication_schedule: pulumi.Input[str],
21
+ volume_name: pulumi.Input[str],
22
+ delete_destination_volume: Optional[pulumi.Input[bool]] = None,
23
+ description: Optional[pulumi.Input[str]] = None,
24
+ destination_volume_parameters: Optional[pulumi.Input['VolumeReplicationDestinationVolumeParametersArgs']] = None,
25
+ force_stopping: Optional[pulumi.Input[bool]] = None,
26
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
27
+ name: Optional[pulumi.Input[str]] = None,
28
+ project: Optional[pulumi.Input[str]] = None,
29
+ replication_enabled: Optional[pulumi.Input[bool]] = None,
30
+ wait_for_mirror: Optional[pulumi.Input[bool]] = None):
31
+ """
32
+ The set of arguments for constructing a VolumeReplication resource.
33
+ :param pulumi.Input[str] location: Name of region for this resource. The resource needs to be created in the region of the destination volume.
34
+ :param pulumi.Input[str] replication_schedule: Specifies the replication interval.
35
+ Possible values are: `EVERY_10_MINUTES`, `HOURLY`, `DAILY`.
36
+ :param pulumi.Input[str] volume_name: The name of the existing source volume.
37
+ :param pulumi.Input[bool] delete_destination_volume: A destination volume is created as part of replication creation. The destination volume will not became under Terraform
38
+ management unless you import it manually. If you delete the replication, this volume will remain. Setting this parameter
39
+ to true will delete the *current* destination volume when destroying the replication. If you reversed the replication
40
+ direction, this will be your former source volume! For production use, it is recommended to keep this parameter false to
41
+ avoid accidental volume deletion. Handle with care. Default is false.
42
+ :param pulumi.Input[str] description: An description of this resource.
43
+ :param pulumi.Input['VolumeReplicationDestinationVolumeParametersArgs'] destination_volume_parameters: Destination volume parameters.
44
+ Structure is documented below.
45
+ :param pulumi.Input[bool] force_stopping: Only replications with mirror_state=MIRRORED can be stopped. A replication in mirror_state=TRANSFERRING
46
+ currently receives an update and stopping the update might be undesirable. Set this parameter to true
47
+ to stop anyway. All data transferred to the destination will be discarded and content of destination
48
+ volume will remain at the state of the last successful update. Default is false.
49
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Labels as key value pairs. Example: `{ "owner": "Bob", "department": "finance", "purpose": "testing" }`
50
+
51
+ **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
52
+ Please refer to the field `effective_labels` for all of the labels present on the resource.
53
+ :param pulumi.Input[str] name: The name of the replication. Needs to be unique per location.
54
+
55
+
56
+ - - -
57
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
58
+ If it is not provided, the provider project is used.
59
+ :param pulumi.Input[bool] replication_enabled: Set to false to stop/break the mirror. Stopping the mirror makes the destination volume read-write
60
+ and act independently from the source volume.
61
+ Set to true to enable/resume the mirror. WARNING: Resuming a mirror overwrites any changes
62
+ done to the destination volume with the content of the source volume.
63
+ :param pulumi.Input[bool] wait_for_mirror: Replication resource state is independent of mirror_state. With enough data, it can take many hours for mirror_state to
64
+ reach MIRRORED. If you want Terraform to wait for the mirror to finish on create/stop/resume operations, set this
65
+ parameter to true. Default is false.
66
+ """
67
+ pulumi.set(__self__, "location", location)
68
+ pulumi.set(__self__, "replication_schedule", replication_schedule)
69
+ pulumi.set(__self__, "volume_name", volume_name)
70
+ if delete_destination_volume is not None:
71
+ pulumi.set(__self__, "delete_destination_volume", delete_destination_volume)
72
+ if description is not None:
73
+ pulumi.set(__self__, "description", description)
74
+ if destination_volume_parameters is not None:
75
+ pulumi.set(__self__, "destination_volume_parameters", destination_volume_parameters)
76
+ if force_stopping is not None:
77
+ pulumi.set(__self__, "force_stopping", force_stopping)
78
+ if labels is not None:
79
+ pulumi.set(__self__, "labels", labels)
80
+ if name is not None:
81
+ pulumi.set(__self__, "name", name)
82
+ if project is not None:
83
+ pulumi.set(__self__, "project", project)
84
+ if replication_enabled is not None:
85
+ pulumi.set(__self__, "replication_enabled", replication_enabled)
86
+ if wait_for_mirror is not None:
87
+ pulumi.set(__self__, "wait_for_mirror", wait_for_mirror)
88
+
89
+ @property
90
+ @pulumi.getter
91
+ def location(self) -> pulumi.Input[str]:
92
+ """
93
+ Name of region for this resource. The resource needs to be created in the region of the destination volume.
94
+ """
95
+ return pulumi.get(self, "location")
96
+
97
+ @location.setter
98
+ def location(self, value: pulumi.Input[str]):
99
+ pulumi.set(self, "location", value)
100
+
101
+ @property
102
+ @pulumi.getter(name="replicationSchedule")
103
+ def replication_schedule(self) -> pulumi.Input[str]:
104
+ """
105
+ Specifies the replication interval.
106
+ Possible values are: `EVERY_10_MINUTES`, `HOURLY`, `DAILY`.
107
+ """
108
+ return pulumi.get(self, "replication_schedule")
109
+
110
+ @replication_schedule.setter
111
+ def replication_schedule(self, value: pulumi.Input[str]):
112
+ pulumi.set(self, "replication_schedule", value)
113
+
114
+ @property
115
+ @pulumi.getter(name="volumeName")
116
+ def volume_name(self) -> pulumi.Input[str]:
117
+ """
118
+ The name of the existing source volume.
119
+ """
120
+ return pulumi.get(self, "volume_name")
121
+
122
+ @volume_name.setter
123
+ def volume_name(self, value: pulumi.Input[str]):
124
+ pulumi.set(self, "volume_name", value)
125
+
126
+ @property
127
+ @pulumi.getter(name="deleteDestinationVolume")
128
+ def delete_destination_volume(self) -> Optional[pulumi.Input[bool]]:
129
+ """
130
+ A destination volume is created as part of replication creation. The destination volume will not became under Terraform
131
+ management unless you import it manually. If you delete the replication, this volume will remain. Setting this parameter
132
+ to true will delete the *current* destination volume when destroying the replication. If you reversed the replication
133
+ direction, this will be your former source volume! For production use, it is recommended to keep this parameter false to
134
+ avoid accidental volume deletion. Handle with care. Default is false.
135
+ """
136
+ return pulumi.get(self, "delete_destination_volume")
137
+
138
+ @delete_destination_volume.setter
139
+ def delete_destination_volume(self, value: Optional[pulumi.Input[bool]]):
140
+ pulumi.set(self, "delete_destination_volume", value)
141
+
142
+ @property
143
+ @pulumi.getter
144
+ def description(self) -> Optional[pulumi.Input[str]]:
145
+ """
146
+ An description of this resource.
147
+ """
148
+ return pulumi.get(self, "description")
149
+
150
+ @description.setter
151
+ def description(self, value: Optional[pulumi.Input[str]]):
152
+ pulumi.set(self, "description", value)
153
+
154
+ @property
155
+ @pulumi.getter(name="destinationVolumeParameters")
156
+ def destination_volume_parameters(self) -> Optional[pulumi.Input['VolumeReplicationDestinationVolumeParametersArgs']]:
157
+ """
158
+ Destination volume parameters.
159
+ Structure is documented below.
160
+ """
161
+ return pulumi.get(self, "destination_volume_parameters")
162
+
163
+ @destination_volume_parameters.setter
164
+ def destination_volume_parameters(self, value: Optional[pulumi.Input['VolumeReplicationDestinationVolumeParametersArgs']]):
165
+ pulumi.set(self, "destination_volume_parameters", value)
166
+
167
+ @property
168
+ @pulumi.getter(name="forceStopping")
169
+ def force_stopping(self) -> Optional[pulumi.Input[bool]]:
170
+ """
171
+ Only replications with mirror_state=MIRRORED can be stopped. A replication in mirror_state=TRANSFERRING
172
+ currently receives an update and stopping the update might be undesirable. Set this parameter to true
173
+ to stop anyway. All data transferred to the destination will be discarded and content of destination
174
+ volume will remain at the state of the last successful update. Default is false.
175
+ """
176
+ return pulumi.get(self, "force_stopping")
177
+
178
+ @force_stopping.setter
179
+ def force_stopping(self, value: Optional[pulumi.Input[bool]]):
180
+ pulumi.set(self, "force_stopping", value)
181
+
182
+ @property
183
+ @pulumi.getter
184
+ def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
185
+ """
186
+ Labels as key value pairs. Example: `{ "owner": "Bob", "department": "finance", "purpose": "testing" }`
187
+
188
+ **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
189
+ Please refer to the field `effective_labels` for all of the labels present on the resource.
190
+ """
191
+ return pulumi.get(self, "labels")
192
+
193
+ @labels.setter
194
+ def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
195
+ pulumi.set(self, "labels", value)
196
+
197
+ @property
198
+ @pulumi.getter
199
+ def name(self) -> Optional[pulumi.Input[str]]:
200
+ """
201
+ The name of the replication. Needs to be unique per location.
202
+
203
+
204
+ - - -
205
+ """
206
+ return pulumi.get(self, "name")
207
+
208
+ @name.setter
209
+ def name(self, value: Optional[pulumi.Input[str]]):
210
+ pulumi.set(self, "name", value)
211
+
212
+ @property
213
+ @pulumi.getter
214
+ def project(self) -> Optional[pulumi.Input[str]]:
215
+ """
216
+ The ID of the project in which the resource belongs.
217
+ If it is not provided, the provider project is used.
218
+ """
219
+ return pulumi.get(self, "project")
220
+
221
+ @project.setter
222
+ def project(self, value: Optional[pulumi.Input[str]]):
223
+ pulumi.set(self, "project", value)
224
+
225
+ @property
226
+ @pulumi.getter(name="replicationEnabled")
227
+ def replication_enabled(self) -> Optional[pulumi.Input[bool]]:
228
+ """
229
+ Set to false to stop/break the mirror. Stopping the mirror makes the destination volume read-write
230
+ and act independently from the source volume.
231
+ Set to true to enable/resume the mirror. WARNING: Resuming a mirror overwrites any changes
232
+ done to the destination volume with the content of the source volume.
233
+ """
234
+ return pulumi.get(self, "replication_enabled")
235
+
236
+ @replication_enabled.setter
237
+ def replication_enabled(self, value: Optional[pulumi.Input[bool]]):
238
+ pulumi.set(self, "replication_enabled", value)
239
+
240
+ @property
241
+ @pulumi.getter(name="waitForMirror")
242
+ def wait_for_mirror(self) -> Optional[pulumi.Input[bool]]:
243
+ """
244
+ Replication resource state is independent of mirror_state. With enough data, it can take many hours for mirror_state to
245
+ reach MIRRORED. If you want Terraform to wait for the mirror to finish on create/stop/resume operations, set this
246
+ parameter to true. Default is false.
247
+ """
248
+ return pulumi.get(self, "wait_for_mirror")
249
+
250
+ @wait_for_mirror.setter
251
+ def wait_for_mirror(self, value: Optional[pulumi.Input[bool]]):
252
+ pulumi.set(self, "wait_for_mirror", value)
253
+
254
+
255
+ @pulumi.input_type
256
+ class _VolumeReplicationState:
257
+ def __init__(__self__, *,
258
+ create_time: Optional[pulumi.Input[str]] = None,
259
+ delete_destination_volume: Optional[pulumi.Input[bool]] = None,
260
+ description: Optional[pulumi.Input[str]] = None,
261
+ destination_volume: Optional[pulumi.Input[str]] = None,
262
+ destination_volume_parameters: Optional[pulumi.Input['VolumeReplicationDestinationVolumeParametersArgs']] = None,
263
+ effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
264
+ force_stopping: Optional[pulumi.Input[bool]] = None,
265
+ healthy: Optional[pulumi.Input[bool]] = None,
266
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
267
+ location: Optional[pulumi.Input[str]] = None,
268
+ mirror_state: Optional[pulumi.Input[str]] = None,
269
+ name: Optional[pulumi.Input[str]] = None,
270
+ project: Optional[pulumi.Input[str]] = None,
271
+ pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
272
+ replication_enabled: Optional[pulumi.Input[bool]] = None,
273
+ replication_schedule: Optional[pulumi.Input[str]] = None,
274
+ role: Optional[pulumi.Input[str]] = None,
275
+ source_volume: Optional[pulumi.Input[str]] = None,
276
+ state: Optional[pulumi.Input[str]] = None,
277
+ state_details: Optional[pulumi.Input[str]] = None,
278
+ transfer_stats: Optional[pulumi.Input[Sequence[pulumi.Input['VolumeReplicationTransferStatArgs']]]] = None,
279
+ volume_name: Optional[pulumi.Input[str]] = None,
280
+ wait_for_mirror: Optional[pulumi.Input[bool]] = None):
281
+ """
282
+ Input properties used for looking up and filtering VolumeReplication resources.
283
+ :param pulumi.Input[str] create_time: Create time of the active directory. A timestamp in RFC3339 UTC "Zulu" format. Examples: "2023-06-22T09:13:01.617Z".
284
+ :param pulumi.Input[bool] delete_destination_volume: A destination volume is created as part of replication creation. The destination volume will not became under Terraform
285
+ management unless you import it manually. If you delete the replication, this volume will remain. Setting this parameter
286
+ to true will delete the *current* destination volume when destroying the replication. If you reversed the replication
287
+ direction, this will be your former source volume! For production use, it is recommended to keep this parameter false to
288
+ avoid accidental volume deletion. Handle with care. Default is false.
289
+ :param pulumi.Input[str] description: An description of this resource.
290
+ :param pulumi.Input[str] destination_volume: Full resource name of destination volume with format: `projects/{{project}}/locations/{{location}}/volumes/{{volumeId}}`
291
+ :param pulumi.Input['VolumeReplicationDestinationVolumeParametersArgs'] destination_volume_parameters: Destination volume parameters.
292
+ Structure is documented below.
293
+ :param pulumi.Input[Mapping[str, pulumi.Input[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.
294
+ :param pulumi.Input[bool] force_stopping: Only replications with mirror_state=MIRRORED can be stopped. A replication in mirror_state=TRANSFERRING
295
+ currently receives an update and stopping the update might be undesirable. Set this parameter to true
296
+ to stop anyway. All data transferred to the destination will be discarded and content of destination
297
+ volume will remain at the state of the last successful update. Default is false.
298
+ :param pulumi.Input[bool] healthy: Condition of the relationship. Can be one of the following:
299
+ - true: The replication relationship is healthy. It has not missed the most recent scheduled transfer.
300
+ - false: The replication relationship is not healthy. It has missed the most recent scheduled transfer.
301
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Labels as key value pairs. Example: `{ "owner": "Bob", "department": "finance", "purpose": "testing" }`
302
+
303
+ **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
304
+ Please refer to the field `effective_labels` for all of the labels present on the resource.
305
+ :param pulumi.Input[str] location: Name of region for this resource. The resource needs to be created in the region of the destination volume.
306
+ :param pulumi.Input[str] mirror_state: Indicates the state of the mirror between source and destination volumes. Depending on the amount of data
307
+ in your source volume, PREPARING phase can take hours or days. mirrorState = MIRRORED indicates your baseline
308
+ transfer ended and destination volume became accessible read-only. TRANSFERRING means a MIRRORED volume
309
+ currently receives an update. Updated every 5 minutes.
310
+ :param pulumi.Input[str] name: The name of the replication. Needs to be unique per location.
311
+
312
+
313
+ - - -
314
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
315
+ If it is not provided, the provider project is used.
316
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource
317
+ and default labels configured on the provider.
318
+ :param pulumi.Input[bool] replication_enabled: Set to false to stop/break the mirror. Stopping the mirror makes the destination volume read-write
319
+ and act independently from the source volume.
320
+ Set to true to enable/resume the mirror. WARNING: Resuming a mirror overwrites any changes
321
+ done to the destination volume with the content of the source volume.
322
+ :param pulumi.Input[str] replication_schedule: Specifies the replication interval.
323
+ Possible values are: `EVERY_10_MINUTES`, `HOURLY`, `DAILY`.
324
+ :param pulumi.Input[str] role: Reverting a replication can swap source and destination volume roles. This field indicates if the `location` hosts
325
+ the source or destination volume. For resume and revert and resume operations it is critical to understand
326
+ which volume is the source volume, since it will overwrite changes done to the destination volume.
327
+ :param pulumi.Input[str] source_volume: Full resource name of source volume with format: `projects/{{project}}/locations/{{location}}/volumes/{{volumeId}}`
328
+ :param pulumi.Input[str] state: Indicates the state of replication resource. State of the mirror itself is indicated in mirrorState.
329
+ :param pulumi.Input[str] state_details: State details of the replication resource.
330
+ :param pulumi.Input[Sequence[pulumi.Input['VolumeReplicationTransferStatArgs']]] transfer_stats: Replication transfer statistics. All statistics are updated every 5 minutes.
331
+ Structure is documented below.
332
+ :param pulumi.Input[str] volume_name: The name of the existing source volume.
333
+ :param pulumi.Input[bool] wait_for_mirror: Replication resource state is independent of mirror_state. With enough data, it can take many hours for mirror_state to
334
+ reach MIRRORED. If you want Terraform to wait for the mirror to finish on create/stop/resume operations, set this
335
+ parameter to true. Default is false.
336
+ """
337
+ if create_time is not None:
338
+ pulumi.set(__self__, "create_time", create_time)
339
+ if delete_destination_volume is not None:
340
+ pulumi.set(__self__, "delete_destination_volume", delete_destination_volume)
341
+ if description is not None:
342
+ pulumi.set(__self__, "description", description)
343
+ if destination_volume is not None:
344
+ pulumi.set(__self__, "destination_volume", destination_volume)
345
+ if destination_volume_parameters is not None:
346
+ pulumi.set(__self__, "destination_volume_parameters", destination_volume_parameters)
347
+ if effective_labels is not None:
348
+ pulumi.set(__self__, "effective_labels", effective_labels)
349
+ if force_stopping is not None:
350
+ pulumi.set(__self__, "force_stopping", force_stopping)
351
+ if healthy is not None:
352
+ pulumi.set(__self__, "healthy", healthy)
353
+ if labels is not None:
354
+ pulumi.set(__self__, "labels", labels)
355
+ if location is not None:
356
+ pulumi.set(__self__, "location", location)
357
+ if mirror_state is not None:
358
+ pulumi.set(__self__, "mirror_state", mirror_state)
359
+ if name is not None:
360
+ pulumi.set(__self__, "name", name)
361
+ if project is not None:
362
+ pulumi.set(__self__, "project", project)
363
+ if pulumi_labels is not None:
364
+ pulumi.set(__self__, "pulumi_labels", pulumi_labels)
365
+ if replication_enabled is not None:
366
+ pulumi.set(__self__, "replication_enabled", replication_enabled)
367
+ if replication_schedule is not None:
368
+ pulumi.set(__self__, "replication_schedule", replication_schedule)
369
+ if role is not None:
370
+ pulumi.set(__self__, "role", role)
371
+ if source_volume is not None:
372
+ pulumi.set(__self__, "source_volume", source_volume)
373
+ if state is not None:
374
+ pulumi.set(__self__, "state", state)
375
+ if state_details is not None:
376
+ pulumi.set(__self__, "state_details", state_details)
377
+ if transfer_stats is not None:
378
+ pulumi.set(__self__, "transfer_stats", transfer_stats)
379
+ if volume_name is not None:
380
+ pulumi.set(__self__, "volume_name", volume_name)
381
+ if wait_for_mirror is not None:
382
+ pulumi.set(__self__, "wait_for_mirror", wait_for_mirror)
383
+
384
+ @property
385
+ @pulumi.getter(name="createTime")
386
+ def create_time(self) -> Optional[pulumi.Input[str]]:
387
+ """
388
+ Create time of the active directory. A timestamp in RFC3339 UTC "Zulu" format. Examples: "2023-06-22T09:13:01.617Z".
389
+ """
390
+ return pulumi.get(self, "create_time")
391
+
392
+ @create_time.setter
393
+ def create_time(self, value: Optional[pulumi.Input[str]]):
394
+ pulumi.set(self, "create_time", value)
395
+
396
+ @property
397
+ @pulumi.getter(name="deleteDestinationVolume")
398
+ def delete_destination_volume(self) -> Optional[pulumi.Input[bool]]:
399
+ """
400
+ A destination volume is created as part of replication creation. The destination volume will not became under Terraform
401
+ management unless you import it manually. If you delete the replication, this volume will remain. Setting this parameter
402
+ to true will delete the *current* destination volume when destroying the replication. If you reversed the replication
403
+ direction, this will be your former source volume! For production use, it is recommended to keep this parameter false to
404
+ avoid accidental volume deletion. Handle with care. Default is false.
405
+ """
406
+ return pulumi.get(self, "delete_destination_volume")
407
+
408
+ @delete_destination_volume.setter
409
+ def delete_destination_volume(self, value: Optional[pulumi.Input[bool]]):
410
+ pulumi.set(self, "delete_destination_volume", value)
411
+
412
+ @property
413
+ @pulumi.getter
414
+ def description(self) -> Optional[pulumi.Input[str]]:
415
+ """
416
+ An description of this resource.
417
+ """
418
+ return pulumi.get(self, "description")
419
+
420
+ @description.setter
421
+ def description(self, value: Optional[pulumi.Input[str]]):
422
+ pulumi.set(self, "description", value)
423
+
424
+ @property
425
+ @pulumi.getter(name="destinationVolume")
426
+ def destination_volume(self) -> Optional[pulumi.Input[str]]:
427
+ """
428
+ Full resource name of destination volume with format: `projects/{{project}}/locations/{{location}}/volumes/{{volumeId}}`
429
+ """
430
+ return pulumi.get(self, "destination_volume")
431
+
432
+ @destination_volume.setter
433
+ def destination_volume(self, value: Optional[pulumi.Input[str]]):
434
+ pulumi.set(self, "destination_volume", value)
435
+
436
+ @property
437
+ @pulumi.getter(name="destinationVolumeParameters")
438
+ def destination_volume_parameters(self) -> Optional[pulumi.Input['VolumeReplicationDestinationVolumeParametersArgs']]:
439
+ """
440
+ Destination volume parameters.
441
+ Structure is documented below.
442
+ """
443
+ return pulumi.get(self, "destination_volume_parameters")
444
+
445
+ @destination_volume_parameters.setter
446
+ def destination_volume_parameters(self, value: Optional[pulumi.Input['VolumeReplicationDestinationVolumeParametersArgs']]):
447
+ pulumi.set(self, "destination_volume_parameters", value)
448
+
449
+ @property
450
+ @pulumi.getter(name="effectiveLabels")
451
+ def effective_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
452
+ """
453
+ All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
454
+ """
455
+ return pulumi.get(self, "effective_labels")
456
+
457
+ @effective_labels.setter
458
+ def effective_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
459
+ pulumi.set(self, "effective_labels", value)
460
+
461
+ @property
462
+ @pulumi.getter(name="forceStopping")
463
+ def force_stopping(self) -> Optional[pulumi.Input[bool]]:
464
+ """
465
+ Only replications with mirror_state=MIRRORED can be stopped. A replication in mirror_state=TRANSFERRING
466
+ currently receives an update and stopping the update might be undesirable. Set this parameter to true
467
+ to stop anyway. All data transferred to the destination will be discarded and content of destination
468
+ volume will remain at the state of the last successful update. Default is false.
469
+ """
470
+ return pulumi.get(self, "force_stopping")
471
+
472
+ @force_stopping.setter
473
+ def force_stopping(self, value: Optional[pulumi.Input[bool]]):
474
+ pulumi.set(self, "force_stopping", value)
475
+
476
+ @property
477
+ @pulumi.getter
478
+ def healthy(self) -> Optional[pulumi.Input[bool]]:
479
+ """
480
+ Condition of the relationship. Can be one of the following:
481
+ - true: The replication relationship is healthy. It has not missed the most recent scheduled transfer.
482
+ - false: The replication relationship is not healthy. It has missed the most recent scheduled transfer.
483
+ """
484
+ return pulumi.get(self, "healthy")
485
+
486
+ @healthy.setter
487
+ def healthy(self, value: Optional[pulumi.Input[bool]]):
488
+ pulumi.set(self, "healthy", value)
489
+
490
+ @property
491
+ @pulumi.getter
492
+ def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
493
+ """
494
+ Labels as key value pairs. Example: `{ "owner": "Bob", "department": "finance", "purpose": "testing" }`
495
+
496
+ **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
497
+ Please refer to the field `effective_labels` for all of the labels present on the resource.
498
+ """
499
+ return pulumi.get(self, "labels")
500
+
501
+ @labels.setter
502
+ def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
503
+ pulumi.set(self, "labels", value)
504
+
505
+ @property
506
+ @pulumi.getter
507
+ def location(self) -> Optional[pulumi.Input[str]]:
508
+ """
509
+ Name of region for this resource. The resource needs to be created in the region of the destination volume.
510
+ """
511
+ return pulumi.get(self, "location")
512
+
513
+ @location.setter
514
+ def location(self, value: Optional[pulumi.Input[str]]):
515
+ pulumi.set(self, "location", value)
516
+
517
+ @property
518
+ @pulumi.getter(name="mirrorState")
519
+ def mirror_state(self) -> Optional[pulumi.Input[str]]:
520
+ """
521
+ Indicates the state of the mirror between source and destination volumes. Depending on the amount of data
522
+ in your source volume, PREPARING phase can take hours or days. mirrorState = MIRRORED indicates your baseline
523
+ transfer ended and destination volume became accessible read-only. TRANSFERRING means a MIRRORED volume
524
+ currently receives an update. Updated every 5 minutes.
525
+ """
526
+ return pulumi.get(self, "mirror_state")
527
+
528
+ @mirror_state.setter
529
+ def mirror_state(self, value: Optional[pulumi.Input[str]]):
530
+ pulumi.set(self, "mirror_state", value)
531
+
532
+ @property
533
+ @pulumi.getter
534
+ def name(self) -> Optional[pulumi.Input[str]]:
535
+ """
536
+ The name of the replication. Needs to be unique per location.
537
+
538
+
539
+ - - -
540
+ """
541
+ return pulumi.get(self, "name")
542
+
543
+ @name.setter
544
+ def name(self, value: Optional[pulumi.Input[str]]):
545
+ pulumi.set(self, "name", value)
546
+
547
+ @property
548
+ @pulumi.getter
549
+ def project(self) -> Optional[pulumi.Input[str]]:
550
+ """
551
+ The ID of the project in which the resource belongs.
552
+ If it is not provided, the provider project is used.
553
+ """
554
+ return pulumi.get(self, "project")
555
+
556
+ @project.setter
557
+ def project(self, value: Optional[pulumi.Input[str]]):
558
+ pulumi.set(self, "project", value)
559
+
560
+ @property
561
+ @pulumi.getter(name="pulumiLabels")
562
+ def pulumi_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
563
+ """
564
+ The combination of labels configured directly on the resource
565
+ and default labels configured on the provider.
566
+ """
567
+ return pulumi.get(self, "pulumi_labels")
568
+
569
+ @pulumi_labels.setter
570
+ def pulumi_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
571
+ pulumi.set(self, "pulumi_labels", value)
572
+
573
+ @property
574
+ @pulumi.getter(name="replicationEnabled")
575
+ def replication_enabled(self) -> Optional[pulumi.Input[bool]]:
576
+ """
577
+ Set to false to stop/break the mirror. Stopping the mirror makes the destination volume read-write
578
+ and act independently from the source volume.
579
+ Set to true to enable/resume the mirror. WARNING: Resuming a mirror overwrites any changes
580
+ done to the destination volume with the content of the source volume.
581
+ """
582
+ return pulumi.get(self, "replication_enabled")
583
+
584
+ @replication_enabled.setter
585
+ def replication_enabled(self, value: Optional[pulumi.Input[bool]]):
586
+ pulumi.set(self, "replication_enabled", value)
587
+
588
+ @property
589
+ @pulumi.getter(name="replicationSchedule")
590
+ def replication_schedule(self) -> Optional[pulumi.Input[str]]:
591
+ """
592
+ Specifies the replication interval.
593
+ Possible values are: `EVERY_10_MINUTES`, `HOURLY`, `DAILY`.
594
+ """
595
+ return pulumi.get(self, "replication_schedule")
596
+
597
+ @replication_schedule.setter
598
+ def replication_schedule(self, value: Optional[pulumi.Input[str]]):
599
+ pulumi.set(self, "replication_schedule", value)
600
+
601
+ @property
602
+ @pulumi.getter
603
+ def role(self) -> Optional[pulumi.Input[str]]:
604
+ """
605
+ Reverting a replication can swap source and destination volume roles. This field indicates if the `location` hosts
606
+ the source or destination volume. For resume and revert and resume operations it is critical to understand
607
+ which volume is the source volume, since it will overwrite changes done to the destination volume.
608
+ """
609
+ return pulumi.get(self, "role")
610
+
611
+ @role.setter
612
+ def role(self, value: Optional[pulumi.Input[str]]):
613
+ pulumi.set(self, "role", value)
614
+
615
+ @property
616
+ @pulumi.getter(name="sourceVolume")
617
+ def source_volume(self) -> Optional[pulumi.Input[str]]:
618
+ """
619
+ Full resource name of source volume with format: `projects/{{project}}/locations/{{location}}/volumes/{{volumeId}}`
620
+ """
621
+ return pulumi.get(self, "source_volume")
622
+
623
+ @source_volume.setter
624
+ def source_volume(self, value: Optional[pulumi.Input[str]]):
625
+ pulumi.set(self, "source_volume", value)
626
+
627
+ @property
628
+ @pulumi.getter
629
+ def state(self) -> Optional[pulumi.Input[str]]:
630
+ """
631
+ Indicates the state of replication resource. State of the mirror itself is indicated in mirrorState.
632
+ """
633
+ return pulumi.get(self, "state")
634
+
635
+ @state.setter
636
+ def state(self, value: Optional[pulumi.Input[str]]):
637
+ pulumi.set(self, "state", value)
638
+
639
+ @property
640
+ @pulumi.getter(name="stateDetails")
641
+ def state_details(self) -> Optional[pulumi.Input[str]]:
642
+ """
643
+ State details of the replication resource.
644
+ """
645
+ return pulumi.get(self, "state_details")
646
+
647
+ @state_details.setter
648
+ def state_details(self, value: Optional[pulumi.Input[str]]):
649
+ pulumi.set(self, "state_details", value)
650
+
651
+ @property
652
+ @pulumi.getter(name="transferStats")
653
+ def transfer_stats(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['VolumeReplicationTransferStatArgs']]]]:
654
+ """
655
+ Replication transfer statistics. All statistics are updated every 5 minutes.
656
+ Structure is documented below.
657
+ """
658
+ return pulumi.get(self, "transfer_stats")
659
+
660
+ @transfer_stats.setter
661
+ def transfer_stats(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['VolumeReplicationTransferStatArgs']]]]):
662
+ pulumi.set(self, "transfer_stats", value)
663
+
664
+ @property
665
+ @pulumi.getter(name="volumeName")
666
+ def volume_name(self) -> Optional[pulumi.Input[str]]:
667
+ """
668
+ The name of the existing source volume.
669
+ """
670
+ return pulumi.get(self, "volume_name")
671
+
672
+ @volume_name.setter
673
+ def volume_name(self, value: Optional[pulumi.Input[str]]):
674
+ pulumi.set(self, "volume_name", value)
675
+
676
+ @property
677
+ @pulumi.getter(name="waitForMirror")
678
+ def wait_for_mirror(self) -> Optional[pulumi.Input[bool]]:
679
+ """
680
+ Replication resource state is independent of mirror_state. With enough data, it can take many hours for mirror_state to
681
+ reach MIRRORED. If you want Terraform to wait for the mirror to finish on create/stop/resume operations, set this
682
+ parameter to true. Default is false.
683
+ """
684
+ return pulumi.get(self, "wait_for_mirror")
685
+
686
+ @wait_for_mirror.setter
687
+ def wait_for_mirror(self, value: Optional[pulumi.Input[bool]]):
688
+ pulumi.set(self, "wait_for_mirror", value)
689
+
690
+
691
+ class VolumeReplication(pulumi.CustomResource):
692
+ @overload
693
+ def __init__(__self__,
694
+ resource_name: str,
695
+ opts: Optional[pulumi.ResourceOptions] = None,
696
+ delete_destination_volume: Optional[pulumi.Input[bool]] = None,
697
+ description: Optional[pulumi.Input[str]] = None,
698
+ destination_volume_parameters: Optional[pulumi.Input[pulumi.InputType['VolumeReplicationDestinationVolumeParametersArgs']]] = None,
699
+ force_stopping: Optional[pulumi.Input[bool]] = None,
700
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
701
+ location: Optional[pulumi.Input[str]] = None,
702
+ name: Optional[pulumi.Input[str]] = None,
703
+ project: Optional[pulumi.Input[str]] = None,
704
+ replication_enabled: Optional[pulumi.Input[bool]] = None,
705
+ replication_schedule: Optional[pulumi.Input[str]] = None,
706
+ volume_name: Optional[pulumi.Input[str]] = None,
707
+ wait_for_mirror: Optional[pulumi.Input[bool]] = None,
708
+ __props__=None):
709
+ """
710
+ ## Example Usage
711
+ ### Netapp Volume Replication Create
712
+
713
+ ```python
714
+ import pulumi
715
+ import pulumi_gcp as gcp
716
+
717
+ default = gcp.compute.get_network(name="test-network")
718
+ source_pool = gcp.netapp.StoragePool("source_pool",
719
+ name="source-pool",
720
+ location="us-central1",
721
+ service_level="PREMIUM",
722
+ capacity_gib="2048",
723
+ network=default.id)
724
+ destination_pool = gcp.netapp.StoragePool("destination_pool",
725
+ name="destination-pool",
726
+ location="us-west2",
727
+ service_level="PREMIUM",
728
+ capacity_gib="2048",
729
+ network=default.id)
730
+ source_volume = gcp.netapp.Volume("source_volume",
731
+ location=source_pool.location,
732
+ name="source-volume",
733
+ capacity_gib="100",
734
+ share_name="source-volume",
735
+ storage_pool=source_pool.name,
736
+ protocols=["NFSV3"],
737
+ deletion_policy="FORCE")
738
+ test_replication = gcp.netapp.VolumeReplication("test_replication",
739
+ location=source_volume.location,
740
+ volume_name=source_volume.name,
741
+ name="test-replication",
742
+ replication_schedule="EVERY_10_MINUTES",
743
+ description="This is a replication resource",
744
+ destination_volume_parameters=gcp.netapp.VolumeReplicationDestinationVolumeParametersArgs(
745
+ storage_pool=destination_pool.id,
746
+ volume_id="destination-volume",
747
+ share_name="source-volume",
748
+ description="This is a replicated volume",
749
+ ),
750
+ delete_destination_volume=True,
751
+ wait_for_mirror=True)
752
+ ```
753
+
754
+ ## Import
755
+
756
+ VolumeReplication can be imported using any of these accepted formats:
757
+
758
+ * `projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/replications/{{name}}`
759
+
760
+ * `{{project}}/{{location}}/{{volume_name}}/{{name}}`
761
+
762
+ * `{{location}}/{{volume_name}}/{{name}}`
763
+
764
+ When using the `pulumi import` command, VolumeReplication can be imported using one of the formats above. For example:
765
+
766
+ ```sh
767
+ $ pulumi import gcp:netapp/volumeReplication:VolumeReplication default projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/replications/{{name}}
768
+ ```
769
+
770
+ ```sh
771
+ $ pulumi import gcp:netapp/volumeReplication:VolumeReplication default {{project}}/{{location}}/{{volume_name}}/{{name}}
772
+ ```
773
+
774
+ ```sh
775
+ $ pulumi import gcp:netapp/volumeReplication:VolumeReplication default {{location}}/{{volume_name}}/{{name}}
776
+ ```
777
+
778
+ :param str resource_name: The name of the resource.
779
+ :param pulumi.ResourceOptions opts: Options for the resource.
780
+ :param pulumi.Input[bool] delete_destination_volume: A destination volume is created as part of replication creation. The destination volume will not became under Terraform
781
+ management unless you import it manually. If you delete the replication, this volume will remain. Setting this parameter
782
+ to true will delete the *current* destination volume when destroying the replication. If you reversed the replication
783
+ direction, this will be your former source volume! For production use, it is recommended to keep this parameter false to
784
+ avoid accidental volume deletion. Handle with care. Default is false.
785
+ :param pulumi.Input[str] description: An description of this resource.
786
+ :param pulumi.Input[pulumi.InputType['VolumeReplicationDestinationVolumeParametersArgs']] destination_volume_parameters: Destination volume parameters.
787
+ Structure is documented below.
788
+ :param pulumi.Input[bool] force_stopping: Only replications with mirror_state=MIRRORED can be stopped. A replication in mirror_state=TRANSFERRING
789
+ currently receives an update and stopping the update might be undesirable. Set this parameter to true
790
+ to stop anyway. All data transferred to the destination will be discarded and content of destination
791
+ volume will remain at the state of the last successful update. Default is false.
792
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Labels as key value pairs. Example: `{ "owner": "Bob", "department": "finance", "purpose": "testing" }`
793
+
794
+ **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
795
+ Please refer to the field `effective_labels` for all of the labels present on the resource.
796
+ :param pulumi.Input[str] location: Name of region for this resource. The resource needs to be created in the region of the destination volume.
797
+ :param pulumi.Input[str] name: The name of the replication. Needs to be unique per location.
798
+
799
+
800
+ - - -
801
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
802
+ If it is not provided, the provider project is used.
803
+ :param pulumi.Input[bool] replication_enabled: Set to false to stop/break the mirror. Stopping the mirror makes the destination volume read-write
804
+ and act independently from the source volume.
805
+ Set to true to enable/resume the mirror. WARNING: Resuming a mirror overwrites any changes
806
+ done to the destination volume with the content of the source volume.
807
+ :param pulumi.Input[str] replication_schedule: Specifies the replication interval.
808
+ Possible values are: `EVERY_10_MINUTES`, `HOURLY`, `DAILY`.
809
+ :param pulumi.Input[str] volume_name: The name of the existing source volume.
810
+ :param pulumi.Input[bool] wait_for_mirror: Replication resource state is independent of mirror_state. With enough data, it can take many hours for mirror_state to
811
+ reach MIRRORED. If you want Terraform to wait for the mirror to finish on create/stop/resume operations, set this
812
+ parameter to true. Default is false.
813
+ """
814
+ ...
815
+ @overload
816
+ def __init__(__self__,
817
+ resource_name: str,
818
+ args: VolumeReplicationArgs,
819
+ opts: Optional[pulumi.ResourceOptions] = None):
820
+ """
821
+ ## Example Usage
822
+ ### Netapp Volume Replication Create
823
+
824
+ ```python
825
+ import pulumi
826
+ import pulumi_gcp as gcp
827
+
828
+ default = gcp.compute.get_network(name="test-network")
829
+ source_pool = gcp.netapp.StoragePool("source_pool",
830
+ name="source-pool",
831
+ location="us-central1",
832
+ service_level="PREMIUM",
833
+ capacity_gib="2048",
834
+ network=default.id)
835
+ destination_pool = gcp.netapp.StoragePool("destination_pool",
836
+ name="destination-pool",
837
+ location="us-west2",
838
+ service_level="PREMIUM",
839
+ capacity_gib="2048",
840
+ network=default.id)
841
+ source_volume = gcp.netapp.Volume("source_volume",
842
+ location=source_pool.location,
843
+ name="source-volume",
844
+ capacity_gib="100",
845
+ share_name="source-volume",
846
+ storage_pool=source_pool.name,
847
+ protocols=["NFSV3"],
848
+ deletion_policy="FORCE")
849
+ test_replication = gcp.netapp.VolumeReplication("test_replication",
850
+ location=source_volume.location,
851
+ volume_name=source_volume.name,
852
+ name="test-replication",
853
+ replication_schedule="EVERY_10_MINUTES",
854
+ description="This is a replication resource",
855
+ destination_volume_parameters=gcp.netapp.VolumeReplicationDestinationVolumeParametersArgs(
856
+ storage_pool=destination_pool.id,
857
+ volume_id="destination-volume",
858
+ share_name="source-volume",
859
+ description="This is a replicated volume",
860
+ ),
861
+ delete_destination_volume=True,
862
+ wait_for_mirror=True)
863
+ ```
864
+
865
+ ## Import
866
+
867
+ VolumeReplication can be imported using any of these accepted formats:
868
+
869
+ * `projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/replications/{{name}}`
870
+
871
+ * `{{project}}/{{location}}/{{volume_name}}/{{name}}`
872
+
873
+ * `{{location}}/{{volume_name}}/{{name}}`
874
+
875
+ When using the `pulumi import` command, VolumeReplication can be imported using one of the formats above. For example:
876
+
877
+ ```sh
878
+ $ pulumi import gcp:netapp/volumeReplication:VolumeReplication default projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/replications/{{name}}
879
+ ```
880
+
881
+ ```sh
882
+ $ pulumi import gcp:netapp/volumeReplication:VolumeReplication default {{project}}/{{location}}/{{volume_name}}/{{name}}
883
+ ```
884
+
885
+ ```sh
886
+ $ pulumi import gcp:netapp/volumeReplication:VolumeReplication default {{location}}/{{volume_name}}/{{name}}
887
+ ```
888
+
889
+ :param str resource_name: The name of the resource.
890
+ :param VolumeReplicationArgs args: The arguments to use to populate this resource's properties.
891
+ :param pulumi.ResourceOptions opts: Options for the resource.
892
+ """
893
+ ...
894
+ def __init__(__self__, resource_name: str, *args, **kwargs):
895
+ resource_args, opts = _utilities.get_resource_args_opts(VolumeReplicationArgs, pulumi.ResourceOptions, *args, **kwargs)
896
+ if resource_args is not None:
897
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
898
+ else:
899
+ __self__._internal_init(resource_name, *args, **kwargs)
900
+
901
+ def _internal_init(__self__,
902
+ resource_name: str,
903
+ opts: Optional[pulumi.ResourceOptions] = None,
904
+ delete_destination_volume: Optional[pulumi.Input[bool]] = None,
905
+ description: Optional[pulumi.Input[str]] = None,
906
+ destination_volume_parameters: Optional[pulumi.Input[pulumi.InputType['VolumeReplicationDestinationVolumeParametersArgs']]] = None,
907
+ force_stopping: Optional[pulumi.Input[bool]] = None,
908
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
909
+ location: Optional[pulumi.Input[str]] = None,
910
+ name: Optional[pulumi.Input[str]] = None,
911
+ project: Optional[pulumi.Input[str]] = None,
912
+ replication_enabled: Optional[pulumi.Input[bool]] = None,
913
+ replication_schedule: Optional[pulumi.Input[str]] = None,
914
+ volume_name: Optional[pulumi.Input[str]] = None,
915
+ wait_for_mirror: Optional[pulumi.Input[bool]] = None,
916
+ __props__=None):
917
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
918
+ if not isinstance(opts, pulumi.ResourceOptions):
919
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
920
+ if opts.id is None:
921
+ if __props__ is not None:
922
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
923
+ __props__ = VolumeReplicationArgs.__new__(VolumeReplicationArgs)
924
+
925
+ __props__.__dict__["delete_destination_volume"] = delete_destination_volume
926
+ __props__.__dict__["description"] = description
927
+ __props__.__dict__["destination_volume_parameters"] = destination_volume_parameters
928
+ __props__.__dict__["force_stopping"] = force_stopping
929
+ __props__.__dict__["labels"] = labels
930
+ if location is None and not opts.urn:
931
+ raise TypeError("Missing required property 'location'")
932
+ __props__.__dict__["location"] = location
933
+ __props__.__dict__["name"] = name
934
+ __props__.__dict__["project"] = project
935
+ __props__.__dict__["replication_enabled"] = replication_enabled
936
+ if replication_schedule is None and not opts.urn:
937
+ raise TypeError("Missing required property 'replication_schedule'")
938
+ __props__.__dict__["replication_schedule"] = replication_schedule
939
+ if volume_name is None and not opts.urn:
940
+ raise TypeError("Missing required property 'volume_name'")
941
+ __props__.__dict__["volume_name"] = volume_name
942
+ __props__.__dict__["wait_for_mirror"] = wait_for_mirror
943
+ __props__.__dict__["create_time"] = None
944
+ __props__.__dict__["destination_volume"] = None
945
+ __props__.__dict__["effective_labels"] = None
946
+ __props__.__dict__["healthy"] = None
947
+ __props__.__dict__["mirror_state"] = None
948
+ __props__.__dict__["pulumi_labels"] = None
949
+ __props__.__dict__["role"] = None
950
+ __props__.__dict__["source_volume"] = None
951
+ __props__.__dict__["state"] = None
952
+ __props__.__dict__["state_details"] = None
953
+ __props__.__dict__["transfer_stats"] = None
954
+ secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["effectiveLabels", "pulumiLabels"])
955
+ opts = pulumi.ResourceOptions.merge(opts, secret_opts)
956
+ super(VolumeReplication, __self__).__init__(
957
+ 'gcp:netapp/volumeReplication:VolumeReplication',
958
+ resource_name,
959
+ __props__,
960
+ opts)
961
+
962
+ @staticmethod
963
+ def get(resource_name: str,
964
+ id: pulumi.Input[str],
965
+ opts: Optional[pulumi.ResourceOptions] = None,
966
+ create_time: Optional[pulumi.Input[str]] = None,
967
+ delete_destination_volume: Optional[pulumi.Input[bool]] = None,
968
+ description: Optional[pulumi.Input[str]] = None,
969
+ destination_volume: Optional[pulumi.Input[str]] = None,
970
+ destination_volume_parameters: Optional[pulumi.Input[pulumi.InputType['VolumeReplicationDestinationVolumeParametersArgs']]] = None,
971
+ effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
972
+ force_stopping: Optional[pulumi.Input[bool]] = None,
973
+ healthy: Optional[pulumi.Input[bool]] = None,
974
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
975
+ location: Optional[pulumi.Input[str]] = None,
976
+ mirror_state: Optional[pulumi.Input[str]] = None,
977
+ name: Optional[pulumi.Input[str]] = None,
978
+ project: Optional[pulumi.Input[str]] = None,
979
+ pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
980
+ replication_enabled: Optional[pulumi.Input[bool]] = None,
981
+ replication_schedule: Optional[pulumi.Input[str]] = None,
982
+ role: Optional[pulumi.Input[str]] = None,
983
+ source_volume: Optional[pulumi.Input[str]] = None,
984
+ state: Optional[pulumi.Input[str]] = None,
985
+ state_details: Optional[pulumi.Input[str]] = None,
986
+ transfer_stats: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['VolumeReplicationTransferStatArgs']]]]] = None,
987
+ volume_name: Optional[pulumi.Input[str]] = None,
988
+ wait_for_mirror: Optional[pulumi.Input[bool]] = None) -> 'VolumeReplication':
989
+ """
990
+ Get an existing VolumeReplication resource's state with the given name, id, and optional extra
991
+ properties used to qualify the lookup.
992
+
993
+ :param str resource_name: The unique name of the resulting resource.
994
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
995
+ :param pulumi.ResourceOptions opts: Options for the resource.
996
+ :param pulumi.Input[str] create_time: Create time of the active directory. A timestamp in RFC3339 UTC "Zulu" format. Examples: "2023-06-22T09:13:01.617Z".
997
+ :param pulumi.Input[bool] delete_destination_volume: A destination volume is created as part of replication creation. The destination volume will not became under Terraform
998
+ management unless you import it manually. If you delete the replication, this volume will remain. Setting this parameter
999
+ to true will delete the *current* destination volume when destroying the replication. If you reversed the replication
1000
+ direction, this will be your former source volume! For production use, it is recommended to keep this parameter false to
1001
+ avoid accidental volume deletion. Handle with care. Default is false.
1002
+ :param pulumi.Input[str] description: An description of this resource.
1003
+ :param pulumi.Input[str] destination_volume: Full resource name of destination volume with format: `projects/{{project}}/locations/{{location}}/volumes/{{volumeId}}`
1004
+ :param pulumi.Input[pulumi.InputType['VolumeReplicationDestinationVolumeParametersArgs']] destination_volume_parameters: Destination volume parameters.
1005
+ Structure is documented below.
1006
+ :param pulumi.Input[Mapping[str, pulumi.Input[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.
1007
+ :param pulumi.Input[bool] force_stopping: Only replications with mirror_state=MIRRORED can be stopped. A replication in mirror_state=TRANSFERRING
1008
+ currently receives an update and stopping the update might be undesirable. Set this parameter to true
1009
+ to stop anyway. All data transferred to the destination will be discarded and content of destination
1010
+ volume will remain at the state of the last successful update. Default is false.
1011
+ :param pulumi.Input[bool] healthy: Condition of the relationship. Can be one of the following:
1012
+ - true: The replication relationship is healthy. It has not missed the most recent scheduled transfer.
1013
+ - false: The replication relationship is not healthy. It has missed the most recent scheduled transfer.
1014
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Labels as key value pairs. Example: `{ "owner": "Bob", "department": "finance", "purpose": "testing" }`
1015
+
1016
+ **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
1017
+ Please refer to the field `effective_labels` for all of the labels present on the resource.
1018
+ :param pulumi.Input[str] location: Name of region for this resource. The resource needs to be created in the region of the destination volume.
1019
+ :param pulumi.Input[str] mirror_state: Indicates the state of the mirror between source and destination volumes. Depending on the amount of data
1020
+ in your source volume, PREPARING phase can take hours or days. mirrorState = MIRRORED indicates your baseline
1021
+ transfer ended and destination volume became accessible read-only. TRANSFERRING means a MIRRORED volume
1022
+ currently receives an update. Updated every 5 minutes.
1023
+ :param pulumi.Input[str] name: The name of the replication. Needs to be unique per location.
1024
+
1025
+
1026
+ - - -
1027
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
1028
+ If it is not provided, the provider project is used.
1029
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource
1030
+ and default labels configured on the provider.
1031
+ :param pulumi.Input[bool] replication_enabled: Set to false to stop/break the mirror. Stopping the mirror makes the destination volume read-write
1032
+ and act independently from the source volume.
1033
+ Set to true to enable/resume the mirror. WARNING: Resuming a mirror overwrites any changes
1034
+ done to the destination volume with the content of the source volume.
1035
+ :param pulumi.Input[str] replication_schedule: Specifies the replication interval.
1036
+ Possible values are: `EVERY_10_MINUTES`, `HOURLY`, `DAILY`.
1037
+ :param pulumi.Input[str] role: Reverting a replication can swap source and destination volume roles. This field indicates if the `location` hosts
1038
+ the source or destination volume. For resume and revert and resume operations it is critical to understand
1039
+ which volume is the source volume, since it will overwrite changes done to the destination volume.
1040
+ :param pulumi.Input[str] source_volume: Full resource name of source volume with format: `projects/{{project}}/locations/{{location}}/volumes/{{volumeId}}`
1041
+ :param pulumi.Input[str] state: Indicates the state of replication resource. State of the mirror itself is indicated in mirrorState.
1042
+ :param pulumi.Input[str] state_details: State details of the replication resource.
1043
+ :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['VolumeReplicationTransferStatArgs']]]] transfer_stats: Replication transfer statistics. All statistics are updated every 5 minutes.
1044
+ Structure is documented below.
1045
+ :param pulumi.Input[str] volume_name: The name of the existing source volume.
1046
+ :param pulumi.Input[bool] wait_for_mirror: Replication resource state is independent of mirror_state. With enough data, it can take many hours for mirror_state to
1047
+ reach MIRRORED. If you want Terraform to wait for the mirror to finish on create/stop/resume operations, set this
1048
+ parameter to true. Default is false.
1049
+ """
1050
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
1051
+
1052
+ __props__ = _VolumeReplicationState.__new__(_VolumeReplicationState)
1053
+
1054
+ __props__.__dict__["create_time"] = create_time
1055
+ __props__.__dict__["delete_destination_volume"] = delete_destination_volume
1056
+ __props__.__dict__["description"] = description
1057
+ __props__.__dict__["destination_volume"] = destination_volume
1058
+ __props__.__dict__["destination_volume_parameters"] = destination_volume_parameters
1059
+ __props__.__dict__["effective_labels"] = effective_labels
1060
+ __props__.__dict__["force_stopping"] = force_stopping
1061
+ __props__.__dict__["healthy"] = healthy
1062
+ __props__.__dict__["labels"] = labels
1063
+ __props__.__dict__["location"] = location
1064
+ __props__.__dict__["mirror_state"] = mirror_state
1065
+ __props__.__dict__["name"] = name
1066
+ __props__.__dict__["project"] = project
1067
+ __props__.__dict__["pulumi_labels"] = pulumi_labels
1068
+ __props__.__dict__["replication_enabled"] = replication_enabled
1069
+ __props__.__dict__["replication_schedule"] = replication_schedule
1070
+ __props__.__dict__["role"] = role
1071
+ __props__.__dict__["source_volume"] = source_volume
1072
+ __props__.__dict__["state"] = state
1073
+ __props__.__dict__["state_details"] = state_details
1074
+ __props__.__dict__["transfer_stats"] = transfer_stats
1075
+ __props__.__dict__["volume_name"] = volume_name
1076
+ __props__.__dict__["wait_for_mirror"] = wait_for_mirror
1077
+ return VolumeReplication(resource_name, opts=opts, __props__=__props__)
1078
+
1079
+ @property
1080
+ @pulumi.getter(name="createTime")
1081
+ def create_time(self) -> pulumi.Output[str]:
1082
+ """
1083
+ Create time of the active directory. A timestamp in RFC3339 UTC "Zulu" format. Examples: "2023-06-22T09:13:01.617Z".
1084
+ """
1085
+ return pulumi.get(self, "create_time")
1086
+
1087
+ @property
1088
+ @pulumi.getter(name="deleteDestinationVolume")
1089
+ def delete_destination_volume(self) -> pulumi.Output[Optional[bool]]:
1090
+ """
1091
+ A destination volume is created as part of replication creation. The destination volume will not became under Terraform
1092
+ management unless you import it manually. If you delete the replication, this volume will remain. Setting this parameter
1093
+ to true will delete the *current* destination volume when destroying the replication. If you reversed the replication
1094
+ direction, this will be your former source volume! For production use, it is recommended to keep this parameter false to
1095
+ avoid accidental volume deletion. Handle with care. Default is false.
1096
+ """
1097
+ return pulumi.get(self, "delete_destination_volume")
1098
+
1099
+ @property
1100
+ @pulumi.getter
1101
+ def description(self) -> pulumi.Output[Optional[str]]:
1102
+ """
1103
+ An description of this resource.
1104
+ """
1105
+ return pulumi.get(self, "description")
1106
+
1107
+ @property
1108
+ @pulumi.getter(name="destinationVolume")
1109
+ def destination_volume(self) -> pulumi.Output[str]:
1110
+ """
1111
+ Full resource name of destination volume with format: `projects/{{project}}/locations/{{location}}/volumes/{{volumeId}}`
1112
+ """
1113
+ return pulumi.get(self, "destination_volume")
1114
+
1115
+ @property
1116
+ @pulumi.getter(name="destinationVolumeParameters")
1117
+ def destination_volume_parameters(self) -> pulumi.Output[Optional['outputs.VolumeReplicationDestinationVolumeParameters']]:
1118
+ """
1119
+ Destination volume parameters.
1120
+ Structure is documented below.
1121
+ """
1122
+ return pulumi.get(self, "destination_volume_parameters")
1123
+
1124
+ @property
1125
+ @pulumi.getter(name="effectiveLabels")
1126
+ def effective_labels(self) -> pulumi.Output[Mapping[str, str]]:
1127
+ """
1128
+ All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
1129
+ """
1130
+ return pulumi.get(self, "effective_labels")
1131
+
1132
+ @property
1133
+ @pulumi.getter(name="forceStopping")
1134
+ def force_stopping(self) -> pulumi.Output[Optional[bool]]:
1135
+ """
1136
+ Only replications with mirror_state=MIRRORED can be stopped. A replication in mirror_state=TRANSFERRING
1137
+ currently receives an update and stopping the update might be undesirable. Set this parameter to true
1138
+ to stop anyway. All data transferred to the destination will be discarded and content of destination
1139
+ volume will remain at the state of the last successful update. Default is false.
1140
+ """
1141
+ return pulumi.get(self, "force_stopping")
1142
+
1143
+ @property
1144
+ @pulumi.getter
1145
+ def healthy(self) -> pulumi.Output[bool]:
1146
+ """
1147
+ Condition of the relationship. Can be one of the following:
1148
+ - true: The replication relationship is healthy. It has not missed the most recent scheduled transfer.
1149
+ - false: The replication relationship is not healthy. It has missed the most recent scheduled transfer.
1150
+ """
1151
+ return pulumi.get(self, "healthy")
1152
+
1153
+ @property
1154
+ @pulumi.getter
1155
+ def labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
1156
+ """
1157
+ Labels as key value pairs. Example: `{ "owner": "Bob", "department": "finance", "purpose": "testing" }`
1158
+
1159
+ **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
1160
+ Please refer to the field `effective_labels` for all of the labels present on the resource.
1161
+ """
1162
+ return pulumi.get(self, "labels")
1163
+
1164
+ @property
1165
+ @pulumi.getter
1166
+ def location(self) -> pulumi.Output[str]:
1167
+ """
1168
+ Name of region for this resource. The resource needs to be created in the region of the destination volume.
1169
+ """
1170
+ return pulumi.get(self, "location")
1171
+
1172
+ @property
1173
+ @pulumi.getter(name="mirrorState")
1174
+ def mirror_state(self) -> pulumi.Output[str]:
1175
+ """
1176
+ Indicates the state of the mirror between source and destination volumes. Depending on the amount of data
1177
+ in your source volume, PREPARING phase can take hours or days. mirrorState = MIRRORED indicates your baseline
1178
+ transfer ended and destination volume became accessible read-only. TRANSFERRING means a MIRRORED volume
1179
+ currently receives an update. Updated every 5 minutes.
1180
+ """
1181
+ return pulumi.get(self, "mirror_state")
1182
+
1183
+ @property
1184
+ @pulumi.getter
1185
+ def name(self) -> pulumi.Output[str]:
1186
+ """
1187
+ The name of the replication. Needs to be unique per location.
1188
+
1189
+
1190
+ - - -
1191
+ """
1192
+ return pulumi.get(self, "name")
1193
+
1194
+ @property
1195
+ @pulumi.getter
1196
+ def project(self) -> pulumi.Output[str]:
1197
+ """
1198
+ The ID of the project in which the resource belongs.
1199
+ If it is not provided, the provider project is used.
1200
+ """
1201
+ return pulumi.get(self, "project")
1202
+
1203
+ @property
1204
+ @pulumi.getter(name="pulumiLabels")
1205
+ def pulumi_labels(self) -> pulumi.Output[Mapping[str, str]]:
1206
+ """
1207
+ The combination of labels configured directly on the resource
1208
+ and default labels configured on the provider.
1209
+ """
1210
+ return pulumi.get(self, "pulumi_labels")
1211
+
1212
+ @property
1213
+ @pulumi.getter(name="replicationEnabled")
1214
+ def replication_enabled(self) -> pulumi.Output[Optional[bool]]:
1215
+ """
1216
+ Set to false to stop/break the mirror. Stopping the mirror makes the destination volume read-write
1217
+ and act independently from the source volume.
1218
+ Set to true to enable/resume the mirror. WARNING: Resuming a mirror overwrites any changes
1219
+ done to the destination volume with the content of the source volume.
1220
+ """
1221
+ return pulumi.get(self, "replication_enabled")
1222
+
1223
+ @property
1224
+ @pulumi.getter(name="replicationSchedule")
1225
+ def replication_schedule(self) -> pulumi.Output[str]:
1226
+ """
1227
+ Specifies the replication interval.
1228
+ Possible values are: `EVERY_10_MINUTES`, `HOURLY`, `DAILY`.
1229
+ """
1230
+ return pulumi.get(self, "replication_schedule")
1231
+
1232
+ @property
1233
+ @pulumi.getter
1234
+ def role(self) -> pulumi.Output[str]:
1235
+ """
1236
+ Reverting a replication can swap source and destination volume roles. This field indicates if the `location` hosts
1237
+ the source or destination volume. For resume and revert and resume operations it is critical to understand
1238
+ which volume is the source volume, since it will overwrite changes done to the destination volume.
1239
+ """
1240
+ return pulumi.get(self, "role")
1241
+
1242
+ @property
1243
+ @pulumi.getter(name="sourceVolume")
1244
+ def source_volume(self) -> pulumi.Output[str]:
1245
+ """
1246
+ Full resource name of source volume with format: `projects/{{project}}/locations/{{location}}/volumes/{{volumeId}}`
1247
+ """
1248
+ return pulumi.get(self, "source_volume")
1249
+
1250
+ @property
1251
+ @pulumi.getter
1252
+ def state(self) -> pulumi.Output[str]:
1253
+ """
1254
+ Indicates the state of replication resource. State of the mirror itself is indicated in mirrorState.
1255
+ """
1256
+ return pulumi.get(self, "state")
1257
+
1258
+ @property
1259
+ @pulumi.getter(name="stateDetails")
1260
+ def state_details(self) -> pulumi.Output[str]:
1261
+ """
1262
+ State details of the replication resource.
1263
+ """
1264
+ return pulumi.get(self, "state_details")
1265
+
1266
+ @property
1267
+ @pulumi.getter(name="transferStats")
1268
+ def transfer_stats(self) -> pulumi.Output[Sequence['outputs.VolumeReplicationTransferStat']]:
1269
+ """
1270
+ Replication transfer statistics. All statistics are updated every 5 minutes.
1271
+ Structure is documented below.
1272
+ """
1273
+ return pulumi.get(self, "transfer_stats")
1274
+
1275
+ @property
1276
+ @pulumi.getter(name="volumeName")
1277
+ def volume_name(self) -> pulumi.Output[str]:
1278
+ """
1279
+ The name of the existing source volume.
1280
+ """
1281
+ return pulumi.get(self, "volume_name")
1282
+
1283
+ @property
1284
+ @pulumi.getter(name="waitForMirror")
1285
+ def wait_for_mirror(self) -> pulumi.Output[Optional[bool]]:
1286
+ """
1287
+ Replication resource state is independent of mirror_state. With enough data, it can take many hours for mirror_state to
1288
+ reach MIRRORED. If you want Terraform to wait for the mirror to finish on create/stop/resume operations, set this
1289
+ parameter to true. Default is false.
1290
+ """
1291
+ return pulumi.get(self, "wait_for_mirror")
1292
+