pulumi-gcp 7.37.0a1723638212__py3-none-any.whl → 7.38.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. pulumi_gcp/__init__.py +32 -0
  2. pulumi_gcp/appengine/application_url_dispatch_rules.py +10 -2
  3. pulumi_gcp/appengine/engine_split_traffic.py +32 -8
  4. pulumi_gcp/appengine/flexible_app_version.py +18 -2
  5. pulumi_gcp/appengine/service_network_settings.py +10 -2
  6. pulumi_gcp/appengine/standard_app_version.py +20 -4
  7. pulumi_gcp/applicationintegration/client.py +2 -2
  8. pulumi_gcp/artifactregistry/__init__.py +1 -0
  9. pulumi_gcp/artifactregistry/get_locations.py +167 -0
  10. pulumi_gcp/assuredworkloads/workload.py +14 -14
  11. pulumi_gcp/biglake/database.py +10 -2
  12. pulumi_gcp/biglake/table.py +20 -4
  13. pulumi_gcp/bigquery/connection.py +12 -0
  14. pulumi_gcp/bigquery/job.py +20 -4
  15. pulumi_gcp/cloudbuild/worker_pool.py +5 -5
  16. pulumi_gcp/clouddeploy/_inputs.py +41 -1
  17. pulumi_gcp/clouddeploy/delivery_pipeline.py +19 -19
  18. pulumi_gcp/clouddeploy/outputs.py +29 -1
  19. pulumi_gcp/clouddeploy/target.py +19 -19
  20. pulumi_gcp/cloudfunctions/function.py +42 -42
  21. pulumi_gcp/cloudfunctions/get_function.py +3 -3
  22. pulumi_gcp/cloudfunctionsv2/function.py +2 -0
  23. pulumi_gcp/cloudidentity/__init__.py +1 -0
  24. pulumi_gcp/cloudidentity/get_group_memberships.py +12 -0
  25. pulumi_gcp/cloudidentity/get_group_transitive_memberships.py +93 -0
  26. pulumi_gcp/cloudidentity/outputs.py +131 -0
  27. pulumi_gcp/cloudquota/outputs.py +6 -6
  28. pulumi_gcp/composer/get_user_workloads_secret.py +1 -1
  29. pulumi_gcp/composer/user_workloads_secret.py +14 -14
  30. pulumi_gcp/compute/_inputs.py +91 -85
  31. pulumi_gcp/compute/get_instance_serial_port.py +12 -4
  32. pulumi_gcp/compute/get_instance_template.py +1 -1
  33. pulumi_gcp/compute/get_region_instance_template.py +1 -1
  34. pulumi_gcp/compute/instance_template.py +14 -14
  35. pulumi_gcp/compute/outputs.py +93 -83
  36. pulumi_gcp/compute/region_instance_template.py +14 -14
  37. pulumi_gcp/compute/region_network_endpoint_group.py +18 -2
  38. pulumi_gcp/compute/subnetwork.py +82 -0
  39. pulumi_gcp/container/_inputs.py +35 -38
  40. pulumi_gcp/container/attached_cluster.py +14 -7
  41. pulumi_gcp/container/aws_cluster.py +5 -5
  42. pulumi_gcp/container/aws_node_pool.py +5 -5
  43. pulumi_gcp/container/azure_cluster.py +5 -5
  44. pulumi_gcp/container/azure_node_pool.py +5 -5
  45. pulumi_gcp/container/outputs.py +31 -33
  46. pulumi_gcp/databasemigrationservice/_inputs.py +5 -5
  47. pulumi_gcp/databasemigrationservice/outputs.py +3 -3
  48. pulumi_gcp/dataflow/flex_template_job.py +42 -42
  49. pulumi_gcp/dataflow/job.py +42 -42
  50. pulumi_gcp/datafusion/instance.py +10 -2
  51. pulumi_gcp/dataloss/_inputs.py +5 -5
  52. pulumi_gcp/dataloss/outputs.py +3 -3
  53. pulumi_gcp/dataloss/prevention_stored_info_type.py +10 -2
  54. pulumi_gcp/dataplex/asset.py +14 -14
  55. pulumi_gcp/dataplex/lake.py +14 -14
  56. pulumi_gcp/dataplex/zone.py +14 -14
  57. pulumi_gcp/dataproc/_inputs.py +10 -10
  58. pulumi_gcp/dataproc/outputs.py +6 -6
  59. pulumi_gcp/dataproc/workflow_template.py +12 -12
  60. pulumi_gcp/discoveryengine/__init__.py +1 -0
  61. pulumi_gcp/discoveryengine/schema.py +524 -0
  62. pulumi_gcp/dns/_inputs.py +80 -76
  63. pulumi_gcp/dns/outputs.py +56 -52
  64. pulumi_gcp/eventarc/trigger.py +14 -14
  65. pulumi_gcp/firebase/_inputs.py +5 -5
  66. pulumi_gcp/firebase/outputs.py +3 -3
  67. pulumi_gcp/healthcare/dicom_store.py +12 -2
  68. pulumi_gcp/healthcare/fhir_store.py +10 -2
  69. pulumi_gcp/iam/access_boundary_policy.py +10 -2
  70. pulumi_gcp/managedkafka/_inputs.py +6 -6
  71. pulumi_gcp/managedkafka/cluster.py +7 -7
  72. pulumi_gcp/managedkafka/outputs.py +4 -4
  73. pulumi_gcp/managedkafka/topic.py +7 -7
  74. pulumi_gcp/monitoring/get_app_engine_service.py +10 -2
  75. pulumi_gcp/networkconnectivity/_inputs.py +5 -5
  76. pulumi_gcp/networkconnectivity/outputs.py +3 -3
  77. pulumi_gcp/parallelstore/instance.py +215 -15
  78. pulumi_gcp/projects/default_service_accounts.py +7 -7
  79. pulumi_gcp/pubsub/subscription.py +36 -6
  80. pulumi_gcp/pulumi-plugin.json +1 -1
  81. pulumi_gcp/recaptcha/enterprise_key.py +14 -14
  82. pulumi_gcp/securitycenter/__init__.py +2 -0
  83. pulumi_gcp/securitycenter/_inputs.py +186 -0
  84. pulumi_gcp/securitycenter/folder_notification_config.py +486 -0
  85. pulumi_gcp/securitycenter/instance_iam_binding.py +10 -2
  86. pulumi_gcp/securitycenter/instance_iam_member.py +10 -2
  87. pulumi_gcp/securitycenter/instance_iam_policy.py +10 -2
  88. pulumi_gcp/securitycenter/outputs.py +118 -0
  89. pulumi_gcp/securitycenter/v2_folder_notification_config.py +575 -0
  90. pulumi_gcp/serviceaccount/key.py +14 -14
  91. pulumi_gcp/servicenetworking/connection.py +50 -3
  92. pulumi_gcp/sql/_inputs.py +20 -0
  93. pulumi_gcp/sql/outputs.py +36 -0
  94. pulumi_gcp/vertex/__init__.py +1 -0
  95. pulumi_gcp/vertex/_inputs.py +438 -0
  96. pulumi_gcp/vertex/ai_feature_group.py +12 -2
  97. pulumi_gcp/vertex/ai_feature_group_feature.py +12 -2
  98. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +48 -8
  99. pulumi_gcp/vertex/ai_index_endpoint_deployed_index.py +1170 -0
  100. pulumi_gcp/vertex/outputs.py +393 -0
  101. pulumi_gcp/workstations/_inputs.py +10 -10
  102. pulumi_gcp/workstations/outputs.py +6 -6
  103. pulumi_gcp/workstations/workstation_config.py +14 -6
  104. {pulumi_gcp-7.37.0a1723638212.dist-info → pulumi_gcp-7.38.0.dist-info}/METADATA +1 -1
  105. {pulumi_gcp-7.37.0a1723638212.dist-info → pulumi_gcp-7.38.0.dist-info}/RECORD +107 -101
  106. {pulumi_gcp-7.37.0a1723638212.dist-info → pulumi_gcp-7.38.0.dist-info}/WHEEL +1 -1
  107. {pulumi_gcp-7.37.0a1723638212.dist-info → pulumi_gcp-7.38.0.dist-info}/top_level.txt +0 -0
