pulumi-gcp 8.26.0a1744267117__py3-none-any.whl → 8.27.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 (116) hide show
  1. pulumi_gcp/__init__.py +128 -0
  2. pulumi_gcp/accesscontextmanager/_inputs.py +117 -0
  3. pulumi_gcp/accesscontextmanager/gcp_user_access_binding.py +81 -26
  4. pulumi_gcp/accesscontextmanager/outputs.py +95 -0
  5. pulumi_gcp/apigee/__init__.py +1 -0
  6. pulumi_gcp/apigee/control_plane_access.py +419 -0
  7. pulumi_gcp/bigquery/_inputs.py +87 -30
  8. pulumi_gcp/bigquery/outputs.py +58 -20
  9. pulumi_gcp/bigquery/table.py +28 -14
  10. pulumi_gcp/clouddeploy/__init__.py +1 -0
  11. pulumi_gcp/clouddeploy/_inputs.py +2876 -1314
  12. pulumi_gcp/clouddeploy/automation.py +64 -2
  13. pulumi_gcp/clouddeploy/deploy_policy.py +1179 -0
  14. pulumi_gcp/clouddeploy/outputs.py +1130 -5
  15. pulumi_gcp/cloudrun/service.py +46 -0
  16. pulumi_gcp/cloudrunv2/get_service.py +12 -1
  17. pulumi_gcp/cloudrunv2/service.py +87 -2
  18. pulumi_gcp/compute/_inputs.py +448 -1
  19. pulumi_gcp/compute/image.py +183 -0
  20. pulumi_gcp/compute/outputs.py +387 -3
  21. pulumi_gcp/compute/region_backend_service.py +6 -2
  22. pulumi_gcp/compute/resource_policy.py +30 -0
  23. pulumi_gcp/compute/snapshot.py +6 -0
  24. pulumi_gcp/databasemigrationservice/_inputs.py +27 -24
  25. pulumi_gcp/databasemigrationservice/connection_profile.py +168 -0
  26. pulumi_gcp/databasemigrationservice/migration_job.py +6 -0
  27. pulumi_gcp/databasemigrationservice/outputs.py +18 -15
  28. pulumi_gcp/datastream/_inputs.py +506 -0
  29. pulumi_gcp/datastream/outputs.py +376 -0
  30. pulumi_gcp/datastream/stream.py +0 -2
  31. pulumi_gcp/developerconnect/__init__.py +1 -0
  32. pulumi_gcp/developerconnect/_inputs.py +77 -0
  33. pulumi_gcp/developerconnect/account_connector.py +866 -0
  34. pulumi_gcp/developerconnect/outputs.py +64 -0
  35. pulumi_gcp/firebase/hosting_version.py +34 -14
  36. pulumi_gcp/firestore/database.py +82 -0
  37. pulumi_gcp/firestore/index.py +263 -7
  38. pulumi_gcp/folder/__init__.py +1 -0
  39. pulumi_gcp/folder/service_identity.py +314 -0
  40. pulumi_gcp/gemini/__init__.py +2 -0
  41. pulumi_gcp/gemini/_inputs.py +176 -0
  42. pulumi_gcp/gemini/code_tools_setting.py +601 -0
  43. pulumi_gcp/gemini/code_tools_setting_binding.py +753 -0
  44. pulumi_gcp/gemini/outputs.py +124 -0
  45. pulumi_gcp/gkeonprem/v_mware_cluster.py +49 -0
  46. pulumi_gcp/gkeonprem/vmware_admin_cluster.py +28 -0
  47. pulumi_gcp/managedkafka/_inputs.py +6 -6
  48. pulumi_gcp/managedkafka/connect_cluster.py +84 -40
  49. pulumi_gcp/managedkafka/connector.py +98 -44
  50. pulumi_gcp/managedkafka/outputs.py +4 -4
  51. pulumi_gcp/memorystore/_inputs.py +205 -0
  52. pulumi_gcp/memorystore/get_instance.py +45 -1
  53. pulumi_gcp/memorystore/instance.py +194 -0
  54. pulumi_gcp/memorystore/outputs.py +270 -0
  55. pulumi_gcp/ml/engine_model.py +0 -22
  56. pulumi_gcp/monitoring/_inputs.py +37 -19
  57. pulumi_gcp/monitoring/outputs.py +39 -11
  58. pulumi_gcp/monitoring/uptime_check_config.py +8 -0
  59. pulumi_gcp/netapp/_inputs.py +92 -6
  60. pulumi_gcp/netapp/outputs.py +77 -4
  61. pulumi_gcp/netapp/volume_replication.py +12 -2
  62. pulumi_gcp/networkconnectivity/service_connection_policy.py +4 -2
  63. pulumi_gcp/networkconnectivity/spoke.py +14 -14
  64. pulumi_gcp/orgpolicy/policy.py +2 -2
  65. pulumi_gcp/osconfig/__init__.py +1 -0
  66. pulumi_gcp/osconfig/_inputs.py +5439 -0
  67. pulumi_gcp/osconfig/outputs.py +3978 -0
  68. pulumi_gcp/osconfig/v2_policy_orchestrator.py +8 -0
  69. pulumi_gcp/osconfig/v2_policy_orchestrator_for_organization.py +1055 -0
  70. pulumi_gcp/parametermanager/get_regional_parameter.py +12 -1
  71. pulumi_gcp/parametermanager/get_regional_parameter_version.py +15 -1
  72. pulumi_gcp/parametermanager/outputs.py +11 -0
  73. pulumi_gcp/parametermanager/regional_parameter.py +78 -0
  74. pulumi_gcp/parametermanager/regional_parameter_version.py +66 -0
  75. pulumi_gcp/pubsub/subscription.py +6 -6
  76. pulumi_gcp/pulumi-plugin.json +1 -1
  77. pulumi_gcp/redis/_inputs.py +69 -0
  78. pulumi_gcp/redis/cluster.py +140 -0
  79. pulumi_gcp/redis/outputs.py +40 -0
  80. pulumi_gcp/spanner/database.py +0 -34
  81. pulumi_gcp/storage/_inputs.py +111 -0
  82. pulumi_gcp/storage/bucket_object.py +28 -0
  83. pulumi_gcp/storage/control_folder_intelligence_config.py +32 -0
  84. pulumi_gcp/storage/control_organization_intelligence_config.py +32 -0
  85. pulumi_gcp/storage/control_project_intelligence_config.py +32 -0
  86. pulumi_gcp/storage/get_bucket_object.py +12 -1
  87. pulumi_gcp/storage/get_bucket_object_content.py +12 -1
  88. pulumi_gcp/storage/get_control_folder_intelligence_config.py +12 -1
  89. pulumi_gcp/storage/get_control_organization_intelligence_config.py +12 -1
  90. pulumi_gcp/storage/get_control_project_intelligence_config.py +12 -1
  91. pulumi_gcp/storage/outputs.py +174 -0
  92. pulumi_gcp/vertex/__init__.py +12 -0
  93. pulumi_gcp/vertex/_inputs.py +294 -0
  94. pulumi_gcp/vertex/ai_endpoint.py +4 -4
  95. pulumi_gcp/vertex/ai_feature_group.py +1 -1
  96. pulumi_gcp/vertex/ai_feature_group_iam_binding.py +583 -0
  97. pulumi_gcp/vertex/ai_feature_group_iam_member.py +583 -0
  98. pulumi_gcp/vertex/ai_feature_group_iam_policy.py +422 -0
  99. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +26 -27
  100. pulumi_gcp/vertex/ai_feature_online_store_featureview_iam_binding.py +614 -0
  101. pulumi_gcp/vertex/ai_feature_online_store_featureview_iam_member.py +614 -0
  102. pulumi_gcp/vertex/ai_feature_online_store_featureview_iam_policy.py +453 -0
  103. pulumi_gcp/vertex/ai_feature_online_store_iam_binding.py +583 -0
  104. pulumi_gcp/vertex/ai_feature_online_store_iam_member.py +583 -0
  105. pulumi_gcp/vertex/ai_feature_online_store_iam_policy.py +422 -0
  106. pulumi_gcp/vertex/get_ai_feature_group_iam_policy.py +177 -0
  107. pulumi_gcp/vertex/get_ai_feature_online_store_featureview_iam_policy.py +194 -0
  108. pulumi_gcp/vertex/get_ai_feature_online_store_iam_policy.py +177 -0
  109. pulumi_gcp/vertex/outputs.py +168 -0
  110. pulumi_gcp/workbench/_inputs.py +60 -0
  111. pulumi_gcp/workbench/instance.py +48 -0
  112. pulumi_gcp/workbench/outputs.py +55 -0
  113. {pulumi_gcp-8.26.0a1744267117.dist-info → pulumi_gcp-8.27.0.dist-info}/METADATA +1 -1
  114. {pulumi_gcp-8.26.0a1744267117.dist-info → pulumi_gcp-8.27.0.dist-info}/RECORD +116 -97
  115. {pulumi_gcp-8.26.0a1744267117.dist-info → pulumi_gcp-8.27.0.dist-info}/WHEEL +0 -0
  116. {pulumi_gcp-8.26.0a1744267117.dist-info → pulumi_gcp-8.27.0.dist-info}/top_level.txt +0 -0
@@ -40,6 +40,7 @@ __all__ = [
40
40
  'AccessLevelsAccessLevelCustomExpr',
41
41
  'AccessPolicyIamBindingCondition',
42
42
  'AccessPolicyIamMemberCondition',
43
+ 'GcpUserAccessBindingSessionSettings',
43
44
  'ServicePerimeterDryRunEgressPolicyEgressFrom',
44
45
  'ServicePerimeterDryRunEgressPolicyEgressFromSource',
45
46
  'ServicePerimeterDryRunEgressPolicyEgressTo',
@@ -1656,6 +1657,100 @@ class AccessPolicyIamMemberCondition(dict):
1656
1657
  return pulumi.get(self, "description")
1657
1658
 
1658
1659
 
1660
+ @pulumi.output_type
1661
+ class GcpUserAccessBindingSessionSettings(dict):
1662
+ @staticmethod
1663
+ def __key_warning(key: str):
1664
+ suggest = None
1665
+ if key == "maxInactivity":
1666
+ suggest = "max_inactivity"
1667
+ elif key == "sessionLength":
1668
+ suggest = "session_length"
1669
+ elif key == "sessionLengthEnabled":
1670
+ suggest = "session_length_enabled"
1671
+ elif key == "sessionReauthMethod":
1672
+ suggest = "session_reauth_method"
1673
+ elif key == "useOidcMaxAge":
1674
+ suggest = "use_oidc_max_age"
1675
+
1676
+ if suggest:
1677
+ pulumi.log.warn(f"Key '{key}' not found in GcpUserAccessBindingSessionSettings. Access the value via the '{suggest}' property getter instead.")
1678
+
1679
+ def __getitem__(self, key: str) -> Any:
1680
+ GcpUserAccessBindingSessionSettings.__key_warning(key)
1681
+ return super().__getitem__(key)
1682
+
1683
+ def get(self, key: str, default = None) -> Any:
1684
+ GcpUserAccessBindingSessionSettings.__key_warning(key)
1685
+ return super().get(key, default)
1686
+
1687
+ def __init__(__self__, *,
1688
+ max_inactivity: Optional[builtins.str] = None,
1689
+ session_length: Optional[builtins.str] = None,
1690
+ session_length_enabled: Optional[builtins.bool] = None,
1691
+ session_reauth_method: Optional[builtins.str] = None,
1692
+ use_oidc_max_age: Optional[builtins.bool] = None):
1693
+ """
1694
+ :param builtins.str max_inactivity: Optional. How long a user is allowed to take between actions before a new access token must be issued. Only set for Google Cloud apps.
1695
+ :param builtins.str session_length: Optional. The session length. Setting this field to zero is equal to disabling session. Also can set infinite session by flipping the enabled bit to false below. If useOidcMaxAge is true, for OIDC apps, the session length will be the minimum of this field and OIDC max_age param.
1696
+ :param builtins.bool session_length_enabled: Optional. This field enables or disables Google Cloud session length. When false, all fields set above will be disregarded and the session length is basically infinite.
1697
+ :param builtins.str session_reauth_method: Optional. The session challenges proposed to users when the Google Cloud session length is up.
1698
+ Possible values are: `LOGIN`, `SECURITY_KEY`, `PASSWORD`.
1699
+ :param builtins.bool use_oidc_max_age: Optional. Only useful for OIDC apps. When false, the OIDC max_age param, if passed in the authentication request will be ignored. When true, the re-auth period will be the minimum of the sessionLength field and the max_age OIDC param.
1700
+ """
1701
+ if max_inactivity is not None:
1702
+ pulumi.set(__self__, "max_inactivity", max_inactivity)
1703
+ if session_length is not None:
1704
+ pulumi.set(__self__, "session_length", session_length)
1705
+ if session_length_enabled is not None:
1706
+ pulumi.set(__self__, "session_length_enabled", session_length_enabled)
1707
+ if session_reauth_method is not None:
1708
+ pulumi.set(__self__, "session_reauth_method", session_reauth_method)
1709
+ if use_oidc_max_age is not None:
1710
+ pulumi.set(__self__, "use_oidc_max_age", use_oidc_max_age)
1711
+
1712
+ @property
1713
+ @pulumi.getter(name="maxInactivity")
1714
+ def max_inactivity(self) -> Optional[builtins.str]:
1715
+ """
1716
+ Optional. How long a user is allowed to take between actions before a new access token must be issued. Only set for Google Cloud apps.
1717
+ """
1718
+ return pulumi.get(self, "max_inactivity")
1719
+
1720
+ @property
1721
+ @pulumi.getter(name="sessionLength")
1722
+ def session_length(self) -> Optional[builtins.str]:
1723
+ """
1724
+ Optional. The session length. Setting this field to zero is equal to disabling session. Also can set infinite session by flipping the enabled bit to false below. If useOidcMaxAge is true, for OIDC apps, the session length will be the minimum of this field and OIDC max_age param.
1725
+ """
1726
+ return pulumi.get(self, "session_length")
1727
+
1728
+ @property
1729
+ @pulumi.getter(name="sessionLengthEnabled")
1730
+ def session_length_enabled(self) -> Optional[builtins.bool]:
1731
+ """
1732
+ Optional. This field enables or disables Google Cloud session length. When false, all fields set above will be disregarded and the session length is basically infinite.
1733
+ """
1734
+ return pulumi.get(self, "session_length_enabled")
1735
+
1736
+ @property
1737
+ @pulumi.getter(name="sessionReauthMethod")
1738
+ def session_reauth_method(self) -> Optional[builtins.str]:
1739
+ """
1740
+ Optional. The session challenges proposed to users when the Google Cloud session length is up.
1741
+ Possible values are: `LOGIN`, `SECURITY_KEY`, `PASSWORD`.
1742
+ """
1743
+ return pulumi.get(self, "session_reauth_method")
1744
+
1745
+ @property
1746
+ @pulumi.getter(name="useOidcMaxAge")
1747
+ def use_oidc_max_age(self) -> Optional[builtins.bool]:
1748
+ """
1749
+ Optional. Only useful for OIDC apps. When false, the OIDC max_age param, if passed in the authentication request will be ignored. When true, the re-auth period will be the minimum of the sessionLength field and the max_age OIDC param.
1750
+ """
1751
+ return pulumi.get(self, "use_oidc_max_age")
1752
+
1753
+
1659
1754
  @pulumi.output_type
1660
1755
  class ServicePerimeterDryRunEgressPolicyEgressFrom(dict):
1661
1756
  @staticmethod
@@ -9,6 +9,7 @@ import typing
9
9
  from .addons_config import *
10
10
  from .api import *
11
11
  from .app_group import *
12
+ from .control_plane_access import *
12
13
  from .developer import *
13
14
  from .dns_zone import *
14
15
  from .endpoint_attachment import *
@@ -0,0 +1,419 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import builtins
6
+ import copy
7
+ import warnings
8
+ import sys
9
+ import pulumi
10
+ import pulumi.runtime
11
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
12
+ if sys.version_info >= (3, 11):
13
+ from typing import NotRequired, TypedDict, TypeAlias
14
+ else:
15
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
16
+ from .. import _utilities
17
+
18
+ __all__ = ['ControlPlaneAccessArgs', 'ControlPlaneAccess']
19
+
20
+ @pulumi.input_type
21
+ class ControlPlaneAccessArgs:
22
+ def __init__(__self__, *,
23
+ analytics_publisher_identities: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
24
+ name: Optional[pulumi.Input[builtins.str]] = None,
25
+ synchronizer_identities: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None):
26
+ """
27
+ The set of arguments for constructing a ControlPlaneAccess resource.
28
+ :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] analytics_publisher_identities: Array of service accounts authorized to publish analytics data to the control plane, each specified using the following format: `serviceAccount:service-account-name`.
29
+ The `service-account-name` is formatted like an email address. For example: serviceAccount@my_project_id.iam.gserviceaccount.com
30
+ You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one.
31
+ :param pulumi.Input[builtins.str] name: Name of the Apigee organization.
32
+
33
+
34
+ - - -
35
+ :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] synchronizer_identities: Array of service accounts to grant access to control plane resources (for the Synchronizer component), each specified using the following format: `serviceAccount:service-account-name`.
36
+ The `service-account-name` is formatted like an email address. For example: serviceAccount@my_project_id.iam.gserviceaccount.com
37
+ You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one.
38
+ The service accounts must have **Apigee Synchronizer Manager** role. See also [Create service accounts](https://cloud.google.com/apigee/docs/hybrid/v1.8/sa-about#create-the-service-accounts).
39
+ """
40
+ if analytics_publisher_identities is not None:
41
+ pulumi.set(__self__, "analytics_publisher_identities", analytics_publisher_identities)
42
+ if name is not None:
43
+ pulumi.set(__self__, "name", name)
44
+ if synchronizer_identities is not None:
45
+ pulumi.set(__self__, "synchronizer_identities", synchronizer_identities)
46
+
47
+ @property
48
+ @pulumi.getter(name="analyticsPublisherIdentities")
49
+ def analytics_publisher_identities(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
50
+ """
51
+ Array of service accounts authorized to publish analytics data to the control plane, each specified using the following format: `serviceAccount:service-account-name`.
52
+ The `service-account-name` is formatted like an email address. For example: serviceAccount@my_project_id.iam.gserviceaccount.com
53
+ You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one.
54
+ """
55
+ return pulumi.get(self, "analytics_publisher_identities")
56
+
57
+ @analytics_publisher_identities.setter
58
+ def analytics_publisher_identities(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]):
59
+ pulumi.set(self, "analytics_publisher_identities", value)
60
+
61
+ @property
62
+ @pulumi.getter
63
+ def name(self) -> Optional[pulumi.Input[builtins.str]]:
64
+ """
65
+ Name of the Apigee organization.
66
+
67
+
68
+ - - -
69
+ """
70
+ return pulumi.get(self, "name")
71
+
72
+ @name.setter
73
+ def name(self, value: Optional[pulumi.Input[builtins.str]]):
74
+ pulumi.set(self, "name", value)
75
+
76
+ @property
77
+ @pulumi.getter(name="synchronizerIdentities")
78
+ def synchronizer_identities(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
79
+ """
80
+ Array of service accounts to grant access to control plane resources (for the Synchronizer component), each specified using the following format: `serviceAccount:service-account-name`.
81
+ The `service-account-name` is formatted like an email address. For example: serviceAccount@my_project_id.iam.gserviceaccount.com
82
+ You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one.
83
+ The service accounts must have **Apigee Synchronizer Manager** role. See also [Create service accounts](https://cloud.google.com/apigee/docs/hybrid/v1.8/sa-about#create-the-service-accounts).
84
+ """
85
+ return pulumi.get(self, "synchronizer_identities")
86
+
87
+ @synchronizer_identities.setter
88
+ def synchronizer_identities(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]):
89
+ pulumi.set(self, "synchronizer_identities", value)
90
+
91
+
92
+ @pulumi.input_type
93
+ class _ControlPlaneAccessState:
94
+ def __init__(__self__, *,
95
+ analytics_publisher_identities: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
96
+ name: Optional[pulumi.Input[builtins.str]] = None,
97
+ synchronizer_identities: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None):
98
+ """
99
+ Input properties used for looking up and filtering ControlPlaneAccess resources.
100
+ :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] analytics_publisher_identities: Array of service accounts authorized to publish analytics data to the control plane, each specified using the following format: `serviceAccount:service-account-name`.
101
+ The `service-account-name` is formatted like an email address. For example: serviceAccount@my_project_id.iam.gserviceaccount.com
102
+ You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one.
103
+ :param pulumi.Input[builtins.str] name: Name of the Apigee organization.
104
+
105
+
106
+ - - -
107
+ :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] synchronizer_identities: Array of service accounts to grant access to control plane resources (for the Synchronizer component), each specified using the following format: `serviceAccount:service-account-name`.
108
+ The `service-account-name` is formatted like an email address. For example: serviceAccount@my_project_id.iam.gserviceaccount.com
109
+ You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one.
110
+ The service accounts must have **Apigee Synchronizer Manager** role. See also [Create service accounts](https://cloud.google.com/apigee/docs/hybrid/v1.8/sa-about#create-the-service-accounts).
111
+ """
112
+ if analytics_publisher_identities is not None:
113
+ pulumi.set(__self__, "analytics_publisher_identities", analytics_publisher_identities)
114
+ if name is not None:
115
+ pulumi.set(__self__, "name", name)
116
+ if synchronizer_identities is not None:
117
+ pulumi.set(__self__, "synchronizer_identities", synchronizer_identities)
118
+
119
+ @property
120
+ @pulumi.getter(name="analyticsPublisherIdentities")
121
+ def analytics_publisher_identities(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
122
+ """
123
+ Array of service accounts authorized to publish analytics data to the control plane, each specified using the following format: `serviceAccount:service-account-name`.
124
+ The `service-account-name` is formatted like an email address. For example: serviceAccount@my_project_id.iam.gserviceaccount.com
125
+ You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one.
126
+ """
127
+ return pulumi.get(self, "analytics_publisher_identities")
128
+
129
+ @analytics_publisher_identities.setter
130
+ def analytics_publisher_identities(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]):
131
+ pulumi.set(self, "analytics_publisher_identities", value)
132
+
133
+ @property
134
+ @pulumi.getter
135
+ def name(self) -> Optional[pulumi.Input[builtins.str]]:
136
+ """
137
+ Name of the Apigee organization.
138
+
139
+
140
+ - - -
141
+ """
142
+ return pulumi.get(self, "name")
143
+
144
+ @name.setter
145
+ def name(self, value: Optional[pulumi.Input[builtins.str]]):
146
+ pulumi.set(self, "name", value)
147
+
148
+ @property
149
+ @pulumi.getter(name="synchronizerIdentities")
150
+ def synchronizer_identities(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
151
+ """
152
+ Array of service accounts to grant access to control plane resources (for the Synchronizer component), each specified using the following format: `serviceAccount:service-account-name`.
153
+ The `service-account-name` is formatted like an email address. For example: serviceAccount@my_project_id.iam.gserviceaccount.com
154
+ You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one.
155
+ The service accounts must have **Apigee Synchronizer Manager** role. See also [Create service accounts](https://cloud.google.com/apigee/docs/hybrid/v1.8/sa-about#create-the-service-accounts).
156
+ """
157
+ return pulumi.get(self, "synchronizer_identities")
158
+
159
+ @synchronizer_identities.setter
160
+ def synchronizer_identities(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]):
161
+ pulumi.set(self, "synchronizer_identities", value)
162
+
163
+
164
+ class ControlPlaneAccess(pulumi.CustomResource):
165
+ @overload
166
+ def __init__(__self__,
167
+ resource_name: str,
168
+ opts: Optional[pulumi.ResourceOptions] = None,
169
+ analytics_publisher_identities: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
170
+ name: Optional[pulumi.Input[builtins.str]] = None,
171
+ synchronizer_identities: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
172
+ __props__=None):
173
+ """
174
+ Authorize the Runtime components to access directly with Apigee Control Plane.
175
+
176
+ To get more information about ControlPlaneAccess, see:
177
+
178
+ * [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations/updateControlPlaneAccess)
179
+ * How-to Guides
180
+ * [Enable ControlPlane access](https://cloud.google.com/apigee/docs/hybrid/v1.14/install-enable-control-plane-access)
181
+
182
+ ## Example Usage
183
+
184
+ ### Apigee Control Plane Access Basic Test
185
+
186
+ ```python
187
+ import pulumi
188
+ import pulumi_gcp as gcp
189
+
190
+ project = gcp.organizations.Project("project",
191
+ project_id="my-project",
192
+ name="my-project",
193
+ org_id="123456789",
194
+ billing_account="000000-0000000-0000000-000000",
195
+ deletion_policy="DELETE")
196
+ apigee = gcp.projects.Service("apigee",
197
+ project=project.project_id,
198
+ service="apigee.googleapis.com")
199
+ apigee_org = gcp.apigee.Organization("apigee_org",
200
+ analytics_region="us-central1",
201
+ project_id=project.project_id,
202
+ runtime_type="HYBRID",
203
+ opts = pulumi.ResourceOptions(depends_on=[apigee]))
204
+ service_account = gcp.serviceaccount.Account("service_account",
205
+ account_id="my-account",
206
+ display_name="Service Account")
207
+ synchronizer_iam = gcp.projects.IAMMember("synchronizer-iam",
208
+ project=project.project_id,
209
+ role="roles/apigee.synchronizerManager",
210
+ member=service_account.email.apply(lambda email: f"serviceAccount:{email}"))
211
+ apigee_control_plane_access = gcp.apigee.ControlPlaneAccess("apigee_control_plane_access",
212
+ name=apigee_org.name,
213
+ synchronizer_identities=[service_account.email.apply(lambda email: f"serviceAccount:{email}")],
214
+ analytics_publisher_identities=[service_account.email.apply(lambda email: f"serviceAccount:{email}")])
215
+ ```
216
+
217
+ ## Import
218
+
219
+ ControlPlaneAccess can be imported using any of these accepted formats:
220
+
221
+ * `organizations/{{name}}/controlPlaneAccess`
222
+
223
+ * `{{name}}`
224
+
225
+ When using the `pulumi import` command, ControlPlaneAccess can be imported using one of the formats above. For example:
226
+
227
+ ```sh
228
+ $ pulumi import gcp:apigee/controlPlaneAccess:ControlPlaneAccess default organizations/{{name}}/controlPlaneAccess
229
+ ```
230
+
231
+ ```sh
232
+ $ pulumi import gcp:apigee/controlPlaneAccess:ControlPlaneAccess default {{name}}
233
+ ```
234
+
235
+ :param str resource_name: The name of the resource.
236
+ :param pulumi.ResourceOptions opts: Options for the resource.
237
+ :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] analytics_publisher_identities: Array of service accounts authorized to publish analytics data to the control plane, each specified using the following format: `serviceAccount:service-account-name`.
238
+ The `service-account-name` is formatted like an email address. For example: serviceAccount@my_project_id.iam.gserviceaccount.com
239
+ You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one.
240
+ :param pulumi.Input[builtins.str] name: Name of the Apigee organization.
241
+
242
+
243
+ - - -
244
+ :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] synchronizer_identities: Array of service accounts to grant access to control plane resources (for the Synchronizer component), each specified using the following format: `serviceAccount:service-account-name`.
245
+ The `service-account-name` is formatted like an email address. For example: serviceAccount@my_project_id.iam.gserviceaccount.com
246
+ You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one.
247
+ The service accounts must have **Apigee Synchronizer Manager** role. See also [Create service accounts](https://cloud.google.com/apigee/docs/hybrid/v1.8/sa-about#create-the-service-accounts).
248
+ """
249
+ ...
250
+ @overload
251
+ def __init__(__self__,
252
+ resource_name: str,
253
+ args: Optional[ControlPlaneAccessArgs] = None,
254
+ opts: Optional[pulumi.ResourceOptions] = None):
255
+ """
256
+ Authorize the Runtime components to access directly with Apigee Control Plane.
257
+
258
+ To get more information about ControlPlaneAccess, see:
259
+
260
+ * [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations/updateControlPlaneAccess)
261
+ * How-to Guides
262
+ * [Enable ControlPlane access](https://cloud.google.com/apigee/docs/hybrid/v1.14/install-enable-control-plane-access)
263
+
264
+ ## Example Usage
265
+
266
+ ### Apigee Control Plane Access Basic Test
267
+
268
+ ```python
269
+ import pulumi
270
+ import pulumi_gcp as gcp
271
+
272
+ project = gcp.organizations.Project("project",
273
+ project_id="my-project",
274
+ name="my-project",
275
+ org_id="123456789",
276
+ billing_account="000000-0000000-0000000-000000",
277
+ deletion_policy="DELETE")
278
+ apigee = gcp.projects.Service("apigee",
279
+ project=project.project_id,
280
+ service="apigee.googleapis.com")
281
+ apigee_org = gcp.apigee.Organization("apigee_org",
282
+ analytics_region="us-central1",
283
+ project_id=project.project_id,
284
+ runtime_type="HYBRID",
285
+ opts = pulumi.ResourceOptions(depends_on=[apigee]))
286
+ service_account = gcp.serviceaccount.Account("service_account",
287
+ account_id="my-account",
288
+ display_name="Service Account")
289
+ synchronizer_iam = gcp.projects.IAMMember("synchronizer-iam",
290
+ project=project.project_id,
291
+ role="roles/apigee.synchronizerManager",
292
+ member=service_account.email.apply(lambda email: f"serviceAccount:{email}"))
293
+ apigee_control_plane_access = gcp.apigee.ControlPlaneAccess("apigee_control_plane_access",
294
+ name=apigee_org.name,
295
+ synchronizer_identities=[service_account.email.apply(lambda email: f"serviceAccount:{email}")],
296
+ analytics_publisher_identities=[service_account.email.apply(lambda email: f"serviceAccount:{email}")])
297
+ ```
298
+
299
+ ## Import
300
+
301
+ ControlPlaneAccess can be imported using any of these accepted formats:
302
+
303
+ * `organizations/{{name}}/controlPlaneAccess`
304
+
305
+ * `{{name}}`
306
+
307
+ When using the `pulumi import` command, ControlPlaneAccess can be imported using one of the formats above. For example:
308
+
309
+ ```sh
310
+ $ pulumi import gcp:apigee/controlPlaneAccess:ControlPlaneAccess default organizations/{{name}}/controlPlaneAccess
311
+ ```
312
+
313
+ ```sh
314
+ $ pulumi import gcp:apigee/controlPlaneAccess:ControlPlaneAccess default {{name}}
315
+ ```
316
+
317
+ :param str resource_name: The name of the resource.
318
+ :param ControlPlaneAccessArgs args: The arguments to use to populate this resource's properties.
319
+ :param pulumi.ResourceOptions opts: Options for the resource.
320
+ """
321
+ ...
322
+ def __init__(__self__, resource_name: str, *args, **kwargs):
323
+ resource_args, opts = _utilities.get_resource_args_opts(ControlPlaneAccessArgs, pulumi.ResourceOptions, *args, **kwargs)
324
+ if resource_args is not None:
325
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
326
+ else:
327
+ __self__._internal_init(resource_name, *args, **kwargs)
328
+
329
+ def _internal_init(__self__,
330
+ resource_name: str,
331
+ opts: Optional[pulumi.ResourceOptions] = None,
332
+ analytics_publisher_identities: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
333
+ name: Optional[pulumi.Input[builtins.str]] = None,
334
+ synchronizer_identities: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
335
+ __props__=None):
336
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
337
+ if not isinstance(opts, pulumi.ResourceOptions):
338
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
339
+ if opts.id is None:
340
+ if __props__ is not None:
341
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
342
+ __props__ = ControlPlaneAccessArgs.__new__(ControlPlaneAccessArgs)
343
+
344
+ __props__.__dict__["analytics_publisher_identities"] = analytics_publisher_identities
345
+ __props__.__dict__["name"] = name
346
+ __props__.__dict__["synchronizer_identities"] = synchronizer_identities
347
+ super(ControlPlaneAccess, __self__).__init__(
348
+ 'gcp:apigee/controlPlaneAccess:ControlPlaneAccess',
349
+ resource_name,
350
+ __props__,
351
+ opts)
352
+
353
+ @staticmethod
354
+ def get(resource_name: str,
355
+ id: pulumi.Input[str],
356
+ opts: Optional[pulumi.ResourceOptions] = None,
357
+ analytics_publisher_identities: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None,
358
+ name: Optional[pulumi.Input[builtins.str]] = None,
359
+ synchronizer_identities: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None) -> 'ControlPlaneAccess':
360
+ """
361
+ Get an existing ControlPlaneAccess resource's state with the given name, id, and optional extra
362
+ properties used to qualify the lookup.
363
+
364
+ :param str resource_name: The unique name of the resulting resource.
365
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
366
+ :param pulumi.ResourceOptions opts: Options for the resource.
367
+ :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] analytics_publisher_identities: Array of service accounts authorized to publish analytics data to the control plane, each specified using the following format: `serviceAccount:service-account-name`.
368
+ The `service-account-name` is formatted like an email address. For example: serviceAccount@my_project_id.iam.gserviceaccount.com
369
+ You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one.
370
+ :param pulumi.Input[builtins.str] name: Name of the Apigee organization.
371
+
372
+
373
+ - - -
374
+ :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] synchronizer_identities: Array of service accounts to grant access to control plane resources (for the Synchronizer component), each specified using the following format: `serviceAccount:service-account-name`.
375
+ The `service-account-name` is formatted like an email address. For example: serviceAccount@my_project_id.iam.gserviceaccount.com
376
+ You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one.
377
+ The service accounts must have **Apigee Synchronizer Manager** role. See also [Create service accounts](https://cloud.google.com/apigee/docs/hybrid/v1.8/sa-about#create-the-service-accounts).
378
+ """
379
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
380
+
381
+ __props__ = _ControlPlaneAccessState.__new__(_ControlPlaneAccessState)
382
+
383
+ __props__.__dict__["analytics_publisher_identities"] = analytics_publisher_identities
384
+ __props__.__dict__["name"] = name
385
+ __props__.__dict__["synchronizer_identities"] = synchronizer_identities
386
+ return ControlPlaneAccess(resource_name, opts=opts, __props__=__props__)
387
+
388
+ @property
389
+ @pulumi.getter(name="analyticsPublisherIdentities")
390
+ def analytics_publisher_identities(self) -> pulumi.Output[Optional[Sequence[builtins.str]]]:
391
+ """
392
+ Array of service accounts authorized to publish analytics data to the control plane, each specified using the following format: `serviceAccount:service-account-name`.
393
+ The `service-account-name` is formatted like an email address. For example: serviceAccount@my_project_id.iam.gserviceaccount.com
394
+ You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one.
395
+ """
396
+ return pulumi.get(self, "analytics_publisher_identities")
397
+
398
+ @property
399
+ @pulumi.getter
400
+ def name(self) -> pulumi.Output[builtins.str]:
401
+ """
402
+ Name of the Apigee organization.
403
+
404
+
405
+ - - -
406
+ """
407
+ return pulumi.get(self, "name")
408
+
409
+ @property
410
+ @pulumi.getter(name="synchronizerIdentities")
411
+ def synchronizer_identities(self) -> pulumi.Output[Optional[Sequence[builtins.str]]]:
412
+ """
413
+ Array of service accounts to grant access to control plane resources (for the Synchronizer component), each specified using the following format: `serviceAccount:service-account-name`.
414
+ The `service-account-name` is formatted like an email address. For example: serviceAccount@my_project_id.iam.gserviceaccount.com
415
+ You might specify multiple service accounts, for example, if you have multiple environments and wish to assign a unique service account to each one.
416
+ The service accounts must have **Apigee Synchronizer Manager** role. See also [Create service accounts](https://cloud.google.com/apigee/docs/hybrid/v1.8/sa-about#create-the-service-accounts).
417
+ """
418
+ return pulumi.get(self, "synchronizer_identities")
419
+