pulumi-gcp 7.36.0a1723456487__py3-none-any.whl → 7.37.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 (53) hide show
  1. pulumi_gcp/__init__.py +72 -0
  2. pulumi_gcp/accesscontextmanager/__init__.py +2 -0
  3. pulumi_gcp/accesscontextmanager/_inputs.py +780 -0
  4. pulumi_gcp/accesscontextmanager/outputs.py +601 -0
  5. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_egress_policy.py +323 -0
  6. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_ingress_policy.py +332 -0
  7. pulumi_gcp/accesscontextmanager/service_perimeter_egress_policy.py +2 -24
  8. pulumi_gcp/accesscontextmanager/service_perimeter_ingress_policy.py +2 -24
  9. pulumi_gcp/applicationintegration/client.py +2 -2
  10. pulumi_gcp/clouddeploy/_inputs.py +21 -1
  11. pulumi_gcp/clouddeploy/outputs.py +15 -1
  12. pulumi_gcp/cloudrunv2/_inputs.py +40 -0
  13. pulumi_gcp/cloudrunv2/outputs.py +46 -0
  14. pulumi_gcp/compute/region_target_https_proxy.py +28 -0
  15. pulumi_gcp/container/_inputs.py +26 -0
  16. pulumi_gcp/container/outputs.py +29 -0
  17. pulumi_gcp/dataform/repository.py +80 -2
  18. pulumi_gcp/discoveryengine/data_store.py +93 -2
  19. pulumi_gcp/gkehub/_inputs.py +63 -0
  20. pulumi_gcp/gkehub/outputs.py +38 -0
  21. pulumi_gcp/logging/get_log_view_iam_policy.py +28 -2
  22. pulumi_gcp/logging/log_view_iam_binding.py +512 -0
  23. pulumi_gcp/logging/log_view_iam_member.py +512 -0
  24. pulumi_gcp/logging/log_view_iam_policy.py +512 -0
  25. pulumi_gcp/netapp/_inputs.py +6 -6
  26. pulumi_gcp/netapp/outputs.py +4 -4
  27. pulumi_gcp/networkconnectivity/regional_endpoint.py +6 -6
  28. pulumi_gcp/organizations/get_project.py +11 -1
  29. pulumi_gcp/organizations/project.py +76 -21
  30. pulumi_gcp/pulumi-plugin.json +1 -1
  31. pulumi_gcp/securitycenter/__init__.py +8 -0
  32. pulumi_gcp/securitycenter/_inputs.py +191 -0
  33. pulumi_gcp/securitycenter/get_v2_organization_source_iam_policy.py +146 -0
  34. pulumi_gcp/securitycenter/outputs.py +115 -0
  35. pulumi_gcp/securitycenter/v2_folder_mute_config.py +679 -0
  36. pulumi_gcp/securitycenter/v2_organization_source.py +416 -0
  37. pulumi_gcp/securitycenter/v2_organization_source_iam_binding.py +722 -0
  38. pulumi_gcp/securitycenter/v2_organization_source_iam_member.py +722 -0
  39. pulumi_gcp/securitycenter/v2_organization_source_iam_policy.py +561 -0
  40. pulumi_gcp/securitycenter/v2_project_mute_config.py +684 -0
  41. pulumi_gcp/securitycenter/v2_project_notification_config.py +559 -0
  42. pulumi_gcp/spanner/instance.py +0 -7
  43. pulumi_gcp/sql/_inputs.py +3 -3
  44. pulumi_gcp/sql/outputs.py +6 -6
  45. pulumi_gcp/storage/bucket_object.py +28 -0
  46. pulumi_gcp/storage/get_bucket_object.py +14 -1
  47. pulumi_gcp/storage/get_bucket_object_content.py +11 -1
  48. pulumi_gcp/storage/managed_folder.py +72 -2
  49. pulumi_gcp/vmwareengine/network_policy.py +6 -6
  50. {pulumi_gcp-7.36.0a1723456487.dist-info → pulumi_gcp-7.37.0.dist-info}/METADATA +1 -1
  51. {pulumi_gcp-7.36.0a1723456487.dist-info → pulumi_gcp-7.37.0.dist-info}/RECORD +53 -43
  52. {pulumi_gcp-7.36.0a1723456487.dist-info → pulumi_gcp-7.37.0.dist-info}/WHEEL +1 -1
  53. {pulumi_gcp-7.36.0a1723456487.dist-info → pulumi_gcp-7.37.0.dist-info}/top_level.txt +0 -0
