pulumi-gcp 8.9.0a1731221331__py3-none-any.whl → 8.9.0a1731432418__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. pulumi_gcp/__init__.py +64 -0
  2. pulumi_gcp/activedirectory/domain.py +24 -0
  3. pulumi_gcp/apigee/__init__.py +1 -0
  4. pulumi_gcp/apigee/_inputs.py +74 -0
  5. pulumi_gcp/apigee/api.py +456 -0
  6. pulumi_gcp/apigee/outputs.py +65 -0
  7. pulumi_gcp/applicationintegration/auth_config.py +24 -0
  8. pulumi_gcp/backupdisasterrecovery/__init__.py +4 -0
  9. pulumi_gcp/backupdisasterrecovery/_inputs.py +533 -0
  10. pulumi_gcp/backupdisasterrecovery/backup_plan.py +653 -0
  11. pulumi_gcp/backupdisasterrecovery/backup_plan_association.py +766 -0
  12. pulumi_gcp/backupdisasterrecovery/backup_vault.py +146 -6
  13. pulumi_gcp/backupdisasterrecovery/get_backup_plan.py +204 -0
  14. pulumi_gcp/backupdisasterrecovery/get_backup_plan_association.py +243 -0
  15. pulumi_gcp/backupdisasterrecovery/outputs.py +702 -0
  16. pulumi_gcp/bigquery/data_transfer_config.py +24 -0
  17. pulumi_gcp/cloudrunv2/_inputs.py +46 -0
  18. pulumi_gcp/cloudrunv2/job.py +0 -2
  19. pulumi_gcp/cloudrunv2/outputs.py +60 -2
  20. pulumi_gcp/cloudrunv2/service.py +0 -2
  21. pulumi_gcp/compute/__init__.py +1 -0
  22. pulumi_gcp/compute/_inputs.py +2163 -256
  23. pulumi_gcp/compute/disk.py +7 -7
  24. pulumi_gcp/compute/firewall_policy_rule.py +108 -54
  25. pulumi_gcp/compute/get_region_instance_group_manager.py +12 -1
  26. pulumi_gcp/compute/health_check.py +42 -42
  27. pulumi_gcp/compute/network_firewall_policy_rule.py +4 -4
  28. pulumi_gcp/compute/network_firewall_policy_with_rules.py +10 -10
  29. pulumi_gcp/compute/node_template.py +95 -0
  30. pulumi_gcp/compute/outputs.py +1639 -213
  31. pulumi_gcp/compute/region_disk.py +7 -7
  32. pulumi_gcp/compute/region_health_check.py +42 -42
  33. pulumi_gcp/compute/region_instance_group_manager.py +54 -14
  34. pulumi_gcp/compute/region_network_firewall_policy_rule.py +4 -4
  35. pulumi_gcp/compute/region_network_firewall_policy_with_rules.py +10 -10
  36. pulumi_gcp/compute/region_resize_request.py +772 -0
  37. pulumi_gcp/compute/region_security_policy.py +120 -0
  38. pulumi_gcp/compute/region_security_policy_rule.py +6 -6
  39. pulumi_gcp/compute/router_peer.py +56 -35
  40. pulumi_gcp/compute/security_scan_config.py +8 -8
  41. pulumi_gcp/config/__init__.pyi +4 -0
  42. pulumi_gcp/config/vars.py +8 -0
  43. pulumi_gcp/container/_inputs.py +345 -10
  44. pulumi_gcp/container/cluster.py +101 -0
  45. pulumi_gcp/container/get_cluster.py +23 -1
  46. pulumi_gcp/container/outputs.py +456 -8
  47. pulumi_gcp/dataloss/prevention_discovery_config.py +7 -7
  48. pulumi_gcp/dataproc/__init__.py +2 -0
  49. pulumi_gcp/dataproc/_inputs.py +101 -0
  50. pulumi_gcp/dataproc/gdc_application_environment.py +931 -0
  51. pulumi_gcp/dataproc/gdc_service_instance.py +1022 -0
  52. pulumi_gcp/dataproc/outputs.py +94 -0
  53. pulumi_gcp/edgecontainer/vpn_connection.py +4 -4
  54. pulumi_gcp/firebase/android_app.py +2 -2
  55. pulumi_gcp/firebase/apple_app.py +2 -2
  56. pulumi_gcp/firebase/web_app.py +2 -2
  57. pulumi_gcp/firestore/index.py +44 -0
  58. pulumi_gcp/gkeonprem/_inputs.py +15 -15
  59. pulumi_gcp/gkeonprem/outputs.py +10 -10
  60. pulumi_gcp/healthcare/dataset.py +7 -7
  61. pulumi_gcp/healthcare/dicom_store.py +7 -7
  62. pulumi_gcp/healthcare/fhir_store.py +7 -7
  63. pulumi_gcp/healthcare/hl7_store.py +14 -14
  64. pulumi_gcp/iam/__init__.py +1 -0
  65. pulumi_gcp/iam/_inputs.py +161 -0
  66. pulumi_gcp/iam/outputs.py +114 -0
  67. pulumi_gcp/iam/principal_access_boundary_policy.py +679 -0
  68. pulumi_gcp/logging/metric.py +2 -2
  69. pulumi_gcp/looker/_inputs.py +6 -0
  70. pulumi_gcp/looker/instance.py +169 -321
  71. pulumi_gcp/looker/outputs.py +4 -0
  72. pulumi_gcp/memorystore/instance.py +4 -0
  73. pulumi_gcp/monitoring/alert_policy.py +24 -0
  74. pulumi_gcp/monitoring/custom_service.py +24 -0
  75. pulumi_gcp/monitoring/group.py +24 -0
  76. pulumi_gcp/monitoring/metric_descriptor.py +24 -0
  77. pulumi_gcp/monitoring/slo.py +24 -0
  78. pulumi_gcp/monitoring/uptime_check_config.py +24 -0
  79. pulumi_gcp/networkmanagement/__init__.py +1 -0
  80. pulumi_gcp/networkmanagement/vpc_flow_logs_config.py +1358 -0
  81. pulumi_gcp/osconfig/patch_deployment.py +8 -8
  82. pulumi_gcp/provider.py +40 -0
  83. pulumi_gcp/pulumi-plugin.json +1 -1
  84. pulumi_gcp/redis/_inputs.py +3 -3
  85. pulumi_gcp/redis/outputs.py +2 -2
  86. pulumi_gcp/securitycenter/notification_config.py +4 -16
  87. pulumi_gcp/securitycenter/project_notification_config.py +0 -24
  88. pulumi_gcp/securitycenter/v2_organization_notification_config.py +4 -16
  89. pulumi_gcp/spanner/__init__.py +1 -0
  90. pulumi_gcp/spanner/_inputs.py +9 -9
  91. pulumi_gcp/spanner/get_database.py +229 -0
  92. pulumi_gcp/spanner/get_instance.py +12 -1
  93. pulumi_gcp/spanner/instance.py +70 -0
  94. pulumi_gcp/spanner/outputs.py +46 -12
  95. pulumi_gcp/sql/_inputs.py +26 -0
  96. pulumi_gcp/sql/database_instance.py +124 -11
  97. pulumi_gcp/sql/get_database_instance.py +12 -1
  98. pulumi_gcp/sql/outputs.py +51 -0
  99. pulumi_gcp/storage/_inputs.py +3 -3
  100. pulumi_gcp/storage/outputs.py +2 -2
  101. pulumi_gcp/tags/tag_binding.py +4 -4
  102. pulumi_gcp/tags/tag_value.py +2 -2
  103. pulumi_gcp/transcoder/job.py +24 -0
  104. pulumi_gcp/vertex/_inputs.py +184 -0
  105. pulumi_gcp/vertex/ai_endpoint.py +394 -8
  106. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
  107. pulumi_gcp/vertex/outputs.py +166 -0
  108. pulumi_gcp/workbench/instance.py +21 -7
  109. pulumi_gcp/workflows/workflow.py +36 -0
  110. pulumi_gcp/workstations/workstation_config.py +8 -8
  111. {pulumi_gcp-8.9.0a1731221331.dist-info → pulumi_gcp-8.9.0a1731432418.dist-info}/METADATA +1 -1
  112. {pulumi_gcp-8.9.0a1731221331.dist-info → pulumi_gcp-8.9.0a1731432418.dist-info}/RECORD +114 -103
  113. {pulumi_gcp-8.9.0a1731221331.dist-info → pulumi_gcp-8.9.0a1731432418.dist-info}/WHEEL +1 -1
  114. {pulumi_gcp-8.9.0a1731221331.dist-info → pulumi_gcp-8.9.0a1731432418.dist-info}/top_level.txt +0 -0