@@ -31,7 +31,7 @@ class RegionInstanceTemplateArgs:
31
31
  guest_accelerators: Optional[pulumi.Input[Sequence[pulumi.Input['RegionInstanceTemplateGuestAcceleratorArgs']]]] = None,
32
32
  instance_description: Optional[pulumi.Input[str]] = None,
33
33
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
34
- metadata: Optional[pulumi.Input[Mapping[str, Any]]] = None,
34
+ metadata: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
35
35
  metadata_startup_script: Optional[pulumi.Input[str]] = None,
36
36
  min_cpu_platform: Optional[pulumi.Input[str]] = None,
37
37
  name: Optional[pulumi.Input[str]] = None,
@@ -73,7 +73,7 @@ class RegionInstanceTemplateArgs:
73
73
 
74
74
  **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
75
75
  Please refer to the field 'effective_labels' for all of the labels present on the resource.
76
- :param pulumi.Input[Mapping[str, Any]] metadata: Metadata key/value pairs to make available from
76
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] metadata: Metadata key/value pairs to make available from
77
77
  within instances created from this template.
78
78
  :param pulumi.Input[str] metadata_startup_script: An alternative to using the
79
79
  startup-script metadata key, mostly to match the compute_instance resource.
@@ -296,7 +296,7 @@ class RegionInstanceTemplateArgs:
296
296
 
