pulumi-gcp 8.36.0a1751060819__py3-none-any.whl → 8.37.0a1751903932__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 (64) hide show
  1. pulumi_gcp/__init__.py +24 -0
  2. pulumi_gcp/apihub/__init__.py +1 -0
  3. pulumi_gcp/apihub/_inputs.py +675 -0
  4. pulumi_gcp/apihub/outputs.py +567 -0
  5. pulumi_gcp/apihub/plugin.py +1146 -0
  6. pulumi_gcp/bigqueryanalyticshub/data_exchange.py +7 -7
  7. pulumi_gcp/bigqueryanalyticshub/listing.py +7 -7
  8. pulumi_gcp/cloudidentity/group_membership.py +47 -0
  9. pulumi_gcp/cloudidentity/outputs.py +11 -0
  10. pulumi_gcp/cloudrunv2/_inputs.py +65 -9
  11. pulumi_gcp/cloudrunv2/job.py +44 -0
  12. pulumi_gcp/cloudrunv2/outputs.py +73 -8
  13. pulumi_gcp/cloudrunv2/service.py +0 -2
  14. pulumi_gcp/cloudrunv2/worker_pool.py +18 -20
  15. pulumi_gcp/compute/__init__.py +1 -0
  16. pulumi_gcp/compute/_inputs.py +763 -6
  17. pulumi_gcp/compute/disk.py +35 -28
  18. pulumi_gcp/compute/firewall_policy_rule.py +207 -0
  19. pulumi_gcp/compute/get_instance_group_manager.py +12 -1
  20. pulumi_gcp/compute/get_region_disk.py +12 -1
  21. pulumi_gcp/compute/instance_group_manager.py +165 -14
  22. pulumi_gcp/compute/network.py +56 -0
  23. pulumi_gcp/compute/network_firewall_policy.py +68 -0
  24. pulumi_gcp/compute/network_firewall_policy_with_rules.py +61 -0
  25. pulumi_gcp/compute/outputs.py +604 -4
  26. pulumi_gcp/compute/region_disk.py +114 -0
  27. pulumi_gcp/compute/region_network_firewall_policy.py +90 -0
  28. pulumi_gcp/compute/region_network_firewall_policy_with_rules.py +109 -0
  29. pulumi_gcp/compute/wire_group.py +751 -0
  30. pulumi_gcp/container/_inputs.py +135 -16
  31. pulumi_gcp/container/cluster.py +54 -0
  32. pulumi_gcp/container/get_cluster.py +12 -1
  33. pulumi_gcp/container/node_pool.py +14 -0
  34. pulumi_gcp/container/outputs.py +222 -12
  35. pulumi_gcp/diagflow/__init__.py +1 -0
  36. pulumi_gcp/diagflow/_inputs.py +431 -0
  37. pulumi_gcp/diagflow/cx_generative_settings.py +625 -0
  38. pulumi_gcp/diagflow/outputs.py +370 -0
  39. pulumi_gcp/dns/record_set.py +4 -2
  40. pulumi_gcp/firestore/database.py +0 -9
  41. pulumi_gcp/iam/_inputs.py +36 -0
  42. pulumi_gcp/iam/outputs.py +38 -0
  43. pulumi_gcp/iam/workload_identity_pool_managed_identity.py +88 -2
  44. pulumi_gcp/kms/autokey_config.py +28 -0
  45. pulumi_gcp/kms/get_autokey_config.py +12 -1
  46. pulumi_gcp/memorystore/get_instance.py +12 -1
  47. pulumi_gcp/memorystore/instance.py +49 -0
  48. pulumi_gcp/monitoring/metric_descriptor.py +55 -57
  49. pulumi_gcp/notebooks/instance.py +8 -8
  50. pulumi_gcp/pulumi-plugin.json +1 -1
  51. pulumi_gcp/redis/get_instance.py +12 -1
  52. pulumi_gcp/redis/instance.py +44 -0
  53. pulumi_gcp/secretmanager/get_regional_secret.py +12 -1
  54. pulumi_gcp/secretmanager/outputs.py +7 -0
  55. pulumi_gcp/secretmanager/regional_secret.py +38 -2
  56. pulumi_gcp/spanner/_inputs.py +24 -1
  57. pulumi_gcp/spanner/outputs.py +17 -1
  58. pulumi_gcp/storage/_inputs.py +43 -3
  59. pulumi_gcp/storage/outputs.py +53 -3
  60. pulumi_gcp/workbench/instance.py +2 -0
  61. {pulumi_gcp-8.36.0a1751060819.dist-info → pulumi_gcp-8.37.0a1751903932.dist-info}/METADATA +1 -1
  62. {pulumi_gcp-8.36.0a1751060819.dist-info → pulumi_gcp-8.37.0a1751903932.dist-info}/RECORD +64 -61
  63. {pulumi_gcp-8.36.0a1751060819.dist-info → pulumi_gcp-8.37.0a1751903932.dist-info}/WHEEL +0 -0
  64. {pulumi_gcp-8.36.0a1751060819.dist-info → pulumi_gcp-8.37.0a1751903932.dist-info}/top_level.txt +0 -0