pulumi_gcp/sql/_inputs.py CHANGED
@@ -266,6 +266,12 @@ if not MYPY:
266
266
  PEM representation of the trusted CA's x509
267
267
  certificate.
268
268
  """
269
+ cascadable_replica: NotRequired[pulumi.Input[bool]]
270
+ """
271
+ Specifies if the replica is a cascadable replica. If true, instance must be in different region from primary.
272
+
273
+ > **NOTE:** Only supported for SQL Server database.
274
+ """
269
275
  client_certificate: NotRequired[pulumi.Input[str]]
270
276
  """
271
277
  PEM representation of the replica's x509
@@ -324,6 +330,7 @@ elif False:
324
330
  class DatabaseInstanceReplicaConfigurationArgs:
325
331
  def __init__(__self__, *,
326
332
  ca_certificate: Optional[pulumi.Input[str]] = None,
333
+ cascadable_replica: Optional[pulumi.Input[bool]] = None,
327
334
  client_certificate: Optional[pulumi.Input[str]] = None,
328
335
  client_key: Optional[pulumi.Input[str]] = None,
329
336
  connect_retry_interval: Optional[pulumi.Input[int]] = None,
@@ -337,6 +344,9 @@ class DatabaseInstanceReplicaConfigurationArgs:
337
344
  """
338
345
  :param pulumi.Input[str] ca_certificate: PEM representation of the trusted CA's x509
339
346
  certificate.
347
+ :param pulumi.Input[bool] cascadable_replica: Specifies if the replica is a cascadable replica. If true, instance must be in different region from primary.
348
+
349
+ > **NOTE:** Only supported for SQL Server database.
340
350
  :param pulumi.Input[str] client_certificate: PEM representation of the replica's x509
341
351
  certificate.
342
352
  :param pulumi.Input[str] client_key: PEM representation of the replica's private key. The
@@ -361,6 +371,8 @@ class DatabaseInstanceReplicaConfigurationArgs:
361
371
  """
362
372
  if ca_certificate is not None:
363
373
  pulumi.set(__self__, "ca_certificate", ca_certificate)
374
+ if cascadable_replica is not None:
375
+ pulumi.set(__self__, "cascadable_replica", cascadable_replica)
364
376
  if client_certificate is not None:
365
377
  pulumi.set(__self__, "client_certificate", client_certificate)
366
378
  if client_key is not None:
@@ -395,6 +407,20 @@ class DatabaseInstanceReplicaConfigurationArgs:
395
407
  def ca_certificate(self, value: Optional[pulumi.Input[str]]):
396
408
  pulumi.set(self, "ca_certificate", value)
397
409
 
410
+ @property
411
+ @pulumi.getter(name="cascadableReplica")
412
+ def cascadable_replica(self) -> Optional[pulumi.Input[bool]]:
413
+ """
414
+ Specifies if the replica is a cascadable replica. If true, instance must be in different region from primary.
415
+
416
+ > **NOTE:** Only supported for SQL Server database.
417
+ """
418
+ return pulumi.get(self, "cascadable_replica")
419
+
420
+ @cascadable_replica.setter
421
+ def cascadable_replica(self, value: Optional[pulumi.Input[bool]]):
422
+ pulumi.set(self, "cascadable_replica", value)
423
+
398
424
  @property
399
425
  @pulumi.getter(name="clientCertificate")
400
426
  def client_certificate(self) -> Optional[pulumi.Input[str]]:
@@ -32,6 +32,7 @@ class DatabaseInstanceArgs:
32
32
  project: Optional[pulumi.Input[str]] = None,
33
33
  region: Optional[pulumi.Input[str]] = None,
34
34
  replica_configuration: Optional[pulumi.Input['DatabaseInstanceReplicaConfigurationArgs']] = None,
35
+ replica_names: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
35
36
  restore_backup_context: Optional[pulumi.Input['DatabaseInstanceRestoreBackupContextArgs']] = None,
36
37
  root_password: Optional[pulumi.Input[str]] = None,
37
38
  settings: Optional[pulumi.Input['DatabaseInstanceSettingsArgs']] = None):
@@ -75,7 +76,8 @@ class DatabaseInstanceArgs:
75
76
 