297
297
  @property
298
298
  @pulumi.getter
299
- def metadata(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
299
+ def metadata(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
300
300
  """
301
301
  Metadata key/value pairs to make available from
302
302
  within instances created from this template.
@@ -304,7 +304,7 @@ class RegionInstanceTemplateArgs:
304
304
  return pulumi.get(self, "metadata")
305
305
 
306
306
  @metadata.setter
307
- def metadata(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
307
+ def metadata(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
308
308
  pulumi.set(self, "metadata", value)
309
309
 
310
310
  @property
@@ -528,7 +528,7 @@ class _RegionInstanceTemplateState:
528
528
  instance_description: Optional[pulumi.Input[str]] = None,
529
529
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
530
530
  machine_type: Optional[pulumi.Input[str]] = None,
531
- metadata: Optional[pulumi.Input[Mapping[str, Any]]] = None,
531
+ metadata: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
532
532
  metadata_fingerprint: Optional[pulumi.Input[str]] = None,
533
533
  metadata_startup_script: Optional[pulumi.Input[str]] = None,
534
534
  min_cpu_platform: Optional[pulumi.Input[str]] = None,
@@ -575,7 +575,7 @@ class _RegionInstanceTemplateState:
575
575
  To create a machine with a [custom type](https://cloud.google.com/dataproc/docs/concepts/compute/custom-machine-types) (such as extended memory), format the value like `custom-VCPUS-MEM_IN_MB` like `custom-6-20480` for 6 vCPU and 20GB of RAM.
576
576
 
577
577
  - - -
578
- :param pulumi.Input[Mapping[str, Any]] metadata: Metadata key/value pairs to make available from
578
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] metadata: Metadata key/value pairs to make available from
579
579
  within instances created from this template.
580
580
  :param pulumi.Input[str] metadata_fingerprint: The unique fingerprint of the metadata.
581
581
  :param pulumi.Input[str] metadata_startup_script: An alternative to using the
@@ -826,7 +826,7 @@ class _RegionInstanceTemplateState:
826
826
 
827
827
  @property
828
828
  @pulumi.getter
829
- def metadata(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
829
+ def metadata(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
830
830
  """
831
831
  Metadata key/value pairs to make available from
832
832
  within instances created from this template.
@@ -834,7 +834,7 @@ class _RegionInstanceTemplateState:
834
834
  return pulumi.get(self, "metadata")
835
835
 
836
836
  @metadata.setter
837
- def metadata(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
837
+ def metadata(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
838
838
  pulumi.set(self, "metadata", value)
839
839
 
840
840
  @property
@@ -1107,7 +1107,7 @@ class RegionInstanceTemplate(pulumi.CustomResource):
1107
1107
  instance_description: Optional[pulumi.Input[str]] = None,
1108
1108
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1109
1109
  machine_type: Optional[pulumi.Input[str]] = None,
1110
- metadata: Optional[pulumi.Input[Mapping[str, Any]]] = None,
1110
+ metadata: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1111
1111
  metadata_startup_script: Optional[pulumi.Input[str]] = None,
1112
1112
  min_cpu_platform: Optional[pulumi.Input[str]] = None,
1113
1113
  name: Optional[pulumi.Input[str]] = None,
@@ -1175,7 +1175,7 @@ class RegionInstanceTemplate(pulumi.CustomResource):
1175
1175
  To create a machine with a [custom type](https://cloud.google.com/dataproc/docs/concepts/compute/custom-machine-types) (such as extended memory), format the value like `custom-VCPUS-MEM_IN_MB` like `custom-6-20480` for 6 vCPU and 20GB of RAM.
1176
1176
 
1177
1177
  - - -
1178
- :param pulumi.Input[Mapping[str, Any]] metadata: Metadata key/value pairs to make available from
1178
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] metadata: Metadata key/value pairs to make available from
1179
1179
  within instances created from this template.
1180
1180
  :param pulumi.Input[str] metadata_startup_script: An alternative to using the
1181
1181
  startup-script metadata key, mostly to match the compute_instance resource.
@@ -1266,7 +1266,7 @@ class RegionInstanceTemplate(pulumi.CustomResource):
1266
1266
  instance_description: Optional[pulumi.Input[str]] = None,
1267
1267
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1268
1268
  machine_type: Optional[pulumi.Input[str]] = None,
1269
- metadata: Optional[pulumi.Input[Mapping[str, Any]]] = None,
1269
+ metadata: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1270
1270
  metadata_startup_script: Optional[pulumi.Input[str]] = None,
1271
1271
  min_cpu_platform: Optional[pulumi.Input[str]] = None,
1272
1272
  name: Optional[pulumi.Input[str]] = None,
@@ -1351,7 +1351,7 @@ class RegionInstanceTemplate(pulumi.CustomResource):
1351
1351
  instance_description: Optional[pulumi.Input[str]] = None,
1352
1352
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1353
1353
  machine_type: Optional[pulumi.Input[str]] = None,
1354
- metadata: Optional[pulumi.Input[Mapping[str, Any]]] = None,
1354
+ metadata: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1355
1355
  metadata_fingerprint: Optional[pulumi.Input[str]] = None,
1356
1356
  metadata_startup_script: Optional[pulumi.Input[str]] = None,
1357
1357
  min_cpu_platform: Optional[pulumi.Input[str]] = None,
@@ -1403,7 +1403,7 @@ class RegionInstanceTemplate(pulumi.CustomResource):
1403
1403
  To create a machine with a [custom type](https://cloud.google.com/dataproc/docs/concepts/compute/custom-machine-types) (such as extended memory), format the value like `custom-VCPUS-MEM_IN_MB` like `custom-6-20480` for 6 vCPU and 20GB of RAM.
1404
1404
 
1405
1405
  - - -
1406
- :param pulumi.Input[Mapping[str, Any]] metadata: Metadata key/value pairs to make available from
1406
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] metadata: Metadata key/value pairs to make available from
1407
1407
  within instances created from this template.
1408
1408
  :param pulumi.Input[str] metadata_fingerprint: The unique fingerprint of the metadata.
1409
1409
  :param pulumi.Input[str] metadata_startup_script: An alternative to using the
@@ -1583,7 +1583,7 @@ class RegionInstanceTemplate(pulumi.CustomResource):
1583
1583
 
1584
1584
  @property
1585
1585
  @pulumi.getter
1586
- def metadata(self) -> pulumi.Output[Optional[Mapping[str, Any]]]:
1586
+ def metadata(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
1587
1587
  """
1588
1588
  Metadata key/value pairs to make available from
1589
1589
  within instances created from this template.
@@ -646,12 +646,20 @@ class RegionNetworkEndpointGroup(pulumi.CustomResource):
646
646
  version_id="v1",
647
647
  service="appengine-network-endpoint-group",
648
648
  runtime="nodejs",
649
+ flexible_runtime_settings={
650
+ "operating_system": "ubuntu22",
651
+ "runtime_version": "20",
652
+ },
649
653
  entrypoint={
650
654
  "shell": "node ./app.js",
651
655
  },
652
656
  deployment={
653
657
  "zip": {
654
- "source_url": pulumi.Output.all(appengine_neg_bucket.name, appengine_neg_bucket_object.name).apply(lambda appengineNegBucketName, appengineNegBucketObjectName: f"https://storage.googleapis.com/{appengine_neg_bucket_name}/{appengine_neg_bucket_object_name}"),
658
+ "source_url": pulumi.Output.all(
659
+ appengineNegBucketName=appengine_neg_bucket.name,
660
+ appengineNegBucketObjectName=appengine_neg_bucket_object.name
661
+ ).apply(lambda resolved_outputs: f"https://storage.googleapis.com/{resolved_outputs['appengineNegBucketName']}/{resolved_outputs['appengineNegBucketObjectName']}")
662
+ ,
655
663
  },
656
664
  },
657
665
  liveness_check={
@@ -982,12 +990,20 @@ class RegionNetworkEndpointGroup(pulumi.CustomResource):
982
990
  version_id="v1",
983
991
  service="appengine-network-endpoint-group",
984
992
  runtime="nodejs",
993
+ flexible_runtime_settings={
994
+ "operating_system": "ubuntu22",
995
+ "runtime_version": "20",
996
+ },
985
997
  entrypoint={
986
998
  "shell": "node ./app.js",
987
999
  },
988
1000
  deployment={
989
1001
  "zip": {
990
- "source_url": pulumi.Output.all(appengine_neg_bucket.name, appengine_neg_bucket_object.name).apply(lambda appengineNegBucketName, appengineNegBucketObjectName: f"https://storage.googleapis.com/{appengine_neg_bucket_name}/{appengine_neg_bucket_object_name}"),
1002
+ "source_url": pulumi.Output.all(
1003
+ appengineNegBucketName=appengine_neg_bucket.name,
1004
+ appengineNegBucketObjectName=appengine_neg_bucket_object.name
1005
+ ).apply(lambda resolved_outputs: f"https://storage.googleapis.com/{resolved_outputs['appengineNegBucketName']}/{resolved_outputs['appengineNegBucketObjectName']}")
1006
+ ,
991
1007
  },
992
1008
  },
993
1009
  liveness_check={
@@ -36,6 +36,7 @@ class SubnetworkArgs:
36
36
  region: Optional[pulumi.Input[str]] = None,
37
37
  role: Optional[pulumi.Input[str]] = None,
38
38
  secondary_ip_ranges: Optional[pulumi.Input[Sequence[pulumi.Input['SubnetworkSecondaryIpRangeArgs']]]] = None,
39
+ send_secondary_ip_range_if_empty: Optional[pulumi.Input[bool]] = None,
39
40
  stack_type: Optional[pulumi.Input[str]] = None):
40
41
  """
41
42
  The set of arguments for constructing a Subnetwork resource.
@@ -96,6 +97,12 @@ class SubnetworkArgs:
96
97
  to the primary ipCidrRange of the subnetwork. The alias IPs may belong
97
98
  to either primary or secondary ranges.
98
99
  Structure is documented below.
100
+ :param pulumi.Input[bool] send_secondary_ip_range_if_empty: Controls the removal behavior of secondary_ip_range.
101
+ When false, removing secondary_ip_range from config will not produce a diff as
102
+ the provider will default to the API's value.
103
+ When true, the provider will treat removing secondary_ip_range as sending an
104
+ empty list of secondary IP ranges to the API.
105
+ Defaults to false.
99
106
  :param pulumi.Input[str] stack_type: The stack type for this subnet to identify whether the IPv6 feature is enabled or not.
100
107
  If not specified IPV4_ONLY will be used.
101
108
  Possible values are: `IPV4_ONLY`, `IPV4_IPV6`.
@@ -128,6 +135,8 @@ class SubnetworkArgs:
128
135
  pulumi.set(__self__, "role", role)
129
136
  if secondary_ip_ranges is not None:
130
137
  pulumi.set(__self__, "secondary_ip_ranges", secondary_ip_ranges)
138
+ if send_secondary_ip_range_if_empty is not None:
139
+ pulumi.set(__self__, "send_secondary_ip_range_if_empty", send_secondary_ip_range_if_empty)
131
140
  if stack_type is not None:
132
141
  pulumi.set(__self__, "stack_type", stack_type)
133
142
 
@@ -353,6 +362,23 @@ class SubnetworkArgs:
353
362
  def secondary_ip_ranges(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['SubnetworkSecondaryIpRangeArgs']]]]):
354
363
  pulumi.set(self, "secondary_ip_ranges", value)
355
364
 
365
+ @property
366
+ @pulumi.getter(name="sendSecondaryIpRangeIfEmpty")
367
+ def send_secondary_ip_range_if_empty(self) -> Optional[pulumi.Input[bool]]:
368
+ """
369
+ Controls the removal behavior of secondary_ip_range.
370
+ When false, removing secondary_ip_range from config will not produce a diff as
371
+ the provider will default to the API's value.
372
+ When true, the provider will treat removing secondary_ip_range as sending an
373
+ empty list of secondary IP ranges to the API.
374
+ Defaults to false.
375
+ """
376
+ return pulumi.get(self, "send_secondary_ip_range_if_empty")
377
+
378
+ @send_secondary_ip_range_if_empty.setter
379
+ def send_secondary_ip_range_if_empty(self, value: Optional[pulumi.Input[bool]]):
380
+ pulumi.set(self, "send_secondary_ip_range_if_empty", value)
381
+
356
382
  @property
357
383
  @pulumi.getter(name="stackType")
358
384
  def stack_type(self) -> Optional[pulumi.Input[str]]:
@@ -392,6 +418,7 @@ class _SubnetworkState:
392
418
  role: Optional[pulumi.Input[str]] = None,
393
419
  secondary_ip_ranges: Optional[pulumi.Input[Sequence[pulumi.Input['SubnetworkSecondaryIpRangeArgs']]]] = None,
394
420
  self_link: Optional[pulumi.Input[str]] = None,
421
+ send_secondary_ip_range_if_empty: Optional[pulumi.Input[bool]] = None,
395
422
  stack_type: Optional[pulumi.Input[str]] = None):
396
423
  """
397
424
  Input properties used for looking up and filtering Subnetwork resources.
@@ -459,6 +486,12 @@ class _SubnetworkState:
459
486
  to either primary or secondary ranges.
460
487
  Structure is documented below.
461
488
  :param pulumi.Input[str] self_link: The URI of the created resource.
489
+ :param pulumi.Input[bool] send_secondary_ip_range_if_empty: Controls the removal behavior of secondary_ip_range.
490
+ When false, removing secondary_ip_range from config will not produce a diff as
491
+ the provider will default to the API's value.
492
+ When true, the provider will treat removing secondary_ip_range as sending an
493
+ empty list of secondary IP ranges to the API.
494
+ Defaults to false.
462
495
  :param pulumi.Input[str] stack_type: The stack type for this subnet to identify whether the IPv6 feature is enabled or not.
463
496
  If not specified IPV4_ONLY will be used.
464
497
  Possible values are: `IPV4_ONLY`, `IPV4_IPV6`.
@@ -508,6 +541,8 @@ class _SubnetworkState:
508
541
  pulumi.set(__self__, "secondary_ip_ranges", secondary_ip_ranges)
509
542
  if self_link is not None:
510
543
  pulumi.set(__self__, "self_link", self_link)
544
+ if send_secondary_ip_range_if_empty is not None:
545
+ pulumi.set(__self__, "send_secondary_ip_range_if_empty", send_secondary_ip_range_if_empty)
511
546
  if stack_type is not None:
512
547
  pulumi.set(__self__, "stack_type", stack_type)
513
548
 
@@ -807,6 +842,23 @@ class _SubnetworkState:
807
842
  def self_link(self, value: Optional[pulumi.Input[str]]):
808
843
  pulumi.set(self, "self_link", value)
809
844
 
845
+ @property
846
+ @pulumi.getter(name="sendSecondaryIpRangeIfEmpty")
847
+ def send_secondary_ip_range_if_empty(self) -> Optional[pulumi.Input[bool]]:
848
+ """
849
+ Controls the removal behavior of secondary_ip_range.
850
+ When false, removing secondary_ip_range from config will not produce a diff as
851
+ the provider will default to the API's value.
852
+ When true, the provider will treat removing secondary_ip_range as sending an
853
+ empty list of secondary IP ranges to the API.
854
+ Defaults to false.
855
+ """
856
+ return pulumi.get(self, "send_secondary_ip_range_if_empty")
857
+
858
+ @send_secondary_ip_range_if_empty.setter
859
+ def send_secondary_ip_range_if_empty(self, value: Optional[pulumi.Input[bool]]):
860
+ pulumi.set(self, "send_secondary_ip_range_if_empty", value)
861
+
810
862
  @property
811
863
  @pulumi.getter(name="stackType")
812
864
  def stack_type(self) -> Optional[pulumi.Input[str]]:
@@ -842,6 +894,7 @@ class Subnetwork(pulumi.CustomResource):
842
894
  region: Optional[pulumi.Input[str]] = None,
843
895
  role: Optional[pulumi.Input[str]] = None,
844
896
  secondary_ip_ranges: Optional[pulumi.Input[Sequence[pulumi.Input[Union['SubnetworkSecondaryIpRangeArgs', 'SubnetworkSecondaryIpRangeArgsDict']]]]] = None,
897
+ send_secondary_ip_range_if_empty: Optional[pulumi.Input[bool]] = None,
845
898
  stack_type: Optional[pulumi.Input[str]] = None,
846
899
  __props__=None):
847
900
  """
@@ -1090,6 +1143,12 @@ class Subnetwork(pulumi.CustomResource):
1090
1143
  to the primary ipCidrRange of the subnetwork. The alias IPs may belong
1091
1144
  to either primary or secondary ranges.
1092
1145
  Structure is documented below.
1146
+ :param pulumi.Input[bool] send_secondary_ip_range_if_empty: Controls the removal behavior of secondary_ip_range.
1147
+ When false, removing secondary_ip_range from config will not produce a diff as
1148
+ the provider will default to the API's value.
1149
+ When true, the provider will treat removing secondary_ip_range as sending an
1150
+ empty list of secondary IP ranges to the API.
1151
+ Defaults to false.
1093
1152
  :param pulumi.Input[str] stack_type: The stack type for this subnet to identify whether the IPv6 feature is enabled or not.
1094
1153
  If not specified IPV4_ONLY will be used.
1095
1154
  Possible values are: `IPV4_ONLY`, `IPV4_IPV6`.
@@ -1317,6 +1376,7 @@ class Subnetwork(pulumi.CustomResource):
1317
1376
  region: Optional[pulumi.Input[str]] = None,
1318
1377
  role: Optional[pulumi.Input[str]] = None,
1319
1378
  secondary_ip_ranges: Optional[pulumi.Input[Sequence[pulumi.Input[Union['SubnetworkSecondaryIpRangeArgs', 'SubnetworkSecondaryIpRangeArgsDict']]]]] = None,
1379
+ send_secondary_ip_range_if_empty: Optional[pulumi.Input[bool]] = None,
1320
1380
  stack_type: Optional[pulumi.Input[str]] = None,
1321
1381
  __props__=None):