@@ -43,7 +43,7 @@ class DataExchangeArgs:
43
43
  :param pulumi.Input[builtins.str] description: Description of the data exchange.
44
44
  :param pulumi.Input[builtins.str] documentation: Documentation describing the data exchange.
45
45
  :param pulumi.Input[builtins.str] icon: Base64 encoded image representing the data exchange.
46
- :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
46
+ :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user. Once enabled, this setting cannot be turned off.
47
47
  :param pulumi.Input[builtins.str] primary_contact: Email or URL of the primary point of contact of the data exchange.
48
48
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
49
49
  If it is not provided, the provider project is used.
@@ -148,7 +148,7 @@ class DataExchangeArgs:
148
148
  @pulumi.getter(name="logLinkedDatasetQueryUserEmail")
149
149
  def log_linked_dataset_query_user_email(self) -> Optional[pulumi.Input[builtins.bool]]:
150
150
  """
151
- If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
151
+ If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user. Once enabled, this setting cannot be turned off.
152
152
  """
153
153
  return pulumi.get(self, "log_linked_dataset_query_user_email")
154
154
 
@@ -223,7 +223,7 @@ class _DataExchangeState:
223
223
  :param pulumi.Input[builtins.str] icon: Base64 encoded image representing the data exchange.
224
224
  :param pulumi.Input[builtins.int] listing_count: Number of listings contained in the data exchange.
225
225
  :param pulumi.Input[builtins.str] location: The name of the location this data exchange.
226
- :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
226
+ :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user. Once enabled, this setting cannot be turned off.
227
227
  :param pulumi.Input[builtins.str] name: The resource name of the data exchange, for example:
228
228
  "projects/myproject/locations/US/dataExchanges/123"
229
229
  :param pulumi.Input[builtins.str] primary_contact: Email or URL of the primary point of contact of the data exchange.
@@ -349,7 +349,7 @@ class _DataExchangeState:
349
349
  @pulumi.getter(name="logLinkedDatasetQueryUserEmail")
350
350
  def log_linked_dataset_query_user_email(self) -> Optional[pulumi.Input[builtins.bool]]:
351
351
  """
352
- If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
352
+ If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user. Once enabled, this setting cannot be turned off.
353
353
  """
354
354
  return pulumi.get(self, "log_linked_dataset_query_user_email")
355
355
 
@@ -520,7 +520,7 @@ class DataExchange(pulumi.CustomResource):
520
520
  :param pulumi.Input[builtins.str] documentation: Documentation describing the data exchange.
521
521
  :param pulumi.Input[builtins.str] icon: Base64 encoded image representing the data exchange.
522
522
  :param pulumi.Input[builtins.str] location: The name of the location this data exchange.
523
- :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
523
+ :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user. Once enabled, this setting cannot be turned off.
524
524
  :param pulumi.Input[builtins.str] primary_contact: Email or URL of the primary point of contact of the data exchange.
525
525
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
526
526
  If it is not provided, the provider project is used.
@@ -707,7 +707,7 @@ class DataExchange(pulumi.CustomResource):
707
707
  :param pulumi.Input[builtins.str] icon: Base64 encoded image representing the data exchange.
708
708
  :param pulumi.Input[builtins.int] listing_count: Number of listings contained in the data exchange.
709
709
  :param pulumi.Input[builtins.str] location: The name of the location this data exchange.
710
- :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
710
+ :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user. Once enabled, this setting cannot be turned off.
711
711
  :param pulumi.Input[builtins.str] name: The resource name of the data exchange, for example:
712
712
  "projects/myproject/locations/US/dataExchanges/123"
713
713
  :param pulumi.Input[builtins.str] primary_contact: Email or URL of the primary point of contact of the data exchange.
@@ -798,7 +798,7 @@ class DataExchange(pulumi.CustomResource):
798
798
  @pulumi.getter(name="logLinkedDatasetQueryUserEmail")
799
799
  def log_linked_dataset_query_user_email(self) -> pulumi.Output[Optional[builtins.bool]]:
800
800
  """
801
- If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
801
+ If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user. Once enabled, this setting cannot be turned off.
802
802
  """
803
803
  return pulumi.get(self, "log_linked_dataset_query_user_email")
804
804
 
@@ -56,7 +56,7 @@ class ListingArgs:
56
56
  :param pulumi.Input[builtins.str] description: Short description of the listing. The description must not contain Unicode non-characters and C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF).
57
57
  :param pulumi.Input[builtins.str] documentation: Documentation describing the listing.
58
58
  :param pulumi.Input[builtins.str] icon: Base64 encoded image representing the listing.
59
- :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
59
+ :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user. Once enabled, this setting cannot be turned off.
60
60
  :param pulumi.Input[builtins.str] primary_contact: Email or URL of the primary point of contact of the listing.
61
61
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
62
62
  If it is not provided, the provider project is used.