76
77
  - - -
77
78
  :param pulumi.Input['DatabaseInstanceReplicaConfigurationArgs'] replica_configuration: The configuration for replication. The
78
- configuration is detailed below. Valid only for MySQL instances.
79
+ configuration is detailed below.
80
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] replica_names: List of replica names. Can be updated.
79
81
  :param pulumi.Input['DatabaseInstanceRestoreBackupContextArgs'] restore_backup_context: The context needed to restore the database to a backup run. This field will
80
82
  cause the provider to trigger the database to restore from the backup run indicated. The configuration is detailed below.
81
83
  **NOTE:** Restoring from a backup is an imperative action and not recommended via this provider. Adding or modifying this
@@ -105,6 +107,8 @@ class DatabaseInstanceArgs:
105
107
  pulumi.set(__self__, "region", region)
106
108
  if replica_configuration is not None:
107
109
  pulumi.set(__self__, "replica_configuration", replica_configuration)
110
+ if replica_names is not None:
111
+ pulumi.set(__self__, "replica_names", replica_names)
108
112
  if restore_backup_context is not None:
109
113
  pulumi.set(__self__, "restore_backup_context", restore_backup_context)
110
114
  if root_password is not None:
@@ -264,7 +268,7 @@ class DatabaseInstanceArgs:
264
268
  def replica_configuration(self) -> Optional[pulumi.Input['DatabaseInstanceReplicaConfigurationArgs']]:
265
269
  """
266
270
  The configuration for replication. The
267
- configuration is detailed below. Valid only for MySQL instances.
271
+ configuration is detailed below.
268
272
  """
269
273
  return pulumi.get(self, "replica_configuration")
270
274
 
@@ -272,6 +276,18 @@ class DatabaseInstanceArgs:
272
276
  def replica_configuration(self, value: Optional[pulumi.Input['DatabaseInstanceReplicaConfigurationArgs']]):
273
277
  pulumi.set(self, "replica_configuration", value)
274
278
 