1322
1382
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
@@ -1346,6 +1406,7 @@ class Subnetwork(pulumi.CustomResource):
1346
1406
  __props__.__dict__["region"] = region
1347
1407
  __props__.__dict__["role"] = role
1348
1408
  __props__.__dict__["secondary_ip_ranges"] = secondary_ip_ranges
1409
+ __props__.__dict__["send_secondary_ip_range_if_empty"] = send_secondary_ip_range_if_empty
1349
1410
  __props__.__dict__["stack_type"] = stack_type
1350
1411
  __props__.__dict__["creation_timestamp"] = None
1351
1412
  __props__.__dict__["fingerprint"] = None
@@ -1384,6 +1445,7 @@ class Subnetwork(pulumi.CustomResource):
1384
1445
  role: Optional[pulumi.Input[str]] = None,
1385
1446
  secondary_ip_ranges: Optional[pulumi.Input[Sequence[pulumi.Input[Union['SubnetworkSecondaryIpRangeArgs', 'SubnetworkSecondaryIpRangeArgsDict']]]]] = None,
1386
1447
  self_link: Optional[pulumi.Input[str]] = None,
1448
+ send_secondary_ip_range_if_empty: Optional[pulumi.Input[bool]] = None,
1387
1449
  stack_type: Optional[pulumi.Input[str]] = None) -> 'Subnetwork':
