pulumi-gcp 7.22.0a1715306721__py3-none-any.whl → 7.22.0a1715611725__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 (34) hide show
  1. pulumi_gcp/__init__.py +11 -0
  2. pulumi_gcp/alloydb/_inputs.py +139 -0
  3. pulumi_gcp/alloydb/cluster.py +54 -0
  4. pulumi_gcp/alloydb/outputs.py +145 -0
  5. pulumi_gcp/applicationintegration/auth_config.py +2 -6
  6. pulumi_gcp/applicationintegration/client.py +133 -18
  7. pulumi_gcp/bigquery/dataset.py +2 -2
  8. pulumi_gcp/bigquery/job.py +16 -20
  9. pulumi_gcp/cloudrunv2/job.py +2 -4
  10. pulumi_gcp/cloudrunv2/service.py +2 -4
  11. pulumi_gcp/compute/_inputs.py +4 -0
  12. pulumi_gcp/compute/outputs.py +4 -0
  13. pulumi_gcp/compute/router_peer.py +54 -14
  14. pulumi_gcp/config/__init__.pyi +2 -0
  15. pulumi_gcp/config/vars.py +4 -0
  16. pulumi_gcp/container/_inputs.py +169 -0
  17. pulumi_gcp/container/outputs.py +272 -0
  18. pulumi_gcp/dataflow/flex_template_job.py +21 -21
  19. pulumi_gcp/dataflow/job.py +21 -7
  20. pulumi_gcp/essentialcontacts/document_ai_warehouse_document_schema.py +0 -528
  21. pulumi_gcp/firebaserules/release.py +2 -2
  22. pulumi_gcp/privilegedaccessmanager/__init__.py +10 -0
  23. pulumi_gcp/privilegedaccessmanager/_inputs.py +420 -0
  24. pulumi_gcp/privilegedaccessmanager/entitlement.py +852 -0
  25. pulumi_gcp/privilegedaccessmanager/outputs.py +491 -0
  26. pulumi_gcp/provider.py +20 -0
  27. pulumi_gcp/redis/cluster.py +69 -2
  28. pulumi_gcp/storage/__init__.py +1 -0
  29. pulumi_gcp/storage/get_buckets.py +138 -0
  30. pulumi_gcp/storage/outputs.py +63 -0
  31. {pulumi_gcp-7.22.0a1715306721.dist-info → pulumi_gcp-7.22.0a1715611725.dist-info}/METADATA +1 -1
  32. {pulumi_gcp-7.22.0a1715306721.dist-info → pulumi_gcp-7.22.0a1715611725.dist-info}/RECORD +34 -29
  33. {pulumi_gcp-7.22.0a1715306721.dist-info → pulumi_gcp-7.22.0a1715611725.dist-info}/WHEEL +0 -0
  34. {pulumi_gcp-7.22.0a1715306721.dist-info → pulumi_gcp-7.22.0a1715611725.dist-info}/top_level.txt +0 -0
@@ -77,8 +77,8 @@ class RouterPeerArgs:
77
77
  The address must be in the range 2600:2d00:0:2::/64 or 2600:2d00:0:3::/64.
78
78
  If you do not specify the next hop addresses, Google Cloud automatically
79
79
  assigns unused addresses from the 2600:2d00:0:2::/64 or 2600:2d00:0:3::/64 range for you.
80
- :param pulumi.Input['RouterPeerMd5AuthenticationKeyArgs'] md5_authentication_key: Present if MD5 authentication is enabled for the peering. Must be the name of one of the entries in the
81
- Router.md5_authentication_keys. The field must comply with RFC1035.
80
+ :param pulumi.Input['RouterPeerMd5AuthenticationKeyArgs'] md5_authentication_key: Configuration for MD5 authentication on the BGP session.
81
+ Structure is documented below.
82
82
  :param pulumi.Input[str] name: Name of this BGP peer. The name must be 1-63 characters long,
83
83
  and comply with RFC1035. Specifically, the name must be 1-63 characters
84
84
  long and match the regular expression `a-z?` which
@@ -338,8 +338,8 @@ class RouterPeerArgs:
338
338
  @pulumi.getter(name="md5AuthenticationKey")
339
339
  def md5_authentication_key(self) -> Optional[pulumi.Input['RouterPeerMd5AuthenticationKeyArgs']]:
340
340
  """
341
- Present if MD5 authentication is enabled for the peering. Must be the name of one of the entries in the
342
- Router.md5_authentication_keys. The field must comply with RFC1035.
341
+ Configuration for MD5 authentication on the BGP session.
342
+ Structure is documented below.
343
343
  """
344
344
  return pulumi.get(self, "md5_authentication_key")
345
345
 