279
+ @property
280
+ @pulumi.getter(name="replicaNames")
281
+ def replica_names(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
282
+ """
283
+ List of replica names. Can be updated.
284
+ """
285
+ return pulumi.get(self, "replica_names")
286
+
287
+ @replica_names.setter
288
+ def replica_names(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
289
+ pulumi.set(self, "replica_names", value)
290
+
275
291
  @property
276
292
  @pulumi.getter(name="restoreBackupContext")
277
293
  def restore_backup_context(self) -> Optional[pulumi.Input['DatabaseInstanceRestoreBackupContextArgs']]:
@@ -335,6 +351,7 @@ class _DatabaseInstanceState:
335
351
  public_ip_address: Optional[pulumi.Input[str]] = None,
336
352
  region: Optional[pulumi.Input[str]] = None,
337
353
  replica_configuration: Optional[pulumi.Input['DatabaseInstanceReplicaConfigurationArgs']] = None,
354
+ replica_names: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
338
355
  restore_backup_context: Optional[pulumi.Input['DatabaseInstanceRestoreBackupContextArgs']] = None,
339
356
  root_password: Optional[pulumi.Input[str]] = None,
340
357
  self_link: Optional[pulumi.Input[str]] = None,
@@ -360,7 +377,7 @@ class _DatabaseInstanceState:
360
377
  includes an up-to-date reference of supported versions.
361
378
  :param pulumi.Input[bool] deletion_protection: Whether or not to allow the provider to destroy the instance. Unless this field is set to false
362
379
  in state, a `destroy` or `update` command that deletes the instance will fail. Defaults to `true`.
363
- :param pulumi.Input[str] dns_name: The dns name of the instance.
380
+ :param pulumi.Input[str] dns_name: The DNS name of the instance. See [Connect to an instance using Private Service Connect](https://cloud.google.com/sql/docs/mysql/configure-private-service-connect#view-summary-information-cloud-sql-instances-psc-enabled) for more details.
364
381
  :param pulumi.Input[str] encryption_key_name: The full path to the encryption key used for the CMEK disk encryption. Setting
365
382
  up disk encryption currently requires manual steps outside of this provider.
366
383
  The provided key must be in the same region as the SQL instance. In order
@@ -389,7 +406,8 @@ class _DatabaseInstanceState:
389
406
 
390
407
  - - -
391
408
  :param pulumi.Input['DatabaseInstanceReplicaConfigurationArgs'] replica_configuration: The configuration for replication. The
392
- configuration is detailed below. Valid only for MySQL instances.
409
+ configuration is detailed below.
410
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] replica_names: List of replica names. Can be updated.
393
411
  :param pulumi.Input['DatabaseInstanceRestoreBackupContextArgs'] restore_backup_context: The context needed to restore the database to a backup run. This field will
394
412
  cause the provider to trigger the database to restore from the backup run indicated. The configuration is detailed below.
395
413
  **NOTE:** Restoring from a backup is an imperative action and not recommended via this provider. Adding or modifying this
@@ -439,6 +457,8 @@ class _DatabaseInstanceState:
439
457
  pulumi.set(__self__, "region", region)
440
458
  if replica_configuration is not None:
441
459
  pulumi.set(__self__, "replica_configuration", replica_configuration)
460
+ if replica_names is not None:
461
+ pulumi.set(__self__, "replica_names", replica_names)
442
462
  if restore_backup_context is not None:
443
463
  pulumi.set(__self__, "restore_backup_context", restore_backup_context)
444
464
  if root_password is not None:
@@ -528,7 +548,7 @@ class _DatabaseInstanceState:
528
548
  @pulumi.getter(name="dnsName")
529
549
  def dns_name(self) -> Optional[pulumi.Input[str]]:
530
550
  """
531
- The dns name of the instance.
551
+ The DNS name of the instance. See [Connect to an instance using Private Service Connect](https://cloud.google.com/sql/docs/mysql/configure-private-service-connect#view-summary-information-cloud-sql-instances-psc-enabled) for more details.
532
552
  """
533
553
  return pulumi.get(self, "dns_name")
534
554
 
@@ -698,7 +718,7 @@ class _DatabaseInstanceState:
698
718
  def replica_configuration(self) -> Optional[pulumi.Input['DatabaseInstanceReplicaConfigurationArgs']]:
699
719
  """
700
720
  The configuration for replication. The
701
- configuration is detailed below. Valid only for MySQL instances.
721
+ configuration is detailed below.
702
722
  """
703
723
  return pulumi.get(self, "replica_configuration")
704
724
 
@@ -706,6 +726,18 @@ class _DatabaseInstanceState:
706
726
  def replica_configuration(self, value: Optional[pulumi.Input['DatabaseInstanceReplicaConfigurationArgs']]):
707
727
  pulumi.set(self, "replica_configuration", value)
708
728
 
729
+ @property
730
+ @pulumi.getter(name="replicaNames")
731
+ def replica_names(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
732
+ """
733
+ List of replica names. Can be updated.
734
+ """
735
+ return pulumi.get(self, "replica_names")
736
+
737
+ @replica_names.setter
738
+ def replica_names(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
739
+ pulumi.set(self, "replica_names", value)
740
+
709
741
  @property
710
742
  @pulumi.getter(name="restoreBackupContext")
711
743
  def restore_backup_context(self) -> Optional[pulumi.Input['DatabaseInstanceRestoreBackupContextArgs']]:
@@ -797,6 +829,7 @@ class DatabaseInstance(pulumi.CustomResource):
797
829
  project: Optional[pulumi.Input[str]] = None,
798
830
  region: Optional[pulumi.Input[str]] = None,
799
831
  replica_configuration: Optional[pulumi.Input[Union['DatabaseInstanceReplicaConfigurationArgs', 'DatabaseInstanceReplicaConfigurationArgsDict']]] = None,
832
+ replica_names: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
800
833
  restore_backup_context: Optional[pulumi.Input[Union['DatabaseInstanceRestoreBackupContextArgs', 'DatabaseInstanceRestoreBackupContextArgsDict']]] = None,
801
834
  root_password: Optional[pulumi.Input[str]] = None,
802
835
  settings: Optional[pulumi.Input[Union['DatabaseInstanceSettingsArgs', 'DatabaseInstanceSettingsArgsDict']]] = None,
@@ -910,6 +943,39 @@ class DatabaseInstance(pulumi.CustomResource):
910
943
  })
911
944
  ```
912
945
 
946
+ ## Switchover (SQL Server Only)
947
+
948
+ Users can perform a switchover on any direct `cascadable` replica by following the steps below.
949
+
950
+ ~>**WARNING:** Failure to follow these steps can lead to data loss (You will be warned during plan stage). To prevent data loss during a switchover, please verify your plan with the checklist below.
951
+
952
+ For a more in-depth walkthrough with example code, see the Switchover Guide
953
+
954
+ ### Steps to Invoke Switchover
955
+
956
+ Create a `cascadable` replica in a different region from the primary (`cascadable_replica` is set to true in `replica_configuration`)
957
+
958
+ #### Invoking switchover in the replica resource:
959
+ 1. Change instance_type from `READ_REPLICA_INSTANCE` to `CLOUD_SQL_INSTANCE`
960
+ 2. Remove `master_instance_name`
961
+ 3. Remove `replica_configuration`
962
+ 4. Add current primary's name to the replica's `replica_names` list
963
+
964
+ #### Updating the primary resource:
965
+ 1. Change `instance_type` from `CLOUD_SQL_INSTANCE` to `READ_REPLICA_INSTANCE`
966
+ 2. Set `master_instance_name` to the original replica (which will be primary after switchover)
967
+ 3. Set `replica_configuration` and set `cascadable_replica` to `true`
968
+ 4. Remove original replica from `replica_names`
969
+
970
+ > **NOTE**: Do **not** delete the replica_names field, even if it has no replicas remaining. Set replica_names = [ ] to indicate it having no replicas.
971
+
972
+ #### Plan and verify that:
973
+ - `pulumi preview` outputs **"0 to add, 0 to destroy"**
974
+ - `pulumi preview` does not say **"must be replaced"** for any resource
975
+ - Every resource **"will be updated in-place"**
976
+ - Only the 2 instances involved in switchover have planned changes
977
+ - (Recommended) Use `deletion_protection` on instances as a safety measure
978
+
913
979
  ## Import
914
980
 
915
981
  Database instances can be imported using one of any of these accepted formats:
@@ -980,7 +1046,8 @@ class DatabaseInstance(pulumi.CustomResource):
980
1046
 
981
1047
  - - -
982
1048
  :param pulumi.Input[Union['DatabaseInstanceReplicaConfigurationArgs', 'DatabaseInstanceReplicaConfigurationArgsDict']] replica_configuration: The configuration for replication. The
983
- configuration is detailed below. Valid only for MySQL instances.
1049
+ configuration is detailed below.
1050
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] replica_names: List of replica names. Can be updated.
984
1051
  :param pulumi.Input[Union['DatabaseInstanceRestoreBackupContextArgs', 'DatabaseInstanceRestoreBackupContextArgsDict']] restore_backup_context: The context needed to restore the database to a backup run. This field will
985
1052
  cause the provider to trigger the database to restore from the backup run indicated. The configuration is detailed below.
986
1053
  **NOTE:** Restoring from a backup is an imperative action and not recommended via this provider. Adding or modifying this
@@ -1104,6 +1171,39 @@ class DatabaseInstance(pulumi.CustomResource):
1104
1171
  })
1105
1172
  ```
1106
1173
 
1174
+ ## Switchover (SQL Server Only)
1175
+
1176
+ Users can perform a switchover on any direct `cascadable` replica by following the steps below.
1177
+
1178
+ ~>**WARNING:** Failure to follow these steps can lead to data loss (You will be warned during plan stage). To prevent data loss during a switchover, please verify your plan with the checklist below.
1179
+
1180
+ For a more in-depth walkthrough with example code, see the Switchover Guide
1181
+
1182
+ ### Steps to Invoke Switchover
1183
+
1184
+ Create a `cascadable` replica in a different region from the primary (`cascadable_replica` is set to true in `replica_configuration`)
1185
+
1186
+ #### Invoking switchover in the replica resource:
1187
+ 1. Change instance_type from `READ_REPLICA_INSTANCE` to `CLOUD_SQL_INSTANCE`
1188
+ 2. Remove `master_instance_name`
1189
+ 3. Remove `replica_configuration`
1190
+ 4. Add current primary's name to the replica's `replica_names` list
1191
+
1192
+ #### Updating the primary resource:
1193
+ 1. Change `instance_type` from `CLOUD_SQL_INSTANCE` to `READ_REPLICA_INSTANCE`
1194
+ 2. Set `master_instance_name` to the original replica (which will be primary after switchover)
1195
+ 3. Set `replica_configuration` and set `cascadable_replica` to `true`
1196
+ 4. Remove original replica from `replica_names`
1197
+
1198
+ > **NOTE**: Do **not** delete the replica_names field, even if it has no replicas remaining. Set replica_names = [ ] to indicate it having no replicas.
1199
+
1200
+ #### Plan and verify that:
1201
+ - `pulumi preview` outputs **"0 to add, 0 to destroy"**
1202
+ - `pulumi preview` does not say **"must be replaced"** for any resource
1203
+ - Every resource **"will be updated in-place"**
1204
+ - Only the 2 instances involved in switchover have planned changes
1205
+ - (Recommended) Use `deletion_protection` on instances as a safety measure
1206
+
1107
1207
  ## Import
1108
1208
 
1109
1209
  Database instances can be imported using one of any of these accepted formats:
@@ -1160,6 +1260,7 @@ class DatabaseInstance(pulumi.CustomResource):
1160
1260
  project: Optional[pulumi.Input[str]] = None,
1161
1261
  region: Optional[pulumi.Input[str]] = None,
1162
1262
  replica_configuration: Optional[pulumi.Input[Union['DatabaseInstanceReplicaConfigurationArgs', 'DatabaseInstanceReplicaConfigurationArgsDict']]] = None,
1263
+ replica_names: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1163
1264
  restore_backup_context: Optional[pulumi.Input[Union['DatabaseInstanceRestoreBackupContextArgs', 'DatabaseInstanceRestoreBackupContextArgsDict']]] = None,
1164
1265
  root_password: Optional[pulumi.Input[str]] = None,
1165
1266
  settings: Optional[pulumi.Input[Union['DatabaseInstanceSettingsArgs', 'DatabaseInstanceSettingsArgsDict']]] = None,
@@ -1185,6 +1286,7 @@ class DatabaseInstance(pulumi.CustomResource):
1185
1286
  __props__.__dict__["project"] = project
1186
1287
  __props__.__dict__["region"] = region
1187
1288
  __props__.__dict__["replica_configuration"] = None if replica_configuration is None else pulumi.Output.secret(replica_configuration)
1289
+ __props__.__dict__["replica_names"] = replica_names
1188
1290
  __props__.__dict__["restore_backup_context"] = restore_backup_context
1189
1291
  __props__.__dict__["root_password"] = None if root_password is None else pulumi.Output.secret(root_password)
1190
1292
  __props__.__dict__["settings"] = settings
@@ -1230,6 +1332,7 @@ class DatabaseInstance(pulumi.CustomResource):
1230
1332
  public_ip_address: Optional[pulumi.Input[str]] = None,
1231
1333
  region: Optional[pulumi.Input[str]] = None,
1232
1334
  replica_configuration: Optional[pulumi.Input[Union['DatabaseInstanceReplicaConfigurationArgs', 'DatabaseInstanceReplicaConfigurationArgsDict']]] = None,
1335
+ replica_names: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1233
1336
  restore_backup_context: Optional[pulumi.Input[Union['DatabaseInstanceRestoreBackupContextArgs', 'DatabaseInstanceRestoreBackupContextArgsDict']]] = None,
1234
1337
  root_password: Optional[pulumi.Input[str]] = None,
1235
1338
  self_link: Optional[pulumi.Input[str]] = None,
@@ -1260,7 +1363,7 @@ class DatabaseInstance(pulumi.CustomResource):
1260
1363
  includes an up-to-date reference of supported versions.
1261
1364
  :param pulumi.Input[bool] deletion_protection: Whether or not to allow the provider to destroy the instance. Unless this field is set to false
1262
1365
  in state, a `destroy` or `update` command that deletes the instance will fail. Defaults to `true`.
1263
- :param pulumi.Input[str] dns_name: The dns name of the instance.
1366
+ :param pulumi.Input[str] dns_name: The DNS name of the instance. See [Connect to an instance using Private Service Connect](https://cloud.google.com/sql/docs/mysql/configure-private-service-connect#view-summary-information-cloud-sql-instances-psc-enabled) for more details.
1264
1367
  :param pulumi.Input[str] encryption_key_name: The full path to the encryption key used for the CMEK disk encryption. Setting
1265
1368
  up disk encryption currently requires manual steps outside of this provider.
1266
1369
  The provided key must be in the same region as the SQL instance. In order
@@ -1289,7 +1392,8 @@ class DatabaseInstance(pulumi.CustomResource):
1289
1392
 
1290
1393
  - - -
1291
1394
  :param pulumi.Input[Union['DatabaseInstanceReplicaConfigurationArgs', 'DatabaseInstanceReplicaConfigurationArgsDict']] replica_configuration: The configuration for replication. The
1292
- configuration is detailed below. Valid only for MySQL instances.
1395
+ configuration is detailed below.
1396
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] replica_names: List of replica names. Can be updated.
1293
1397
  :param pulumi.Input[Union['DatabaseInstanceRestoreBackupContextArgs', 'DatabaseInstanceRestoreBackupContextArgsDict']] restore_backup_context: The context needed to restore the database to a backup run. This field will
1294
1398
  cause the provider to trigger the database to restore from the backup run indicated. The configuration is detailed below.
1295
1399
  **NOTE:** Restoring from a backup is an imperative action and not recommended via this provider. Adding or modifying this
@@ -1324,6 +1428,7 @@ class DatabaseInstance(pulumi.CustomResource):
1324
1428
  __props__.__dict__["public_ip_address"] = public_ip_address
1325
1429
  __props__.__dict__["region"] = region
1326
1430
  __props__.__dict__["replica_configuration"] = replica_configuration
1431
+ __props__.__dict__["replica_names"] = replica_names
1327
1432
  __props__.__dict__["restore_backup_context"] = restore_backup_context
1328
1433
  __props__.__dict__["root_password"] = root_password
1329
1434
  __props__.__dict__["self_link"] = self_link
@@ -1388,7 +1493,7 @@ class DatabaseInstance(pulumi.CustomResource):
1388
1493
  @pulumi.getter(name="dnsName")
1389
1494
  def dns_name(self) -> pulumi.Output[str]:
1390
1495
  """
1391
- The dns name of the instance.
1496
+ The DNS name of the instance. See [Connect to an instance using Private Service Connect](https://cloud.google.com/sql/docs/mysql/configure-private-service-connect#view-summary-information-cloud-sql-instances-psc-enabled) for more details.
1392
1497
  """
1393
1498
  return pulumi.get(self, "dns_name")
1394
1499
 
@@ -1506,10 +1611,18 @@ class DatabaseInstance(pulumi.CustomResource):
1506
1611
  def replica_configuration(self) -> pulumi.Output['outputs.DatabaseInstanceReplicaConfiguration']:
1507
1612
  """
1508
1613
  The configuration for replication. The
1509
- configuration is detailed below. Valid only for MySQL instances.
1614
+ configuration is detailed below.
1510
1615
  """
1511
1616
  return pulumi.get(self, "replica_configuration")
1512
1617
 
1618
+ @property
1619
+ @pulumi.getter(name="replicaNames")
1620
+ def replica_names(self) -> pulumi.Output[Sequence[str]]:
1621
+ """
1622
+ List of replica names. Can be updated.
1623
+ """
1624
+ return pulumi.get(self, "replica_names")
1625
+
1513
1626
  @property
1514
1627
  @pulumi.getter(name="restoreBackupContext")
1515
1628
  def restore_backup_context(self) -> pulumi.Output[Optional['outputs.DatabaseInstanceRestoreBackupContext']]:
@@ -27,7 +27,7 @@ class GetDatabaseInstanceResult:
27
27
  """
28
28
  A collection of values returned by getDatabaseInstance.
29
29
  """
30
- def __init__(__self__, available_maintenance_versions=None, clones=None, connection_name=None, database_version=None, deletion_protection=None, dns_name=None, encryption_key_name=None, first_ip_address=None, id=None, instance_type=None, ip_addresses=None, maintenance_version=None, master_instance_name=None, name=None, private_ip_address=None, project=None, psc_service_attachment_link=None, public_ip_address=None, region=None, replica_configurations=None, restore_backup_contexts=None, root_password=None, self_link=None, server_ca_certs=None, service_account_email_address=None, settings=None):
30
+ def __init__(__self__, available_maintenance_versions=None, clones=None, connection_name=None, database_version=None, deletion_protection=None, dns_name=None, encryption_key_name=None, first_ip_address=None, id=None, instance_type=None, ip_addresses=None, maintenance_version=None, master_instance_name=None, name=None, private_ip_address=None, project=None, psc_service_attachment_link=None, public_ip_address=None, region=None, replica_configurations=None, replica_names=None, restore_backup_contexts=None, root_password=None, self_link=None, server_ca_certs=None, service_account_email_address=None, settings=None):
31
31
  if available_maintenance_versions and not isinstance(available_maintenance_versions, list):
32
32
  raise TypeError("Expected argument 'available_maintenance_versions' to be a list")
33
33
  pulumi.set(__self__, "available_maintenance_versions", available_maintenance_versions)
@@ -88,6 +88,9 @@ class GetDatabaseInstanceResult:
88
88
  if replica_configurations and not isinstance(replica_configurations, list):
89
89
  raise TypeError("Expected argument 'replica_configurations' to be a list")
90
90
  pulumi.set(__self__, "replica_configurations", replica_configurations)
91
+ if replica_names and not isinstance(replica_names, list):
92
+ raise TypeError("Expected argument 'replica_names' to be a list")
93
+ pulumi.set(__self__, "replica_names", replica_names)
91
94
  if restore_backup_contexts and not isinstance(restore_backup_contexts, list):
92
95
  raise TypeError("Expected argument 'restore_backup_contexts' to be a list")
93
96
  pulumi.set(__self__, "restore_backup_contexts", restore_backup_contexts)
@@ -210,6 +213,11 @@ class GetDatabaseInstanceResult:
210
213
  def replica_configurations(self) -> Sequence['outputs.GetDatabaseInstanceReplicaConfigurationResult']:
211
214
  return pulumi.get(self, "replica_configurations")
212
215
 
216
+ @property
217
+ @pulumi.getter(name="replicaNames")
218
+ def replica_names(self) -> Sequence[str]:
219
+ return pulumi.get(self, "replica_names")
220
+
213
221
  @property
214
222
  @pulumi.getter(name="restoreBackupContexts")
215
223
  def restore_backup_contexts(self) -> Sequence['outputs.GetDatabaseInstanceRestoreBackupContextResult']:
@@ -267,6 +275,7 @@ class AwaitableGetDatabaseInstanceResult(GetDatabaseInstanceResult):
267
275
  public_ip_address=self.public_ip_address,
268
276
  region=self.region,
269
277
  replica_configurations=self.replica_configurations,
278
+ replica_names=self.replica_names,
270
279
  restore_backup_contexts=self.restore_backup_contexts,
271
280
  root_password=self.root_password,
272
281
  self_link=self.self_link,
@@ -321,6 +330,7 @@ def get_database_instance(name: Optional[str] = None,
321
330
  public_ip_address=pulumi.get(__ret__, 'public_ip_address'),
322
331
  region=pulumi.get(__ret__, 'region'),
323
332
  replica_configurations=pulumi.get(__ret__, 'replica_configurations'),
333
+ replica_names=pulumi.get(__ret__, 'replica_names'),
324
334
  restore_backup_contexts=pulumi.get(__ret__, 'restore_backup_contexts'),
325
335
  root_password=pulumi.get(__ret__, 'root_password'),
326
336
  self_link=pulumi.get(__ret__, 'self_link'),
@@ -372,6 +382,7 @@ def get_database_instance_output(name: Optional[pulumi.Input[str]] = None,
372
382
  public_ip_address=pulumi.get(__response__, 'public_ip_address'),
373
383
  region=pulumi.get(__response__, 'region'),
374
384
  replica_configurations=pulumi.get(__response__, 'replica_configurations'),
385
+ replica_names=pulumi.get(__response__, 'replica_names'),
375
386
  restore_backup_contexts=pulumi.get(__response__, 'restore_backup_contexts'),
376
387
  root_password=pulumi.get(__response__, 'root_password'),
377
388
  self_link=pulumi.get(__response__, 'self_link'),
pulumi_gcp/sql/outputs.py CHANGED
@@ -254,6 +254,8 @@ class DatabaseInstanceReplicaConfiguration(dict):
254
254
  suggest = None
255
255
  if key == "caCertificate":
256
256
  suggest = "ca_certificate"
257
+ elif key == "cascadableReplica":
258
+ suggest = "cascadable_replica"
257
259
  elif key == "clientCertificate":
258
260
  suggest = "client_certificate"
259
261
  elif key == "clientKey":
@@ -284,6 +286,7 @@ class DatabaseInstanceReplicaConfiguration(dict):
284
286
 
285
287
  def __init__(__self__, *,
286
288
  ca_certificate: Optional[str] = None,
289
+ cascadable_replica: Optional[bool] = None,
287
290
  client_certificate: Optional[str] = None,
288
291
  client_key: Optional[str] = None,
289
292
  connect_retry_interval: Optional[int] = None,
@@ -297,6 +300,9 @@ class DatabaseInstanceReplicaConfiguration(dict):
297
300
  """
298
301
  :param str ca_certificate: PEM representation of the trusted CA's x509
299
302
  certificate.
303
+ :param bool cascadable_replica: Specifies if the replica is a cascadable replica. If true, instance must be in different region from primary.
304
+
305
+ > **NOTE:** Only supported for SQL Server database.
300
306
  :param str client_certificate: PEM representation of the replica's x509
301
307
  certificate.
302
308
  :param str client_key: PEM representation of the replica's private key. The
@@ -321,6 +327,8 @@ class DatabaseInstanceReplicaConfiguration(dict):
321
327
  """
322
328
  if ca_certificate is not None:
323
329
  pulumi.set(__self__, "ca_certificate", ca_certificate)
330
+ if cascadable_replica is not None:
331
+ pulumi.set(__self__, "cascadable_replica", cascadable_replica)
324
332
  if client_certificate is not None:
325
333
  pulumi.set(__self__, "client_certificate", client_certificate)
326
334
  if client_key is not None:
@@ -351,6 +359,16 @@ class DatabaseInstanceReplicaConfiguration(dict):
351
359
  """
352
360
  return pulumi.get(self, "ca_certificate")
353
361
 
362
+ @property
363
+ @pulumi.getter(name="cascadableReplica")
364
+ def cascadable_replica(self) -> Optional[bool]:
365
+ """
366
+ Specifies if the replica is a cascadable replica. If true, instance must be in different region from primary.
367
+
368
+ > **NOTE:** Only supported for SQL Server database.
369
+ """
370
+ return pulumi.get(self, "cascadable_replica")
371
+
354
372
  @property
355
373
  @pulumi.getter(name="clientCertificate")
356
374
  def client_certificate(self) -> Optional[str]:
@@ -2324,6 +2342,7 @@ class GetDatabaseInstanceIpAddressResult(dict):
2324
2342
  class GetDatabaseInstanceReplicaConfigurationResult(dict):
2325
2343
  def __init__(__self__, *,
2326
2344
  ca_certificate: str,
2345
+ cascadable_replica: bool,
2327
2346
  client_certificate: str,
2328
2347
  client_key: str,
2329
2348
  connect_retry_interval: int,
@@ -2336,6 +2355,7 @@ class GetDatabaseInstanceReplicaConfigurationResult(dict):
2336
2355
  verify_server_certificate: bool):
2337
2356
  """
2338
2357
  :param str ca_certificate: PEM representation of the trusted CA's x509 certificate.
2358
+ :param bool cascadable_replica: Specifies if a SQL Server replica is a cascadable replica. A cascadable replica is a SQL Server cross region replica that supports replica(s) under it.
2339
2359
  :param str client_certificate: PEM representation of the replica's x509 certificate.
2340
2360
  :param str client_key: PEM representation of the replica's private key. The corresponding public key in encoded in the client_certificate.
2341
2361
  :param int connect_retry_interval: The number of seconds between connect retries. MySQL's default is 60 seconds.
@@ -2348,6 +2368,7 @@ class GetDatabaseInstanceReplicaConfigurationResult(dict):
2348
2368
  :param bool verify_server_certificate: True if the master's common name value is checked during the SSL handshake.
2349
2369
  """
2350
2370
  pulumi.set(__self__, "ca_certificate", ca_certificate)
2371
+ pulumi.set(__self__, "cascadable_replica", cascadable_replica)
2351
2372
  pulumi.set(__self__, "client_certificate", client_certificate)
2352
2373
  pulumi.set(__self__, "client_key", client_key)
2353
2374
  pulumi.set(__self__, "connect_retry_interval", connect_retry_interval)
@@ -2367,6 +2388,14 @@ class GetDatabaseInstanceReplicaConfigurationResult(dict):
2367
2388
  """
2368
2389
  return pulumi.get(self, "ca_certificate")
2369
2390
 
2391
+ @property
2392
+ @pulumi.getter(name="cascadableReplica")
2393
+ def cascadable_replica(self) -> bool:
2394
+ """
2395
+ Specifies if a SQL Server replica is a cascadable replica. A cascadable replica is a SQL Server cross region replica that supports replica(s) under it.
2396
+ """
2397
+ return pulumi.get(self, "cascadable_replica")
2398
+
2370
2399
  @property
2371
2400
  @pulumi.getter(name="clientCertificate")
2372
2401
  def client_certificate(self) -> str:
@@ -3511,6 +3540,7 @@ class GetDatabaseInstancesInstanceResult(dict):
3511
3540
  public_ip_address: str,
3512
3541
  region: str,
3513
3542
  replica_configurations: Sequence['outputs.GetDatabaseInstancesInstanceReplicaConfigurationResult'],
3543
+ replica_names: Sequence[str],
3514
3544
  restore_backup_contexts: Sequence['outputs.GetDatabaseInstancesInstanceRestoreBackupContextResult'],
3515
3545
  root_password: str,
3516
3546
  self_link: str,
@@ -3530,6 +3560,7 @@ class GetDatabaseInstancesInstanceResult(dict):
3530
3560
  :param str psc_service_attachment_link: The link to service attachment of PSC instance.
3531
3561
  :param str region: To filter out the Cloud SQL instances which are located in the specified region.
3532
3562
  :param Sequence['GetDatabaseInstancesInstanceReplicaConfigurationArgs'] replica_configurations: The configuration for replication.
3563
+ :param Sequence[str] replica_names: The replicas of the instance.
3533
3564
  :param str root_password: Initial root password. Required for MS SQL Server.
3534
3565
  :param str self_link: The URI of the created resource.
3535
3566
  :param str service_account_email_address: The service account email address assigned to the instance.
@@ -3554,6 +3585,7 @@ class GetDatabaseInstancesInstanceResult(dict):
3554
3585
  pulumi.set(__self__, "public_ip_address", public_ip_address)
3555
3586
  pulumi.set(__self__, "region", region)
3556
3587
  pulumi.set(__self__, "replica_configurations", replica_configurations)
3588
+ pulumi.set(__self__, "replica_names", replica_names)
3557
3589
  pulumi.set(__self__, "restore_backup_contexts", restore_backup_contexts)
3558
3590
  pulumi.set(__self__, "root_password", root_password)
3559
3591
  pulumi.set(__self__, "self_link", self_link)
@@ -3692,6 +3724,14 @@ class GetDatabaseInstancesInstanceResult(dict):
3692
3724
  """
3693
3725
  return pulumi.get(self, "replica_configurations")
3694
3726
 
3727
+ @property
3728
+ @pulumi.getter(name="replicaNames")
3729
+ def replica_names(self) -> Sequence[str]:
3730
+ """
3731
+ The replicas of the instance.
3732
+ """
3733
+ return pulumi.get(self, "replica_names")
3734
+
3695
3735
  @property
3696
3736
  @pulumi.getter(name="restoreBackupContexts")
3697
3737
  def restore_backup_contexts(self) -> Sequence['outputs.GetDatabaseInstancesInstanceRestoreBackupContextResult']:
@@ -3827,6 +3867,7 @@ class GetDatabaseInstancesInstanceIpAddressResult(dict):
3827
3867
  class GetDatabaseInstancesInstanceReplicaConfigurationResult(dict):
3828
3868
  def __init__(__self__, *,
3829
3869
  ca_certificate: str,
3870
+ cascadable_replica: bool,
3830
3871
  client_certificate: str,
3831
3872
  client_key: str,
3832
3873
  connect_retry_interval: int,
@@ -3839,6 +3880,7 @@ class GetDatabaseInstancesInstanceReplicaConfigurationResult(dict):
3839
3880
  verify_server_certificate: bool):
3840
3881
  """
3841
3882
  :param str ca_certificate: PEM representation of the trusted CA's x509 certificate.
3883
+ :param bool cascadable_replica: Specifies if a SQL Server replica is a cascadable replica. A cascadable replica is a SQL Server cross region replica that supports replica(s) under it.
3842
3884
  :param str client_certificate: PEM representation of the replica's x509 certificate.
3843
3885
  :param str client_key: PEM representation of the replica's private key. The corresponding public key in encoded in the client_certificate.
3844
3886
  :param int connect_retry_interval: The number of seconds between connect retries. MySQL's default is 60 seconds.
@@ -3851,6 +3893,7 @@ class GetDatabaseInstancesInstanceReplicaConfigurationResult(dict):
3851
3893
  :param bool verify_server_certificate: True if the master's common name value is checked during the SSL handshake.
3852
3894
  """
3853
3895
  pulumi.set(__self__, "ca_certificate", ca_certificate)
3896
+ pulumi.set(__self__, "cascadable_replica", cascadable_replica)
3854
3897
  pulumi.set(__self__, "client_certificate", client_certificate)
3855
3898
  pulumi.set(__self__, "client_key", client_key)
3856
3899
  pulumi.set(__self__, "connect_retry_interval", connect_retry_interval)
@@ -3870,6 +3913,14 @@ class GetDatabaseInstancesInstanceReplicaConfigurationResult(dict):
3870
3913
  """
3871
3914
  return pulumi.get(self, "ca_certificate")
3872
3915
 
3916
+ @property
3917
+ @pulumi.getter(name="cascadableReplica")
3918
+ def cascadable_replica(self) -> bool:
3919
+ """
3920
+ Specifies if a SQL Server replica is a cascadable replica. A cascadable replica is a SQL Server cross region replica that supports replica(s) under it.
3921
+ """
3922
+ return pulumi.get(self, "cascadable_replica")
3923
+
3873
3924
  @property
3874
3925
  @pulumi.getter(name="clientCertificate")
3875
3926
  def client_certificate(self) -> str:
@@ -1683,7 +1683,7 @@ if not MYPY:
1683
1683
  """
1684
1684
  storage_filters: NotRequired[pulumi.Input['InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgsDict']]
1685
1685
  """
1686
- A nested object resource
1686
+ A nested object resource.
1687
1687
  Structure is documented below.
1688
1688
  """
1689
1689
  elif False:
@@ -1699,7 +1699,7 @@ class InsightsReportConfigObjectMetadataReportOptionsArgs:
1699
1699
  :param pulumi.Input[Sequence[pulumi.Input[str]]] metadata_fields: The metadata fields included in an inventory report.
1700
1700
  :param pulumi.Input['InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs'] storage_destination_options: Options for where the inventory reports are stored.
1701
1701
  Structure is documented below.
1702
- :param pulumi.Input['InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs'] storage_filters: A nested object resource
1702
+ :param pulumi.Input['InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs'] storage_filters: A nested object resource.
1703
1703
  Structure is documented below.
1704
1704
  """
1705
1705
  pulumi.set(__self__, "metadata_fields", metadata_fields)
@@ -1736,7 +1736,7 @@ class InsightsReportConfigObjectMetadataReportOptionsArgs:
1736
1736
  @pulumi.getter(name="storageFilters")
1737
1737
  def storage_filters(self) -> Optional[pulumi.Input['InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs']]:
1738
1738
  """
1739
- A nested object resource
1739
+ A nested object resource.
1740
1740
  Structure is documented below.
1741
1741
  """
1742
1742
  return pulumi.get(self, "storage_filters")
@@ -1338,7 +1338,7 @@ class InsightsReportConfigObjectMetadataReportOptions(dict):
1338
1338
  :param Sequence[str] metadata_fields: The metadata fields included in an inventory report.
1339
1339
  :param 'InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs' storage_destination_options: Options for where the inventory reports are stored.
1340
1340
  Structure is documented below.
1341
- :param 'InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs' storage_filters: A nested object resource
1341
+ :param 'InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs' storage_filters: A nested object resource.
1342
1342
  Structure is documented below.
1343
1343
  """
1344
1344
  pulumi.set(__self__, "metadata_fields", metadata_fields)
@@ -1367,7 +1367,7 @@ class InsightsReportConfigObjectMetadataReportOptions(dict):
1367
1367
  @pulumi.getter(name="storageFilters")
1368
1368
  def storage_filters(self) -> Optional['outputs.InsightsReportConfigObjectMetadataReportOptionsStorageFilters']:
1369
1369
  """
1370
- A nested object resource
1370
+ A nested object resource.
1371
1371
  Structure is documented below.
1372
1372
  """
1373
1373
  return pulumi.get(self, "storage_filters")