@@ -228,7 +228,7 @@ class ListingArgs:
228
228
  @pulumi.getter(name="logLinkedDatasetQueryUserEmail")
229
229
  def log_linked_dataset_query_user_email(self) -> Optional[pulumi.Input[builtins.bool]]:
230
230
  """
231
- If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
231
+ If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user. Once enabled, this setting cannot be turned off.
232
232
  """
233
233
  return pulumi.get(self, "log_linked_dataset_query_user_email")
234
234
 
@@ -351,7 +351,7 @@ class _ListingState:
351
351
  :param pulumi.Input[builtins.str] icon: Base64 encoded image representing the listing.
352
352
  :param pulumi.Input[builtins.str] listing_id: The ID of the listing. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces.
353
353
  :param pulumi.Input[builtins.str] location: The name of the location this data exchange listing.
354
- :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
354
+ :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user. Once enabled, this setting cannot be turned off.
355
355
  :param pulumi.Input[builtins.str] name: The resource name of the listing. e.g. "projects/myproject/locations/US/dataExchanges/123/listings/456"
356
356
  :param pulumi.Input[builtins.str] primary_contact: Email or URL of the primary point of contact of the listing.
357
357
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
@@ -530,7 +530,7 @@ class _ListingState:
530
530
  @pulumi.getter(name="logLinkedDatasetQueryUserEmail")
531
531
  def log_linked_dataset_query_user_email(self) -> Optional[pulumi.Input[builtins.bool]]:
532
532
  """
533
- If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
533
+ If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user. Once enabled, this setting cannot be turned off.
534
534
  """
535
535
  return pulumi.get(self, "log_linked_dataset_query_user_email")
536
536
 
@@ -870,7 +870,7 @@ class Listing(pulumi.CustomResource):
870
870
  :param pulumi.Input[builtins.str] icon: Base64 encoded image representing the listing.
871
871
  :param pulumi.Input[builtins.str] listing_id: The ID of the listing. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces.
872
872
  :param pulumi.Input[builtins.str] location: The name of the location this data exchange listing.
873
- :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
873
+ :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user. Once enabled, this setting cannot be turned off.
874
874
  :param pulumi.Input[builtins.str] primary_contact: Email or URL of the primary point of contact of the listing.
875
875
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
876
876
  If it is not provided, the provider project is used.
@@ -1207,7 +1207,7 @@ class Listing(pulumi.CustomResource):
1207
1207
  :param pulumi.Input[builtins.str] icon: Base64 encoded image representing the listing.
1208
1208
  :param pulumi.Input[builtins.str] listing_id: The ID of the listing. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces.
1209
1209
  :param pulumi.Input[builtins.str] location: The name of the location this data exchange listing.
1210
- :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
1210
+ :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user. Once enabled, this setting cannot be turned off.
1211
1211
  :param pulumi.Input[builtins.str] name: The resource name of the listing. e.g. "projects/myproject/locations/US/dataExchanges/123/listings/456"
1212
1212
  :param pulumi.Input[builtins.str] primary_contact: Email or URL of the primary point of contact of the listing.
1213
1213
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
@@ -1333,7 +1333,7 @@ class Listing(pulumi.CustomResource):
1333
1333
  @pulumi.getter(name="logLinkedDatasetQueryUserEmail")
1334
1334
  def log_linked_dataset_query_user_email(self) -> pulumi.Output[Optional[builtins.bool]]:
1335
1335
  """
1336
- If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
1336
+ If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user. Once enabled, this setting cannot be turned off.
1337
1337
  """
1338
1338
  return pulumi.get(self, "log_linked_dataset_query_user_email")
1339
1339
 
@@ -24,6 +24,7 @@ class GroupMembershipArgs:
24
24
  def __init__(__self__, *,
25
25
  group: pulumi.Input[builtins.str],
26
26
  roles: pulumi.Input[Sequence[pulumi.Input['GroupMembershipRoleArgs']]],
27
+ create_ignore_already_exists: Optional[pulumi.Input[builtins.bool]] = None,
27
28
  member_key: Optional[pulumi.Input['GroupMembershipMemberKeyArgs']] = None,
28
29
  preferred_member_key: Optional[pulumi.Input['GroupMembershipPreferredMemberKeyArgs']] = None):
29
30
  """
@@ -32,11 +33,14 @@ class GroupMembershipArgs:
32
33
  :param pulumi.Input[Sequence[pulumi.Input['GroupMembershipRoleArgs']]] roles: The MembershipRoles that apply to the Membership.
33
34
  Must not contain duplicate MembershipRoles with the same name.
34
35
  Structure is documented below.
36
+ :param pulumi.Input[builtins.bool] create_ignore_already_exists: If set to true, skip group member creation if a membership with the same name already exists. Defaults to false.
35
37
  :param pulumi.Input['GroupMembershipMemberKeyArgs'] member_key: EntityKey of the member.
36
38
  :param pulumi.Input['GroupMembershipPreferredMemberKeyArgs'] preferred_member_key: EntityKey of the member.
37
39
  """
38
40
  pulumi.set(__self__, "group", group)
39
41
  pulumi.set(__self__, "roles", roles)
42
+ if create_ignore_already_exists is not None:
43
+ pulumi.set(__self__, "create_ignore_already_exists", create_ignore_already_exists)
40
44
  if member_key is not None:
41
45
  pulumi.set(__self__, "member_key", member_key)
42
46
  if preferred_member_key is not None:
@@ -68,6 +72,18 @@ class GroupMembershipArgs:
68
72
  def roles(self, value: pulumi.Input[Sequence[pulumi.Input['GroupMembershipRoleArgs']]]):
69
73
  pulumi.set(self, "roles", value)
70
74
 
75
+ @property
76
+ @pulumi.getter(name="createIgnoreAlreadyExists")
77
+ def create_ignore_already_exists(self) -> Optional[pulumi.Input[builtins.bool]]:
78
+ """
79
+ If set to true, skip group member creation if a membership with the same name already exists. Defaults to false.
80
+ """
81
+ return pulumi.get(self, "create_ignore_already_exists")
82
+
83
+ @create_ignore_already_exists.setter
84
+ def create_ignore_already_exists(self, value: Optional[pulumi.Input[builtins.bool]]):
85
+ pulumi.set(self, "create_ignore_already_exists", value)
86
+
71
87
  @property
72
88
  @pulumi.getter(name="memberKey")
73
89
  def member_key(self) -> Optional[pulumi.Input['GroupMembershipMemberKeyArgs']]:
@@ -96,6 +112,7 @@ class GroupMembershipArgs:
96
112
  @pulumi.input_type
97
113
  class _GroupMembershipState:
98
114
  def __init__(__self__, *,
115
+ create_ignore_already_exists: Optional[pulumi.Input[builtins.bool]] = None,
99
116
  create_time: Optional[pulumi.Input[builtins.str]] = None,
100
117
  group: Optional[pulumi.Input[builtins.str]] = None,
101
118
  member_key: Optional[pulumi.Input['GroupMembershipMemberKeyArgs']] = None,
@@ -106,6 +123,7 @@ class _GroupMembershipState:
106
123
  update_time: Optional[pulumi.Input[builtins.str]] = None):
107
124
  """
108
125
  Input properties used for looking up and filtering GroupMembership resources.
126
+ :param pulumi.Input[builtins.bool] create_ignore_already_exists: If set to true, skip group member creation if a membership with the same name already exists. Defaults to false.
109
127
  :param pulumi.Input[builtins.str] create_time: The time when the Membership was created.
110
128
  :param pulumi.Input[builtins.str] group: The name of the Group to create this membership in.
111
129
  :param pulumi.Input['GroupMembershipMemberKeyArgs'] member_key: EntityKey of the member.
@@ -117,6 +135,8 @@ class _GroupMembershipState:
117
135
  :param pulumi.Input[builtins.str] type: The type of the membership.
118
136
  :param pulumi.Input[builtins.str] update_time: The time when the Membership was last updated.
119
137
  """
138
+ if create_ignore_already_exists is not None:
139
+ pulumi.set(__self__, "create_ignore_already_exists", create_ignore_already_exists)
120
140
  if create_time is not None:
121
141
  pulumi.set(__self__, "create_time", create_time)
122
142
  if group is not None:
@@ -134,6 +154,18 @@ class _GroupMembershipState:
134
154
  if update_time is not None:
135
155
  pulumi.set(__self__, "update_time", update_time)
136
156
 
157
+ @property
158
+ @pulumi.getter(name="createIgnoreAlreadyExists")
159
+ def create_ignore_already_exists(self) -> Optional[pulumi.Input[builtins.bool]]:
160
+ """
161
+ If set to true, skip group member creation if a membership with the same name already exists. Defaults to false.
162
+ """
163
+ return pulumi.get(self, "create_ignore_already_exists")
164
+
165
+ @create_ignore_already_exists.setter
166
+ def create_ignore_already_exists(self, value: Optional[pulumi.Input[builtins.bool]]):
167
+ pulumi.set(self, "create_ignore_already_exists", value)
168
+
137
169
  @property
138
170
  @pulumi.getter(name="createTime")
139
171
  def create_time(self) -> Optional[pulumi.Input[builtins.str]]:
@@ -239,6 +271,7 @@ class GroupMembership(pulumi.CustomResource):
239
271
  def __init__(__self__,
240
272
  resource_name: str,
241
273
  opts: Optional[pulumi.ResourceOptions] = None,
274
+ create_ignore_already_exists: Optional[pulumi.Input[builtins.bool]] = None,
242
275
  group: Optional[pulumi.Input[builtins.str]] = None,
243
276
  member_key: Optional[pulumi.Input[Union['GroupMembershipMemberKeyArgs', 'GroupMembershipMemberKeyArgsDict']]] = None,
244
277
  preferred_member_key: Optional[pulumi.Input[Union['GroupMembershipPreferredMemberKeyArgs', 'GroupMembershipPreferredMemberKeyArgsDict']]] = None,
@@ -338,6 +371,7 @@ class GroupMembership(pulumi.CustomResource):
338
371
 
339
372
  :param str resource_name: The name of the resource.
340
373
  :param pulumi.ResourceOptions opts: Options for the resource.
374
+ :param pulumi.Input[builtins.bool] create_ignore_already_exists: If set to true, skip group member creation if a membership with the same name already exists. Defaults to false.
341
375
  :param pulumi.Input[builtins.str] group: The name of the Group to create this membership in.
342
376
  :param pulumi.Input[Union['GroupMembershipMemberKeyArgs', 'GroupMembershipMemberKeyArgsDict']] member_key: EntityKey of the member.
343
377
  :param pulumi.Input[Union['GroupMembershipPreferredMemberKeyArgs', 'GroupMembershipPreferredMemberKeyArgsDict']] preferred_member_key: EntityKey of the member.
@@ -458,6 +492,7 @@ class GroupMembership(pulumi.CustomResource):
458
492
  def _internal_init(__self__,
459
493
  resource_name: str,
460
494
  opts: Optional[pulumi.ResourceOptions] = None,
495
+ create_ignore_already_exists: Optional[pulumi.Input[builtins.bool]] = None,
461
496
  group: Optional[pulumi.Input[builtins.str]] = None,
462
497
  member_key: Optional[pulumi.Input[Union['GroupMembershipMemberKeyArgs', 'GroupMembershipMemberKeyArgsDict']]] = None,
463
498
  preferred_member_key: Optional[pulumi.Input[Union['GroupMembershipPreferredMemberKeyArgs', 'GroupMembershipPreferredMemberKeyArgsDict']]] = None,
@@ -471,6 +506,7 @@ class GroupMembership(pulumi.CustomResource):
471
506
  raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
472
507
  __props__ = GroupMembershipArgs.__new__(GroupMembershipArgs)
473
508
 
509
+ __props__.__dict__["create_ignore_already_exists"] = create_ignore_already_exists
474
510
  if group is None and not opts.urn:
475
511
  raise TypeError("Missing required property 'group'")
476
512
  __props__.__dict__["group"] = group
@@ -493,6 +529,7 @@ class GroupMembership(pulumi.CustomResource):
493
529
  def get(resource_name: str,
494
530
  id: pulumi.Input[str],
495
531
  opts: Optional[pulumi.ResourceOptions] = None,
532
+ create_ignore_already_exists: Optional[pulumi.Input[builtins.bool]] = None,
496
533
  create_time: Optional[pulumi.Input[builtins.str]] = None,
497
534
  group: Optional[pulumi.Input[builtins.str]] = None,
498
535
  member_key: Optional[pulumi.Input[Union['GroupMembershipMemberKeyArgs', 'GroupMembershipMemberKeyArgsDict']]] = None,
@@ -508,6 +545,7 @@ class GroupMembership(pulumi.CustomResource):
508
545
  :param str resource_name: The unique name of the resulting resource.
509
546
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
510
547
  :param pulumi.ResourceOptions opts: Options for the resource.
548
+ :param pulumi.Input[builtins.bool] create_ignore_already_exists: If set to true, skip group member creation if a membership with the same name already exists. Defaults to false.
511
549
  :param pulumi.Input[builtins.str] create_time: The time when the Membership was created.
512
550
  :param pulumi.Input[builtins.str] group: The name of the Group to create this membership in.
513
551
  :param pulumi.Input[Union['GroupMembershipMemberKeyArgs', 'GroupMembershipMemberKeyArgsDict']] member_key: EntityKey of the member.
@@ -523,6 +561,7 @@ class GroupMembership(pulumi.CustomResource):
523
561
 
524
562
  __props__ = _GroupMembershipState.__new__(_GroupMembershipState)
525
563
 
564
+ __props__.__dict__["create_ignore_already_exists"] = create_ignore_already_exists
526
565
  __props__.__dict__["create_time"] = create_time
527
566
  __props__.__dict__["group"] = group
528
567
  __props__.__dict__["member_key"] = member_key
@@ -533,6 +572,14 @@ class GroupMembership(pulumi.CustomResource):
533
572
  __props__.__dict__["update_time"] = update_time
534
573
  return GroupMembership(resource_name, opts=opts, __props__=__props__)
535
574
 
575
+ @property
576
+ @pulumi.getter(name="createIgnoreAlreadyExists")
577
+ def create_ignore_already_exists(self) -> pulumi.Output[Optional[builtins.bool]]:
578
+ """
579
+ If set to true, skip group member creation if a membership with the same name already exists. Defaults to false.
580
+ """
581
+ return pulumi.get(self, "create_ignore_already_exists")
582
+
536
583
  @property
537
584
  @pulumi.getter(name="createTime")
538
585
  def create_time(self) -> pulumi.Output[builtins.str]:
@@ -393,6 +393,7 @@ class GetGroupLookupGroupKeyResult(dict):
393
393
  @pulumi.output_type
394
394
  class GetGroupMembershipsMembershipResult(dict):
395
395
  def __init__(__self__, *,
396
+ create_ignore_already_exists: builtins.bool,
396
397
  create_time: builtins.str,
397
398
  group: builtins.str,
398
399
  member_keys: Sequence['outputs.GetGroupMembershipsMembershipMemberKeyResult'],
@@ -402,6 +403,7 @@ class GetGroupMembershipsMembershipResult(dict):
402
403
  type: builtins.str,
403
404
  update_time: builtins.str):
404
405
  """
406
+ :param builtins.bool create_ignore_already_exists: If set to true, skip group member creation if a membership with the same name already exists. Defaults to false.
405
407
  :param builtins.str create_time: The time when the Membership was created.
406
408
  :param builtins.str group: The parent Group resource under which to lookup the Membership names. Must be of the form groups/{group_id}.
407
409
  :param Sequence['GetGroupMembershipsMembershipMemberKeyArgs'] member_keys: EntityKey of the member. Structure is documented below.
@@ -411,6 +413,7 @@ class GetGroupMembershipsMembershipResult(dict):
411
413
  :param builtins.str type: The type of the membership.
412
414
  :param builtins.str update_time: The time when the Membership was last updated.
413
415
  """
416
+ pulumi.set(__self__, "create_ignore_already_exists", create_ignore_already_exists)
414
417
  pulumi.set(__self__, "create_time", create_time)
415
418
  pulumi.set(__self__, "group", group)
416
419
  pulumi.set(__self__, "member_keys", member_keys)
@@ -420,6 +423,14 @@ class GetGroupMembershipsMembershipResult(dict):
420
423
  pulumi.set(__self__, "type", type)
421
424
  pulumi.set(__self__, "update_time", update_time)
422
425
 
426
+ @property
427
+ @pulumi.getter(name="createIgnoreAlreadyExists")
428
+ def create_ignore_already_exists(self) -> builtins.bool:
429
+ """
430
+ If set to true, skip group member creation if a membership with the same name already exists. Defaults to false.
431
+ """
432
+ return pulumi.get(self, "create_ignore_already_exists")
433
+
423
434
  @property
424
435
  @pulumi.getter(name="createTime")
425
436
  def create_time(self) -> builtins.str:
@@ -54,6 +54,8 @@ __all__ = [
54
54
  'JobTemplateTemplateContainerStartupProbeTcpSocketArgsDict',
55
55
  'JobTemplateTemplateContainerVolumeMountArgs',
56
56
  'JobTemplateTemplateContainerVolumeMountArgsDict',
57
+ 'JobTemplateTemplateNodeSelectorArgs',
58
+ 'JobTemplateTemplateNodeSelectorArgsDict',
57
59
  'JobTemplateTemplateVolumeArgs',
58
60
  'JobTemplateTemplateVolumeArgsDict',
59
61
  'JobTemplateTemplateVolumeCloudSqlInstanceArgs',
@@ -812,6 +814,11 @@ if not MYPY:
812
814
  """
813
815
  Number of retries allowed per Task, before marking this Task failed. Defaults to 3. Minimum value is 0.
814
816
  """
817
+ node_selector: NotRequired[pulumi.Input['JobTemplateTemplateNodeSelectorArgsDict']]
818
+ """
819
+ Node Selector describes the hardware requirements of the resources.
820
+ Structure is documented below.
821
+ """
815
822
  service_account: NotRequired[pulumi.Input[builtins.str]]
816
823
  """
817
824
  Email address of the IAM service account associated with the Task of a Job. The service account represents the identity of the running task, and determines what permissions the task has. If not provided, the task will use the project's default service account.
@@ -841,6 +848,7 @@ class JobTemplateTemplateArgs:
841
848
  encryption_key: Optional[pulumi.Input[builtins.str]] = None,
842
849
  execution_environment: Optional[pulumi.Input[builtins.str]] = None,
843
850
  max_retries: Optional[pulumi.Input[builtins.int]] = None,
851
+ node_selector: Optional[pulumi.Input['JobTemplateTemplateNodeSelectorArgs']] = None,
844
852
  service_account: Optional[pulumi.Input[builtins.str]] = None,
845
853
  timeout: Optional[pulumi.Input[builtins.str]] = None,
846
854
  volumes: Optional[pulumi.Input[Sequence[pulumi.Input['JobTemplateTemplateVolumeArgs']]]] = None,
@@ -852,6 +860,8 @@ class JobTemplateTemplateArgs:
852
860
  :param pulumi.Input[builtins.str] execution_environment: The execution environment being used to host this Task.
853
861
  Possible values are: `EXECUTION_ENVIRONMENT_GEN1`, `EXECUTION_ENVIRONMENT_GEN2`.
854
862
  :param pulumi.Input[builtins.int] max_retries: Number of retries allowed per Task, before marking this Task failed. Defaults to 3. Minimum value is 0.
863
+ :param pulumi.Input['JobTemplateTemplateNodeSelectorArgs'] node_selector: Node Selector describes the hardware requirements of the resources.
864
+ Structure is documented below.
855
865
  :param pulumi.Input[builtins.str] service_account: Email address of the IAM service account associated with the Task of a Job. The service account represents the identity of the running task, and determines what permissions the task has. If not provided, the task will use the project's default service account.
856
866
  :param pulumi.Input[builtins.str] timeout: Max allowed time duration the Task may be active before the system will actively try to mark it failed and kill associated containers. This applies per attempt of a task, meaning each retry can run for the full timeout.
857
867
  A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".
@@ -868,6 +878,8 @@ class JobTemplateTemplateArgs:
868
878
  pulumi.set(__self__, "execution_environment", execution_environment)
869
879
  if max_retries is not None:
870
880
  pulumi.set(__self__, "max_retries", max_retries)
881
+ if node_selector is not None:
882
+ pulumi.set(__self__, "node_selector", node_selector)
871
883
  if service_account is not None:
872
884
  pulumi.set(__self__, "service_account", service_account)
873
885
  if timeout is not None:
@@ -927,6 +939,19 @@ class JobTemplateTemplateArgs:
927
939
  def max_retries(self, value: Optional[pulumi.Input[builtins.int]]):
928
940
  pulumi.set(self, "max_retries", value)
929
941
 
942
+ @property
943
+ @pulumi.getter(name="nodeSelector")
944
+ def node_selector(self) -> Optional[pulumi.Input['JobTemplateTemplateNodeSelectorArgs']]:
945
+ """
946
+ Node Selector describes the hardware requirements of the resources.
947
+ Structure is documented below.
948
+ """
949
+ return pulumi.get(self, "node_selector")
950
+
951
+ @node_selector.setter
952
+ def node_selector(self, value: Optional[pulumi.Input['JobTemplateTemplateNodeSelectorArgs']]):
953
+ pulumi.set(self, "node_selector", value)
954
+
930
955
  @property
931
956
  @pulumi.getter(name="serviceAccount")
932
957
  def service_account(self) -> Optional[pulumi.Input[builtins.str]]:
@@ -1449,7 +1474,7 @@ if not MYPY:
1449
1474
  class JobTemplateTemplateContainerResourcesArgsDict(TypedDict):
1450
1475
  limits: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]]
1451
1476
  """
1452
- Only memory and CPU are supported. Use key `cpu` for CPU limit and `memory` for memory limit. Note: The only supported values for CPU are '1', '2', '4', and '8'. Setting 4 CPU requires at least 2Gi of memory. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
1477
+ Only memory, CPU, and nvidia.com/gpu are supported. Use key `cpu` for CPU limit, `memory` for memory limit, `nvidia.com/gpu` for gpu limit. Note: The only supported values for CPU are '1', '2', '4', and '8'. Setting 4 CPU requires at least 2Gi of memory. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
1453
1478
  """
1454
1479
  elif False:
1455
1480
  JobTemplateTemplateContainerResourcesArgsDict: TypeAlias = Mapping[str, Any]
@@ -1459,7 +1484,7 @@ class JobTemplateTemplateContainerResourcesArgs:
1459
1484
  def __init__(__self__, *,
1460
1485
  limits: Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]] = None):
1461
1486
  """
1462
- :param pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]] limits: Only memory and CPU are supported. Use key `cpu` for CPU limit and `memory` for memory limit. Note: The only supported values for CPU are '1', '2', '4', and '8'. Setting 4 CPU requires at least 2Gi of memory. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
1487
+ :param pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]] limits: Only memory, CPU, and nvidia.com/gpu are supported. Use key `cpu` for CPU limit, `memory` for memory limit, `nvidia.com/gpu` for gpu limit. Note: The only supported values for CPU are '1', '2', '4', and '8'. Setting 4 CPU requires at least 2Gi of memory. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
1463
1488
  """
1464
1489
  if limits is not None:
1465
1490
  pulumi.set(__self__, "limits", limits)
@@ -1468,7 +1493,7 @@ class JobTemplateTemplateContainerResourcesArgs:
1468
1493
  @pulumi.getter
1469
1494
  def limits(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[builtins.str]]]]:
1470
1495
  """