@@ -506,8 +506,8 @@ class _RouterPeerState:
506
506
  If you do not specify the next hop addresses, Google Cloud automatically
507
507
  assigns unused addresses from the 2600:2d00:0:2::/64 or 2600:2d00:0:3::/64 range for you.
508
508
  :param pulumi.Input[str] management_type: The resource that configures and manages this BGP peer.
509
- :param pulumi.Input['RouterPeerMd5AuthenticationKeyArgs'] md5_authentication_key: Present if MD5 authentication is enabled for the peering. Must be the name of one of the entries in the
510
- Router.md5_authentication_keys. The field must comply with RFC1035.
509
+ :param pulumi.Input['RouterPeerMd5AuthenticationKeyArgs'] md5_authentication_key: Configuration for MD5 authentication on the BGP session.
510
+ Structure is documented below.
511
511
  :param pulumi.Input[str] name: Name of this BGP peer. The name must be 1-63 characters long,
512
512
  and comply with RFC1035. Specifically, the name must be 1-63 characters
513
513
  long and match the regular expression `a-z?` which
@@ -762,8 +762,8 @@ class _RouterPeerState:
762
762
  @pulumi.getter(name="md5AuthenticationKey")
763
763
  def md5_authentication_key(self) -> Optional[pulumi.Input['RouterPeerMd5AuthenticationKeyArgs']]:
764
764
  """
765
- Present if MD5 authentication is enabled for the peering. Must be the name of one of the entries in the
766
- Router.md5_authentication_keys. The field must comply with RFC1035.
765
+ Configuration for MD5 authentication on the BGP session.
766
+ Structure is documented below.
767
767
  """
768
768
  return pulumi.get(self, "md5_authentication_key")
769
769
 
@@ -1076,6 +1076,26 @@ class RouterPeer(pulumi.CustomResource):
1076
1076
  peer_ip_address=addr_peer.address)
1077
1077
  ```
1078
1078
 
1079
+ ### Router Peer Md5 Authentication Key
1080
+
1081
+ ```python
1082
+ import pulumi
1083
+ import pulumi_gcp as gcp
1084
+
1085
+ foobar = gcp.compute.RouterPeer("foobar",
1086
+ name="%s-peer",
1087
+ router=foobar_google_compute_router["name"],
1088
+ region=foobar_google_compute_router["region"],
1089
+ peer_asn=65515,
1090
+ advertised_route_priority=100,
1091
+ interface=foobar_google_compute_router_interface["name"],
1092
+ peer_ip_address="169.254.3.2",
1093
+ md5_authentication_key=gcp.compute.RouterPeerMd5AuthenticationKeyArgs(
1094
+ name="%s-peer-key",
1095
+ key="%s-peer-key-value",
1096
+ ))
1097
+ ```
1098
+
1079
1099
  ## Import
1080
1100
 
1081
1101
  RouterBgpPeer can be imported using any of these accepted formats:
@@ -1139,8 +1159,8 @@ class RouterPeer(pulumi.CustomResource):
1139
1159
  The address must be in the range 2600:2d00:0:2::/64 or 2600:2d00:0:3::/64.
1140
1160
  If you do not specify the next hop addresses, Google Cloud automatically
1141
1161
  assigns unused addresses from the 2600:2d00:0:2::/64 or 2600:2d00:0:3::/64 range for you.
1142
- :param pulumi.Input[pulumi.InputType['RouterPeerMd5AuthenticationKeyArgs']] md5_authentication_key: Present if MD5 authentication is enabled for the peering. Must be the name of one of the entries in the
1143
- Router.md5_authentication_keys. The field must comply with RFC1035.
1162
+ :param pulumi.Input[pulumi.InputType['RouterPeerMd5AuthenticationKeyArgs']] md5_authentication_key: Configuration for MD5 authentication on the BGP session.
1163
+ Structure is documented below.
1144
1164
  :param pulumi.Input[str] name: Name of this BGP peer. The name must be 1-63 characters long,
1145
1165
  and comply with RFC1035. Specifically, the name must be 1-63 characters
1146
1166
  long and match the regular expression `a-z?` which
@@ -1325,6 +1345,26 @@ class RouterPeer(pulumi.CustomResource):
1325
1345
  peer_ip_address=addr_peer.address)
1326
1346
  ```
1327
1347
 
1348
+ ### Router Peer Md5 Authentication Key
1349
+
1350
+ ```python
1351
+ import pulumi
1352
+ import pulumi_gcp as gcp
1353
+
1354
+ foobar = gcp.compute.RouterPeer("foobar",
1355
+ name="%s-peer",
1356
+ router=foobar_google_compute_router["name"],
1357
+ region=foobar_google_compute_router["region"],
1358
+ peer_asn=65515,
1359
+ advertised_route_priority=100,
1360
+ interface=foobar_google_compute_router_interface["name"],
1361
+ peer_ip_address="169.254.3.2",
1362
+ md5_authentication_key=gcp.compute.RouterPeerMd5AuthenticationKeyArgs(
1363
+ name="%s-peer-key",
1364
+ key="%s-peer-key-value",
1365
+ ))
1366
+ ```
1367
+
1328
1368
  ## Import
