pulumi-gcp 8.33.0a1749048505__py3-none-any.whl → 8.34.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. pulumi_gcp/__init__.py +32 -0
  2. pulumi_gcp/alloydb/cluster.py +16 -64
  3. pulumi_gcp/apigee/_inputs.py +89 -0
  4. pulumi_gcp/apigee/environment.py +68 -2
  5. pulumi_gcp/apigee/outputs.py +88 -0
  6. pulumi_gcp/apihub/__init__.py +1 -0
  7. pulumi_gcp/apihub/_inputs.py +184 -0
  8. pulumi_gcp/apihub/curation.py +812 -0
  9. pulumi_gcp/apihub/outputs.py +165 -0
  10. pulumi_gcp/beyondcorp/get_security_gateway.py +12 -1
  11. pulumi_gcp/beyondcorp/security_gateway.py +28 -0
  12. pulumi_gcp/cloudrunv2/_inputs.py +463 -0
  13. pulumi_gcp/cloudrunv2/outputs.py +581 -1
  14. pulumi_gcp/cloudrunv2/worker_pool.py +0 -8
  15. pulumi_gcp/colab/runtime_template.py +4 -26
  16. pulumi_gcp/compute/__init__.py +3 -0
  17. pulumi_gcp/compute/_inputs.py +1551 -0
  18. pulumi_gcp/compute/interconnect.py +32 -0
  19. pulumi_gcp/compute/interconnect_attachment.py +28 -0
  20. pulumi_gcp/compute/interconnect_attachment_group.py +636 -0
  21. pulumi_gcp/compute/interconnect_group.py +586 -0
  22. pulumi_gcp/compute/outputs.py +1087 -0
  23. pulumi_gcp/compute/snapshot_settings.py +285 -0
  24. pulumi_gcp/container/_inputs.py +51 -18
  25. pulumi_gcp/container/cluster.py +47 -0
  26. pulumi_gcp/container/get_cluster.py +12 -1
  27. pulumi_gcp/container/outputs.py +71 -16
  28. pulumi_gcp/dataplex/_inputs.py +20 -0
  29. pulumi_gcp/dataplex/datascan.py +2 -0
  30. pulumi_gcp/dataplex/outputs.py +15 -1
  31. pulumi_gcp/eventarc/_inputs.py +12 -5
  32. pulumi_gcp/eventarc/outputs.py +8 -3
  33. pulumi_gcp/eventarc/pipeline.py +0 -12
  34. pulumi_gcp/gemini/data_sharing_with_google_setting.py +58 -9
  35. pulumi_gcp/gemini/data_sharing_with_google_setting_binding.py +11 -16
  36. pulumi_gcp/gemini/gemini_gcp_enablement_setting.py +51 -2
  37. pulumi_gcp/gemini/gemini_gcp_enablement_setting_binding.py +11 -16
  38. pulumi_gcp/gkehub/_inputs.py +84 -7
  39. pulumi_gcp/gkehub/feature.py +38 -0
  40. pulumi_gcp/gkehub/outputs.py +102 -7
  41. pulumi_gcp/gkehub/scope_rbac_role_binding.py +54 -2
  42. pulumi_gcp/gkeonprem/_inputs.py +54 -0
  43. pulumi_gcp/gkeonprem/outputs.py +49 -0
  44. pulumi_gcp/gkeonprem/vmware_admin_cluster.py +71 -0
  45. pulumi_gcp/iam/workload_identity_pool_namespace.py +4 -4
  46. pulumi_gcp/iap/tunnel_dest_group.py +2 -2
  47. pulumi_gcp/integrationconnectors/managed_zone.py +8 -8
  48. pulumi_gcp/managedkafka/connect_cluster.py +4 -4
  49. pulumi_gcp/managedkafka/connector.py +4 -4
  50. pulumi_gcp/networkconnectivity/spoke.py +14 -14
  51. pulumi_gcp/networksecurity/backend_authentication_config.py +64 -0
  52. pulumi_gcp/orgpolicy/policy.py +2 -2
  53. pulumi_gcp/pubsub/_inputs.py +392 -0
  54. pulumi_gcp/pubsub/get_subscription.py +12 -1
  55. pulumi_gcp/pubsub/get_topic.py +12 -1
  56. pulumi_gcp/pubsub/outputs.py +548 -0
  57. pulumi_gcp/pubsub/subscription.py +67 -6
  58. pulumi_gcp/pubsub/topic.py +61 -0
  59. pulumi_gcp/pulumi-plugin.json +1 -1
  60. pulumi_gcp/vertex/ai_endpoint.py +4 -4
  61. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
  62. {pulumi_gcp-8.33.0a1749048505.dist-info → pulumi_gcp-8.34.0.dist-info}/METADATA +1 -1
  63. {pulumi_gcp-8.33.0a1749048505.dist-info → pulumi_gcp-8.34.0.dist-info}/RECORD +65 -61
  64. {pulumi_gcp-8.33.0a1749048505.dist-info → pulumi_gcp-8.34.0.dist-info}/WHEEL +0 -0
  65. {pulumi_gcp-8.33.0a1749048505.dist-info → pulumi_gcp-8.34.0.dist-info}/top_level.txt +0 -0
@@ -265,9 +265,28 @@ __all__ = [
265
265
  'InstanceTemplateShieldedInstanceConfig',
266
266
  'InstantSnapshotIamBindingCondition',
267
267
  'InstantSnapshotIamMemberCondition',
268
+ 'InterconnectAttachmentGroupAttachment',
269
+ 'InterconnectAttachmentGroupConfigured',
270
+ 'InterconnectAttachmentGroupConfiguredAvailabilitySla',
271
+ 'InterconnectAttachmentGroupConfiguredAvailabilitySlaIntendedSlaBlocker',
272
+ 'InterconnectAttachmentGroupIntent',
273
+ 'InterconnectAttachmentGroupLogicalStructure',
274
+ 'InterconnectAttachmentGroupLogicalStructureRegion',
275
+ 'InterconnectAttachmentGroupLogicalStructureRegionMetro',
276
+ 'InterconnectAttachmentGroupLogicalStructureRegionMetroFacility',
277
+ 'InterconnectAttachmentGroupLogicalStructureRegionMetroFacilityZone',
268
278
  'InterconnectAttachmentPrivateInterconnectInfo',
269
279
  'InterconnectCircuitInfo',
270
280
  'InterconnectExpectedOutage',
281
+ 'InterconnectGroupConfigured',
282
+ 'InterconnectGroupConfiguredTopologyCapability',
283
+ 'InterconnectGroupConfiguredTopologyCapabilityIntendedCapabilityBlocker',
284
+ 'InterconnectGroupIntent',
285
+ 'InterconnectGroupInterconnect',
286
+ 'InterconnectGroupPhysicalStructure',
287
+ 'InterconnectGroupPhysicalStructureMetro',
288
+ 'InterconnectGroupPhysicalStructureMetroFacility',
289
+ 'InterconnectGroupPhysicalStructureMetroFacilityZone',
271
290
  'InterconnectMacsec',
272
291
  'InterconnectMacsecPreSharedKey',
273
292
  'MachineImageIamBindingCondition',
@@ -635,6 +654,8 @@ __all__ = [
635
654
  'ServiceAttachmentConsumerAcceptList',
636
655
  'SnapshotIamBindingCondition',
637
656
  'SnapshotIamMemberCondition',
657
+ 'SnapshotSettingsStorageLocation',
658
+ 'SnapshotSettingsStorageLocationLocation',
638
659
  'SnapshotSnapshotEncryptionKey',
639
660
  'SnapshotSourceDiskEncryptionKey',
640
661
  'StoragePoolIamBindingCondition',
@@ -20470,6 +20491,521 @@ class InstantSnapshotIamMemberCondition(dict):
20470
20491
  return pulumi.get(self, "description")
20471
20492
 
20472
20493
 
20494
+ @pulumi.output_type
20495
+ class InterconnectAttachmentGroupAttachment(dict):
20496
+ def __init__(__self__, *,
20497
+ name: builtins.str,
20498
+ attachment: Optional[builtins.str] = None):
20499
+ """
20500
+ :param builtins.str name: The identifier for this object. Format specified above.
20501
+ :param builtins.str attachment: (Optional)
20502
+ """
20503
+ pulumi.set(__self__, "name", name)
20504
+ if attachment is not None:
20505
+ pulumi.set(__self__, "attachment", attachment)
20506
+
20507
+ @property
20508
+ @pulumi.getter
20509
+ def name(self) -> builtins.str:
20510
+ """
20511
+ The identifier for this object. Format specified above.
20512
+ """
20513
+ return pulumi.get(self, "name")
20514
+
20515
+ @property
20516
+ @pulumi.getter
20517
+ def attachment(self) -> Optional[builtins.str]:
20518
+ """
20519
+ (Optional)
20520
+ """
20521
+ return pulumi.get(self, "attachment")
20522
+
20523
+
20524
+ @pulumi.output_type
20525
+ class InterconnectAttachmentGroupConfigured(dict):
20526
+ @staticmethod
20527
+ def __key_warning(key: str):
20528
+ suggest = None
20529
+ if key == "availabilitySlas":
20530
+ suggest = "availability_slas"
20531
+
20532
+ if suggest:
20533
+ pulumi.log.warn(f"Key '{key}' not found in InterconnectAttachmentGroupConfigured. Access the value via the '{suggest}' property getter instead.")
20534
+
20535
+ def __getitem__(self, key: str) -> Any:
20536
+ InterconnectAttachmentGroupConfigured.__key_warning(key)
20537
+ return super().__getitem__(key)
20538
+
20539
+ def get(self, key: str, default = None) -> Any:
20540
+ InterconnectAttachmentGroupConfigured.__key_warning(key)
20541
+ return super().get(key, default)
20542
+
20543
+ def __init__(__self__, *,
20544
+ availability_slas: Optional[Sequence['outputs.InterconnectAttachmentGroupConfiguredAvailabilitySla']] = None):
20545
+ """
20546
+ :param Sequence['InterconnectAttachmentGroupConfiguredAvailabilitySlaArgs'] availability_slas: (Output)
20547
+ Which SLA this group is configured to support, and why this
20548
+ group does or does not meet that SLA's requirements.
20549
+ Structure is documented below.
20550
+ """
20551
+ if availability_slas is not None:
20552
+ pulumi.set(__self__, "availability_slas", availability_slas)
20553
+
20554
+ @property
20555
+ @pulumi.getter(name="availabilitySlas")
20556
+ def availability_slas(self) -> Optional[Sequence['outputs.InterconnectAttachmentGroupConfiguredAvailabilitySla']]:
20557
+ """
20558
+ (Output)
20559
+ Which SLA this group is configured to support, and why this
20560
+ group does or does not meet that SLA's requirements.
20561
+ Structure is documented below.
20562
+ """
20563
+ return pulumi.get(self, "availability_slas")
20564
+
20565
+
20566
+ @pulumi.output_type
20567
+ class InterconnectAttachmentGroupConfiguredAvailabilitySla(dict):
20568
+ @staticmethod
20569
+ def __key_warning(key: str):
20570
+ suggest = None
20571
+ if key == "effectiveSla":
20572
+ suggest = "effective_sla"
20573
+ elif key == "intendedSlaBlockers":
20574
+ suggest = "intended_sla_blockers"
20575
+
20576
+ if suggest:
20577
+ pulumi.log.warn(f"Key '{key}' not found in InterconnectAttachmentGroupConfiguredAvailabilitySla. Access the value via the '{suggest}' property getter instead.")
20578
+
20579
+ def __getitem__(self, key: str) -> Any:
20580
+ InterconnectAttachmentGroupConfiguredAvailabilitySla.__key_warning(key)
20581
+ return super().__getitem__(key)
20582
+
20583
+ def get(self, key: str, default = None) -> Any:
20584
+ InterconnectAttachmentGroupConfiguredAvailabilitySla.__key_warning(key)
20585
+ return super().get(key, default)
20586
+
20587
+ def __init__(__self__, *,
20588
+ effective_sla: Optional[builtins.str] = None,
20589
+ intended_sla_blockers: Optional[Sequence['outputs.InterconnectAttachmentGroupConfiguredAvailabilitySlaIntendedSlaBlocker']] = None):
20590
+ """
20591
+ :param builtins.str effective_sla: (Output)
20592
+ Which SLA this group supports. Options are the same as the
20593
+ intent.
20594
+ :param Sequence['InterconnectAttachmentGroupConfiguredAvailabilitySlaIntendedSlaBlockerArgs'] intended_sla_blockers: (Output)
20595
+ Reasons why configuration.availabilitySLA.sla differs from
20596
+ intent.availabilitySLA. This list is empty if and only if those are the
20597
+ same.
20598
+ Structure is documented below.
20599
+ """
20600
+ if effective_sla is not None:
20601
+ pulumi.set(__self__, "effective_sla", effective_sla)
20602
+ if intended_sla_blockers is not None:
20603
+ pulumi.set(__self__, "intended_sla_blockers", intended_sla_blockers)
20604
+
20605
+ @property
20606
+ @pulumi.getter(name="effectiveSla")
20607
+ def effective_sla(self) -> Optional[builtins.str]:
20608
+ """
20609
+ (Output)
20610
+ Which SLA this group supports. Options are the same as the
20611
+ intent.
20612
+ """
20613
+ return pulumi.get(self, "effective_sla")
20614
+
20615
+ @property
20616
+ @pulumi.getter(name="intendedSlaBlockers")
20617
+ def intended_sla_blockers(self) -> Optional[Sequence['outputs.InterconnectAttachmentGroupConfiguredAvailabilitySlaIntendedSlaBlocker']]:
20618
+ """
20619
+ (Output)
20620
+ Reasons why configuration.availabilitySLA.sla differs from
20621
+ intent.availabilitySLA. This list is empty if and only if those are the
20622
+ same.
20623
+ Structure is documented below.
20624
+ """
20625
+ return pulumi.get(self, "intended_sla_blockers")
20626
+
20627
+
20628
+ @pulumi.output_type
20629
+ class InterconnectAttachmentGroupConfiguredAvailabilitySlaIntendedSlaBlocker(dict):
20630
+ @staticmethod
20631
+ def __key_warning(key: str):
20632
+ suggest = None
20633
+ if key == "blockerType":
20634
+ suggest = "blocker_type"
20635
+ elif key == "documentationLink":
20636
+ suggest = "documentation_link"
20637
+
20638
+ if suggest:
20639
+ pulumi.log.warn(f"Key '{key}' not found in InterconnectAttachmentGroupConfiguredAvailabilitySlaIntendedSlaBlocker. Access the value via the '{suggest}' property getter instead.")
20640
+
20641
+ def __getitem__(self, key: str) -> Any:
20642
+ InterconnectAttachmentGroupConfiguredAvailabilitySlaIntendedSlaBlocker.__key_warning(key)
20643
+ return super().__getitem__(key)
20644
+
20645
+ def get(self, key: str, default = None) -> Any:
20646
+ InterconnectAttachmentGroupConfiguredAvailabilitySlaIntendedSlaBlocker.__key_warning(key)
20647
+ return super().get(key, default)
20648
+
20649
+ def __init__(__self__, *,
20650
+ attachments: Optional[Sequence[builtins.str]] = None,
20651
+ blocker_type: Optional[builtins.str] = None,
20652
+ documentation_link: Optional[builtins.str] = None,
20653
+ explanation: Optional[builtins.str] = None,
20654
+ metros: Optional[Sequence[builtins.str]] = None,
20655
+ regions: Optional[Sequence[builtins.str]] = None,
20656
+ zones: Optional[Sequence[builtins.str]] = None):
20657
+ """
20658
+ :param Sequence[builtins.str] attachments: (Output)
20659
+ URLs of any particular Attachments to explain this
20660
+ blocker in more detail.
20661
+ :param builtins.str blocker_type: (Output)
20662
+ The category of an unmet SLA requirement.
20663
+ :param builtins.str documentation_link: (Output)
20664
+ The url of Google Cloud public documentation explaining
20665
+ this requirement. This is set for every type of requirement.
20666
+ :param builtins.str explanation: (Output)
20667
+ A human-readable explanation of this requirement and
20668
+ why it's not met. This is set for every type of requirement.
20669
+ :param Sequence[builtins.str] metros: (Output)
20670
+ Metros used to explain this blocker in more detail.
20671
+ These are three-letter lowercase strings like "iad". This will be set
20672
+ for some blockers (like NO_ATTACHMENTS_IN_METRO_AND_ZONE) but does
20673
+ not apply to others.
20674
+ :param Sequence[builtins.str] regions: (Output)
20675
+ Regions used to explain this blocker in more
20676
+ detail. These are region names formatted like "us-central1". This
20677
+ will be set for some blockers (like INCOMPATIBLE_REGIONS) but does
20678
+ not apply to others.
20679
+ :param Sequence[builtins.str] zones: (Output)
20680
+ Zones used to explain this blocker in more detail.
20681
+ Format is "zone1" and/or "zone2". This will be set for some blockers
20682
+ (like MISSING_ZONE) but does not apply to others.
20683
+ """
20684
+ if attachments is not None:
20685
+ pulumi.set(__self__, "attachments", attachments)
20686
+ if blocker_type is not None:
20687
+ pulumi.set(__self__, "blocker_type", blocker_type)
20688
+ if documentation_link is not None:
20689
+ pulumi.set(__self__, "documentation_link", documentation_link)
20690
+ if explanation is not None:
20691
+ pulumi.set(__self__, "explanation", explanation)
20692
+ if metros is not None:
20693
+ pulumi.set(__self__, "metros", metros)
20694
+ if regions is not None:
20695
+ pulumi.set(__self__, "regions", regions)
20696
+ if zones is not None:
20697
+ pulumi.set(__self__, "zones", zones)
20698
+
20699
+ @property
20700
+ @pulumi.getter
20701
+ def attachments(self) -> Optional[Sequence[builtins.str]]:
20702
+ """
20703
+ (Output)
20704
+ URLs of any particular Attachments to explain this
20705
+ blocker in more detail.
20706
+ """
20707
+ return pulumi.get(self, "attachments")
20708
+
20709
+ @property
20710
+ @pulumi.getter(name="blockerType")
20711
+ def blocker_type(self) -> Optional[builtins.str]:
20712
+ """
20713
+ (Output)
20714
+ The category of an unmet SLA requirement.
20715
+ """
20716
+ return pulumi.get(self, "blocker_type")
20717
+
20718
+ @property
20719
+ @pulumi.getter(name="documentationLink")
20720
+ def documentation_link(self) -> Optional[builtins.str]:
20721
+ """
20722
+ (Output)
20723
+ The url of Google Cloud public documentation explaining
20724
+ this requirement. This is set for every type of requirement.
20725
+ """
20726
+ return pulumi.get(self, "documentation_link")
20727
+
20728
+ @property
20729
+ @pulumi.getter
20730
+ def explanation(self) -> Optional[builtins.str]:
20731
+ """
20732
+ (Output)
20733
+ A human-readable explanation of this requirement and
20734
+ why it's not met. This is set for every type of requirement.
20735
+ """
20736
+ return pulumi.get(self, "explanation")
20737
+
20738
+ @property
20739
+ @pulumi.getter
20740
+ def metros(self) -> Optional[Sequence[builtins.str]]:
20741
+ """
20742
+ (Output)
20743
+ Metros used to explain this blocker in more detail.
20744
+ These are three-letter lowercase strings like "iad". This will be set
20745
+ for some blockers (like NO_ATTACHMENTS_IN_METRO_AND_ZONE) but does
20746
+ not apply to others.
20747
+ """
20748
+ return pulumi.get(self, "metros")
20749
+
20750
+ @property
20751
+ @pulumi.getter
20752
+ def regions(self) -> Optional[Sequence[builtins.str]]:
20753
+ """
20754
+ (Output)
20755
+ Regions used to explain this blocker in more
20756
+ detail. These are region names formatted like "us-central1". This
20757
+ will be set for some blockers (like INCOMPATIBLE_REGIONS) but does
20758
+ not apply to others.
20759
+ """
20760
+ return pulumi.get(self, "regions")
20761
+
20762
+ @property
20763
+ @pulumi.getter
20764
+ def zones(self) -> Optional[Sequence[builtins.str]]:
20765
+ """
20766
+ (Output)
20767
+ Zones used to explain this blocker in more detail.
20768
+ Format is "zone1" and/or "zone2". This will be set for some blockers
20769
+ (like MISSING_ZONE) but does not apply to others.
20770
+ """
20771
+ return pulumi.get(self, "zones")
20772
+
20773
+
20774
+ @pulumi.output_type
20775
+ class InterconnectAttachmentGroupIntent(dict):
20776
+ @staticmethod
20777
+ def __key_warning(key: str):
20778
+ suggest = None
20779
+ if key == "availabilitySla":
20780
+ suggest = "availability_sla"
20781
+
20782
+ if suggest:
20783
+ pulumi.log.warn(f"Key '{key}' not found in InterconnectAttachmentGroupIntent. Access the value via the '{suggest}' property getter instead.")
20784
+
20785
+ def __getitem__(self, key: str) -> Any:
20786
+ InterconnectAttachmentGroupIntent.__key_warning(key)
20787
+ return super().__getitem__(key)
20788
+
20789
+ def get(self, key: str, default = None) -> Any:
20790
+ InterconnectAttachmentGroupIntent.__key_warning(key)
20791
+ return super().get(key, default)
20792
+
20793
+ def __init__(__self__, *,
20794
+ availability_sla: Optional[builtins.str] = None):
20795
+ """
20796
+ :param builtins.str availability_sla: Which SLA the user intends this group to support.
20797
+ Possible values are: `PRODUCTION_NON_CRITICAL`, `PRODUCTION_CRITICAL`, `NO_SLA`, `AVAILABILITY_SLA_UNSPECIFIED`.
20798
+
20799
+ - - -
20800
+ """
20801
+ if availability_sla is not None:
20802
+ pulumi.set(__self__, "availability_sla", availability_sla)
20803
+
20804
+ @property
20805
+ @pulumi.getter(name="availabilitySla")
20806
+ def availability_sla(self) -> Optional[builtins.str]:
20807
+ """
20808
+ Which SLA the user intends this group to support.
20809
+ Possible values are: `PRODUCTION_NON_CRITICAL`, `PRODUCTION_CRITICAL`, `NO_SLA`, `AVAILABILITY_SLA_UNSPECIFIED`.
20810
+
20811
+ - - -
20812
+ """
20813
+ return pulumi.get(self, "availability_sla")
20814
+
20815
+
20816
+ @pulumi.output_type
20817
+ class InterconnectAttachmentGroupLogicalStructure(dict):
20818
+ def __init__(__self__, *,
20819
+ regions: Optional[Sequence['outputs.InterconnectAttachmentGroupLogicalStructureRegion']] = None):
20820
+ """
20821
+ :param Sequence['InterconnectAttachmentGroupLogicalStructureRegionArgs'] regions: (Output)
20822
+ Regions used to explain this blocker in more
20823
+ detail. These are region names formatted like "us-central1". This
20824
+ will be set for some blockers (like INCOMPATIBLE_REGIONS) but does
20825
+ not apply to others.
20826
+ """
20827
+ if regions is not None:
20828
+ pulumi.set(__self__, "regions", regions)
20829
+
20830
+ @property
20831
+ @pulumi.getter
20832
+ def regions(self) -> Optional[Sequence['outputs.InterconnectAttachmentGroupLogicalStructureRegion']]:
20833
+ """
20834
+ (Output)
20835
+ Regions used to explain this blocker in more
20836
+ detail. These are region names formatted like "us-central1". This
20837
+ will be set for some blockers (like INCOMPATIBLE_REGIONS) but does
20838
+ not apply to others.
20839
+ """
20840
+ return pulumi.get(self, "regions")
20841
+
20842
+
20843
+ @pulumi.output_type
20844
+ class InterconnectAttachmentGroupLogicalStructureRegion(dict):
20845
+ def __init__(__self__, *,
20846
+ metros: Optional[Sequence['outputs.InterconnectAttachmentGroupLogicalStructureRegionMetro']] = None,
20847
+ region: Optional[builtins.str] = None):
20848
+ """
20849
+ :param Sequence['InterconnectAttachmentGroupLogicalStructureRegionMetroArgs'] metros: (Output)
20850
+ Metros used to explain this blocker in more detail.
20851
+ These are three-letter lowercase strings like "iad". This will be set
20852
+ for some blockers (like NO_ATTACHMENTS_IN_METRO_AND_ZONE) but does
20853
+ not apply to others.
20854
+ :param builtins.str region: (Output)
20855
+ The name of a region, like "us-central1".
20856
+ """
20857
+ if metros is not None:
20858
+ pulumi.set(__self__, "metros", metros)
20859
+ if region is not None:
20860
+ pulumi.set(__self__, "region", region)
20861
+
20862
+ @property
20863
+ @pulumi.getter
20864
+ def metros(self) -> Optional[Sequence['outputs.InterconnectAttachmentGroupLogicalStructureRegionMetro']]:
20865
+ """
20866
+ (Output)
20867
+ Metros used to explain this blocker in more detail.
20868
+ These are three-letter lowercase strings like "iad". This will be set
20869
+ for some blockers (like NO_ATTACHMENTS_IN_METRO_AND_ZONE) but does
20870
+ not apply to others.
20871
+ """
20872
+ return pulumi.get(self, "metros")
20873
+
20874
+ @property
20875
+ @pulumi.getter
20876
+ def region(self) -> Optional[builtins.str]:
20877
+ """
20878
+ (Output)
20879
+ The name of a region, like "us-central1".
20880
+ """
20881
+ return pulumi.get(self, "region")
20882
+
20883
+
20884
+ @pulumi.output_type
20885
+ class InterconnectAttachmentGroupLogicalStructureRegionMetro(dict):
20886
+ def __init__(__self__, *,
20887
+ facilities: Optional[Sequence['outputs.InterconnectAttachmentGroupLogicalStructureRegionMetroFacility']] = None,
20888
+ metro: Optional[builtins.str] = None):
20889
+ """
20890
+ :param Sequence['InterconnectAttachmentGroupLogicalStructureRegionMetroFacilityArgs'] facilities: (Output)
20891
+ The facilities used for this group's Attachments'
20892
+ Interconnects.
20893
+ Structure is documented below.
20894
+ :param builtins.str metro: (Output)
20895
+ The name of the metro, as a three-letter lowercase
20896
+ string like "iad". This is the first component of the location of an
20897
+ Interconnect.
20898
+ """
20899
+ if facilities is not None:
20900
+ pulumi.set(__self__, "facilities", facilities)
20901
+ if metro is not None:
20902
+ pulumi.set(__self__, "metro", metro)
20903
+
20904
+ @property
20905
+ @pulumi.getter
20906
+ def facilities(self) -> Optional[Sequence['outputs.InterconnectAttachmentGroupLogicalStructureRegionMetroFacility']]:
20907
+ """
20908
+ (Output)
20909
+ The facilities used for this group's Attachments'
20910
+ Interconnects.
20911
+ Structure is documented below.
20912
+ """
20913
+ return pulumi.get(self, "facilities")
20914
+
20915
+ @property
20916
+ @pulumi.getter
20917
+ def metro(self) -> Optional[builtins.str]:
20918
+ """
20919
+ (Output)
20920
+ The name of the metro, as a three-letter lowercase
20921
+ string like "iad". This is the first component of the location of an
20922
+ Interconnect.
20923
+ """
20924
+ return pulumi.get(self, "metro")
20925
+
20926
+
20927
+ @pulumi.output_type
20928
+ class InterconnectAttachmentGroupLogicalStructureRegionMetroFacility(dict):
20929
+ def __init__(__self__, *,
20930
+ facility: Optional[builtins.str] = None,
20931
+ zones: Optional[Sequence['outputs.InterconnectAttachmentGroupLogicalStructureRegionMetroFacilityZone']] = None):
20932
+ """
20933
+ :param builtins.str facility: (Output)
20934
+ The name of a facility, like "iad-1234".
20935
+ :param Sequence['InterconnectAttachmentGroupLogicalStructureRegionMetroFacilityZoneArgs'] zones: (Output)
20936
+ Zones used to explain this blocker in more detail.
20937
+ Format is "zone1" and/or "zone2". This will be set for some blockers
20938
+ (like MISSING_ZONE) but does not apply to others.
20939
+ """
20940
+ if facility is not None:
20941
+ pulumi.set(__self__, "facility", facility)
20942
+ if zones is not None:
20943
+ pulumi.set(__self__, "zones", zones)
20944
+
20945
+ @property
20946
+ @pulumi.getter
20947
+ def facility(self) -> Optional[builtins.str]:
20948
+ """
20949
+ (Output)
20950
+ The name of a facility, like "iad-1234".
20951
+ """
20952
+ return pulumi.get(self, "facility")
20953
+
20954
+ @property
20955
+ @pulumi.getter
20956
+ def zones(self) -> Optional[Sequence['outputs.InterconnectAttachmentGroupLogicalStructureRegionMetroFacilityZone']]:
20957
+ """
20958
+ (Output)
20959
+ Zones used to explain this blocker in more detail.
20960
+ Format is "zone1" and/or "zone2". This will be set for some blockers
20961
+ (like MISSING_ZONE) but does not apply to others.
20962
+ """
20963
+ return pulumi.get(self, "zones")
20964
+
20965
+
20966
+ @pulumi.output_type
20967
+ class InterconnectAttachmentGroupLogicalStructureRegionMetroFacilityZone(dict):
20968
+ def __init__(__self__, *,
20969
+ attachments: Optional[Sequence[builtins.str]] = None,
20970
+ zone: Optional[builtins.str] = None):
20971
+ """
20972
+ :param Sequence[builtins.str] attachments: (Output)
20973
+ URLs of Attachments in the given zone, to the given
20974
+ region, on Interconnects in the given facility and metro. Every
20975
+ Attachment in the AG has such an entry.
20976
+ :param builtins.str zone: (Output)
20977
+ The zones that Attachments in this group are present
20978
+ in, in the given facilities. This is inherited from their
20979
+ Interconnects.
20980
+ """
20981
+ if attachments is not None:
20982
+ pulumi.set(__self__, "attachments", attachments)
20983
+ if zone is not None:
20984
+ pulumi.set(__self__, "zone", zone)
20985
+
20986
+ @property
20987
+ @pulumi.getter
20988
+ def attachments(self) -> Optional[Sequence[builtins.str]]:
20989
+ """
20990
+ (Output)
20991
+ URLs of Attachments in the given zone, to the given
20992
+ region, on Interconnects in the given facility and metro. Every
20993
+ Attachment in the AG has such an entry.
20994
+ """
20995
+ return pulumi.get(self, "attachments")
20996
+
20997
+ @property
20998
+ @pulumi.getter
20999
+ def zone(self) -> Optional[builtins.str]:
21000
+ """
21001
+ (Output)
21002
+ The zones that Attachments in this group are present
21003
+ in, in the given facilities. This is inherited from their
21004
+ Interconnects.
21005
+ """
21006
+ return pulumi.get(self, "zone")
21007
+
21008
+
20473
21009
  @pulumi.output_type
20474
21010
  class InterconnectAttachmentPrivateInterconnectInfo(dict):
20475
21011
  def __init__(__self__, *,
@@ -20741,6 +21277,484 @@ class InterconnectExpectedOutage(dict):
20741
21277
  return pulumi.get(self, "state")
20742
21278
 
20743
21279
 
21280
+ @pulumi.output_type
21281
+ class InterconnectGroupConfigured(dict):
21282
+ @staticmethod
21283
+ def __key_warning(key: str):
21284
+ suggest = None
21285
+ if key == "topologyCapabilities":
21286
+ suggest = "topology_capabilities"
21287
+
21288
+ if suggest:
21289
+ pulumi.log.warn(f"Key '{key}' not found in InterconnectGroupConfigured. Access the value via the '{suggest}' property getter instead.")
21290
+
21291
+ def __getitem__(self, key: str) -> Any:
21292
+ InterconnectGroupConfigured.__key_warning(key)
21293
+ return super().__getitem__(key)
21294
+
21295
+ def get(self, key: str, default = None) -> Any:
21296
+ InterconnectGroupConfigured.__key_warning(key)
21297
+ return super().get(key, default)
21298
+
21299
+ def __init__(__self__, *,
21300
+ topology_capabilities: Optional[Sequence['outputs.InterconnectGroupConfiguredTopologyCapability']] = None):
21301
+ """
21302
+ :param Sequence['InterconnectGroupConfiguredTopologyCapabilityArgs'] topology_capabilities: (Output)
21303
+ How reliable this topology is configured to be, and why
21304
+ this group does or does not meet the requirements for the intended
21305
+ capability.
21306
+ Structure is documented below.
21307
+ """
21308
+ if topology_capabilities is not None:
21309
+ pulumi.set(__self__, "topology_capabilities", topology_capabilities)
21310
+
21311
+ @property
21312
+ @pulumi.getter(name="topologyCapabilities")
21313
+ def topology_capabilities(self) -> Optional[Sequence['outputs.InterconnectGroupConfiguredTopologyCapability']]:
21314
+ """
21315
+ (Output)
21316
+ How reliable this topology is configured to be, and why
21317
+ this group does or does not meet the requirements for the intended
21318
+ capability.
21319
+ Structure is documented below.
21320
+ """
21321
+ return pulumi.get(self, "topology_capabilities")
21322
+
21323
+
21324
+ @pulumi.output_type
21325
+ class InterconnectGroupConfiguredTopologyCapability(dict):
21326
+ @staticmethod
21327
+ def __key_warning(key: str):
21328
+ suggest = None
21329
+ if key == "intendedCapabilityBlockers":
21330
+ suggest = "intended_capability_blockers"
21331
+ elif key == "supportedSla":
21332
+ suggest = "supported_sla"
21333
+
21334
+ if suggest:
21335
+ pulumi.log.warn(f"Key '{key}' not found in InterconnectGroupConfiguredTopologyCapability. Access the value via the '{suggest}' property getter instead.")
21336
+
21337
+ def __getitem__(self, key: str) -> Any:
21338
+ InterconnectGroupConfiguredTopologyCapability.__key_warning(key)
21339
+ return super().__getitem__(key)
21340
+
21341
+ def get(self, key: str, default = None) -> Any:
21342
+ InterconnectGroupConfiguredTopologyCapability.__key_warning(key)
21343
+ return super().get(key, default)
21344
+
21345
+ def __init__(__self__, *,
21346
+ intended_capability_blockers: Optional[Sequence['outputs.InterconnectGroupConfiguredTopologyCapabilityIntendedCapabilityBlocker']] = None,
21347
+ supported_sla: Optional[builtins.str] = None):
21348
+ """
21349
+ :param Sequence['InterconnectGroupConfiguredTopologyCapabilityIntendedCapabilityBlockerArgs'] intended_capability_blockers: (Output)
21350
+ Reasons why configuration.topologyCapability.sla differs
21351
+ from intent.topologyCapability. This list is empty if and only if those
21352
+ are the same.
21353
+ Structure is documented below.
21354
+ :param builtins.str supported_sla: (Output)
21355
+ Which level of reliability this group is configured to
21356
+ support.
21357
+ """
21358
+ if intended_capability_blockers is not None:
21359
+ pulumi.set(__self__, "intended_capability_blockers", intended_capability_blockers)
21360
+ if supported_sla is not None:
21361
+ pulumi.set(__self__, "supported_sla", supported_sla)
21362
+
21363
+ @property
21364
+ @pulumi.getter(name="intendedCapabilityBlockers")
21365
+ def intended_capability_blockers(self) -> Optional[Sequence['outputs.InterconnectGroupConfiguredTopologyCapabilityIntendedCapabilityBlocker']]:
21366
+ """
21367
+ (Output)
21368
+ Reasons why configuration.topologyCapability.sla differs
21369
+ from intent.topologyCapability. This list is empty if and only if those
21370
+ are the same.
21371
+ Structure is documented below.
21372
+ """
21373
+ return pulumi.get(self, "intended_capability_blockers")
21374
+
21375
+ @property
21376
+ @pulumi.getter(name="supportedSla")
21377
+ def supported_sla(self) -> Optional[builtins.str]:
21378
+ """
21379
+ (Output)
21380
+ Which level of reliability this group is configured to
21381
+ support.
21382
+ """
21383
+ return pulumi.get(self, "supported_sla")
21384
+
21385
+
21386
+ @pulumi.output_type
21387
+ class InterconnectGroupConfiguredTopologyCapabilityIntendedCapabilityBlocker(dict):
21388
+ @staticmethod
21389
+ def __key_warning(key: str):
21390
+ suggest = None
21391
+ if key == "blockerType":
21392
+ suggest = "blocker_type"
21393
+ elif key == "documentationLink":
21394
+ suggest = "documentation_link"
21395
+
21396
+ if suggest:
21397
+ pulumi.log.warn(f"Key '{key}' not found in InterconnectGroupConfiguredTopologyCapabilityIntendedCapabilityBlocker. Access the value via the '{suggest}' property getter instead.")
21398
+
21399
+ def __getitem__(self, key: str) -> Any:
21400
+ InterconnectGroupConfiguredTopologyCapabilityIntendedCapabilityBlocker.__key_warning(key)
21401
+ return super().__getitem__(key)
21402
+
21403
+ def get(self, key: str, default = None) -> Any:
21404
+ InterconnectGroupConfiguredTopologyCapabilityIntendedCapabilityBlocker.__key_warning(key)
21405
+ return super().get(key, default)
21406
+
21407
+ def __init__(__self__, *,
21408
+ blocker_type: Optional[builtins.str] = None,
21409
+ documentation_link: Optional[builtins.str] = None,
21410
+ explanation: Optional[builtins.str] = None,
21411
+ facilities: Optional[Sequence[builtins.str]] = None,
21412
+ interconnects: Optional[Sequence[builtins.str]] = None,
21413
+ metros: Optional[Sequence[builtins.str]] = None,
21414
+ zones: Optional[Sequence[builtins.str]] = None):
21415
+ """
21416
+ :param builtins.str blocker_type: (Output)
21417
+ The category of an unmet SLA requirement. The Intended
21418
+ SLA Blockers section below explains this field and how it relates to
21419
+ other fields in intendedCapabilityBlockers.
21420
+ :param builtins.str documentation_link: (Output)
21421
+ The url of Google Cloud public documentation explaining
21422
+ this requirement. This is set for every type of requirement.
21423
+ :param builtins.str explanation: (Output)
21424
+ A human-readable explanation of this requirement and
21425
+ why it's not met. This is set for every type of requirement.
21426
+ :param Sequence[builtins.str] facilities: (Output)
21427
+ Facilities used to explain this blocker in more detail.
21428
+ Like physicalStructure.metros.facilities.facility, this is a numeric
21429
+ string like "5467".
21430
+ :param Sequence[builtins.str] interconnects: (Output)
21431
+ Interconnects used to explain this blocker in more
21432
+ detail.
21433
+ :param Sequence[builtins.str] metros: (Output)
21434
+ Metros used to explain this blocker in more detail.
21435
+ These are three-letter lowercase strings like "iad". A blocker like
21436
+ INCOMPATIBLE_METROS will specify the problematic metros in this
21437
+ field.
21438
+ :param Sequence[builtins.str] zones: (Output)
21439
+ Zones used to explain this blocker in more detail.
21440
+ Zone names are "zone1" and/or "zone2".
21441
+ """
21442
+ if blocker_type is not None:
21443
+ pulumi.set(__self__, "blocker_type", blocker_type)
21444
+ if documentation_link is not None:
21445
+ pulumi.set(__self__, "documentation_link", documentation_link)
21446
+ if explanation is not None:
21447
+ pulumi.set(__self__, "explanation", explanation)
21448
+ if facilities is not None:
21449
+ pulumi.set(__self__, "facilities", facilities)
21450
+ if interconnects is not None:
21451
+ pulumi.set(__self__, "interconnects", interconnects)
21452
+ if metros is not None:
21453
+ pulumi.set(__self__, "metros", metros)
21454
+ if zones is not None:
21455
+ pulumi.set(__self__, "zones", zones)
21456
+
21457
+ @property
21458
+ @pulumi.getter(name="blockerType")
21459
+ def blocker_type(self) -> Optional[builtins.str]:
21460
+ """
21461
+ (Output)
21462
+ The category of an unmet SLA requirement. The Intended
21463
+ SLA Blockers section below explains this field and how it relates to
21464
+ other fields in intendedCapabilityBlockers.
21465
+ """
21466
+ return pulumi.get(self, "blocker_type")
21467
+
21468
+ @property
21469
+ @pulumi.getter(name="documentationLink")
21470
+ def documentation_link(self) -> Optional[builtins.str]:
21471
+ """
21472
+ (Output)
21473
+ The url of Google Cloud public documentation explaining
21474
+ this requirement. This is set for every type of requirement.
21475
+ """
21476
+ return pulumi.get(self, "documentation_link")
21477
+
21478
+ @property
21479
+ @pulumi.getter
21480
+ def explanation(self) -> Optional[builtins.str]:
21481
+ """
21482
+ (Output)
21483
+ A human-readable explanation of this requirement and
21484
+ why it's not met. This is set for every type of requirement.
21485
+ """
21486
+ return pulumi.get(self, "explanation")
21487
+
21488
+ @property
21489
+ @pulumi.getter
21490
+ def facilities(self) -> Optional[Sequence[builtins.str]]:
21491
+ """
21492
+ (Output)
21493
+ Facilities used to explain this blocker in more detail.
21494
+ Like physicalStructure.metros.facilities.facility, this is a numeric
21495
+ string like "5467".
21496
+ """
21497
+ return pulumi.get(self, "facilities")
21498
+
21499
+ @property
21500
+ @pulumi.getter
21501
+ def interconnects(self) -> Optional[Sequence[builtins.str]]:
21502
+ """
21503
+ (Output)
21504
+ Interconnects used to explain this blocker in more
21505
+ detail.
21506
+ """
21507
+ return pulumi.get(self, "interconnects")
21508
+
21509
+ @property
21510
+ @pulumi.getter
21511
+ def metros(self) -> Optional[Sequence[builtins.str]]:
21512
+ """
21513
+ (Output)
21514
+ Metros used to explain this blocker in more detail.
21515
+ These are three-letter lowercase strings like "iad". A blocker like
21516
+ INCOMPATIBLE_METROS will specify the problematic metros in this
21517
+ field.
21518
+ """
21519
+ return pulumi.get(self, "metros")
21520
+
21521
+ @property
21522
+ @pulumi.getter
21523
+ def zones(self) -> Optional[Sequence[builtins.str]]:
21524
+ """
21525
+ (Output)
21526
+ Zones used to explain this blocker in more detail.
21527
+ Zone names are "zone1" and/or "zone2".
21528
+ """
21529
+ return pulumi.get(self, "zones")
21530
+
21531
+
21532
+ @pulumi.output_type
21533
+ class InterconnectGroupIntent(dict):
21534
+ @staticmethod
21535
+ def __key_warning(key: str):
21536
+ suggest = None
21537
+ if key == "topologyCapability":
21538
+ suggest = "topology_capability"
21539
+
21540
+ if suggest:
21541
+ pulumi.log.warn(f"Key '{key}' not found in InterconnectGroupIntent. Access the value via the '{suggest}' property getter instead.")
21542
+
21543
+ def __getitem__(self, key: str) -> Any:
21544
+ InterconnectGroupIntent.__key_warning(key)
21545
+ return super().__getitem__(key)
21546
+
21547
+ def get(self, key: str, default = None) -> Any:
21548
+ InterconnectGroupIntent.__key_warning(key)
21549
+ return super().get(key, default)
21550
+
21551
+ def __init__(__self__, *,
21552
+ topology_capability: Optional[builtins.str] = None):
21553
+ """
21554
+ :param builtins.str topology_capability: The reliability the user intends this group to be capable of, in terms
21555
+ of the Interconnect product SLAs.
21556
+ Possible values are: `PRODUCTION_NON_CRITICAL`, `PRODUCTION_CRITICAL`, `NO_SLA`, `AVAILABILITY_SLA_UNSPECIFIED`.
21557
+
21558
+ - - -
21559
+ """
21560
+ if topology_capability is not None:
21561
+ pulumi.set(__self__, "topology_capability", topology_capability)
21562
+
21563
+ @property
21564
+ @pulumi.getter(name="topologyCapability")
21565
+ def topology_capability(self) -> Optional[builtins.str]:
21566
+ """
21567
+ The reliability the user intends this group to be capable of, in terms
21568
+ of the Interconnect product SLAs.
21569
+ Possible values are: `PRODUCTION_NON_CRITICAL`, `PRODUCTION_CRITICAL`, `NO_SLA`, `AVAILABILITY_SLA_UNSPECIFIED`.
21570
+
21571
+ - - -
21572
+ """
21573
+ return pulumi.get(self, "topology_capability")
21574
+
21575
+
21576
+ @pulumi.output_type
21577
+ class InterconnectGroupInterconnect(dict):
21578
+ def __init__(__self__, *,
21579
+ name: builtins.str,
21580
+ interconnect: Optional[builtins.str] = None):
21581
+ """
21582
+ :param builtins.str name: The identifier for this object. Format specified above.
21583
+ :param builtins.str interconnect: The URL of an Interconnect in this group. All Interconnects in the group are unique.
21584
+ """
21585
+ pulumi.set(__self__, "name", name)
21586
+ if interconnect is not None:
21587
+ pulumi.set(__self__, "interconnect", interconnect)
21588
+
21589
+ @property
21590
+ @pulumi.getter
21591
+ def name(self) -> builtins.str:
21592
+ """
21593
+ The identifier for this object. Format specified above.
21594
+ """
21595
+ return pulumi.get(self, "name")
21596
+
21597
+ @property
21598
+ @pulumi.getter
21599
+ def interconnect(self) -> Optional[builtins.str]:
21600
+ """
21601
+ The URL of an Interconnect in this group. All Interconnects in the group are unique.
21602
+ """
21603
+ return pulumi.get(self, "interconnect")
21604
+
21605
+
21606
+ @pulumi.output_type
21607
+ class InterconnectGroupPhysicalStructure(dict):
21608
+ def __init__(__self__, *,
21609
+ metros: Optional[Sequence['outputs.InterconnectGroupPhysicalStructureMetro']] = None):
21610
+ """
21611
+ :param Sequence['InterconnectGroupPhysicalStructureMetroArgs'] metros: (Output)
21612
+ Metros used to explain this blocker in more detail.
21613
+ These are three-letter lowercase strings like "iad". A blocker like
21614
+ INCOMPATIBLE_METROS will specify the problematic metros in this
21615
+ field.
21616
+ """
21617
+ if metros is not None:
21618
+ pulumi.set(__self__, "metros", metros)
21619
+
21620
+ @property
21621
+ @pulumi.getter
21622
+ def metros(self) -> Optional[Sequence['outputs.InterconnectGroupPhysicalStructureMetro']]:
21623
+ """
21624
+ (Output)
21625
+ Metros used to explain this blocker in more detail.
21626
+ These are three-letter lowercase strings like "iad". A blocker like
21627
+ INCOMPATIBLE_METROS will specify the problematic metros in this
21628
+ field.
21629
+ """
21630
+ return pulumi.get(self, "metros")
21631
+
21632
+
21633
+ @pulumi.output_type
21634
+ class InterconnectGroupPhysicalStructureMetro(dict):
21635
+ def __init__(__self__, *,
21636
+ facilities: Optional[Sequence['outputs.InterconnectGroupPhysicalStructureMetroFacility']] = None,
21637
+ metro: Optional[builtins.str] = None):
21638
+ """
21639
+ :param Sequence['InterconnectGroupPhysicalStructureMetroFacilityArgs'] facilities: (Output)
21640
+ Facilities used to explain this blocker in more detail.
21641
+ Like physicalStructure.metros.facilities.facility, this is a numeric
21642
+ string like "5467".
21643
+ :param builtins.str metro: (Output)
21644
+ The name of the metro, as a three-letter lowercase string
21645
+ like "iad". This is the first component of the location of
21646
+ Interconnects underneath this.
21647
+ """
21648
+ if facilities is not None:
21649
+ pulumi.set(__self__, "facilities", facilities)
21650
+ if metro is not None:
21651
+ pulumi.set(__self__, "metro", metro)
21652
+
21653
+ @property
21654
+ @pulumi.getter
21655
+ def facilities(self) -> Optional[Sequence['outputs.InterconnectGroupPhysicalStructureMetroFacility']]:
21656
+ """
21657
+ (Output)
21658
+ Facilities used to explain this blocker in more detail.
21659
+ Like physicalStructure.metros.facilities.facility, this is a numeric
21660
+ string like "5467".
21661
+ """
21662
+ return pulumi.get(self, "facilities")
21663
+
21664
+ @property
21665
+ @pulumi.getter
21666
+ def metro(self) -> Optional[builtins.str]:
21667
+ """
21668
+ (Output)
21669
+ The name of the metro, as a three-letter lowercase string
21670
+ like "iad". This is the first component of the location of
21671
+ Interconnects underneath this.
21672
+ """
21673
+ return pulumi.get(self, "metro")
21674
+
21675
+
21676
+ @pulumi.output_type
21677
+ class InterconnectGroupPhysicalStructureMetroFacility(dict):
21678
+ def __init__(__self__, *,
21679
+ facility: Optional[builtins.str] = None,
21680
+ zones: Optional[Sequence['outputs.InterconnectGroupPhysicalStructureMetroFacilityZone']] = None):
21681
+ """
21682
+ :param builtins.str facility: (Output)
21683
+ The ID of this facility, as a numeric string like
21684
+ "5467". This is the third component of the location of Interconnects
21685
+ in this facility.
21686
+ :param Sequence['InterconnectGroupPhysicalStructureMetroFacilityZoneArgs'] zones: (Output)
21687
+ Zones used to explain this blocker in more detail.
21688
+ Zone names are "zone1" and/or "zone2".
21689
+ """
21690
+ if facility is not None:
21691
+ pulumi.set(__self__, "facility", facility)
21692
+ if zones is not None:
21693
+ pulumi.set(__self__, "zones", zones)
21694
+
21695
+ @property
21696
+ @pulumi.getter
21697
+ def facility(self) -> Optional[builtins.str]:
21698
+ """
21699
+ (Output)
21700
+ The ID of this facility, as a numeric string like
21701
+ "5467". This is the third component of the location of Interconnects
21702
+ in this facility.
21703
+ """
21704
+ return pulumi.get(self, "facility")
21705
+
21706
+ @property
21707
+ @pulumi.getter
21708
+ def zones(self) -> Optional[Sequence['outputs.InterconnectGroupPhysicalStructureMetroFacilityZone']]:
21709
+ """
21710
+ (Output)
21711
+ Zones used to explain this blocker in more detail.
21712
+ Zone names are "zone1" and/or "zone2".
21713
+ """
21714
+ return pulumi.get(self, "zones")
21715
+
21716
+
21717
+ @pulumi.output_type
21718
+ class InterconnectGroupPhysicalStructureMetroFacilityZone(dict):
21719
+ def __init__(__self__, *,
21720
+ interconnects: Optional[Sequence[builtins.str]] = None,
21721
+ zone: Optional[builtins.str] = None):
21722
+ """
21723
+ :param Sequence[builtins.str] interconnects: (Output)
21724
+ Interconnects used to explain this blocker in more
21725
+ detail.
21726
+ :param builtins.str zone: (Output)
21727
+ The name of the zone, either "zone1" or "zone2".
21728
+ This is the second component of the location of Interconnects in
21729
+ this facility.
21730
+ """
21731
+ if interconnects is not None:
21732
+ pulumi.set(__self__, "interconnects", interconnects)
21733
+ if zone is not None:
21734
+ pulumi.set(__self__, "zone", zone)
21735
+
21736
+ @property
21737
+ @pulumi.getter
21738
+ def interconnects(self) -> Optional[Sequence[builtins.str]]:
21739
+ """
21740
+ (Output)
21741
+ Interconnects used to explain this blocker in more
21742
+ detail.
21743
+ """
21744
+ return pulumi.get(self, "interconnects")
21745
+
21746
+ @property
21747
+ @pulumi.getter
21748
+ def zone(self) -> Optional[builtins.str]:
21749
+ """
21750
+ (Output)
21751
+ The name of the zone, either "zone1" or "zone2".
21752
+ This is the second component of the location of Interconnects in
21753
+ this facility.
21754
+ """
21755
+ return pulumi.get(self, "zone")
21756
+
21757
+
20744
21758
  @pulumi.output_type
20745
21759
  class InterconnectMacsec(dict):
20746
21760
  @staticmethod
@@ -47546,6 +48560,79 @@ class SnapshotIamMemberCondition(dict):
47546
48560
  return pulumi.get(self, "description")
47547
48561
 
47548
48562
 
48563
+ @pulumi.output_type
48564
+ class SnapshotSettingsStorageLocation(dict):
48565
+ def __init__(__self__, *,
48566
+ policy: builtins.str,
48567
+ locations: Optional[Sequence['outputs.SnapshotSettingsStorageLocationLocation']] = None):
48568
+ """
48569
+ :param builtins.str policy: The chosen location policy
48570
+ Possible values are: `NEAREST_MULTI_REGION`, `LOCAL_REGION`, `SPECIFIC_LOCATIONS`.
48571
+ :param Sequence['SnapshotSettingsStorageLocationLocationArgs'] locations: When the policy is SPECIFIC_LOCATIONS, snapshots will be stored in the
48572
+ locations listed in this field. Keys are Cloud Storage bucket locations.
48573
+ Only one location can be specified.
48574
+ Structure is documented below.
48575
+ """
48576
+ pulumi.set(__self__, "policy", policy)
48577
+ if locations is not None:
48578
+ pulumi.set(__self__, "locations", locations)
48579
+
48580
+ @property
48581
+ @pulumi.getter
48582
+ def policy(self) -> builtins.str:
48583
+ """
48584
+ The chosen location policy
48585
+ Possible values are: `NEAREST_MULTI_REGION`, `LOCAL_REGION`, `SPECIFIC_LOCATIONS`.
48586
+ """
48587
+ return pulumi.get(self, "policy")
48588
+
48589
+ @property
48590
+ @pulumi.getter
48591
+ def locations(self) -> Optional[Sequence['outputs.SnapshotSettingsStorageLocationLocation']]:
48592
+ """
48593
+ When the policy is SPECIFIC_LOCATIONS, snapshots will be stored in the
48594
+ locations listed in this field. Keys are Cloud Storage bucket locations.
48595
+ Only one location can be specified.
48596
+ Structure is documented below.
48597
+ """
48598
+ return pulumi.get(self, "locations")
48599
+
48600
+
48601
+ @pulumi.output_type
48602
+ class SnapshotSettingsStorageLocationLocation(dict):
48603
+ def __init__(__self__, *,
48604
+ location: builtins.str,
48605
+ name: builtins.str):
48606
+ """
48607
+ :param builtins.str location: The identifier for this object. Format specified above.
48608
+ :param builtins.str name: Name of the location. It should be one of the Cloud Storage buckets.
48609
+ Only one location can be specified. (should match location)
48610
+
48611
+ - - -
48612
+ """
48613
+ pulumi.set(__self__, "location", location)
48614
+ pulumi.set(__self__, "name", name)
48615
+
48616
+ @property
48617
+ @pulumi.getter
48618
+ def location(self) -> builtins.str:
48619
+ """
48620
+ The identifier for this object. Format specified above.
48621
+ """
48622
+ return pulumi.get(self, "location")
48623
+
48624
+ @property
48625
+ @pulumi.getter
48626
+ def name(self) -> builtins.str:
48627
+ """
48628
+ Name of the location. It should be one of the Cloud Storage buckets.
48629
+ Only one location can be specified. (should match location)
48630
+
48631
+ - - -
48632
+ """
48633
+ return pulumi.get(self, "name")
48634
+
48635
+
47549
48636
  @pulumi.output_type
47550
48637
  class SnapshotSnapshotEncryptionKey(dict):
47551
48638
  @staticmethod