@@ -39,6 +39,16 @@ __all__ = [
39
39
  'AccessLevelsAccessLevelCustomExpr',
40
40
  'AccessPolicyIamBindingCondition',
41
41
  'AccessPolicyIamMemberCondition',
42
+ 'ServicePerimeterDryRunEgressPolicyEgressFrom',
43
+ 'ServicePerimeterDryRunEgressPolicyEgressFromSource',
44
+ 'ServicePerimeterDryRunEgressPolicyEgressTo',
45
+ 'ServicePerimeterDryRunEgressPolicyEgressToOperation',
46
+ 'ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelector',
47
+ 'ServicePerimeterDryRunIngressPolicyIngressFrom',
48
+ 'ServicePerimeterDryRunIngressPolicyIngressFromSource',
49
+ 'ServicePerimeterDryRunIngressPolicyIngressTo',
50
+ 'ServicePerimeterDryRunIngressPolicyIngressToOperation',
51
+ 'ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelector',
42
52
  'ServicePerimeterEgressPolicyEgressFrom',
43
53
  'ServicePerimeterEgressPolicyEgressFromSource',
44
54
  'ServicePerimeterEgressPolicyEgressTo',
@@ -1645,6 +1655,597 @@ class AccessPolicyIamMemberCondition(dict):
1645
1655
  return pulumi.get(self, "description")
1646
1656
 
1647
1657
 
1658
+ @pulumi.output_type
1659
+ class ServicePerimeterDryRunEgressPolicyEgressFrom(dict):
1660
+ @staticmethod
1661
+ def __key_warning(key: str):
1662
+ suggest = None
1663
+ if key == "identityType":
1664
+ suggest = "identity_type"
1665
+ elif key == "sourceRestriction":
1666
+ suggest = "source_restriction"
1667
+
1668
+ if suggest:
1669
+ pulumi.log.warn(f"Key '{key}' not found in ServicePerimeterDryRunEgressPolicyEgressFrom. Access the value via the '{suggest}' property getter instead.")
1670
+
1671
+ def __getitem__(self, key: str) -> Any:
1672
+ ServicePerimeterDryRunEgressPolicyEgressFrom.__key_warning(key)
1673
+ return super().__getitem__(key)
1674
+
1675
+ def get(self, key: str, default = None) -> Any:
1676
+ ServicePerimeterDryRunEgressPolicyEgressFrom.__key_warning(key)
1677
+ return super().get(key, default)
1678
+
1679
+ def __init__(__self__, *,
1680
+ identities: Optional[Sequence[str]] = None,
1681
+ identity_type: Optional[str] = None,
1682
+ source_restriction: Optional[str] = None,
1683
+ sources: Optional[Sequence['outputs.ServicePerimeterDryRunEgressPolicyEgressFromSource']] = None):
1684
+ """
1685
+ :param Sequence[str] identities: A list of identities that are allowed access through this `EgressPolicy`.
1686
+ Should be in the format of email address. The email address should
1687
+ represent individual user or service account only.
1688
+ :param str identity_type: Specifies the type of identities that are allowed access to outside the
1689
+ perimeter. If left unspecified, then members of `identities` field will
1690
+ be allowed access.
1691
+ Possible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
1692
+ :param str source_restriction: Whether to enforce traffic restrictions based on `sources` field. If the `sources` field is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.
1693
+ Possible values are: `SOURCE_RESTRICTION_ENABLED`, `SOURCE_RESTRICTION_DISABLED`.
1694
+ :param Sequence['ServicePerimeterDryRunEgressPolicyEgressFromSourceArgs'] sources: Sources that this EgressPolicy authorizes access from.
1695
+ Structure is documented below.
1696
+ """
1697
+ if identities is not None:
1698
+ pulumi.set(__self__, "identities", identities)
1699
+ if identity_type is not None:
1700
+ pulumi.set(__self__, "identity_type", identity_type)
1701
+ if source_restriction is not None:
1702
+ pulumi.set(__self__, "source_restriction", source_restriction)
1703
+ if sources is not None:
1704
+ pulumi.set(__self__, "sources", sources)
1705
+
1706
+ @property
1707
+ @pulumi.getter
1708
+ def identities(self) -> Optional[Sequence[str]]:
1709
+ """
1710
+ A list of identities that are allowed access through this `EgressPolicy`.
1711
+ Should be in the format of email address. The email address should
1712
+ represent individual user or service account only.
1713
+ """
1714
+ return pulumi.get(self, "identities")
1715
+
1716
+ @property
1717
+ @pulumi.getter(name="identityType")
1718
+ def identity_type(self) -> Optional[str]:
1719
+ """
1720
+ Specifies the type of identities that are allowed access to outside the
1721
+ perimeter. If left unspecified, then members of `identities` field will
1722
+ be allowed access.
1723
+ Possible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
1724
+ """
1725
+ return pulumi.get(self, "identity_type")
1726
+
1727
+ @property
1728
+ @pulumi.getter(name="sourceRestriction")
1729
+ def source_restriction(self) -> Optional[str]:
1730
+ """
1731
+ Whether to enforce traffic restrictions based on `sources` field. If the `sources` field is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.
1732
+ Possible values are: `SOURCE_RESTRICTION_ENABLED`, `SOURCE_RESTRICTION_DISABLED`.
1733
+ """
1734
+ return pulumi.get(self, "source_restriction")
1735
+
1736
+ @property
1737
+ @pulumi.getter
1738
+ def sources(self) -> Optional[Sequence['outputs.ServicePerimeterDryRunEgressPolicyEgressFromSource']]:
1739
+ """
1740
+ Sources that this EgressPolicy authorizes access from.
1741
+ Structure is documented below.
1742
+ """
1743
+ return pulumi.get(self, "sources")
1744
+
1745
+
1746
+ @pulumi.output_type
1747
+ class ServicePerimeterDryRunEgressPolicyEgressFromSource(dict):
1748
+ @staticmethod
1749
+ def __key_warning(key: str):
1750
+ suggest = None
1751
+ if key == "accessLevel":
1752
+ suggest = "access_level"
1753
+
1754
+ if suggest:
1755
+ pulumi.log.warn(f"Key '{key}' not found in ServicePerimeterDryRunEgressPolicyEgressFromSource. Access the value via the '{suggest}' property getter instead.")
1756
+
1757
+ def __getitem__(self, key: str) -> Any:
1758
+ ServicePerimeterDryRunEgressPolicyEgressFromSource.__key_warning(key)
1759
+ return super().__getitem__(key)
1760
+
1761
+ def get(self, key: str, default = None) -> Any:
1762
+ ServicePerimeterDryRunEgressPolicyEgressFromSource.__key_warning(key)
1763
+ return super().get(key, default)
1764
+
1765
+ def __init__(__self__, *,
1766
+ access_level: Optional[str] = None):
1767
+ """
1768
+ :param str access_level: An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.
1769
+ """
1770
+ if access_level is not None:
1771
+ pulumi.set(__self__, "access_level", access_level)
1772
+
1773
+ @property
1774
+ @pulumi.getter(name="accessLevel")
1775
+ def access_level(self) -> Optional[str]:
1776
+ """
1777
+ An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.
1778
+ """
1779
+ return pulumi.get(self, "access_level")
1780
+
1781
+
1782
+ @pulumi.output_type
1783
+ class ServicePerimeterDryRunEgressPolicyEgressTo(dict):
1784
+ @staticmethod
1785
+ def __key_warning(key: str):
1786
+ suggest = None
1787
+ if key == "externalResources":
1788
+ suggest = "external_resources"
1789
+
1790
+ if suggest:
1791
+ pulumi.log.warn(f"Key '{key}' not found in ServicePerimeterDryRunEgressPolicyEgressTo. Access the value via the '{suggest}' property getter instead.")
1792
+
1793
+ def __getitem__(self, key: str) -> Any:
1794
+ ServicePerimeterDryRunEgressPolicyEgressTo.__key_warning(key)
1795
+ return super().__getitem__(key)
1796
+
1797
+ def get(self, key: str, default = None) -> Any:
1798
+ ServicePerimeterDryRunEgressPolicyEgressTo.__key_warning(key)
1799
+ return super().get(key, default)
1800
+
1801
+ def __init__(__self__, *,
1802
+ external_resources: Optional[Sequence[str]] = None,
1803
+ operations: Optional[Sequence['outputs.ServicePerimeterDryRunEgressPolicyEgressToOperation']] = None,
1804
+ resources: Optional[Sequence[str]] = None):
1805
+ """
1806
+ :param Sequence[str] external_resources: A list of external resources that are allowed to be accessed. A request
1807
+ matches if it contains an external resource in this list (Example:
1808
+ s3://bucket/path). Currently '*' is not allowed.
1809
+ :param Sequence['ServicePerimeterDryRunEgressPolicyEgressToOperationArgs'] operations: A list of `ApiOperations` that this egress rule applies to. A request matches
1810
+ if it contains an operation/service in this list.
1811
+ Structure is documented below.
1812
+ :param Sequence[str] resources: A list of resources, currently only projects in the form
1813
+ `projects/<projectnumber>`, that match this to stanza. A request matches
1814
+ if it contains a resource in this list. If * is specified for resources,
1815
+ then this `EgressTo` rule will authorize access to all resources outside
1816
+ the perimeter.
1817
+ """
1818
+ if external_resources is not None:
1819
+ pulumi.set(__self__, "external_resources", external_resources)
1820
+ if operations is not None:
1821
+ pulumi.set(__self__, "operations", operations)
1822
+ if resources is not None:
1823
+ pulumi.set(__self__, "resources", resources)
1824
+
1825
+ @property
1826
+ @pulumi.getter(name="externalResources")
1827
+ def external_resources(self) -> Optional[Sequence[str]]:
1828
+ """
1829
+ A list of external resources that are allowed to be accessed. A request
1830
+ matches if it contains an external resource in this list (Example:
1831
+ s3://bucket/path). Currently '*' is not allowed.
1832
+ """
1833
+ return pulumi.get(self, "external_resources")
1834
+
1835
+ @property
1836
+ @pulumi.getter
1837
+ def operations(self) -> Optional[Sequence['outputs.ServicePerimeterDryRunEgressPolicyEgressToOperation']]:
1838
+ """
1839
+ A list of `ApiOperations` that this egress rule applies to. A request matches
1840
+ if it contains an operation/service in this list.
1841
+ Structure is documented below.
1842
+ """
1843
+ return pulumi.get(self, "operations")
1844
+
1845
+ @property
1846
+ @pulumi.getter
1847
+ def resources(self) -> Optional[Sequence[str]]:
1848
+ """
1849
+ A list of resources, currently only projects in the form
1850
+ `projects/<projectnumber>`, that match this to stanza. A request matches
1851
+ if it contains a resource in this list. If * is specified for resources,
1852
+ then this `EgressTo` rule will authorize access to all resources outside
1853
+ the perimeter.
1854
+ """
1855
+ return pulumi.get(self, "resources")
1856
+
1857
+
1858
+ @pulumi.output_type
1859
+ class ServicePerimeterDryRunEgressPolicyEgressToOperation(dict):
1860
+ @staticmethod
1861
+ def __key_warning(key: str):
1862
+ suggest = None
1863
+ if key == "methodSelectors":
1864
+ suggest = "method_selectors"
1865
+ elif key == "serviceName":
1866
+ suggest = "service_name"
1867
+
1868
+ if suggest:
1869
+ pulumi.log.warn(f"Key '{key}' not found in ServicePerimeterDryRunEgressPolicyEgressToOperation. Access the value via the '{suggest}' property getter instead.")
1870
+
1871
+ def __getitem__(self, key: str) -> Any:
1872
+ ServicePerimeterDryRunEgressPolicyEgressToOperation.__key_warning(key)
1873
+ return super().__getitem__(key)
1874
+
1875
+ def get(self, key: str, default = None) -> Any:
1876
+ ServicePerimeterDryRunEgressPolicyEgressToOperation.__key_warning(key)
1877
+ return super().get(key, default)
1878
+
1879
+ def __init__(__self__, *,
1880
+ method_selectors: Optional[Sequence['outputs.ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelector']] = None,
1881
+ service_name: Optional[str] = None):
1882
+ """
1883
+ :param Sequence['ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelectorArgs'] method_selectors: API methods or permissions to allow. Method or permission must belong
1884
+ to the service specified by `serviceName` field. A single MethodSelector
1885
+ entry with `*` specified for the `method` field will allow all methods
1886
+ AND permissions for the service specified in `serviceName`.
1887
+ Structure is documented below.
1888
+ :param str service_name: The name of the API whose methods or permissions the `IngressPolicy` or
1889
+ `EgressPolicy` want to allow. A single `ApiOperation` with serviceName
1890
+ field set to `*` will allow all methods AND permissions for all services.
1891
+ """
1892
+ if method_selectors is not None:
1893
+ pulumi.set(__self__, "method_selectors", method_selectors)
1894
+ if service_name is not None:
1895
+ pulumi.set(__self__, "service_name", service_name)
1896
+
1897
+ @property
1898
+ @pulumi.getter(name="methodSelectors")
1899
+ def method_selectors(self) -> Optional[Sequence['outputs.ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelector']]:
1900
+ """
1901
+ API methods or permissions to allow. Method or permission must belong
1902
+ to the service specified by `serviceName` field. A single MethodSelector
1903
+ entry with `*` specified for the `method` field will allow all methods
1904
+ AND permissions for the service specified in `serviceName`.
1905
+ Structure is documented below.
1906
+ """
1907
+ return pulumi.get(self, "method_selectors")
1908
+
1909
+ @property
1910
+ @pulumi.getter(name="serviceName")
1911
+ def service_name(self) -> Optional[str]:
1912
+ """
1913
+ The name of the API whose methods or permissions the `IngressPolicy` or
1914
+ `EgressPolicy` want to allow. A single `ApiOperation` with serviceName
1915
+ field set to `*` will allow all methods AND permissions for all services.
1916
+ """
1917
+ return pulumi.get(self, "service_name")
1918
+
1919
+
1920
+ @pulumi.output_type
1921
+ class ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelector(dict):
1922
+ def __init__(__self__, *,
1923
+ method: Optional[str] = None,
1924
+ permission: Optional[str] = None):
1925
+ """
1926
+ :param str method: Value for `method` should be a valid method name for the corresponding
1927
+ `serviceName` in `ApiOperation`. If `*` used as value for method,
1928
+ then ALL methods and permissions are allowed.
1929
+ :param str permission: Value for permission should be a valid Cloud IAM permission for the
1930
+ corresponding `serviceName` in `ApiOperation`.
1931
+ """
1932
+ if method is not None:
1933
+ pulumi.set(__self__, "method", method)
1934
+ if permission is not None:
1935
+ pulumi.set(__self__, "permission", permission)
1936
+
1937
+ @property
1938
+ @pulumi.getter
1939
+ def method(self) -> Optional[str]:
1940
+ """
1941
+ Value for `method` should be a valid method name for the corresponding
1942
+ `serviceName` in `ApiOperation`. If `*` used as value for method,
1943
+ then ALL methods and permissions are allowed.
1944
+ """
1945
+ return pulumi.get(self, "method")
1946
+
1947
+ @property
1948
+ @pulumi.getter
1949
+ def permission(self) -> Optional[str]:
1950
+ """
1951
+ Value for permission should be a valid Cloud IAM permission for the
1952
+ corresponding `serviceName` in `ApiOperation`.
1953
+ """
1954
+ return pulumi.get(self, "permission")
1955
+
1956
+
1957
+ @pulumi.output_type
1958
+ class ServicePerimeterDryRunIngressPolicyIngressFrom(dict):
1959
+ @staticmethod
1960
+ def __key_warning(key: str):
1961
+ suggest = None
1962
+ if key == "identityType":
1963
+ suggest = "identity_type"
1964
+
1965
+ if suggest:
1966
+ pulumi.log.warn(f"Key '{key}' not found in ServicePerimeterDryRunIngressPolicyIngressFrom. Access the value via the '{suggest}' property getter instead.")
1967
+
1968
+ def __getitem__(self, key: str) -> Any:
1969
+ ServicePerimeterDryRunIngressPolicyIngressFrom.__key_warning(key)
1970
+ return super().__getitem__(key)
1971
+
1972
+ def get(self, key: str, default = None) -> Any:
1973
+ ServicePerimeterDryRunIngressPolicyIngressFrom.__key_warning(key)
1974
+ return super().get(key, default)
1975
+
1976
+ def __init__(__self__, *,
1977
+ identities: Optional[Sequence[str]] = None,
1978
+ identity_type: Optional[str] = None,
1979
+ sources: Optional[Sequence['outputs.ServicePerimeterDryRunIngressPolicyIngressFromSource']] = None):
1980
+ """
1981
+ :param Sequence[str] identities: A list of identities that are allowed access through this ingress policy.
1982
+ Should be in the format of email address. The email address should represent
1983
+ individual user or service account only.
1984
+ :param str identity_type: Specifies the type of identities that are allowed access from outside the
1985
+ perimeter. If left unspecified, then members of `identities` field will be
1986
+ allowed access.
1987
+ Possible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
1988
+ :param Sequence['ServicePerimeterDryRunIngressPolicyIngressFromSourceArgs'] sources: Sources that this `IngressPolicy` authorizes access from.
1989
+ Structure is documented below.
1990
+ """
1991
+ if identities is not None:
1992
+ pulumi.set(__self__, "identities", identities)
1993
+ if identity_type is not None:
1994
+ pulumi.set(__self__, "identity_type", identity_type)
1995
+ if sources is not None:
1996
+ pulumi.set(__self__, "sources", sources)
1997
+
1998
+ @property
1999
+ @pulumi.getter
2000
+ def identities(self) -> Optional[Sequence[str]]:
2001
+ """
2002
+ A list of identities that are allowed access through this ingress policy.
2003
+ Should be in the format of email address. The email address should represent
2004
+ individual user or service account only.
2005
+ """
2006
+ return pulumi.get(self, "identities")
2007
+
2008
+ @property
2009
+ @pulumi.getter(name="identityType")
2010
+ def identity_type(self) -> Optional[str]:
2011
+ """
2012
+ Specifies the type of identities that are allowed access from outside the
2013
+ perimeter. If left unspecified, then members of `identities` field will be
2014
+ allowed access.
2015
+ Possible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.
2016
+ """
2017
+ return pulumi.get(self, "identity_type")
2018
+
2019
+ @property
2020
+ @pulumi.getter
2021
+ def sources(self) -> Optional[Sequence['outputs.ServicePerimeterDryRunIngressPolicyIngressFromSource']]:
2022
+ """
2023
+ Sources that this `IngressPolicy` authorizes access from.
2024
+ Structure is documented below.
2025
+ """
2026
+ return pulumi.get(self, "sources")
2027
+
2028
+
2029
+ @pulumi.output_type
2030
+ class ServicePerimeterDryRunIngressPolicyIngressFromSource(dict):
2031
+ @staticmethod
2032
+ def __key_warning(key: str):
2033
+ suggest = None
2034
+ if key == "accessLevel":
2035
+ suggest = "access_level"
2036
+
2037
+ if suggest:
2038
+ pulumi.log.warn(f"Key '{key}' not found in ServicePerimeterDryRunIngressPolicyIngressFromSource. Access the value via the '{suggest}' property getter instead.")
2039
+
2040
+ def __getitem__(self, key: str) -> Any:
2041
+ ServicePerimeterDryRunIngressPolicyIngressFromSource.__key_warning(key)
2042
+ return super().__getitem__(key)
2043
+
2044
+ def get(self, key: str, default = None) -> Any:
2045
+ ServicePerimeterDryRunIngressPolicyIngressFromSource.__key_warning(key)
2046
+ return super().get(key, default)
2047
+
2048
+ def __init__(__self__, *,
2049
+ access_level: Optional[str] = None,
2050
+ resource: Optional[str] = None):
2051
+ """
2052
+ :param str access_level: An `AccessLevel` resource name that allow resources within the
2053
+ `ServicePerimeters` to be accessed from the internet. `AccessLevels` listed
2054
+ must be in the same policy as this `ServicePerimeter`. Referencing a nonexistent
2055
+ `AccessLevel` will cause an error. If no `AccessLevel` names are listed,
2056
+ resources within the perimeter can only be accessed via Google Cloud calls
2057
+ with request origins within the perimeter.
2058
+ Example `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL.`
2059
+ If * is specified, then all IngressSources will be allowed.
2060
+ :param str resource: A Google Cloud resource that is allowed to ingress the perimeter.
2061
+ Requests from these resources will be allowed to access perimeter data.
2062
+ Currently only projects are allowed. Format `projects/{project_number}`
2063
+ The project may be in any Google Cloud organization, not just the
2064
+ organization that the perimeter is defined in. `*` is not allowed, the case
2065
+ of allowing all Google Cloud resources only is not supported.
2066
+ """
2067
+ if access_level is not None:
2068
+ pulumi.set(__self__, "access_level", access_level)
2069
+ if resource is not None:
2070
+ pulumi.set(__self__, "resource", resource)
2071
+
2072
+ @property
2073
+ @pulumi.getter(name="accessLevel")
2074
+ def access_level(self) -> Optional[str]:
2075
+ """
2076
+ An `AccessLevel` resource name that allow resources within the
2077
+ `ServicePerimeters` to be accessed from the internet. `AccessLevels` listed
2078
+ must be in the same policy as this `ServicePerimeter`. Referencing a nonexistent
2079
+ `AccessLevel` will cause an error. If no `AccessLevel` names are listed,
2080
+ resources within the perimeter can only be accessed via Google Cloud calls
2081
+ with request origins within the perimeter.
2082
+ Example `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL.`
2083
+ If * is specified, then all IngressSources will be allowed.
2084
+ """
2085
+ return pulumi.get(self, "access_level")
2086
+
2087
+ @property
2088
+ @pulumi.getter
2089
+ def resource(self) -> Optional[str]:
2090
+ """
2091
+ A Google Cloud resource that is allowed to ingress the perimeter.
2092
+ Requests from these resources will be allowed to access perimeter data.
2093
+ Currently only projects are allowed. Format `projects/{project_number}`
2094
+ The project may be in any Google Cloud organization, not just the
2095
+ organization that the perimeter is defined in. `*` is not allowed, the case
2096
+ of allowing all Google Cloud resources only is not supported.
2097
+ """
2098
+ return pulumi.get(self, "resource")
2099
+
2100
+
2101
+ @pulumi.output_type
2102
+ class ServicePerimeterDryRunIngressPolicyIngressTo(dict):
2103
+ def __init__(__self__, *,
2104
+ operations: Optional[Sequence['outputs.ServicePerimeterDryRunIngressPolicyIngressToOperation']] = None,
2105
+ resources: Optional[Sequence[str]] = None):
2106
+ """
2107
+ :param Sequence['ServicePerimeterDryRunIngressPolicyIngressToOperationArgs'] operations: A list of `ApiOperations` the sources specified in corresponding `IngressFrom`
2108
+ are allowed to perform in this `ServicePerimeter`.
2109
+ Structure is documented below.
2110
+ :param Sequence[str] resources: A list of resources, currently only projects in the form
2111
+ `projects/<projectnumber>`, protected by this `ServicePerimeter`
2112
+ that are allowed to be accessed by sources defined in the
2113
+ corresponding `IngressFrom`. A request matches if it contains
2114
+ a resource in this list. If `*` is specified for resources,
2115
+ then this `IngressTo` rule will authorize access to all
2116
+ resources inside the perimeter, provided that the request
2117
+ also matches the `operations` field.
2118
+ """
2119
+ if operations is not None:
2120
+ pulumi.set(__self__, "operations", operations)
2121
+ if resources is not None:
2122
+ pulumi.set(__self__, "resources", resources)
2123
+
2124
+ @property
2125
+ @pulumi.getter
2126
+ def operations(self) -> Optional[Sequence['outputs.ServicePerimeterDryRunIngressPolicyIngressToOperation']]:
2127
+ """
2128
+ A list of `ApiOperations` the sources specified in corresponding `IngressFrom`
2129
+ are allowed to perform in this `ServicePerimeter`.
2130
+ Structure is documented below.
2131
+ """
2132
+ return pulumi.get(self, "operations")
2133
+
2134
+ @property
2135
+ @pulumi.getter
2136
+ def resources(self) -> Optional[Sequence[str]]:
2137
+ """
2138
+ A list of resources, currently only projects in the form
2139
+ `projects/<projectnumber>`, protected by this `ServicePerimeter`
2140
+ that are allowed to be accessed by sources defined in the
2141
+ corresponding `IngressFrom`. A request matches if it contains
2142
+ a resource in this list. If `*` is specified for resources,
2143
+ then this `IngressTo` rule will authorize access to all
2144
+ resources inside the perimeter, provided that the request
2145
+ also matches the `operations` field.
2146
+ """
2147
+ return pulumi.get(self, "resources")
2148
+
2149
+
2150
+ @pulumi.output_type
2151
+ class ServicePerimeterDryRunIngressPolicyIngressToOperation(dict):
2152
+ @staticmethod
2153
+ def __key_warning(key: str):
2154
+ suggest = None
2155
+ if key == "methodSelectors":
2156
+ suggest = "method_selectors"
2157
+ elif key == "serviceName":
2158
+ suggest = "service_name"
2159
+
2160
+ if suggest:
2161
+ pulumi.log.warn(f"Key '{key}' not found in ServicePerimeterDryRunIngressPolicyIngressToOperation. Access the value via the '{suggest}' property getter instead.")
2162
+
2163
+ def __getitem__(self, key: str) -> Any:
2164
+ ServicePerimeterDryRunIngressPolicyIngressToOperation.__key_warning(key)
2165
+ return super().__getitem__(key)
2166
+
2167
+ def get(self, key: str, default = None) -> Any:
2168
+ ServicePerimeterDryRunIngressPolicyIngressToOperation.__key_warning(key)
2169
+ return super().get(key, default)
2170
+
2171
+ def __init__(__self__, *,
2172
+ method_selectors: Optional[Sequence['outputs.ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelector']] = None,
2173
+ service_name: Optional[str] = None):
2174
+ """
2175
+ :param Sequence['ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelectorArgs'] method_selectors: API methods or permissions to allow. Method or permission must belong to
2176
+ the service specified by serviceName field. A single `MethodSelector` entry
2177
+ with `*` specified for the method field will allow all methods AND
2178
+ permissions for the service specified in `serviceName`.
2179
+ Structure is documented below.
2180
+ :param str service_name: The name of the API whose methods or permissions the `IngressPolicy` or
2181
+ `EgressPolicy` want to allow. A single `ApiOperation` with `serviceName`
2182
+ field set to `*` will allow all methods AND permissions for all services.
2183
+ """
2184
+ if method_selectors is not None:
2185
+ pulumi.set(__self__, "method_selectors", method_selectors)
2186
+ if service_name is not None:
2187
+ pulumi.set(__self__, "service_name", service_name)
2188
+
2189
+ @property
2190
+ @pulumi.getter(name="methodSelectors")
2191
+ def method_selectors(self) -> Optional[Sequence['outputs.ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelector']]:
2192
+ """
2193
+ API methods or permissions to allow. Method or permission must belong to
2194
+ the service specified by serviceName field. A single `MethodSelector` entry
2195
+ with `*` specified for the method field will allow all methods AND
2196
+ permissions for the service specified in `serviceName`.
2197
+ Structure is documented below.
2198
+ """
2199
+ return pulumi.get(self, "method_selectors")
2200
+
2201
+ @property
2202
+ @pulumi.getter(name="serviceName")
2203
+ def service_name(self) -> Optional[str]:
2204
+ """
2205
+ The name of the API whose methods or permissions the `IngressPolicy` or
2206
+ `EgressPolicy` want to allow. A single `ApiOperation` with `serviceName`
2207
+ field set to `*` will allow all methods AND permissions for all services.
2208
+ """
2209
+ return pulumi.get(self, "service_name")
2210
+
2211
+
2212
+ @pulumi.output_type
2213
+ class ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelector(dict):
2214
+ def __init__(__self__, *,
2215
+ method: Optional[str] = None,
2216
+ permission: Optional[str] = None):
2217
+ """
2218
+ :param str method: Value for method should be a valid method name for the corresponding
2219
+ serviceName in `ApiOperation`. If `*` used as value for `method`, then
2220
+ ALL methods and permissions are allowed.
2221
+ :param str permission: Value for permission should be a valid Cloud IAM permission for the
2222
+ corresponding `serviceName` in `ApiOperation`.
2223
+ """
2224
+ if method is not None:
2225
+ pulumi.set(__self__, "method", method)
2226
+ if permission is not None:
2227
+ pulumi.set(__self__, "permission", permission)
2228
+
2229
+ @property
2230
+ @pulumi.getter
2231
+ def method(self) -> Optional[str]:
2232
+ """
2233
+ Value for method should be a valid method name for the corresponding
2234
+ serviceName in `ApiOperation`. If `*` used as value for `method`, then
2235
+ ALL methods and permissions are allowed.
2236
+ """
2237
+ return pulumi.get(self, "method")
2238
+
2239
+ @property
2240
+ @pulumi.getter
2241
+ def permission(self) -> Optional[str]:
2242
+ """
2243
+ Value for permission should be a valid Cloud IAM permission for the
2244
+ corresponding `serviceName` in `ApiOperation`.
2245
+ """
2246
+ return pulumi.get(self, "permission")
2247
+
2248
+
1648
2249
  @pulumi.output_type
1649
2250
  class ServicePerimeterEgressPolicyEgressFrom(dict):
1650
2251
  @staticmethod