1388
1450
  """
1389
1451
  Get an existing Subnetwork resource's state with the given name, id, and optional extra
@@ -1456,6 +1518,12 @@ class Subnetwork(pulumi.CustomResource):
1456
1518
  to either primary or secondary ranges.
1457
1519
  Structure is documented below.
1458
1520
  :param pulumi.Input[str] self_link: The URI of the created resource.
1521
+ :param pulumi.Input[bool] send_secondary_ip_range_if_empty: Controls the removal behavior of secondary_ip_range.
1522
+ When false, removing secondary_ip_range from config will not produce a diff as
1523
+ the provider will default to the API's value.
1524
+ When true, the provider will treat removing secondary_ip_range as sending an
1525
+ empty list of secondary IP ranges to the API.
1526
+ Defaults to false.
1459
1527
  :param pulumi.Input[str] stack_type: The stack type for this subnet to identify whether the IPv6 feature is enabled or not.
1460
1528
  If not specified IPV4_ONLY will be used.
1461
1529
  Possible values are: `IPV4_ONLY`, `IPV4_IPV6`.
@@ -1485,6 +1553,7 @@ class Subnetwork(pulumi.CustomResource):
1485
1553
  __props__.__dict__["role"] = role
1486
1554
  __props__.__dict__["secondary_ip_ranges"] = secondary_ip_ranges
1487
1555
  __props__.__dict__["self_link"] = self_link
1556
+ __props__.__dict__["send_secondary_ip_range_if_empty"] = send_secondary_ip_range_if_empty
1488
1557
  __props__.__dict__["stack_type"] = stack_type
1489
1558
  return Subnetwork(resource_name, opts=opts, __props__=__props__)
1490
1559
 
@@ -1700,6 +1769,19 @@ class Subnetwork(pulumi.CustomResource):
1700
1769
  """
1701
1770
  return pulumi.get(self, "self_link")
1702
1771
 
1772
+ @property
1773
+ @pulumi.getter(name="sendSecondaryIpRangeIfEmpty")
1774
+ def send_secondary_ip_range_if_empty(self) -> pulumi.Output[Optional[bool]]:
1775
+ """
1776
+ Controls the removal behavior of secondary_ip_range.
1777
+ When false, removing secondary_ip_range from config will not produce a diff as
1778
+ the provider will default to the API's value.
1779
+ When true, the provider will treat removing secondary_ip_range as sending an
1780
+ empty list of secondary IP ranges to the API.
1781
+ Defaults to false.
1782
+ """
1783
+ return pulumi.get(self, "send_secondary_ip_range_if_empty")
1784
+
1703
1785
  @property
1704
1786
  @pulumi.getter(name="stackType")
1705
1787
  def stack_type(self) -> pulumi.Output[str]: