pulumi-gcp 8.3.0a1726834947__py3-none-any.whl → 8.3.0a1727226164__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 (76) hide show
  1. pulumi_gcp/__init__.py +120 -0
  2. pulumi_gcp/alloydb/_inputs.py +20 -0
  3. pulumi_gcp/alloydb/instance.py +36 -0
  4. pulumi_gcp/alloydb/outputs.py +14 -0
  5. pulumi_gcp/compute/__init__.py +1 -0
  6. pulumi_gcp/compute/_inputs.py +1400 -0
  7. pulumi_gcp/compute/attached_disk.py +103 -0
  8. pulumi_gcp/compute/backend_service.py +29 -22
  9. pulumi_gcp/compute/firewall_policy_with_rules.py +769 -0
  10. pulumi_gcp/compute/outputs.py +1019 -0
  11. pulumi_gcp/compute/region_backend_service.py +29 -22
  12. pulumi_gcp/compute/router_nat.py +27 -66
  13. pulumi_gcp/config/__init__.pyi +2 -0
  14. pulumi_gcp/config/vars.py +4 -0
  15. pulumi_gcp/container/_inputs.py +72 -99
  16. pulumi_gcp/container/outputs.py +53 -70
  17. pulumi_gcp/databasemigrationservice/__init__.py +1 -0
  18. pulumi_gcp/databasemigrationservice/_inputs.py +362 -0
  19. pulumi_gcp/databasemigrationservice/migration_job.py +1739 -0
  20. pulumi_gcp/databasemigrationservice/outputs.py +268 -0
  21. pulumi_gcp/dataproc/get_metastore_service.py +11 -1
  22. pulumi_gcp/dataproc/metastore_service.py +93 -0
  23. pulumi_gcp/developerconnect/_inputs.py +42 -39
  24. pulumi_gcp/developerconnect/connection.py +86 -83
  25. pulumi_gcp/developerconnect/outputs.py +28 -26
  26. pulumi_gcp/discoveryengine/__init__.py +1 -0
  27. pulumi_gcp/discoveryengine/_inputs.py +131 -0
  28. pulumi_gcp/discoveryengine/outputs.py +131 -0
  29. pulumi_gcp/discoveryengine/target_site.py +870 -0
  30. pulumi_gcp/dns/managed_zone.py +1 -1
  31. pulumi_gcp/filestore/get_instance.py +21 -1
  32. pulumi_gcp/filestore/instance.py +94 -0
  33. pulumi_gcp/gkehub/feature_membership.py +140 -62
  34. pulumi_gcp/healthcare/__init__.py +1 -0
  35. pulumi_gcp/healthcare/_inputs.py +39 -0
  36. pulumi_gcp/healthcare/outputs.py +40 -0
  37. pulumi_gcp/healthcare/workspace.py +465 -0
  38. pulumi_gcp/looker/instance.py +81 -0
  39. pulumi_gcp/netapp/_inputs.py +63 -0
  40. pulumi_gcp/netapp/outputs.py +57 -0
  41. pulumi_gcp/netapp/storage_pool.py +54 -0
  42. pulumi_gcp/netapp/volume.py +82 -0
  43. pulumi_gcp/provider.py +20 -0
  44. pulumi_gcp/pubsub/subscription.py +43 -7
  45. pulumi_gcp/pulumi-plugin.json +1 -1
  46. pulumi_gcp/secretmanager/__init__.py +8 -0
  47. pulumi_gcp/secretmanager/_inputs.py +308 -0
  48. pulumi_gcp/secretmanager/get_regional_secret.py +279 -0
  49. pulumi_gcp/secretmanager/get_regional_secret_iam_policy.py +173 -0
  50. pulumi_gcp/secretmanager/get_regional_secret_version.py +241 -0
  51. pulumi_gcp/secretmanager/outputs.py +336 -0
  52. pulumi_gcp/secretmanager/regional_secret.py +1433 -0
  53. pulumi_gcp/secretmanager/regional_secret_iam_binding.py +1082 -0
  54. pulumi_gcp/secretmanager/regional_secret_iam_member.py +1082 -0
  55. pulumi_gcp/secretmanager/regional_secret_iam_policy.py +901 -0
  56. pulumi_gcp/secretmanager/regional_secret_version.py +753 -0
  57. pulumi_gcp/securitycenter/__init__.py +4 -0
  58. pulumi_gcp/securitycenter/folder_scc_big_query_export.py +795 -0
  59. pulumi_gcp/securitycenter/organization_scc_big_query_export.py +738 -0
  60. pulumi_gcp/securitycenter/project_scc_big_query_export.py +749 -0
  61. pulumi_gcp/securitycenter/v2_organization_scc_big_query_export.py +862 -0
  62. pulumi_gcp/securitycenter/v2_organization_scc_big_query_exports.py +6 -2
  63. pulumi_gcp/siteverification/__init__.py +3 -0
  64. pulumi_gcp/siteverification/_inputs.py +85 -0
  65. pulumi_gcp/siteverification/outputs.py +57 -0
  66. pulumi_gcp/siteverification/web_resource.py +398 -0
  67. pulumi_gcp/spanner/__init__.py +1 -0
  68. pulumi_gcp/spanner/_inputs.py +129 -0
  69. pulumi_gcp/spanner/backup_schedule.py +748 -0
  70. pulumi_gcp/spanner/get_instance.py +11 -1
  71. pulumi_gcp/spanner/instance.py +56 -0
  72. pulumi_gcp/spanner/outputs.py +93 -0
  73. {pulumi_gcp-8.3.0a1726834947.dist-info → pulumi_gcp-8.3.0a1727226164.dist-info}/METADATA +1 -1
  74. {pulumi_gcp-8.3.0a1726834947.dist-info → pulumi_gcp-8.3.0a1727226164.dist-info}/RECORD +76 -56
  75. {pulumi_gcp-8.3.0a1726834947.dist-info → pulumi_gcp-8.3.0a1727226164.dist-info}/WHEEL +0 -0
  76. {pulumi_gcp-8.3.0a1726834947.dist-info → pulumi_gcp-8.3.0a1727226164.dist-info}/top_level.txt +0 -0
@@ -1439,7 +1439,7 @@ class ManagedZone(pulumi.CustomResource):
1439
1439
 
1440
1440
  @property
1441
1441
  @pulumi.getter(name="dnssecConfig")
1442
- def dnssec_config(self) -> pulumi.Output[Optional['outputs.ManagedZoneDnssecConfig']]:
1442
+ def dnssec_config(self) -> pulumi.Output['outputs.ManagedZoneDnssecConfig']:
1443
1443
  """
1444
1444
  DNSSEC configuration
1445
1445
  Structure is documented below.
@@ -27,10 +27,16 @@ class GetInstanceResult:
27
27
  """
28
28
  A collection of values returned by getInstance.
29
29
  """
30
- def __init__(__self__, create_time=None, description=None, effective_labels=None, etag=None, file_shares=None, id=None, kms_key_name=None, labels=None, location=None, name=None, networks=None, project=None, protocol=None, pulumi_labels=None, tier=None, zone=None):
30
+ def __init__(__self__, create_time=None, deletion_protection_enabled=None, deletion_protection_reason=None, description=None, effective_labels=None, etag=None, file_shares=None, id=None, kms_key_name=None, labels=None, location=None, name=None, networks=None, project=None, protocol=None, pulumi_labels=None, tier=None, zone=None):
31
31
  if create_time and not isinstance(create_time, str):
32
32
  raise TypeError("Expected argument 'create_time' to be a str")
33
33
  pulumi.set(__self__, "create_time", create_time)
34
+ if deletion_protection_enabled and not isinstance(deletion_protection_enabled, bool):
35
+ raise TypeError("Expected argument 'deletion_protection_enabled' to be a bool")
36
+ pulumi.set(__self__, "deletion_protection_enabled", deletion_protection_enabled)
37
+ if deletion_protection_reason and not isinstance(deletion_protection_reason, str):
38
+ raise TypeError("Expected argument 'deletion_protection_reason' to be a str")
39
+ pulumi.set(__self__, "deletion_protection_reason", deletion_protection_reason)
34
40
  if description and not isinstance(description, str):
35
41
  raise TypeError("Expected argument 'description' to be a str")
36
42
  pulumi.set(__self__, "description", description)
@@ -82,6 +88,16 @@ class GetInstanceResult:
82
88
  def create_time(self) -> str:
83
89
  return pulumi.get(self, "create_time")
84
90
 
91
+ @property
92
+ @pulumi.getter(name="deletionProtectionEnabled")
93
+ def deletion_protection_enabled(self) -> bool:
94
+ return pulumi.get(self, "deletion_protection_enabled")
95
+
96
+ @property
97
+ @pulumi.getter(name="deletionProtectionReason")
98
+ def deletion_protection_reason(self) -> str:
99
+ return pulumi.get(self, "deletion_protection_reason")
100
+
85
101
  @property
86
102
  @pulumi.getter
87
103
  def description(self) -> str:
@@ -168,6 +184,8 @@ class AwaitableGetInstanceResult(GetInstanceResult):
168
184
  yield self
169
185
  return GetInstanceResult(
170
186
  create_time=self.create_time,
187
+ deletion_protection_enabled=self.deletion_protection_enabled,
188
+ deletion_protection_reason=self.deletion_protection_reason,
171
189
  description=self.description,
172
190
  effective_labels=self.effective_labels,
173
191
  etag=self.etag,
@@ -223,6 +241,8 @@ def get_instance(location: Optional[str] = None,
223
241
 
224
242
  return AwaitableGetInstanceResult(
225
243
  create_time=pulumi.get(__ret__, 'create_time'),
244
+ deletion_protection_enabled=pulumi.get(__ret__, 'deletion_protection_enabled'),
245
+ deletion_protection_reason=pulumi.get(__ret__, 'deletion_protection_reason'),
226
246
  description=pulumi.get(__ret__, 'description'),
227
247
  effective_labels=pulumi.get(__ret__, 'effective_labels'),
228
248
  etag=pulumi.get(__ret__, 'etag'),
@@ -24,6 +24,8 @@ class InstanceArgs:
24
24
  file_shares: pulumi.Input['InstanceFileSharesArgs'],
25
25
  networks: pulumi.Input[Sequence[pulumi.Input['InstanceNetworkArgs']]],
26
26
  tier: pulumi.Input[str],
27
+ deletion_protection_enabled: Optional[pulumi.Input[bool]] = None,
28
+ deletion_protection_reason: Optional[pulumi.Input[str]] = None,
27
29
  description: Optional[pulumi.Input[str]] = None,
28
30
  kms_key_name: Optional[pulumi.Input[str]] = None,
29
31
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
@@ -42,6 +44,8 @@ class InstanceArgs:
42
44
  Structure is documented below.
43
45
  :param pulumi.Input[str] tier: The service tier of the instance.
44
46
  Possible values include: STANDARD, PREMIUM, BASIC_HDD, BASIC_SSD, HIGH_SCALE_SSD, ZONAL, REGIONAL and ENTERPRISE
47
+ :param pulumi.Input[bool] deletion_protection_enabled: Indicates whether the instance is protected against deletion.
48
+ :param pulumi.Input[str] deletion_protection_reason: The reason for enabling deletion protection.
45
49
  :param pulumi.Input[str] description: A description of the instance.
46
50
  :param pulumi.Input[str] kms_key_name: KMS key name used for data encryption.
47
51
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Resource labels to represent user-provided metadata. **Note**: This field is non-authoritative, and will only manage the
@@ -57,6 +61,10 @@ class InstanceArgs:
57
61
  pulumi.set(__self__, "file_shares", file_shares)
58
62
  pulumi.set(__self__, "networks", networks)
59
63
  pulumi.set(__self__, "tier", tier)
64
+ if deletion_protection_enabled is not None:
65
+ pulumi.set(__self__, "deletion_protection_enabled", deletion_protection_enabled)
66
+ if deletion_protection_reason is not None:
67
+ pulumi.set(__self__, "deletion_protection_reason", deletion_protection_reason)
60
68
  if description is not None:
61
69
  pulumi.set(__self__, "description", description)
62
70
  if kms_key_name is not None:
@@ -118,6 +126,30 @@ class InstanceArgs:
118
126
  def tier(self, value: pulumi.Input[str]):
119
127
  pulumi.set(self, "tier", value)
120
128
 
129
+ @property
130
+ @pulumi.getter(name="deletionProtectionEnabled")
131
+ def deletion_protection_enabled(self) -> Optional[pulumi.Input[bool]]:
132
+ """
133
+ Indicates whether the instance is protected against deletion.
134
+ """
135
+ return pulumi.get(self, "deletion_protection_enabled")
136
+
137
+ @deletion_protection_enabled.setter
138
+ def deletion_protection_enabled(self, value: Optional[pulumi.Input[bool]]):
139
+ pulumi.set(self, "deletion_protection_enabled", value)
140
+
141
+ @property
142
+ @pulumi.getter(name="deletionProtectionReason")
143
+ def deletion_protection_reason(self) -> Optional[pulumi.Input[str]]:
144
+ """
145
+ The reason for enabling deletion protection.
146
+ """
147
+ return pulumi.get(self, "deletion_protection_reason")
148
+
149
+ @deletion_protection_reason.setter
150
+ def deletion_protection_reason(self, value: Optional[pulumi.Input[str]]):
151
+ pulumi.set(self, "deletion_protection_reason", value)
152
+
121
153
  @property
122
154
  @pulumi.getter
123
155
  def description(self) -> Optional[pulumi.Input[str]]:
@@ -221,6 +253,8 @@ class InstanceArgs:
221
253
  class _InstanceState:
222
254
  def __init__(__self__, *,
223
255
  create_time: Optional[pulumi.Input[str]] = None,
256
+ deletion_protection_enabled: Optional[pulumi.Input[bool]] = None,
257
+ deletion_protection_reason: Optional[pulumi.Input[str]] = None,
224
258
  description: Optional[pulumi.Input[str]] = None,
225
259
  effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
226
260
  etag: Optional[pulumi.Input[str]] = None,
@@ -238,6 +272,8 @@ class _InstanceState:
238
272
  """
239
273
  Input properties used for looking up and filtering Instance resources.
240
274
  :param pulumi.Input[str] create_time: Creation timestamp in RFC3339 text format.
275
+ :param pulumi.Input[bool] deletion_protection_enabled: Indicates whether the instance is protected against deletion.
276
+ :param pulumi.Input[str] deletion_protection_reason: The reason for enabling deletion protection.
241
277
  :param pulumi.Input[str] description: A description of the instance.
242
278
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
243
279
  :param pulumi.Input[str] etag: Server-specified ETag for the instance resource to prevent
@@ -265,6 +301,10 @@ class _InstanceState:
265
301
  """
266
302
  if create_time is not None:
267
303
  pulumi.set(__self__, "create_time", create_time)
304
+ if deletion_protection_enabled is not None:
305
+ pulumi.set(__self__, "deletion_protection_enabled", deletion_protection_enabled)
306
+ if deletion_protection_reason is not None:
307
+ pulumi.set(__self__, "deletion_protection_reason", deletion_protection_reason)
268
308
  if description is not None:
269
309
  pulumi.set(__self__, "description", description)
270
310
  if effective_labels is not None:
@@ -309,6 +349,30 @@ class _InstanceState:
309
349
  def create_time(self, value: Optional[pulumi.Input[str]]):
310
350
  pulumi.set(self, "create_time", value)
311
351
 
352
+ @property
353
+ @pulumi.getter(name="deletionProtectionEnabled")
354
+ def deletion_protection_enabled(self) -> Optional[pulumi.Input[bool]]:
355
+ """
356
+ Indicates whether the instance is protected against deletion.
357
+ """
358
+ return pulumi.get(self, "deletion_protection_enabled")
359
+
360
+ @deletion_protection_enabled.setter
361
+ def deletion_protection_enabled(self, value: Optional[pulumi.Input[bool]]):
362
+ pulumi.set(self, "deletion_protection_enabled", value)
363
+
364
+ @property
365
+ @pulumi.getter(name="deletionProtectionReason")
366
+ def deletion_protection_reason(self) -> Optional[pulumi.Input[str]]:
367
+ """
368
+ The reason for enabling deletion protection.
369
+ """
370
+ return pulumi.get(self, "deletion_protection_reason")
371
+
372
+ @deletion_protection_reason.setter
373
+ def deletion_protection_reason(self, value: Optional[pulumi.Input[str]]):
374
+ pulumi.set(self, "deletion_protection_reason", value)
375
+
312
376
  @property
313
377
  @pulumi.getter
314
378
  def description(self) -> Optional[pulumi.Input[str]]:
@@ -492,6 +556,8 @@ class Instance(pulumi.CustomResource):
492
556
  def __init__(__self__,
493
557
  resource_name: str,
494
558
  opts: Optional[pulumi.ResourceOptions] = None,
559
+ deletion_protection_enabled: Optional[pulumi.Input[bool]] = None,
560
+ deletion_protection_reason: Optional[pulumi.Input[str]] = None,
495
561
  description: Optional[pulumi.Input[str]] = None,
496
562
  file_shares: Optional[pulumi.Input[Union['InstanceFileSharesArgs', 'InstanceFileSharesArgsDict']]] = None,
497
563
  kms_key_name: Optional[pulumi.Input[str]] = None,
@@ -643,6 +709,8 @@ class Instance(pulumi.CustomResource):
643
709
 
644
710
  :param str resource_name: The name of the resource.
645
711
  :param pulumi.ResourceOptions opts: Options for the resource.
712
+ :param pulumi.Input[bool] deletion_protection_enabled: Indicates whether the instance is protected against deletion.
713
+ :param pulumi.Input[str] deletion_protection_reason: The reason for enabling deletion protection.
646
714
  :param pulumi.Input[str] description: A description of the instance.
647
715
  :param pulumi.Input[Union['InstanceFileSharesArgs', 'InstanceFileSharesArgsDict']] file_shares: File system shares on the instance. For this version, only a
648
716
  single file share is supported.
@@ -821,6 +889,8 @@ class Instance(pulumi.CustomResource):
821
889
  def _internal_init(__self__,
822
890
  resource_name: str,
823
891
  opts: Optional[pulumi.ResourceOptions] = None,
892
+ deletion_protection_enabled: Optional[pulumi.Input[bool]] = None,
893
+ deletion_protection_reason: Optional[pulumi.Input[str]] = None,
824
894
  description: Optional[pulumi.Input[str]] = None,
825
895
  file_shares: Optional[pulumi.Input[Union['InstanceFileSharesArgs', 'InstanceFileSharesArgsDict']]] = None,
826
896
  kms_key_name: Optional[pulumi.Input[str]] = None,
@@ -841,6 +911,8 @@ class Instance(pulumi.CustomResource):
841
911
  raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
842
912
  __props__ = InstanceArgs.__new__(InstanceArgs)
843
913
 
914
+ __props__.__dict__["deletion_protection_enabled"] = deletion_protection_enabled
915
+ __props__.__dict__["deletion_protection_reason"] = deletion_protection_reason
844
916
  __props__.__dict__["description"] = description
845
917
  if file_shares is None and not opts.urn:
846
918
  raise TypeError("Missing required property 'file_shares'")
@@ -875,6 +947,8 @@ class Instance(pulumi.CustomResource):
875
947
  id: pulumi.Input[str],
876
948
  opts: Optional[pulumi.ResourceOptions] = None,
877
949
  create_time: Optional[pulumi.Input[str]] = None,
950
+ deletion_protection_enabled: Optional[pulumi.Input[bool]] = None,
951
+ deletion_protection_reason: Optional[pulumi.Input[str]] = None,
878
952
  description: Optional[pulumi.Input[str]] = None,
879
953
  effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
880
954
  etag: Optional[pulumi.Input[str]] = None,
@@ -897,6 +971,8 @@ class Instance(pulumi.CustomResource):
897
971
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
898
972
  :param pulumi.ResourceOptions opts: Options for the resource.
899
973
  :param pulumi.Input[str] create_time: Creation timestamp in RFC3339 text format.
974
+ :param pulumi.Input[bool] deletion_protection_enabled: Indicates whether the instance is protected against deletion.
975
+ :param pulumi.Input[str] deletion_protection_reason: The reason for enabling deletion protection.
900
976
  :param pulumi.Input[str] description: A description of the instance.
901
977
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
902
978
  :param pulumi.Input[str] etag: Server-specified ETag for the instance resource to prevent
@@ -927,6 +1003,8 @@ class Instance(pulumi.CustomResource):
927
1003
  __props__ = _InstanceState.__new__(_InstanceState)
928
1004
 
929
1005
  __props__.__dict__["create_time"] = create_time
1006
+ __props__.__dict__["deletion_protection_enabled"] = deletion_protection_enabled
1007
+ __props__.__dict__["deletion_protection_reason"] = deletion_protection_reason
930
1008
  __props__.__dict__["description"] = description
931
1009
  __props__.__dict__["effective_labels"] = effective_labels
932
1010
  __props__.__dict__["etag"] = etag
@@ -951,6 +1029,22 @@ class Instance(pulumi.CustomResource):
951
1029
  """
952
1030
  return pulumi.get(self, "create_time")
953
1031
 
1032
+ @property
1033
+ @pulumi.getter(name="deletionProtectionEnabled")
1034
+ def deletion_protection_enabled(self) -> pulumi.Output[Optional[bool]]:
1035
+ """
1036
+ Indicates whether the instance is protected against deletion.
1037
+ """
1038
+ return pulumi.get(self, "deletion_protection_enabled")
1039
+
1040
+ @property
1041
+ @pulumi.getter(name="deletionProtectionReason")
1042
+ def deletion_protection_reason(self) -> pulumi.Output[Optional[str]]:
1043
+ """
1044
+ The reason for enabling deletion protection.
1045
+ """
1046
+ return pulumi.get(self, "deletion_protection_reason")
1047
+
954
1048
  @property
955
1049
  @pulumi.getter
956
1050
  def description(self) -> pulumi.Output[Optional[str]]:
@@ -306,7 +306,10 @@ class FeatureMembership(pulumi.CustomResource):
306
306
 
307
307
  ## Example Usage
308
308
 
309
- ### Config Management
309
+ ### Config Management With Config Sync Auto-Upgrades And Without Git/OCI
310
+
311
+ With [Config Sync auto-upgrades](https://cloud.devsite.corp.google.com/kubernetes-engine/enterprise/config-sync/docs/how-to/upgrade-config-sync#auto-upgrade-config), Google assumes responsibility for automatically upgrading Config Sync versions
312
+ and overseeing the lifecycle of its components.
310
313
 
311
314
  ```python
312
315
  import pulumi
@@ -334,16 +337,14 @@ class FeatureMembership(pulumi.CustomResource):
334
337
  feature=feature.name,
335
338
  membership=membership.membership_id,
336
339
  configmanagement={
337
- "version": "1.19.0",
340
+ "management": "MANAGEMENT_AUTOMATIC",
338
341
  "config_sync": {
339
342
  "enabled": True,
340
- "git": {
341
- "sync_repo": "https://github.com/hashicorp/terraform",
342
- },
343
343
  },
344
344
  })
345
345
  ```
346
- ### Config Management With OCI
346
+
347
+ ### Config Management With Git
347
348
 
348
349
  ```python
349
350
  import pulumi
@@ -374,32 +375,14 @@ class FeatureMembership(pulumi.CustomResource):
374
375
  "version": "1.19.0",
375
376
  "config_sync": {
376
377
  "enabled": True,
377
- "oci": {
378
- "sync_repo": "us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest",
379
- "policy_dir": "config-connector",
380
- "sync_wait_secs": "20",
381
- "secret_type": "gcpserviceaccount",
382
- "gcp_service_account_email": "sa@project-id.iam.gserviceaccount.com",
378
+ "git": {
379
+ "sync_repo": "https://github.com/hashicorp/terraform",
383
380
  },
384
381
  },
385
382
  })
386
383
  ```
387
384
 
388
- ### Multi Cluster Service Discovery
389
-
390
- ```python
391
- import pulumi
392
- import pulumi_gcp as gcp
393
-
394
- feature = gcp.gkehub.Feature("feature",
395
- name="multiclusterservicediscovery",
396
- location="global",
397
- labels={
398
- "foo": "bar",
399
- })
400
- ```
401
-
402
- ### Service Mesh
385
+ ### Config Management With OCI
403
386
 
404
387
  ```python
405
388
  import pulumi
@@ -417,14 +400,27 @@ class FeatureMembership(pulumi.CustomResource):
417
400
  },
418
401
  })
419
402
  feature = gcp.gkehub.Feature("feature",
420
- name="servicemesh",
421
- location="global")
403
+ name="configmanagement",
404
+ location="global",
405
+ labels={
406
+ "foo": "bar",
407
+ })
422
408
  feature_member = gcp.gkehub.FeatureMembership("feature_member",
423
409
  location="global",
424
410
  feature=feature.name,
425
411
  membership=membership.membership_id,
426
- mesh={
427
- "management": "MANAGEMENT_AUTOMATIC",
412
+ configmanagement={
413
+ "version": "1.19.0",
414
+ "config_sync": {
415
+ "enabled": True,
416
+ "oci": {
417
+ "sync_repo": "us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest",
418
+ "policy_dir": "config-connector",
419
+ "sync_wait_secs": "20",
420
+ "secret_type": "gcpserviceaccount",
421
+ "gcp_service_account_email": "sa@project-id.iam.gserviceaccount.com",
422
+ },
423
+ },
428
424
  })
429
425
  ```
430
426
 
@@ -468,6 +464,49 @@ class FeatureMembership(pulumi.CustomResource):
468
464
  })
469
465
  ```
470
466
 
467
+ ### Multi Cluster Service Discovery
468
+
469
+ ```python
470
+ import pulumi
471
+ import pulumi_gcp as gcp
472
+
473
+ feature = gcp.gkehub.Feature("feature",
474
+ name="multiclusterservicediscovery",
475
+ location="global",
476
+ labels={
477
+ "foo": "bar",
478
+ })
479
+ ```
480
+
481
+ ### Service Mesh
482
+
483
+ ```python
484
+ import pulumi
485
+ import pulumi_gcp as gcp
486
+
487
+ cluster = gcp.container.Cluster("cluster",
488
+ name="my-cluster",
489
+ location="us-central1-a",
490
+ initial_node_count=1)
491
+ membership = gcp.gkehub.Membership("membership",
492
+ membership_id="my-membership",
493
+ endpoint={
494
+ "gke_cluster": {
495
+ "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"),
496
+ },
497
+ })
498
+ feature = gcp.gkehub.Feature("feature",
499
+ name="servicemesh",
500
+ location="global")
501
+ feature_member = gcp.gkehub.FeatureMembership("feature_member",
502
+ location="global",
503
+ feature=feature.name,
504
+ membership=membership.membership_id,
505
+ mesh={
506
+ "management": "MANAGEMENT_AUTOMATIC",
507
+ })
508
+ ```
509
+
471
510
  ### Policy Controller With Minimal Configuration
472
511
 
473
512
  ```python
@@ -587,7 +626,10 @@ class FeatureMembership(pulumi.CustomResource):
587
626
 
588
627
  ## Example Usage
589
628
 
590
- ### Config Management
629
+ ### Config Management With Config Sync Auto-Upgrades And Without Git/OCI
630
+
631
+ With [Config Sync auto-upgrades](https://cloud.devsite.corp.google.com/kubernetes-engine/enterprise/config-sync/docs/how-to/upgrade-config-sync#auto-upgrade-config), Google assumes responsibility for automatically upgrading Config Sync versions
632
+ and overseeing the lifecycle of its components.
591
633
 
592
634
  ```python
593
635
  import pulumi
@@ -615,16 +657,14 @@ class FeatureMembership(pulumi.CustomResource):
615
657
  feature=feature.name,
616
658
  membership=membership.membership_id,
617
659
  configmanagement={
618
- "version": "1.19.0",
660
+ "management": "MANAGEMENT_AUTOMATIC",
619
661
  "config_sync": {
620
662
  "enabled": True,
621
- "git": {
622
- "sync_repo": "https://github.com/hashicorp/terraform",
623
- },
624
663
  },
625
664
  })
626
665
  ```
627
- ### Config Management With OCI
666
+
667
+ ### Config Management With Git
628
668
 
629
669
  ```python
630
670
  import pulumi
@@ -655,32 +695,14 @@ class FeatureMembership(pulumi.CustomResource):
655
695
  "version": "1.19.0",
656
696
  "config_sync": {
657
697
  "enabled": True,
658
- "oci": {
659
- "sync_repo": "us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest",
660
- "policy_dir": "config-connector",
661
- "sync_wait_secs": "20",
662
- "secret_type": "gcpserviceaccount",
663
- "gcp_service_account_email": "sa@project-id.iam.gserviceaccount.com",
698
+ "git": {
699
+ "sync_repo": "https://github.com/hashicorp/terraform",
664
700
  },
665
701
  },
666
702
  })
667
703
  ```
668
704
 
669
- ### Multi Cluster Service Discovery
670
-
671
- ```python
672
- import pulumi
673
- import pulumi_gcp as gcp
674
-
675
- feature = gcp.gkehub.Feature("feature",
676
- name="multiclusterservicediscovery",
677
- location="global",
678
- labels={
679
- "foo": "bar",
680
- })
681
- ```
682
-
683
- ### Service Mesh
705
+ ### Config Management With OCI
684
706
 
685
707
  ```python
686
708
  import pulumi
@@ -698,14 +720,27 @@ class FeatureMembership(pulumi.CustomResource):
698
720
  },
699
721
  })
700
722
  feature = gcp.gkehub.Feature("feature",
701
- name="servicemesh",
702
- location="global")
723
+ name="configmanagement",
724
+ location="global",
725
+ labels={
726
+ "foo": "bar",
727
+ })
703
728
  feature_member = gcp.gkehub.FeatureMembership("feature_member",
704
729
  location="global",
705
730
  feature=feature.name,
706
731
  membership=membership.membership_id,
707
- mesh={
708
- "management": "MANAGEMENT_AUTOMATIC",
732
+ configmanagement={
733
+ "version": "1.19.0",
734
+ "config_sync": {
735
+ "enabled": True,
736
+ "oci": {
737
+ "sync_repo": "us-central1-docker.pkg.dev/sample-project/config-repo/config-sync-gke:latest",
738
+ "policy_dir": "config-connector",
739
+ "sync_wait_secs": "20",
740
+ "secret_type": "gcpserviceaccount",
741
+ "gcp_service_account_email": "sa@project-id.iam.gserviceaccount.com",
742
+ },
743
+ },
709
744
  })
710
745
  ```
711
746
 
@@ -749,6 +784,49 @@ class FeatureMembership(pulumi.CustomResource):
749
784
  })
750
785
  ```
751
786
 
787
+ ### Multi Cluster Service Discovery
788
+
789
+ ```python
790
+ import pulumi
791
+ import pulumi_gcp as gcp
792
+
793
+ feature = gcp.gkehub.Feature("feature",
794
+ name="multiclusterservicediscovery",
795
+ location="global",
796
+ labels={
797
+ "foo": "bar",
798
+ })
799
+ ```
800
+
801
+ ### Service Mesh
802
+
803
+ ```python
804
+ import pulumi
805
+ import pulumi_gcp as gcp
806
+
807
+ cluster = gcp.container.Cluster("cluster",
808
+ name="my-cluster",
809
+ location="us-central1-a",
810
+ initial_node_count=1)
811
+ membership = gcp.gkehub.Membership("membership",
812
+ membership_id="my-membership",
813
+ endpoint={
814
+ "gke_cluster": {
815
+ "resource_link": cluster.id.apply(lambda id: f"//container.googleapis.com/{id}"),
816
+ },
817
+ })
818
+ feature = gcp.gkehub.Feature("feature",
819
+ name="servicemesh",
820
+ location="global")
821
+ feature_member = gcp.gkehub.FeatureMembership("feature_member",
822
+ location="global",
823
+ feature=feature.name,
824
+ membership=membership.membership_id,
825
+ mesh={
826
+ "management": "MANAGEMENT_AUTOMATIC",
827
+ })
828
+ ```
829
+
752
830
  ### Policy Controller With Minimal Configuration
753
831
 
754
832
  ```python
@@ -30,5 +30,6 @@ from .hl7_store import *
30
30
  from .hl7_store_iam_binding import *
31
31
  from .hl7_store_iam_member import *
32
32
  from .hl7_store_iam_policy import *
33
+ from .workspace import *
33
34
  from ._inputs import *
34
35
  from . import outputs
@@ -59,6 +59,8 @@ __all__ = [
59
59
  'Hl7StoreNotificationConfigsArgsDict',
60
60
  'Hl7StoreParserConfigArgs',
61
61
  'Hl7StoreParserConfigArgsDict',
62
+ 'WorkspaceSettingsArgs',
63
+ 'WorkspaceSettingsArgsDict',
62
64
  ]
63
65
 
64
66
  MYPY = False
@@ -1338,3 +1340,40 @@ class Hl7StoreParserConfigArgs:
1338
1340
  pulumi.set(self, "version", value)
1339
1341
 
1340
1342
 
1343
+ if not MYPY:
1344
+ class WorkspaceSettingsArgsDict(TypedDict):
1345
+ data_project_ids: pulumi.Input[Sequence[pulumi.Input[str]]]
1346
+ """
1347
+ Project IDs for data projects hosted in a workspace.
1348
+
1349
+ - - -
1350
+ """
1351
+ elif False:
1352
+ WorkspaceSettingsArgsDict: TypeAlias = Mapping[str, Any]
1353
+
1354
+ @pulumi.input_type
1355
+ class WorkspaceSettingsArgs:
1356
+ def __init__(__self__, *,
1357
+ data_project_ids: pulumi.Input[Sequence[pulumi.Input[str]]]):
1358
+ """
1359
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] data_project_ids: Project IDs for data projects hosted in a workspace.
1360
+
1361
+ - - -
1362
+ """
1363
+ pulumi.set(__self__, "data_project_ids", data_project_ids)
1364
+
1365
+ @property
1366
+ @pulumi.getter(name="dataProjectIds")
1367
+ def data_project_ids(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
1368
+ """
1369
+ Project IDs for data projects hosted in a workspace.
1370
+
1371
+ - - -
1372
+ """
1373
+ return pulumi.get(self, "data_project_ids")
1374
+
1375
+ @data_project_ids.setter
1376
+ def data_project_ids(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
1377
+ pulumi.set(self, "data_project_ids", value)
1378
+
1379
+
@@ -38,6 +38,7 @@ __all__ = [
38
38
  'Hl7StoreNotificationConfig',
39
39
  'Hl7StoreNotificationConfigs',
40
40
  'Hl7StoreParserConfig',
41
+ 'WorkspaceSettings',
41
42
  ]
42
43
 
43
44
  @pulumi.output_type
@@ -1019,3 +1020,42 @@ class Hl7StoreParserConfig(dict):
1019
1020
  return pulumi.get(self, "version")
1020
1021
 
1021
1022
 
1023
+ @pulumi.output_type
1024
+ class WorkspaceSettings(dict):
1025
+ @staticmethod
1026
+ def __key_warning(key: str):
1027
+ suggest = None
1028
+ if key == "dataProjectIds":
1029
+ suggest = "data_project_ids"
1030
+
1031
+ if suggest:
1032
+ pulumi.log.warn(f"Key '{key}' not found in WorkspaceSettings. Access the value via the '{suggest}' property getter instead.")
1033
+
1034
+ def __getitem__(self, key: str) -> Any:
1035
+ WorkspaceSettings.__key_warning(key)
1036
+ return super().__getitem__(key)
1037
+
1038
+ def get(self, key: str, default = None) -> Any:
1039
+ WorkspaceSettings.__key_warning(key)
1040
+ return super().get(key, default)
1041
+
1042
+ def __init__(__self__, *,
1043
+ data_project_ids: Sequence[str]):
1044
+ """
1045
+ :param Sequence[str] data_project_ids: Project IDs for data projects hosted in a workspace.
1046
+
1047
+ - - -
1048
+ """
1049
+ pulumi.set(__self__, "data_project_ids", data_project_ids)
1050
+
1051
+ @property
1052
+ @pulumi.getter(name="dataProjectIds")
1053
+ def data_project_ids(self) -> Sequence[str]:
1054
+ """
1055
+ Project IDs for data projects hosted in a workspace.
1056
+
1057
+ - - -
1058
+ """
1059
+ return pulumi.get(self, "data_project_ids")
1060
+
1061
+