1471
- Only memory and CPU are supported. Use key `cpu` for CPU limit and `memory` for memory limit. Note: The only supported values for CPU are '1', '2', '4', and '8'. Setting 4 CPU requires at least 2Gi of memory. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
1496
+ Only memory, CPU, and nvidia.com/gpu are supported. Use key `cpu` for CPU limit, `memory` for memory limit, `nvidia.com/gpu` for gpu limit. Note: The only supported values for CPU are '1', '2', '4', and '8'. Setting 4 CPU requires at least 2Gi of memory. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
1472
1497
  """
1473
1498
  return pulumi.get(self, "limits")
1474
1499
 
@@ -1931,6 +1956,43 @@ class JobTemplateTemplateContainerVolumeMountArgs:
1931
1956
  pulumi.set(self, "name", value)
1932
1957
 
1933
1958
 
1959
+ if not MYPY:
1960
+ class JobTemplateTemplateNodeSelectorArgsDict(TypedDict):
1961
+ accelerator: pulumi.Input[builtins.str]
1962
+ """
1963
+ The GPU to attach to an instance. See https://cloud.google.com/run/docs/configuring/jobs/gpu for configuring GPU.
1964
+
1965
+ - - -
1966
+ """
1967
+ elif False:
1968
+ JobTemplateTemplateNodeSelectorArgsDict: TypeAlias = Mapping[str, Any]
1969
+
1970
+ @pulumi.input_type
1971
+ class JobTemplateTemplateNodeSelectorArgs:
1972
+ def __init__(__self__, *,
1973
+ accelerator: pulumi.Input[builtins.str]):
1974
+ """
1975
+ :param pulumi.Input[builtins.str] accelerator: The GPU to attach to an instance. See https://cloud.google.com/run/docs/configuring/jobs/gpu for configuring GPU.
1976
+
1977
+ - - -
1978
+ """
1979
+ pulumi.set(__self__, "accelerator", accelerator)
1980
+
1981
+ @property
1982
+ @pulumi.getter
1983
+ def accelerator(self) -> pulumi.Input[builtins.str]:
1984
+ """
1985
+ The GPU to attach to an instance. See https://cloud.google.com/run/docs/configuring/jobs/gpu for configuring GPU.
1986
+
1987
+ - - -
1988
+ """
1989
+ return pulumi.get(self, "accelerator")
1990
+
1991
+ @accelerator.setter
1992
+ def accelerator(self, value: pulumi.Input[builtins.str]):
1993
+ pulumi.set(self, "accelerator", value)
1994
+
1995
+
1934
1996
  if not MYPY:
1935
1997
  class JobTemplateTemplateVolumeArgsDict(TypedDict):
1936
1998
  name: pulumi.Input[builtins.str]
@@ -2551,8 +2613,6 @@ if not MYPY:
2551
2613
  tags: NotRequired[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]
2552
2614
  """
