pulumi-gcp 7.34.0a1722421695__py3-none-any.whl → 7.35.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.

Potentially problematic release.


This version of pulumi-gcp might be problematic. Click here for more details.

Files changed (96) hide show
  1. pulumi_gcp/__init__.py +40 -0
  2. pulumi_gcp/accesscontextmanager/_inputs.py +12 -3
  3. pulumi_gcp/accesscontextmanager/access_policy.py +18 -18
  4. pulumi_gcp/accesscontextmanager/outputs.py +8 -2
  5. pulumi_gcp/alloydb/_inputs.py +174 -0
  6. pulumi_gcp/alloydb/instance.py +54 -0
  7. pulumi_gcp/alloydb/outputs.py +133 -0
  8. pulumi_gcp/apigee/__init__.py +2 -0
  9. pulumi_gcp/apigee/environment_keyvaluemaps.py +370 -0
  10. pulumi_gcp/apigee/environment_keyvaluemaps_entries.py +440 -0
  11. pulumi_gcp/apigee/instance.py +2 -2
  12. pulumi_gcp/apigee/nat_address.py +2 -2
  13. pulumi_gcp/apigee/organization.py +4 -4
  14. pulumi_gcp/apphub/service_project_attachment.py +11 -11
  15. pulumi_gcp/bigquery/_inputs.py +36 -0
  16. pulumi_gcp/bigquery/app_profile.py +54 -0
  17. pulumi_gcp/bigquery/data_transfer_config.py +52 -0
  18. pulumi_gcp/bigquery/outputs.py +38 -0
  19. pulumi_gcp/bigquery/reservation.py +34 -4
  20. pulumi_gcp/bigquery/table.py +65 -21
  21. pulumi_gcp/bigtable/table.py +27 -26
  22. pulumi_gcp/certificateauthority/authority.py +4 -4
  23. pulumi_gcp/cloudfunctions/function.py +47 -0
  24. pulumi_gcp/cloudfunctions/get_function.py +11 -1
  25. pulumi_gcp/cloudfunctionsv2/function.py +2 -2
  26. pulumi_gcp/cloudrun/_inputs.py +24 -21
  27. pulumi_gcp/cloudrun/outputs.py +20 -24
  28. pulumi_gcp/cloudrunv2/_inputs.py +3 -0
  29. pulumi_gcp/cloudrunv2/outputs.py +4 -0
  30. pulumi_gcp/compute/__init__.py +2 -0
  31. pulumi_gcp/compute/_inputs.py +2358 -353
  32. pulumi_gcp/compute/backend_service.py +6 -0
  33. pulumi_gcp/compute/disk.py +75 -0
  34. pulumi_gcp/compute/get_disk.py +11 -1
  35. pulumi_gcp/compute/get_hc_vpn_gateway.py +11 -1
  36. pulumi_gcp/compute/get_instance_template.py +2 -2
  37. pulumi_gcp/compute/get_region_instance_template.py +2 -2
  38. pulumi_gcp/compute/get_snapshot.py +2 -2
  39. pulumi_gcp/compute/ha_vpn_gateway.py +68 -7
  40. pulumi_gcp/compute/outputs.py +1490 -31
  41. pulumi_gcp/compute/public_advertised_prefix.py +30 -2
  42. pulumi_gcp/compute/resize_request.py +782 -0
  43. pulumi_gcp/compute/router_peer.py +437 -0
  44. pulumi_gcp/compute/router_route_policy.py +616 -0
  45. pulumi_gcp/compute/service_attachment.py +7 -14
  46. pulumi_gcp/container/_inputs.py +218 -21
  47. pulumi_gcp/container/node_pool.py +0 -14
  48. pulumi_gcp/container/outputs.py +228 -14
  49. pulumi_gcp/databasemigrationservice/private_connection.py +10 -6
  50. pulumi_gcp/dataloss/_inputs.py +707 -21
  51. pulumi_gcp/dataloss/outputs.py +588 -14
  52. pulumi_gcp/datastore/data_store_index.py +24 -12
  53. pulumi_gcp/datastream/_inputs.py +83 -3
  54. pulumi_gcp/datastream/outputs.py +51 -3
  55. pulumi_gcp/datastream/stream.py +170 -0
  56. pulumi_gcp/firebase/database_instance.py +8 -8
  57. pulumi_gcp/firebase/hosting_site.py +8 -8
  58. pulumi_gcp/firebase/project.py +10 -2
  59. pulumi_gcp/firestore/index.py +10 -10
  60. pulumi_gcp/gkeonprem/_inputs.py +78 -78
  61. pulumi_gcp/gkeonprem/outputs.py +52 -52
  62. pulumi_gcp/iap/client.py +4 -4
  63. pulumi_gcp/integrationconnectors/_inputs.py +30 -30
  64. pulumi_gcp/integrationconnectors/outputs.py +20 -20
  65. pulumi_gcp/kms/key_handle.py +7 -7
  66. pulumi_gcp/migrationcenter/_inputs.py +21 -129
  67. pulumi_gcp/migrationcenter/outputs.py +14 -86
  68. pulumi_gcp/netapp/volume.py +1 -1
  69. pulumi_gcp/networkconnectivity/_inputs.py +3 -6
  70. pulumi_gcp/networkconnectivity/hub.py +129 -49
  71. pulumi_gcp/networkconnectivity/outputs.py +2 -4
  72. pulumi_gcp/networkconnectivity/spoke.py +159 -104
  73. pulumi_gcp/networksecurity/tls_inspection_policy.py +2 -2
  74. pulumi_gcp/organizations/project.py +16 -7
  75. pulumi_gcp/orgpolicy/policy.py +4 -4
  76. pulumi_gcp/projects/get_project_service.py +11 -1
  77. pulumi_gcp/projects/service.py +68 -0
  78. pulumi_gcp/projects/service_identity.py +30 -2
  79. pulumi_gcp/pubsub/subscription.py +6 -6
  80. pulumi_gcp/pulumi-plugin.json +1 -1
  81. pulumi_gcp/securesourcemanager/instance.py +528 -4
  82. pulumi_gcp/securitycenter/__init__.py +1 -0
  83. pulumi_gcp/securitycenter/v2_organization_mute_config.py +673 -0
  84. pulumi_gcp/sql/_inputs.py +35 -15
  85. pulumi_gcp/sql/database_instance.py +2 -2
  86. pulumi_gcp/sql/outputs.py +50 -14
  87. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
  88. pulumi_gcp/vmwareengine/get_private_cloud.py +21 -1
  89. pulumi_gcp/vmwareengine/private_cloud.py +121 -2
  90. pulumi_gcp/workbench/_inputs.py +77 -0
  91. pulumi_gcp/workbench/instance.py +18 -4
  92. pulumi_gcp/workbench/outputs.py +67 -1
  93. {pulumi_gcp-7.34.0a1722421695.dist-info → pulumi_gcp-7.35.0.dist-info}/METADATA +1 -1
  94. {pulumi_gcp-7.34.0a1722421695.dist-info → pulumi_gcp-7.35.0.dist-info}/RECORD +96 -91
  95. {pulumi_gcp-7.34.0a1722421695.dist-info → pulumi_gcp-7.35.0.dist-info}/WHEEL +0 -0
  96. {pulumi_gcp-7.34.0a1722421695.dist-info → pulumi_gcp-7.35.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,782 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from .. import _utilities
16
+ from . import outputs
17
+ from ._inputs import *
18
+
19
+ __all__ = ['ResizeRequestArgs', 'ResizeRequest']
20
+
21
+ @pulumi.input_type
22
+ class ResizeRequestArgs:
23
+ def __init__(__self__, *,
24
+ instance_group_manager: pulumi.Input[str],
25
+ resize_by: pulumi.Input[int],
26
+ zone: pulumi.Input[str],
27
+ description: Optional[pulumi.Input[str]] = None,
28
+ name: Optional[pulumi.Input[str]] = None,
29
+ project: Optional[pulumi.Input[str]] = None,
30
+ requested_run_duration: Optional[pulumi.Input['ResizeRequestRequestedRunDurationArgs']] = None):
31
+ """
32
+ The set of arguments for constructing a ResizeRequest resource.
33
+ :param pulumi.Input[str] instance_group_manager: The name of the managed instance group. The name should conform to RFC1035 or be a resource ID.
34
+ Authorization requires the following IAM permission on the specified resource instanceGroupManager:
35
+ *compute.instanceGroupManagers.update
36
+
37
+
38
+ - - -
39
+ :param pulumi.Input[int] resize_by: The number of instances to be created by this resize request. The group's target size will be increased by this number.
40
+ :param pulumi.Input[str] zone: Name of the compute zone scoping this request. Name should conform to RFC1035.
41
+ :param pulumi.Input[str] description: An optional description of this resize-request.
42
+ :param pulumi.Input[str] name: The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035.
43
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
44
+ If it is not provided, the provider project is used.
45
+ :param pulumi.Input['ResizeRequestRequestedRunDurationArgs'] requested_run_duration: Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted.
46
+ Structure is documented below.
47
+ """
48
+ pulumi.set(__self__, "instance_group_manager", instance_group_manager)
49
+ pulumi.set(__self__, "resize_by", resize_by)
50
+ pulumi.set(__self__, "zone", zone)
51
+ if description is not None:
52
+ pulumi.set(__self__, "description", description)
53
+ if name is not None:
54
+ pulumi.set(__self__, "name", name)
55
+ if project is not None:
56
+ pulumi.set(__self__, "project", project)
57
+ if requested_run_duration is not None:
58
+ pulumi.set(__self__, "requested_run_duration", requested_run_duration)
59
+
60
+ @property
61
+ @pulumi.getter(name="instanceGroupManager")
62
+ def instance_group_manager(self) -> pulumi.Input[str]:
63
+ """
64
+ The name of the managed instance group. The name should conform to RFC1035 or be a resource ID.
65
+ Authorization requires the following IAM permission on the specified resource instanceGroupManager:
66
+ *compute.instanceGroupManagers.update
67
+
68
+
69
+ - - -
70
+ """
71
+ return pulumi.get(self, "instance_group_manager")
72
+
73
+ @instance_group_manager.setter
74
+ def instance_group_manager(self, value: pulumi.Input[str]):
75
+ pulumi.set(self, "instance_group_manager", value)
76
+
77
+ @property
78
+ @pulumi.getter(name="resizeBy")
79
+ def resize_by(self) -> pulumi.Input[int]:
80
+ """
81
+ The number of instances to be created by this resize request. The group's target size will be increased by this number.
82
+ """
83
+ return pulumi.get(self, "resize_by")
84
+
85
+ @resize_by.setter
86
+ def resize_by(self, value: pulumi.Input[int]):
87
+ pulumi.set(self, "resize_by", value)
88
+
89
+ @property
90
+ @pulumi.getter
91
+ def zone(self) -> pulumi.Input[str]:
92
+ """
93
+ Name of the compute zone scoping this request. Name should conform to RFC1035.
94
+ """
95
+ return pulumi.get(self, "zone")
96
+
97
+ @zone.setter
98
+ def zone(self, value: pulumi.Input[str]):
99
+ pulumi.set(self, "zone", value)
100
+
101
+ @property
102
+ @pulumi.getter
103
+ def description(self) -> Optional[pulumi.Input[str]]:
104
+ """
105
+ An optional description of this resize-request.
106
+ """
107
+ return pulumi.get(self, "description")
108
+
109
+ @description.setter
110
+ def description(self, value: Optional[pulumi.Input[str]]):
111
+ pulumi.set(self, "description", value)
112
+
113
+ @property
114
+ @pulumi.getter
115
+ def name(self) -> Optional[pulumi.Input[str]]:
116
+ """
117
+ The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035.
118
+ """
119
+ return pulumi.get(self, "name")
120
+
121
+ @name.setter
122
+ def name(self, value: Optional[pulumi.Input[str]]):
123
+ pulumi.set(self, "name", value)
124
+
125
+ @property
126
+ @pulumi.getter
127
+ def project(self) -> Optional[pulumi.Input[str]]:
128
+ """
129
+ The ID of the project in which the resource belongs.
130
+ If it is not provided, the provider project is used.
131
+ """
132
+ return pulumi.get(self, "project")
133
+
134
+ @project.setter
135
+ def project(self, value: Optional[pulumi.Input[str]]):
136
+ pulumi.set(self, "project", value)
137
+
138
+ @property
139
+ @pulumi.getter(name="requestedRunDuration")
140
+ def requested_run_duration(self) -> Optional[pulumi.Input['ResizeRequestRequestedRunDurationArgs']]:
141
+ """
142
+ Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted.
143
+ Structure is documented below.
144
+ """
145
+ return pulumi.get(self, "requested_run_duration")
146
+
147
+ @requested_run_duration.setter
148
+ def requested_run_duration(self, value: Optional[pulumi.Input['ResizeRequestRequestedRunDurationArgs']]):
149
+ pulumi.set(self, "requested_run_duration", value)
150
+
151
+
152
+ @pulumi.input_type
153
+ class _ResizeRequestState:
154
+ def __init__(__self__, *,
155
+ creation_timestamp: Optional[pulumi.Input[str]] = None,
156
+ description: Optional[pulumi.Input[str]] = None,
157
+ instance_group_manager: Optional[pulumi.Input[str]] = None,
158
+ name: Optional[pulumi.Input[str]] = None,
159
+ project: Optional[pulumi.Input[str]] = None,
160
+ requested_run_duration: Optional[pulumi.Input['ResizeRequestRequestedRunDurationArgs']] = None,
161
+ resize_by: Optional[pulumi.Input[int]] = None,
162
+ state: Optional[pulumi.Input[str]] = None,
163
+ statuses: Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusArgs']]]] = None,
164
+ zone: Optional[pulumi.Input[str]] = None):
165
+ """
166
+ Input properties used for looking up and filtering ResizeRequest resources.
167
+ :param pulumi.Input[str] creation_timestamp: The creation timestamp for this resize request in RFC3339 text format.
168
+ :param pulumi.Input[str] description: An optional description of this resize-request.
169
+ :param pulumi.Input[str] instance_group_manager: The name of the managed instance group. The name should conform to RFC1035 or be a resource ID.
170
+ Authorization requires the following IAM permission on the specified resource instanceGroupManager:
171
+ *compute.instanceGroupManagers.update
172
+
173
+
174
+ - - -
175
+ :param pulumi.Input[str] name: The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035.
176
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
177
+ If it is not provided, the provider project is used.
178
+ :param pulumi.Input['ResizeRequestRequestedRunDurationArgs'] requested_run_duration: Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted.
179
+ Structure is documented below.
180
+ :param pulumi.Input[int] resize_by: The number of instances to be created by this resize request. The group's target size will be increased by this number.
181
+ :param pulumi.Input[str] state: [Output only] Current state of the request.
182
+ :param pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusArgs']]] statuses: [Output only] Status of the request.
183
+ Structure is documented below.
184
+ :param pulumi.Input[str] zone: Name of the compute zone scoping this request. Name should conform to RFC1035.
185
+ """
186
+ if creation_timestamp is not None:
187
+ pulumi.set(__self__, "creation_timestamp", creation_timestamp)
188
+ if description is not None:
189
+ pulumi.set(__self__, "description", description)
190
+ if instance_group_manager is not None:
191
+ pulumi.set(__self__, "instance_group_manager", instance_group_manager)
192
+ if name is not None:
193
+ pulumi.set(__self__, "name", name)
194
+ if project is not None:
195
+ pulumi.set(__self__, "project", project)
196
+ if requested_run_duration is not None:
197
+ pulumi.set(__self__, "requested_run_duration", requested_run_duration)
198
+ if resize_by is not None:
199
+ pulumi.set(__self__, "resize_by", resize_by)
200
+ if state is not None:
201
+ pulumi.set(__self__, "state", state)
202
+ if statuses is not None:
203
+ pulumi.set(__self__, "statuses", statuses)
204
+ if zone is not None:
205
+ pulumi.set(__self__, "zone", zone)
206
+
207
+ @property
208
+ @pulumi.getter(name="creationTimestamp")
209
+ def creation_timestamp(self) -> Optional[pulumi.Input[str]]:
210
+ """
211
+ The creation timestamp for this resize request in RFC3339 text format.
212
+ """
213
+ return pulumi.get(self, "creation_timestamp")
214
+
215
+ @creation_timestamp.setter
216
+ def creation_timestamp(self, value: Optional[pulumi.Input[str]]):
217
+ pulumi.set(self, "creation_timestamp", value)
218
+
219
+ @property
220
+ @pulumi.getter
221
+ def description(self) -> Optional[pulumi.Input[str]]:
222
+ """
223
+ An optional description of this resize-request.
224
+ """
225
+ return pulumi.get(self, "description")
226
+
227
+ @description.setter
228
+ def description(self, value: Optional[pulumi.Input[str]]):
229
+ pulumi.set(self, "description", value)
230
+
231
+ @property
232
+ @pulumi.getter(name="instanceGroupManager")
233
+ def instance_group_manager(self) -> Optional[pulumi.Input[str]]:
234
+ """
235
+ The name of the managed instance group. The name should conform to RFC1035 or be a resource ID.
236
+ Authorization requires the following IAM permission on the specified resource instanceGroupManager:
237
+ *compute.instanceGroupManagers.update
238
+
239
+
240
+ - - -
241
+ """
242
+ return pulumi.get(self, "instance_group_manager")
243
+
244
+ @instance_group_manager.setter
245
+ def instance_group_manager(self, value: Optional[pulumi.Input[str]]):
246
+ pulumi.set(self, "instance_group_manager", value)
247
+
248
+ @property
249
+ @pulumi.getter
250
+ def name(self) -> Optional[pulumi.Input[str]]:
251
+ """
252
+ The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035.
253
+ """
254
+ return pulumi.get(self, "name")
255
+
256
+ @name.setter
257
+ def name(self, value: Optional[pulumi.Input[str]]):
258
+ pulumi.set(self, "name", value)
259
+
260
+ @property
261
+ @pulumi.getter
262
+ def project(self) -> Optional[pulumi.Input[str]]:
263
+ """
264
+ The ID of the project in which the resource belongs.
265
+ If it is not provided, the provider project is used.
266
+ """
267
+ return pulumi.get(self, "project")
268
+
269
+ @project.setter
270
+ def project(self, value: Optional[pulumi.Input[str]]):
271
+ pulumi.set(self, "project", value)
272
+
273
+ @property
274
+ @pulumi.getter(name="requestedRunDuration")
275
+ def requested_run_duration(self) -> Optional[pulumi.Input['ResizeRequestRequestedRunDurationArgs']]:
276
+ """
277
+ Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted.
278
+ Structure is documented below.
279
+ """
280
+ return pulumi.get(self, "requested_run_duration")
281
+
282
+ @requested_run_duration.setter
283
+ def requested_run_duration(self, value: Optional[pulumi.Input['ResizeRequestRequestedRunDurationArgs']]):
284
+ pulumi.set(self, "requested_run_duration", value)
285
+
286
+ @property
287
+ @pulumi.getter(name="resizeBy")
288
+ def resize_by(self) -> Optional[pulumi.Input[int]]:
289
+ """
290
+ The number of instances to be created by this resize request. The group's target size will be increased by this number.
291
+ """
292
+ return pulumi.get(self, "resize_by")
293
+
294
+ @resize_by.setter
295
+ def resize_by(self, value: Optional[pulumi.Input[int]]):
296
+ pulumi.set(self, "resize_by", value)
297
+
298
+ @property
299
+ @pulumi.getter
300
+ def state(self) -> Optional[pulumi.Input[str]]:
301
+ """
302
+ [Output only] Current state of the request.
303
+ """
304
+ return pulumi.get(self, "state")
305
+
306
+ @state.setter
307
+ def state(self, value: Optional[pulumi.Input[str]]):
308
+ pulumi.set(self, "state", value)
309
+
310
+ @property
311
+ @pulumi.getter
312
+ def statuses(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusArgs']]]]:
313
+ """
314
+ [Output only] Status of the request.
315
+ Structure is documented below.
316
+ """
317
+ return pulumi.get(self, "statuses")
318
+
319
+ @statuses.setter
320
+ def statuses(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ResizeRequestStatusArgs']]]]):
321
+ pulumi.set(self, "statuses", value)
322
+
323
+ @property
324
+ @pulumi.getter
325
+ def zone(self) -> Optional[pulumi.Input[str]]:
326
+ """
327
+ Name of the compute zone scoping this request. Name should conform to RFC1035.
328
+ """
329
+ return pulumi.get(self, "zone")
330
+
331
+ @zone.setter
332
+ def zone(self, value: Optional[pulumi.Input[str]]):
333
+ pulumi.set(self, "zone", value)
334
+
335
+
336
+ class ResizeRequest(pulumi.CustomResource):
337
+ @overload
338
+ def __init__(__self__,
339
+ resource_name: str,
340
+ opts: Optional[pulumi.ResourceOptions] = None,
341
+ description: Optional[pulumi.Input[str]] = None,
342
+ instance_group_manager: Optional[pulumi.Input[str]] = None,
343
+ name: Optional[pulumi.Input[str]] = None,
344
+ project: Optional[pulumi.Input[str]] = None,
345
+ requested_run_duration: Optional[pulumi.Input[Union['ResizeRequestRequestedRunDurationArgs', 'ResizeRequestRequestedRunDurationArgsDict']]] = None,
346
+ resize_by: Optional[pulumi.Input[int]] = None,
347
+ zone: Optional[pulumi.Input[str]] = None,
348
+ __props__=None):
349
+ """
350
+ Represents a Managed Instance Group Resize Request
351
+
352
+ Resize Requests are the Managed Instance Group implementation of Dynamic Workload Scheduler Flex Start.
353
+
354
+ With Dynamic Workload Scheduler in Flex Start mode, you submit a GPU capacity request for your AI/ML jobs by indicating how many you need, a duration, and your preferred region. Dynamic Workload Scheduler intelligently persists the request; once the capacity becomes available, it automatically provisions your VMs enabling your workloads to run continuously for the entire duration of the capacity allocation.
355
+
356
+ To get more information about ResizeRequest, see:
357
+
358
+ * [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagerResizeRequests)
359
+ * How-to Guides
360
+ * [QUICKSTART_TITLE](https://cloud.google.com/compute/docs/instance-groups/create-resize-requests-mig)
361
+
362
+ ## Example Usage
363
+
364
+ ### Compute Mig Resize Request
365
+
366
+ ```python
367
+ import pulumi
368
+ import pulumi_gcp as gcp
369
+
370
+ a3_dws = gcp.compute.RegionInstanceTemplate("a3_dws",
371
+ name="a3-dws",
372
+ region="us-central1",
373
+ description="This template is used to create a mig instance that is compatible with DWS resize requests.",
374
+ instance_description="A3 GPU",
375
+ machine_type="a3-highgpu-8g",
376
+ can_ip_forward=False,
377
+ scheduling={
378
+ "automatic_restart": False,
379
+ "on_host_maintenance": "TERMINATE",
380
+ },
381
+ disks=[{
382
+ "source_image": "cos-cloud/cos-105-lts",
383
+ "auto_delete": True,
384
+ "boot": True,
385
+ "disk_type": "pd-ssd",
386
+ "disk_size_gb": 960,
387
+ "mode": "READ_WRITE",
388
+ }],
389
+ guest_accelerators=[{
390
+ "type": "nvidia-h100-80gb",
391
+ "count": 8,
392
+ }],
393
+ reservation_affinity={
394
+ "type": "NO_RESERVATION",
395
+ },
396
+ shielded_instance_config={
397
+ "enable_vtpm": True,
398
+ "enable_integrity_monitoring": True,
399
+ },
400
+ network_interfaces=[{
401
+ "network": "default",
402
+ }])
403
+ a3_dws_instance_group_manager = gcp.compute.InstanceGroupManager("a3_dws",
404
+ name="a3-dws",
405
+ base_instance_name="a3-dws",
406
+ zone="us-central1-a",
407
+ versions=[{
408
+ "instance_template": a3_dws.self_link,
409
+ }],
410
+ instance_lifecycle_policy={
411
+ "default_action_on_failure": "DO_NOTHING",
412
+ },
413
+ wait_for_instances=False)
414
+ a3_resize_request = gcp.compute.ResizeRequest("a3_resize_request",
415
+ name="a3-dws",
416
+ instance_group_manager=a3_dws_instance_group_manager.name,
417
+ zone="us-central1-a",
418
+ description="Test resize request resource",
419
+ resize_by=2,
420
+ requested_run_duration={
421
+ "seconds": "14400",
422
+ "nanos": 0,
423
+ })
424
+ ```
425
+
426
+ ## Import
427
+
428
+ ResizeRequest can be imported using any of these accepted formats:
429
+
430
+ * `projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/resizeRequests/{{name}}`
431
+
432
+ * `{{project}}/{{zone}}/{{instance_group_manager}}/{{name}}`
433
+
434
+ * `{{zone}}/{{instance_group_manager}}/{{name}}`
435
+
436
+ * `{{instance_group_manager}}/{{name}}`
437
+
438
+ When using the `pulumi import` command, ResizeRequest can be imported using one of the formats above. For example:
439
+
440
+ ```sh
441
+ $ pulumi import gcp:compute/resizeRequest:ResizeRequest default projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/resizeRequests/{{name}}
442
+ ```
443
+
444
+ ```sh
445
+ $ pulumi import gcp:compute/resizeRequest:ResizeRequest default {{project}}/{{zone}}/{{instance_group_manager}}/{{name}}
446
+ ```
447
+
448
+ ```sh
449
+ $ pulumi import gcp:compute/resizeRequest:ResizeRequest default {{zone}}/{{instance_group_manager}}/{{name}}
450
+ ```
451
+
452
+ ```sh
453
+ $ pulumi import gcp:compute/resizeRequest:ResizeRequest default {{instance_group_manager}}/{{name}}
454
+ ```
455
+
456
+ :param str resource_name: The name of the resource.
457
+ :param pulumi.ResourceOptions opts: Options for the resource.
458
+ :param pulumi.Input[str] description: An optional description of this resize-request.
459
+ :param pulumi.Input[str] instance_group_manager: The name of the managed instance group. The name should conform to RFC1035 or be a resource ID.
460
+ Authorization requires the following IAM permission on the specified resource instanceGroupManager:
461
+ *compute.instanceGroupManagers.update
462
+
463
+
464
+ - - -
465
+ :param pulumi.Input[str] name: The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035.
466
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
467
+ If it is not provided, the provider project is used.
468
+ :param pulumi.Input[Union['ResizeRequestRequestedRunDurationArgs', 'ResizeRequestRequestedRunDurationArgsDict']] requested_run_duration: Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted.
469
+ Structure is documented below.
470
+ :param pulumi.Input[int] resize_by: The number of instances to be created by this resize request. The group's target size will be increased by this number.
471
+ :param pulumi.Input[str] zone: Name of the compute zone scoping this request. Name should conform to RFC1035.
472
+ """
473
+ ...
474
+ @overload
475
+ def __init__(__self__,
476
+ resource_name: str,
477
+ args: ResizeRequestArgs,
478
+ opts: Optional[pulumi.ResourceOptions] = None):
479
+ """
480
+ Represents a Managed Instance Group Resize Request
481
+
482
+ Resize Requests are the Managed Instance Group implementation of Dynamic Workload Scheduler Flex Start.
483
+
484
+ With Dynamic Workload Scheduler in Flex Start mode, you submit a GPU capacity request for your AI/ML jobs by indicating how many you need, a duration, and your preferred region. Dynamic Workload Scheduler intelligently persists the request; once the capacity becomes available, it automatically provisions your VMs enabling your workloads to run continuously for the entire duration of the capacity allocation.
485
+
486
+ To get more information about ResizeRequest, see:
487
+
488
+ * [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagerResizeRequests)
489
+ * How-to Guides
490
+ * [QUICKSTART_TITLE](https://cloud.google.com/compute/docs/instance-groups/create-resize-requests-mig)
491
+
492
+ ## Example Usage
493
+
494
+ ### Compute Mig Resize Request
495
+
496
+ ```python
497
+ import pulumi
498
+ import pulumi_gcp as gcp
499
+
500
+ a3_dws = gcp.compute.RegionInstanceTemplate("a3_dws",
501
+ name="a3-dws",
502
+ region="us-central1",
503
+ description="This template is used to create a mig instance that is compatible with DWS resize requests.",
504
+ instance_description="A3 GPU",
505
+ machine_type="a3-highgpu-8g",
506
+ can_ip_forward=False,
507
+ scheduling={
508
+ "automatic_restart": False,
509
+ "on_host_maintenance": "TERMINATE",
510
+ },
511
+ disks=[{
512
+ "source_image": "cos-cloud/cos-105-lts",
513
+ "auto_delete": True,
514
+ "boot": True,
515
+ "disk_type": "pd-ssd",
516
+ "disk_size_gb": 960,
517
+ "mode": "READ_WRITE",
518
+ }],
519
+ guest_accelerators=[{
520
+ "type": "nvidia-h100-80gb",
521
+ "count": 8,
522
+ }],
523
+ reservation_affinity={
524
+ "type": "NO_RESERVATION",
525
+ },
526
+ shielded_instance_config={
527
+ "enable_vtpm": True,
528
+ "enable_integrity_monitoring": True,
529
+ },
530
+ network_interfaces=[{
531
+ "network": "default",
532
+ }])
533
+ a3_dws_instance_group_manager = gcp.compute.InstanceGroupManager("a3_dws",
534
+ name="a3-dws",
535
+ base_instance_name="a3-dws",
536
+ zone="us-central1-a",
537
+ versions=[{
538
+ "instance_template": a3_dws.self_link,
539
+ }],
540
+ instance_lifecycle_policy={
541
+ "default_action_on_failure": "DO_NOTHING",
542
+ },
543
+ wait_for_instances=False)
544
+ a3_resize_request = gcp.compute.ResizeRequest("a3_resize_request",
545
+ name="a3-dws",
546
+ instance_group_manager=a3_dws_instance_group_manager.name,
547
+ zone="us-central1-a",
548
+ description="Test resize request resource",
549
+ resize_by=2,
550
+ requested_run_duration={
551
+ "seconds": "14400",
552
+ "nanos": 0,
553
+ })
554
+ ```
555
+
556
+ ## Import
557
+
558
+ ResizeRequest can be imported using any of these accepted formats:
559
+
560
+ * `projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/resizeRequests/{{name}}`
561
+
562
+ * `{{project}}/{{zone}}/{{instance_group_manager}}/{{name}}`
563
+
564
+ * `{{zone}}/{{instance_group_manager}}/{{name}}`
565
+
566
+ * `{{instance_group_manager}}/{{name}}`
567
+
568
+ When using the `pulumi import` command, ResizeRequest can be imported using one of the formats above. For example:
569
+
570
+ ```sh
571
+ $ pulumi import gcp:compute/resizeRequest:ResizeRequest default projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/resizeRequests/{{name}}
572
+ ```
573
+
574
+ ```sh
575
+ $ pulumi import gcp:compute/resizeRequest:ResizeRequest default {{project}}/{{zone}}/{{instance_group_manager}}/{{name}}
576
+ ```
577
+
578
+ ```sh
579
+ $ pulumi import gcp:compute/resizeRequest:ResizeRequest default {{zone}}/{{instance_group_manager}}/{{name}}
580
+ ```
581
+
582
+ ```sh
583
+ $ pulumi import gcp:compute/resizeRequest:ResizeRequest default {{instance_group_manager}}/{{name}}
584
+ ```
585
+
586
+ :param str resource_name: The name of the resource.
587
+ :param ResizeRequestArgs args: The arguments to use to populate this resource's properties.
588
+ :param pulumi.ResourceOptions opts: Options for the resource.
589
+ """
590
+ ...
591
+ def __init__(__self__, resource_name: str, *args, **kwargs):
592
+ resource_args, opts = _utilities.get_resource_args_opts(ResizeRequestArgs, pulumi.ResourceOptions, *args, **kwargs)
593
+ if resource_args is not None:
594
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
595
+ else:
596
+ __self__._internal_init(resource_name, *args, **kwargs)
597
+
598
+ def _internal_init(__self__,
599
+ resource_name: str,
600
+ opts: Optional[pulumi.ResourceOptions] = None,
601
+ description: Optional[pulumi.Input[str]] = None,
602
+ instance_group_manager: Optional[pulumi.Input[str]] = None,
603
+ name: Optional[pulumi.Input[str]] = None,
604
+ project: Optional[pulumi.Input[str]] = None,
605
+ requested_run_duration: Optional[pulumi.Input[Union['ResizeRequestRequestedRunDurationArgs', 'ResizeRequestRequestedRunDurationArgsDict']]] = None,
606
+ resize_by: Optional[pulumi.Input[int]] = None,
607
+ zone: Optional[pulumi.Input[str]] = None,
608
+ __props__=None):
609
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
610
+ if not isinstance(opts, pulumi.ResourceOptions):
611
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
612
+ if opts.id is None:
613
+ if __props__ is not None:
614
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
615
+ __props__ = ResizeRequestArgs.__new__(ResizeRequestArgs)
616
+
617
+ __props__.__dict__["description"] = description
618
+ if instance_group_manager is None and not opts.urn:
619
+ raise TypeError("Missing required property 'instance_group_manager'")
620
+ __props__.__dict__["instance_group_manager"] = instance_group_manager
621
+ __props__.__dict__["name"] = name
622
+ __props__.__dict__["project"] = project
623
+ __props__.__dict__["requested_run_duration"] = requested_run_duration
624
+ if resize_by is None and not opts.urn:
625
+ raise TypeError("Missing required property 'resize_by'")
626
+ __props__.__dict__["resize_by"] = resize_by
627
+ if zone is None and not opts.urn:
628
+ raise TypeError("Missing required property 'zone'")
629
+ __props__.__dict__["zone"] = zone
630
+ __props__.__dict__["creation_timestamp"] = None
631
+ __props__.__dict__["state"] = None
632
+ __props__.__dict__["statuses"] = None
633
+ super(ResizeRequest, __self__).__init__(
634
+ 'gcp:compute/resizeRequest:ResizeRequest',
635
+ resource_name,
636
+ __props__,
637
+ opts)
638
+
639
+ @staticmethod
640
+ def get(resource_name: str,
641
+ id: pulumi.Input[str],
642
+ opts: Optional[pulumi.ResourceOptions] = None,
643
+ creation_timestamp: Optional[pulumi.Input[str]] = None,
644
+ description: Optional[pulumi.Input[str]] = None,
645
+ instance_group_manager: Optional[pulumi.Input[str]] = None,
646
+ name: Optional[pulumi.Input[str]] = None,
647
+ project: Optional[pulumi.Input[str]] = None,
648
+ requested_run_duration: Optional[pulumi.Input[Union['ResizeRequestRequestedRunDurationArgs', 'ResizeRequestRequestedRunDurationArgsDict']]] = None,
649
+ resize_by: Optional[pulumi.Input[int]] = None,
650
+ state: Optional[pulumi.Input[str]] = None,
651
+ statuses: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ResizeRequestStatusArgs', 'ResizeRequestStatusArgsDict']]]]] = None,
652
+ zone: Optional[pulumi.Input[str]] = None) -> 'ResizeRequest':
653
+ """
654
+ Get an existing ResizeRequest resource's state with the given name, id, and optional extra
655
+ properties used to qualify the lookup.
656
+
657
+ :param str resource_name: The unique name of the resulting resource.
658
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
659
+ :param pulumi.ResourceOptions opts: Options for the resource.
660
+ :param pulumi.Input[str] creation_timestamp: The creation timestamp for this resize request in RFC3339 text format.
661
+ :param pulumi.Input[str] description: An optional description of this resize-request.
662
+ :param pulumi.Input[str] instance_group_manager: The name of the managed instance group. The name should conform to RFC1035 or be a resource ID.
663
+ Authorization requires the following IAM permission on the specified resource instanceGroupManager:
664
+ *compute.instanceGroupManagers.update
665
+
666
+
667
+ - - -
668
+ :param pulumi.Input[str] name: The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035.
669
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
670
+ If it is not provided, the provider project is used.
671
+ :param pulumi.Input[Union['ResizeRequestRequestedRunDurationArgs', 'ResizeRequestRequestedRunDurationArgsDict']] requested_run_duration: Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted.
672
+ Structure is documented below.
673
+ :param pulumi.Input[int] resize_by: The number of instances to be created by this resize request. The group's target size will be increased by this number.
674
+ :param pulumi.Input[str] state: [Output only] Current state of the request.
675
+ :param pulumi.Input[Sequence[pulumi.Input[Union['ResizeRequestStatusArgs', 'ResizeRequestStatusArgsDict']]]] statuses: [Output only] Status of the request.
676
+ Structure is documented below.
677
+ :param pulumi.Input[str] zone: Name of the compute zone scoping this request. Name should conform to RFC1035.
678
+ """
679
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
680
+
681
+ __props__ = _ResizeRequestState.__new__(_ResizeRequestState)
682
+
683
+ __props__.__dict__["creation_timestamp"] = creation_timestamp
684
+ __props__.__dict__["description"] = description
685
+ __props__.__dict__["instance_group_manager"] = instance_group_manager
686
+ __props__.__dict__["name"] = name
687
+ __props__.__dict__["project"] = project
688
+ __props__.__dict__["requested_run_duration"] = requested_run_duration
689
+ __props__.__dict__["resize_by"] = resize_by
690
+ __props__.__dict__["state"] = state
691
+ __props__.__dict__["statuses"] = statuses
692
+ __props__.__dict__["zone"] = zone
693
+ return ResizeRequest(resource_name, opts=opts, __props__=__props__)
694
+
695
+ @property
696
+ @pulumi.getter(name="creationTimestamp")
697
+ def creation_timestamp(self) -> pulumi.Output[str]:
698
+ """
699
+ The creation timestamp for this resize request in RFC3339 text format.
700
+ """
701
+ return pulumi.get(self, "creation_timestamp")
702
+
703
+ @property
704
+ @pulumi.getter
705
+ def description(self) -> pulumi.Output[Optional[str]]:
706
+ """
707
+ An optional description of this resize-request.
708
+ """
709
+ return pulumi.get(self, "description")
710
+
711
+ @property
712
+ @pulumi.getter(name="instanceGroupManager")
713
+ def instance_group_manager(self) -> pulumi.Output[str]:
714
+ """
715
+ The name of the managed instance group. The name should conform to RFC1035 or be a resource ID.
716
+ Authorization requires the following IAM permission on the specified resource instanceGroupManager:
717
+ *compute.instanceGroupManagers.update
718
+
719
+
720
+ - - -
721
+ """
722
+ return pulumi.get(self, "instance_group_manager")
723
+
724
+ @property
725
+ @pulumi.getter
726
+ def name(self) -> pulumi.Output[str]:
727
+ """
728
+ The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035.
729
+ """
730
+ return pulumi.get(self, "name")
731
+
732
+ @property
733
+ @pulumi.getter
734
+ def project(self) -> pulumi.Output[str]:
735
+ """
736
+ The ID of the project in which the resource belongs.
737
+ If it is not provided, the provider project is used.
738
+ """
739
+ return pulumi.get(self, "project")
740
+
741
+ @property
742
+ @pulumi.getter(name="requestedRunDuration")
743
+ def requested_run_duration(self) -> pulumi.Output[Optional['outputs.ResizeRequestRequestedRunDuration']]:
744
+ """
745
+ Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted.
746
+ Structure is documented below.
747
+ """
748
+ return pulumi.get(self, "requested_run_duration")
749
+
750
+ @property
751
+ @pulumi.getter(name="resizeBy")
752
+ def resize_by(self) -> pulumi.Output[int]:
753
+ """
754
+ The number of instances to be created by this resize request. The group's target size will be increased by this number.
755
+ """
756
+ return pulumi.get(self, "resize_by")
757
+
758
+ @property
759
+ @pulumi.getter
760
+ def state(self) -> pulumi.Output[str]:
761
+ """
762
+ [Output only] Current state of the request.
763
+ """
764
+ return pulumi.get(self, "state")
765
+
766
+ @property
767
+ @pulumi.getter
768
+ def statuses(self) -> pulumi.Output[Sequence['outputs.ResizeRequestStatus']]:
769
+ """
770
+ [Output only] Status of the request.
771
+ Structure is documented below.
772
+ """
773
+ return pulumi.get(self, "statuses")
774
+
775
+ @property
776
+ @pulumi.getter
777
+ def zone(self) -> pulumi.Output[str]:
778
+ """
779
+ Name of the compute zone scoping this request. Name should conform to RFC1035.
780
+ """
781
+ return pulumi.get(self, "zone")
782
+