1329
1369
 
1330
1370
  RouterBgpPeer can be imported using any of these accepted formats:
@@ -1502,8 +1542,8 @@ class RouterPeer(pulumi.CustomResource):
1502
1542
  If you do not specify the next hop addresses, Google Cloud automatically
1503
1543
  assigns unused addresses from the 2600:2d00:0:2::/64 or 2600:2d00:0:3::/64 range for you.
1504
1544
  :param pulumi.Input[str] management_type: The resource that configures and manages this BGP peer.
1505
- :param pulumi.Input[pulumi.InputType['RouterPeerMd5AuthenticationKeyArgs']] md5_authentication_key: Present if MD5 authentication is enabled for the peering. Must be the name of one of the entries in the
1506
- Router.md5_authentication_keys. The field must comply with RFC1035.
1545
+ :param pulumi.Input[pulumi.InputType['RouterPeerMd5AuthenticationKeyArgs']] md5_authentication_key: Configuration for MD5 authentication on the BGP session.
1546
+ Structure is documented below.
1507
1547
  :param pulumi.Input[str] name: Name of this BGP peer. The name must be 1-63 characters long,
1508
1548
  and comply with RFC1035. Specifically, the name must be 1-63 characters
1509
1549
  long and match the regular expression `a-z?` which
@@ -1688,8 +1728,8 @@ class RouterPeer(pulumi.CustomResource):
1688
1728
  @pulumi.getter(name="md5AuthenticationKey")
1689
1729
  def md5_authentication_key(self) -> pulumi.Output[Optional['outputs.RouterPeerMd5AuthenticationKey']]:
1690
1730
  """
1691
- Present if MD5 authentication is enabled for the peering. Must be the name of one of the entries in the
1692
- Router.md5_authentication_keys. The field must comply with RFC1035.
1731
+ Configuration for MD5 authentication on the BGP session.
1732
+ Structure is documented below.
1693
1733
  """
1694
1734
  return pulumi.get(self, "md5_authentication_key")
1695
1735
 
@@ -260,6 +260,8 @@ parallelstoreCustomEndpoint: Optional[str]
260
260
 
261
261
  privatecaCustomEndpoint: Optional[str]
262
262
 
263
+ privilegedAccessManagerCustomEndpoint: Optional[str]
264
+
263
265
  project: Optional[str]
264
266
 
265
267
  publicCaCustomEndpoint: Optional[str]
pulumi_gcp/config/vars.py CHANGED
@@ -516,6 +516,10 @@ class _ExportableConfig(types.ModuleType):
516
516
  def privateca_custom_endpoint(self) -> Optional[str]:
517
517
  return __config__.get('privatecaCustomEndpoint')
518
518
 
519
+ @property
520
+ def privileged_access_manager_custom_endpoint(self) -> Optional[str]:
521
+ return __config__.get('privilegedAccessManagerCustomEndpoint')
522
+
519
523
  @property
520
524
  def project(self) -> Optional[str]:
521
525
  return __config__.get('project') or _utilities.get_env('GOOGLE_PROJECT', 'GOOGLE_CLOUD_PROJECT', 'GCLOUD_PROJECT', 'CLOUDSDK_CORE_PROJECT')