2553
2615
  Network tags applied to this Cloud Run job.
2554
-
2555
- - - -
2556
2616
  """
2557
2617
  elif False:
2558
2618
  JobTemplateTemplateVpcAccessNetworkInterfaceArgsDict: TypeAlias = Mapping[str, Any]
@@ -2571,8 +2631,6 @@ class JobTemplateTemplateVpcAccessNetworkInterfaceArgs:
2571
2631
  network and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If subnetwork is not specified, the
2572
2632
  subnetwork with the same name with the network will be used.
2573
2633
  :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] tags: Network tags applied to this Cloud Run job.
2574
-
2575
- - - -
2576
2634
  """
2577
2635
  if network is not None:
2578
2636
  pulumi.set(__self__, "network", network)
@@ -2614,8 +2672,6 @@ class JobTemplateTemplateVpcAccessNetworkInterfaceArgs:
2614
2672
  def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
2615
2673
  """
2616
2674
  Network tags applied to this Cloud Run job.
2617
-
2618
- - - -
2619
2675
  """
2620
2676
  return pulumi.get(self, "tags")
2621
2677
 
@@ -1151,6 +1151,28 @@ class Job(pulumi.CustomResource):
1151
1151
  },
1152
1152
  })
1153
1153
  ```
1154
+ ### Cloudrunv2 Job Gpu
1155
+
1156
+ ```python
1157
+ import pulumi
1158
+ import pulumi_gcp as gcp
1159
+
1160
+ default = gcp.cloudrunv2.Job("default",
1161
+ name="cloudrun-job",
1162
+ location="us-central1",
1163
+ deletion_protection=False,
1164
+ launch_stage="BETA",
1165
+ template={
1166
+ "template": {
1167
+ "containers": [{
1168
+ "image": "us-docker.pkg.dev/cloudrun/container/job",
1169
+ }],
1170
+ "node_selector": {
1171
+ "accelerator": "nvidia-l4",
1172
+ },
1173
+ },
1174
+ })
1175
+ ```
1154
1176
 
1155
1177
  ## Import
1156
1178
 
@@ -1529,6 +1551,28 @@ class Job(pulumi.CustomResource):
1529
1551
  },
1530
1552
  })
1531
1553
  ```
1554
+ ### Cloudrunv2 Job Gpu
1555
+
1556
+ ```python
1557
+ import pulumi
1558
+ import pulumi_gcp as gcp
1559
+
1560
+ default = gcp.cloudrunv2.Job("default",
1561
+ name="cloudrun-job",
1562
+ location="us-central1",
1563
+ deletion_protection=False,
1564
+ launch_stage="BETA",
1565
+ template={
1566
+ "template": {
1567
+ "containers": [{
1568
+ "image": "us-docker.pkg.dev/cloudrun/container/job",
1569
+ }],
1570
+ "node_selector": {
1571
+ "accelerator": "nvidia-l4",
1572
+ },
1573
+ },
1574
+ })
1575
+ ```
1532
1576
 
1533
1577
  ## Import
1534
1578