@@ -148,6 +148,7 @@ __all__ = [
148
148
  'ClusterNodeConfigLocalNvmeSsdBlockConfigArgs',
149
149
  'ClusterNodeConfigReservationAffinityArgs',
150
150
  'ClusterNodeConfigSandboxConfigArgs',
151
+ 'ClusterNodeConfigSecondaryBootDiskArgs',
151
152
  'ClusterNodeConfigShieldedInstanceConfigArgs',
152
153
  'ClusterNodeConfigSoleTenantConfigArgs',
153
154
  'ClusterNodeConfigSoleTenantConfigNodeAffinityArgs',
@@ -184,6 +185,7 @@ __all__ = [
184
185
  'ClusterNodePoolNodeConfigLocalNvmeSsdBlockConfigArgs',
185
186
  'ClusterNodePoolNodeConfigReservationAffinityArgs',
186
187
  'ClusterNodePoolNodeConfigSandboxConfigArgs',
188
+ 'ClusterNodePoolNodeConfigSecondaryBootDiskArgs',
187
189
  'ClusterNodePoolNodeConfigShieldedInstanceConfigArgs',
188
190
  'ClusterNodePoolNodeConfigSoleTenantConfigArgs',
189
191
  'ClusterNodePoolNodeConfigSoleTenantConfigNodeAffinityArgs',
@@ -236,6 +238,7 @@ __all__ = [
236
238
  'NodePoolNodeConfigLocalNvmeSsdBlockConfigArgs',
237
239
  'NodePoolNodeConfigReservationAffinityArgs',
238
240
  'NodePoolNodeConfigSandboxConfigArgs',
241
+ 'NodePoolNodeConfigSecondaryBootDiskArgs',
239
242
  'NodePoolNodeConfigShieldedInstanceConfigArgs',
240
243
  'NodePoolNodeConfigSoleTenantConfigArgs',
241
244
  'NodePoolNodeConfigSoleTenantConfigNodeAffinityArgs',
@@ -5726,6 +5729,7 @@ class ClusterNodeConfigArgs:
5726
5729
  resource_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
5727
5730
  resource_manager_tags: Optional[pulumi.Input[Mapping[str, Any]]] = None,
5728
5731
  sandbox_config: Optional[pulumi.Input['ClusterNodeConfigSandboxConfigArgs']] = None,
5732
+ secondary_boot_disks: Optional[pulumi.Input[Sequence[pulumi.Input['ClusterNodeConfigSecondaryBootDiskArgs']]]] = None,
5729
5733
  service_account: Optional[pulumi.Input[str]] = None,
5730
5734
  shielded_instance_config: Optional[pulumi.Input['ClusterNodeConfigShieldedInstanceConfigArgs']] = None,
5731
5735
  sole_tenant_config: Optional[pulumi.Input['ClusterNodeConfigSoleTenantConfigArgs']] = None,
@@ -5811,6 +5815,7 @@ class ClusterNodeConfigArgs:
5811
5815
  for how these labels are applied to clusters, node pools and nodes.
5812
5816
  :param pulumi.Input[Mapping[str, Any]] resource_manager_tags: A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications found [here](https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications). A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. Tags must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`.
5813
5817
  :param pulumi.Input['ClusterNodeConfigSandboxConfigArgs'] sandbox_config: Sandbox configuration for this node.
5818
+ :param pulumi.Input[Sequence[pulumi.Input['ClusterNodeConfigSecondaryBootDiskArgs']]] secondary_boot_disks: Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. `gcfs_config` must be `enabled=true` for this feature to work. `min_master_version` must also be set to use GKE 1.28.3-gke.106700 or later versions.
5814
5819
  :param pulumi.Input[str] service_account: The service account to be used by the Node VMs.
5815
5820
  If not specified, the "default" service account is used.
5816
5821
  :param pulumi.Input['ClusterNodeConfigShieldedInstanceConfigArgs'] shielded_instance_config: Shielded Instance options. Structure is documented below.
@@ -5893,6 +5898,8 @@ class ClusterNodeConfigArgs:
5893
5898
  pulumi.set(__self__, "resource_manager_tags", resource_manager_tags)
5894
5899
  if sandbox_config is not None:
5895
5900
  pulumi.set(__self__, "sandbox_config", sandbox_config)
5901
+ if secondary_boot_disks is not None:
5902
+ pulumi.set(__self__, "secondary_boot_disks", secondary_boot_disks)
5896
5903
  if service_account is not None:
5897
5904
  pulumi.set(__self__, "service_account", service_account)
5898
5905
  if shielded_instance_config is not None:
@@ -6326,6 +6333,18 @@ class ClusterNodeConfigArgs:
6326
6333
  def sandbox_config(self, value: Optional[pulumi.Input['ClusterNodeConfigSandboxConfigArgs']]):
6327
6334
  pulumi.set(self, "sandbox_config", value)
6328
6335
 
6336
+ @property
6337
+ @pulumi.getter(name="secondaryBootDisks")
6338
+ def secondary_boot_disks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ClusterNodeConfigSecondaryBootDiskArgs']]]]:
6339
+ """
6340
+ Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. `gcfs_config` must be `enabled=true` for this feature to work. `min_master_version` must also be set to use GKE 1.28.3-gke.106700 or later versions.
6341
+ """
6342
+ return pulumi.get(self, "secondary_boot_disks")
6343
+
6344
+ @secondary_boot_disks.setter
6345
+ def secondary_boot_disks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ClusterNodeConfigSecondaryBootDiskArgs']]]]):
6346
+ pulumi.set(self, "secondary_boot_disks", value)
6347
+
6329
6348
  @property
6330
6349
  @pulumi.getter(name="serviceAccount")
6331
6350
  def service_account(self) -> Optional[pulumi.Input[str]]:
@@ -6738,6 +6757,7 @@ class ClusterNodeConfigGuestAcceleratorGpuSharingConfigArgs:
6738
6757
  :param pulumi.Input[str] gpu_sharing_strategy: The type of GPU sharing strategy to enable on the GPU node.
6739
6758
  Accepted values are:
6740
6759
  * `"TIME_SHARING"`: Allow multiple containers to have [time-shared](https://cloud.google.com/kubernetes-engine/docs/concepts/timesharing-gpus) access to a single GPU device.
6760
+ * `"MPS"`: Enable co-operative multi-process CUDA workloads to run concurrently on a single GPU device with [MPS](https://cloud.google.com/kubernetes-engine/docs/how-to/nvidia-mps-gpus)
6741
6761
  :param pulumi.Input[int] max_shared_clients_per_gpu: The maximum number of containers that can share a GPU.
6742
6762
  """
6743
6763
  pulumi.set(__self__, "gpu_sharing_strategy", gpu_sharing_strategy)
@@ -6750,6 +6770,7 @@ class ClusterNodeConfigGuestAcceleratorGpuSharingConfigArgs:
6750
6770
  The type of GPU sharing strategy to enable on the GPU node.
6751
6771
  Accepted values are:
6752
6772
  * `"TIME_SHARING"`: Allow multiple containers to have [time-shared](https://cloud.google.com/kubernetes-engine/docs/concepts/timesharing-gpus) access to a single GPU device.
6773
+ * `"MPS"`: Enable co-operative multi-process CUDA workloads to run concurrently on a single GPU device with [MPS](https://cloud.google.com/kubernetes-engine/docs/how-to/nvidia-mps-gpus)
6753
6774
  """
6754
6775
  return pulumi.get(self, "gpu_sharing_strategy")
6755
6776
 
@@ -7071,6 +7092,44 @@ class ClusterNodeConfigSandboxConfigArgs:
7071
7092
  pulumi.set(self, "sandbox_type", value)
7072
7093
 
7073
7094
 
7095
+ @pulumi.input_type
7096
+ class ClusterNodeConfigSecondaryBootDiskArgs:
7097
+ def __init__(__self__, *,
7098
+ disk_image: pulumi.Input[str],
7099
+ mode: Optional[pulumi.Input[str]] = None):
7100
+ """
7101
+ :param pulumi.Input[str] disk_image: Path to disk image to create the secondary boot disk from. After using the [gke-disk-image-builder](https://github.com/GoogleCloudPlatform/ai-on-gke/tree/main/tools/gke-disk-image-builder), this argument should be `global/images/DISK_IMAGE_NAME`.
7102
+ :param pulumi.Input[str] mode: Mode for how the secondary boot disk is used. An example mode is `CONTAINER_IMAGE_CACHE`.
7103
+ """
7104
+ pulumi.set(__self__, "disk_image", disk_image)
7105
+ if mode is not None:
7106
+ pulumi.set(__self__, "mode", mode)
7107
+
7108
+ @property
7109
+ @pulumi.getter(name="diskImage")
7110
+ def disk_image(self) -> pulumi.Input[str]:
7111
+ """
7112
+ Path to disk image to create the secondary boot disk from. After using the [gke-disk-image-builder](https://github.com/GoogleCloudPlatform/ai-on-gke/tree/main/tools/gke-disk-image-builder), this argument should be `global/images/DISK_IMAGE_NAME`.
7113
+ """
7114
+ return pulumi.get(self, "disk_image")
7115
+
7116
+ @disk_image.setter
7117
+ def disk_image(self, value: pulumi.Input[str]):
7118
+ pulumi.set(self, "disk_image", value)
7119
+
7120
+ @property
7121
+ @pulumi.getter
7122
+ def mode(self) -> Optional[pulumi.Input[str]]:
7123
+ """
7124
+ Mode for how the secondary boot disk is used. An example mode is `CONTAINER_IMAGE_CACHE`.
7125
+ """
7126
+ return pulumi.get(self, "mode")
7127
+
7128
+ @mode.setter
7129
+ def mode(self, value: Optional[pulumi.Input[str]]):
7130
+ pulumi.set(self, "mode", value)
7131
+
7132
+
7074
7133
  @pulumi.input_type
7075
7134
  class ClusterNodeConfigShieldedInstanceConfigArgs:
7076
7135
  def __init__(__self__, *,
@@ -8174,6 +8233,7 @@ class ClusterNodePoolNodeConfigArgs:
8174
8233
  resource_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
8175
8234
  resource_manager_tags: Optional[pulumi.Input[Mapping[str, Any]]] = None,
8176
8235
  sandbox_config: Optional[pulumi.Input['ClusterNodePoolNodeConfigSandboxConfigArgs']] = None,
8236
+ secondary_boot_disks: Optional[pulumi.Input[Sequence[pulumi.Input['ClusterNodePoolNodeConfigSecondaryBootDiskArgs']]]] = None,
8177
8237
  service_account: Optional[pulumi.Input[str]] = None,
8178
8238
  shielded_instance_config: Optional[pulumi.Input['ClusterNodePoolNodeConfigShieldedInstanceConfigArgs']] = None,
8179
8239
  sole_tenant_config: Optional[pulumi.Input['ClusterNodePoolNodeConfigSoleTenantConfigArgs']] = None,
@@ -8259,6 +8319,7 @@ class ClusterNodePoolNodeConfigArgs:
8259
8319
  for how these labels are applied to clusters, node pools and nodes.
8260
8320
  :param pulumi.Input[Mapping[str, Any]] resource_manager_tags: A map of resource manager tag keys and values to be attached to the nodes for managing Compute Engine firewalls using Network Firewall Policies. Tags must be according to specifications found [here](https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications). A maximum of 5 tag key-value pairs can be specified. Existing tags will be replaced with new values. Tags must be in one of the following formats ([KEY]=[VALUE]) 1. `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2. `{org_id}/{tag_key_name}={tag_value_name}` 3. `{project_id}/{tag_key_name}={tag_value_name}`.
8261
8321
  :param pulumi.Input['ClusterNodePoolNodeConfigSandboxConfigArgs'] sandbox_config: Sandbox configuration for this node.
8322
+ :param pulumi.Input[Sequence[pulumi.Input['ClusterNodePoolNodeConfigSecondaryBootDiskArgs']]] secondary_boot_disks: Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. `gcfs_config` must be `enabled=true` for this feature to work. `min_master_version` must also be set to use GKE 1.28.3-gke.106700 or later versions.
8262
8323
  :param pulumi.Input[str] service_account: The service account to be used by the Node VMs.
8263
8324
  If not specified, the "default" service account is used.
8264
8325
  :param pulumi.Input['ClusterNodePoolNodeConfigShieldedInstanceConfigArgs'] shielded_instance_config: Shielded Instance options. Structure is documented below.
@@ -8341,6 +8402,8 @@ class ClusterNodePoolNodeConfigArgs:
8341
8402
  pulumi.set(__self__, "resource_manager_tags", resource_manager_tags)
8342
8403
  if sandbox_config is not None:
8343
8404
  pulumi.set(__self__, "sandbox_config", sandbox_config)
8405
+ if secondary_boot_disks is not None:
8406
+ pulumi.set(__self__, "secondary_boot_disks", secondary_boot_disks)
8344
8407
  if service_account is not None:
8345
8408
  pulumi.set(__self__, "service_account", service_account)
8346
8409
  if shielded_instance_config is not None:
@@ -8774,6 +8837,18 @@ class ClusterNodePoolNodeConfigArgs:
8774
8837
  def sandbox_config(self, value: Optional[pulumi.Input['ClusterNodePoolNodeConfigSandboxConfigArgs']]):
8775
8838
  pulumi.set(self, "sandbox_config", value)
8776
8839
 
8840
+ @property
8841
+ @pulumi.getter(name="secondaryBootDisks")
8842
+ def secondary_boot_disks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ClusterNodePoolNodeConfigSecondaryBootDiskArgs']]]]:
8843
+ """
8844
+ Parameters for secondary boot disks to preload container images and data on new nodes. Structure is documented below. `gcfs_config` must be `enabled=true` for this feature to work. `min_master_version` must also be set to use GKE 1.28.3-gke.106700 or later versions.
8845
+ """
8846
+ return pulumi.get(self, "secondary_boot_disks")
8847
+
8848
+ @secondary_boot_disks.setter
8849
+ def secondary_boot_disks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ClusterNodePoolNodeConfigSecondaryBootDiskArgs']]]]):
8850
+ pulumi.set(self, "secondary_boot_disks", value)
8851
+
8777
8852
  @property
8778
8853
  @pulumi.getter(name="serviceAccount")
8779
8854
  def service_account(self) -> Optional[pulumi.Input[str]]:
@@ -9186,6 +9261,7 @@ class ClusterNodePoolNodeConfigGuestAcceleratorGpuSharingConfigArgs:
9186
9261
  :param pulumi.Input[str] gpu_sharing_strategy: The type of GPU sharing strategy to enable on the GPU node.
9187
9262
  Accepted values are:
9188
9263
  * `"TIME_SHARING"`: Allow multiple containers to have [time-shared](https://cloud.google.com/kubernetes-engine/docs/concepts/timesharing-gpus) access to a single GPU device.
9264
+ * `"MPS"`: Enable co-operative multi-process CUDA workloads to run concurrently on a single GPU device with [MPS](https://cloud.google.com/kubernetes-engine/docs/how-to/nvidia-mps-gpus)
9189
9265
  :param pulumi.Input[int] max_shared_clients_per_gpu: The maximum number of containers that can share a GPU.
9190
9266
  """
9191
9267
  pulumi.set(__self__, "gpu_sharing_strategy", gpu_sharing_strategy)
@@ -9198,6 +9274,7 @@ class ClusterNodePoolNodeConfigGuestAcceleratorGpuSharingConfigArgs:
9198
9274
  The type of GPU sharing strategy to enable on the GPU node.
9199
9275
  Accepted values are:
9200
9276
  * `"TIME_SHARING"`: Allow multiple containers to have [time-shared](https://cloud.google.com/kubernetes-engine/docs/concepts/timesharing-gpus) access to a single GPU device.
9277
+ * `"MPS"`: Enable co-operative multi-process CUDA workloads to run concurrently on a single GPU device with [MPS](https://cloud.google.com/kubernetes-engine/docs/how-to/nvidia-mps-gpus)
9201
9278
  """
9202
9279
  return pulumi.get(self, "gpu_sharing_strategy")
9203
9280
 
@@ -9519,6 +9596,44 @@ class ClusterNodePoolNodeConfigSandboxConfigArgs:
9519
9596
  pulumi.set(self, "sandbox_type", value)
9520
9597
 
9521
9598
 
9599
+ @pulumi.input_type
9600
+ class ClusterNodePoolNodeConfigSecondaryBootDiskArgs:
9601
+ def __init__(__self__, *,
9602
+ disk_image: pulumi.Input[str],
9603
+ mode: Optional[pulumi.Input[str]] = None):
9604
+ """
9605
+ :param pulumi.Input[str] disk_image: Path to disk image to create the secondary boot disk from. After using the [gke-disk-image-builder](https://github.com/GoogleCloudPlatform/ai-on-gke/tree/main/tools/gke-disk-image-builder), this argument should be `global/images/DISK_IMAGE_NAME`.
9606
+ :param pulumi.Input[str] mode: Mode for how the secondary boot disk is used. An example mode is `CONTAINER_IMAGE_CACHE`.
9607
+ """
9608
+ pulumi.set(__self__, "disk_image", disk_image)
9609
+ if mode is not None:
9610
+ pulumi.set(__self__, "mode", mode)
9611
+
9612
+ @property
9613
+ @pulumi.getter(name="diskImage")
9614
+ def disk_image(self) -> pulumi.Input[str]:
9615
+ """
9616
+ Path to disk image to create the secondary boot disk from. After using the [gke-disk-image-builder](https://github.com/GoogleCloudPlatform/ai-on-gke/tree/main/tools/gke-disk-image-builder), this argument should be `global/images/DISK_IMAGE_NAME`.
9617
+ """
9618
+ return pulumi.get(self, "disk_image")
9619
+
9620
+ @disk_image.setter
9621
+ def disk_image(self, value: pulumi.Input[str]):
9622
+ pulumi.set(self, "disk_image", value)
9623
+
9624
+ @property
9625
+ @pulumi.getter
9626
+ def mode(self) -> Optional[pulumi.Input[str]]:
9627
+ """
9628
+ Mode for how the secondary boot disk is used. An example mode is `CONTAINER_IMAGE_CACHE`.
9629
+ """
9630
+ return pulumi.get(self, "mode")
9631
+
9632
+ @mode.setter
9633
+ def mode(self, value: Optional[pulumi.Input[str]]):
9634
+ pulumi.set(self, "mode", value)
9635
+
9636
+
9522
9637
  @pulumi.input_type
9523
9638
  class ClusterNodePoolNodeConfigShieldedInstanceConfigArgs:
9524
9639
  def __init__(__self__, *,
@@ -11097,6 +11212,7 @@ class NodePoolNodeConfigArgs:
11097
11212
  resource_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
11098
11213
  resource_manager_tags: Optional[pulumi.Input[Mapping[str, Any]]] = None,
11099
11214
  sandbox_config: Optional[pulumi.Input['NodePoolNodeConfigSandboxConfigArgs']] = None,
11215
+ secondary_boot_disks: Optional[pulumi.Input[Sequence[pulumi.Input['NodePoolNodeConfigSecondaryBootDiskArgs']]]] = None,
11100
11216
  service_account: Optional[pulumi.Input[str]] = None,
11101
11217
  shielded_instance_config: Optional[pulumi.Input['NodePoolNodeConfigShieldedInstanceConfigArgs']] = None,
11102
11218
  sole_tenant_config: Optional[pulumi.Input['NodePoolNodeConfigSoleTenantConfigArgs']] = None,
@@ -11136,6 +11252,7 @@ class NodePoolNodeConfigArgs:
11136
11252
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_labels: The GCE resource labels (a map of key/value pairs) to be applied to the node pool.
11137
11253
  :param pulumi.Input[Mapping[str, Any]] resource_manager_tags: A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored (both PUT & PATCH) when empty.
11138
11254
  :param pulumi.Input['NodePoolNodeConfigSandboxConfigArgs'] sandbox_config: Sandbox configuration for this node.
11255
+ :param pulumi.Input[Sequence[pulumi.Input['NodePoolNodeConfigSecondaryBootDiskArgs']]] secondary_boot_disks: Secondary boot disks for preloading data or container images.
11139
11256
  :param pulumi.Input[str] service_account: The Google Cloud Platform Service Account to be used by the node VMs.
11140
11257
  :param pulumi.Input['NodePoolNodeConfigShieldedInstanceConfigArgs'] shielded_instance_config: Shielded Instance options.
11141
11258
  :param pulumi.Input['NodePoolNodeConfigSoleTenantConfigArgs'] sole_tenant_config: Node affinity options for sole tenant node pools.
@@ -11206,6 +11323,8 @@ class NodePoolNodeConfigArgs:
11206
11323
  pulumi.set(__self__, "resource_manager_tags", resource_manager_tags)
11207
11324
  if sandbox_config is not None:
11208
11325
  pulumi.set(__self__, "sandbox_config", sandbox_config)
11326
+ if secondary_boot_disks is not None:
11327
+ pulumi.set(__self__, "secondary_boot_disks", secondary_boot_disks)
11209
11328
  if service_account is not None:
11210
11329
  pulumi.set(__self__, "service_account", service_account)
11211
11330
  if shielded_instance_config is not None:
@@ -11593,6 +11712,18 @@ class NodePoolNodeConfigArgs:
11593
11712
  def sandbox_config(self, value: Optional[pulumi.Input['NodePoolNodeConfigSandboxConfigArgs']]):
11594
11713
  pulumi.set(self, "sandbox_config", value)
11595
11714
 
11715
+ @property
11716
+ @pulumi.getter(name="secondaryBootDisks")
11717
+ def secondary_boot_disks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['NodePoolNodeConfigSecondaryBootDiskArgs']]]]:
11718
+ """
11719
+ Secondary boot disks for preloading data or container images.
11720
+ """
11721
+ return pulumi.get(self, "secondary_boot_disks")
11722
+
11723
+ @secondary_boot_disks.setter
11724
+ def secondary_boot_disks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['NodePoolNodeConfigSecondaryBootDiskArgs']]]]):
11725
+ pulumi.set(self, "secondary_boot_disks", value)
11726
+
11596
11727
  @property
11597
11728
  @pulumi.getter(name="serviceAccount")
11598
11729
  def service_account(self) -> Optional[pulumi.Input[str]]:
@@ -12262,6 +12393,44 @@ class NodePoolNodeConfigSandboxConfigArgs:
12262
12393
  pulumi.set(self, "sandbox_type", value)
12263
12394
 
12264
12395
 
12396
+ @pulumi.input_type
12397
+ class NodePoolNodeConfigSecondaryBootDiskArgs:
12398
+ def __init__(__self__, *,
12399
+ disk_image: pulumi.Input[str],
12400
+ mode: Optional[pulumi.Input[str]] = None):
12401
+ """
12402
+ :param pulumi.Input[str] disk_image: Disk image to create the secondary boot disk from
12403
+ :param pulumi.Input[str] mode: Mode for how the secondary boot disk is used.
12404
+ """
12405
+ pulumi.set(__self__, "disk_image", disk_image)
12406
+ if mode is not None:
12407
+ pulumi.set(__self__, "mode", mode)
12408
+
12409
+ @property
12410
+ @pulumi.getter(name="diskImage")
12411
+ def disk_image(self) -> pulumi.Input[str]:
12412
+ """
12413
+ Disk image to create the secondary boot disk from
12414
+ """
12415
+ return pulumi.get(self, "disk_image")
12416
+
12417
+ @disk_image.setter
12418
+ def disk_image(self, value: pulumi.Input[str]):
12419
+ pulumi.set(self, "disk_image", value)
12420
+
12421
+ @property
12422
+ @pulumi.getter
12423
+ def mode(self) -> Optional[pulumi.Input[str]]:
12424
+ """
12425
+ Mode for how the secondary boot disk is used.
12426
+ """
12427
+ return pulumi.get(self, "mode")
12428
+
12429
+ @mode.setter
12430
+ def mode(self, value: Optional[pulumi.Input[str]]):
12431
+ pulumi.set(self, "mode", value)
12432
+
12433
+
12265
12434
  @pulumi.input_type
12266
12435
  class NodePoolNodeConfigShieldedInstanceConfigArgs:
12267
12436
  def __init__(__self__, *,