pulumi-aiven 6.34.0a1739941685__py3-none-any.whl → 6.35.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.

Potentially problematic release.


This version of pulumi-aiven might be problematic. Click here for more details.

@@ -0,0 +1,190 @@
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 copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from . import _utilities
16
+
17
+ __all__ = [
18
+ 'GetOrganizationVpcResult',
19
+ 'AwaitableGetOrganizationVpcResult',
20
+ 'get_organization_vpc',
21
+ 'get_organization_vpc_output',
22
+ ]
23
+
24
+ @pulumi.output_type
25
+ class GetOrganizationVpcResult:
26
+ """
27
+ A collection of values returned by getOrganizationVpc.
28
+ """
29
+ def __init__(__self__, cloud_name=None, create_time=None, id=None, network_cidr=None, organization_id=None, organization_vpc_id=None, state=None, update_time=None):
30
+ if cloud_name and not isinstance(cloud_name, str):
31
+ raise TypeError("Expected argument 'cloud_name' to be a str")
32
+ pulumi.set(__self__, "cloud_name", cloud_name)
33
+ if create_time and not isinstance(create_time, str):
34
+ raise TypeError("Expected argument 'create_time' to be a str")
35
+ pulumi.set(__self__, "create_time", create_time)
36
+ if id and not isinstance(id, str):
37
+ raise TypeError("Expected argument 'id' to be a str")
38
+ pulumi.set(__self__, "id", id)
39
+ if network_cidr and not isinstance(network_cidr, str):
40
+ raise TypeError("Expected argument 'network_cidr' to be a str")
41
+ pulumi.set(__self__, "network_cidr", network_cidr)
42
+ if organization_id and not isinstance(organization_id, str):
43
+ raise TypeError("Expected argument 'organization_id' to be a str")
44
+ pulumi.set(__self__, "organization_id", organization_id)
45
+ if organization_vpc_id and not isinstance(organization_vpc_id, str):
46
+ raise TypeError("Expected argument 'organization_vpc_id' to be a str")
47
+ pulumi.set(__self__, "organization_vpc_id", organization_vpc_id)
48
+ if state and not isinstance(state, str):
49
+ raise TypeError("Expected argument 'state' to be a str")
50
+ pulumi.set(__self__, "state", state)
51
+ if update_time and not isinstance(update_time, str):
52
+ raise TypeError("Expected argument 'update_time' to be a str")
53
+ pulumi.set(__self__, "update_time", update_time)
54
+
55
+ @property
56
+ @pulumi.getter(name="cloudName")
57
+ def cloud_name(self) -> str:
58
+ """
59
+ The cloud provider and region where the service is hosted in the format `CLOUD_PROVIDER-REGION_NAME`. For example, `google-europe-west1` or `aws-us-east-2`. Changing this property forces recreation of the resource.
60
+ """
61
+ return pulumi.get(self, "cloud_name")
62
+
63
+ @property
64
+ @pulumi.getter(name="createTime")
65
+ def create_time(self) -> str:
66
+ """
67
+ Time of creation of the VPC.
68
+ """
69
+ return pulumi.get(self, "create_time")
70
+
71
+ @property
72
+ @pulumi.getter
73
+ def id(self) -> str:
74
+ """
75
+ The provider-assigned unique ID for this managed resource.
76
+ """
77
+ return pulumi.get(self, "id")
78
+
79
+ @property
80
+ @pulumi.getter(name="networkCidr")
81
+ def network_cidr(self) -> str:
82
+ """
83
+ Network address range used by the VPC. For example, `192.168.0.0/24`.
84
+ """
85
+ return pulumi.get(self, "network_cidr")
86
+
87
+ @property
88
+ @pulumi.getter(name="organizationId")
89
+ def organization_id(self) -> str:
90
+ """
91
+ The ID of the organization.
92
+ """
93
+ return pulumi.get(self, "organization_id")
94
+
95
+ @property
96
+ @pulumi.getter(name="organizationVpcId")
97
+ def organization_vpc_id(self) -> str:
98
+ """
99
+ The ID of the Aiven Organization VPC.
100
+ """
101
+ return pulumi.get(self, "organization_vpc_id")
102
+
103
+ @property
104
+ @pulumi.getter
105
+ def state(self) -> str:
106
+ """
107
+ State of the VPC. The possible values are `ACTIVE`, `APPROVED`, `DELETED` and `DELETING`.
108
+ """
109
+ return pulumi.get(self, "state")
110
+
111
+ @property
112
+ @pulumi.getter(name="updateTime")
113
+ def update_time(self) -> str:
114
+ """
115
+ Time of the last update of the VPC.
116
+ """
117
+ return pulumi.get(self, "update_time")
118
+
119
+
120
+ class AwaitableGetOrganizationVpcResult(GetOrganizationVpcResult):
121
+ # pylint: disable=using-constant-test
122
+ def __await__(self):
123
+ if False:
124
+ yield self
125
+ return GetOrganizationVpcResult(
126
+ cloud_name=self.cloud_name,
127
+ create_time=self.create_time,
128
+ id=self.id,
129
+ network_cidr=self.network_cidr,
130
+ organization_id=self.organization_id,
131
+ organization_vpc_id=self.organization_vpc_id,
132
+ state=self.state,
133
+ update_time=self.update_time)
134
+
135
+
136
+ def get_organization_vpc(organization_id: Optional[str] = None,
137
+ organization_vpc_id: Optional[str] = None,
138
+ opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetOrganizationVpcResult:
139
+ """
140
+ Gets information about an existing VPC in an Aiven organization.
141
+
142
+ **This resource is in the beta stage and may change without notice.** Set
143
+ the `PROVIDER_AIVEN_ENABLE_BETA` environment variable to use the resource.
144
+
145
+
146
+ :param str organization_id: The ID of the organization.
147
+ :param str organization_vpc_id: The ID of the Aiven Organization VPC.
148
+ """
149
+ __args__ = dict()
150
+ __args__['organizationId'] = organization_id
151
+ __args__['organizationVpcId'] = organization_vpc_id
152
+ opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
153
+ __ret__ = pulumi.runtime.invoke('aiven:index/getOrganizationVpc:getOrganizationVpc', __args__, opts=opts, typ=GetOrganizationVpcResult).value
154
+
155
+ return AwaitableGetOrganizationVpcResult(
156
+ cloud_name=pulumi.get(__ret__, 'cloud_name'),
157
+ create_time=pulumi.get(__ret__, 'create_time'),
158
+ id=pulumi.get(__ret__, 'id'),
159
+ network_cidr=pulumi.get(__ret__, 'network_cidr'),
160
+ organization_id=pulumi.get(__ret__, 'organization_id'),
161
+ organization_vpc_id=pulumi.get(__ret__, 'organization_vpc_id'),
162
+ state=pulumi.get(__ret__, 'state'),
163
+ update_time=pulumi.get(__ret__, 'update_time'))
164
+ def get_organization_vpc_output(organization_id: Optional[pulumi.Input[str]] = None,
165
+ organization_vpc_id: Optional[pulumi.Input[str]] = None,
166
+ opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetOrganizationVpcResult]:
167
+ """
168
+ Gets information about an existing VPC in an Aiven organization.
169
+
170
+ **This resource is in the beta stage and may change without notice.** Set
171
+ the `PROVIDER_AIVEN_ENABLE_BETA` environment variable to use the resource.
172
+
173
+
174
+ :param str organization_id: The ID of the organization.
175
+ :param str organization_vpc_id: The ID of the Aiven Organization VPC.
176
+ """
177
+ __args__ = dict()
178
+ __args__['organizationId'] = organization_id
179
+ __args__['organizationVpcId'] = organization_vpc_id
180
+ opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
181
+ __ret__ = pulumi.runtime.invoke_output('aiven:index/getOrganizationVpc:getOrganizationVpc', __args__, opts=opts, typ=GetOrganizationVpcResult)
182
+ return __ret__.apply(lambda __response__: GetOrganizationVpcResult(
183
+ cloud_name=pulumi.get(__response__, 'cloud_name'),
184
+ create_time=pulumi.get(__response__, 'create_time'),
185
+ id=pulumi.get(__response__, 'id'),
186
+ network_cidr=pulumi.get(__response__, 'network_cidr'),
187
+ organization_id=pulumi.get(__response__, 'organization_id'),
188
+ organization_vpc_id=pulumi.get(__response__, 'organization_vpc_id'),
189
+ state=pulumi.get(__response__, 'state'),
190
+ update_time=pulumi.get(__response__, 'update_time')))
@@ -150,7 +150,7 @@ class GetProjectResult:
150
150
  @pulumi.getter(name="parentId")
151
151
  def parent_id(self) -> str:
152
152
  """
153
- Link a project to an [organization, organizational unit,](https://aiven.io/docs/platform/concepts/orgs-units-projects) or account by using its ID. To set up proper dependencies please refer to this variable as a reference.
153
+ Link a project to an [organization or organizational unit](https://aiven.io/docs/platform/concepts/orgs-units-projects) by using its ID. To set up proper dependencies please refer to this variable as a reference.
154
154
  """
155
155
  return pulumi.get(self, "parent_id")
156
156
 
@@ -103,9 +103,10 @@ def get_project_user(email: Optional[str] = None,
103
103
  """
104
104
  The Project User data source provides information about the existing Aiven Project User.
105
105
 
106
- > **This resource is deprecated**.
107
-
108
- Use `OrganizationPermission` instead.
106
+ > **This resource is deprecated**
107
+ Use `OrganizationPermission` instead and
108
+ migrate existing `ProjectUser` resources
109
+ to the new resource.
109
110
 
110
111
  ## Example Usage
111
112
 
@@ -139,9 +140,10 @@ def get_project_user_output(email: Optional[pulumi.Input[str]] = None,
139
140
  """
140
141
  The Project User data source provides information about the existing Aiven Project User.
141
142
 
142
- > **This resource is deprecated**.
143
-
144
- Use `OrganizationPermission` instead.
143
+ > **This resource is deprecated**
144
+ Use `OrganizationPermission` instead and
145
+ migrate existing `ProjectUser` resources
146
+ to the new resource.
145
147
 
146
148
  ## Example Usage
147
149
 
@@ -0,0 +1,440 @@
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 copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from . import _utilities
16
+ from . import outputs
17
+ from ._inputs import *
18
+
19
+ __all__ = ['OrganizationProjectArgs', 'OrganizationProject']
20
+
21
+ @pulumi.input_type
22
+ class OrganizationProjectArgs:
23
+ def __init__(__self__, *,
24
+ billing_group_id: pulumi.Input[str],
25
+ organization_id: pulumi.Input[str],
26
+ project_id: pulumi.Input[str],
27
+ parent_id: Optional[pulumi.Input[str]] = None,
28
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input['OrganizationProjectTagArgs']]]] = None,
29
+ technical_emails: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
30
+ """
31
+ The set of arguments for constructing a OrganizationProject resource.
32
+ :param pulumi.Input[str] billing_group_id: Billing group ID to assign to the project.
33
+ :param pulumi.Input[str] organization_id: ID of an organization. Changing this property forces recreation of the resource.
34
+ :param pulumi.Input[str] project_id: Unique identifier for the project that also serves as the project name.
35
+ :param pulumi.Input[str] parent_id: Link a project to an [organization or organizational unit](https://aiven.io/docs/platform/concepts/orgs-units-projects) by using its ID. To set up proper dependencies please refer to this variable as a reference.
36
+ :param pulumi.Input[Sequence[pulumi.Input['OrganizationProjectTagArgs']]] tags: Tags are key-value pairs that allow you to categorize projects.
37
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] technical_emails: The email addresses for [project contacts](https://aiven.io/docs/platform/howto/technical-emails), who will receive important alerts and updates about this project and its services. You can also set email contacts at the service level. It's good practice to keep these up-to-date to be aware of any potential issues with your project.
38
+ """
39
+ pulumi.set(__self__, "billing_group_id", billing_group_id)
40
+ pulumi.set(__self__, "organization_id", organization_id)
41
+ pulumi.set(__self__, "project_id", project_id)
42
+ if parent_id is not None:
43
+ pulumi.set(__self__, "parent_id", parent_id)
44
+ if tags is not None:
45
+ pulumi.set(__self__, "tags", tags)
46
+ if technical_emails is not None:
47
+ pulumi.set(__self__, "technical_emails", technical_emails)
48
+
49
+ @property
50
+ @pulumi.getter(name="billingGroupId")
51
+ def billing_group_id(self) -> pulumi.Input[str]:
52
+ """
53
+ Billing group ID to assign to the project.
54
+ """
55
+ return pulumi.get(self, "billing_group_id")
56
+
57
+ @billing_group_id.setter
58
+ def billing_group_id(self, value: pulumi.Input[str]):
59
+ pulumi.set(self, "billing_group_id", value)
60
+
61
+ @property
62
+ @pulumi.getter(name="organizationId")
63
+ def organization_id(self) -> pulumi.Input[str]:
64
+ """
65
+ ID of an organization. Changing this property forces recreation of the resource.
66
+ """
67
+ return pulumi.get(self, "organization_id")
68
+
69
+ @organization_id.setter
70
+ def organization_id(self, value: pulumi.Input[str]):
71
+ pulumi.set(self, "organization_id", value)
72
+
73
+ @property
74
+ @pulumi.getter(name="projectId")
75
+ def project_id(self) -> pulumi.Input[str]:
76
+ """
77
+ Unique identifier for the project that also serves as the project name.
78
+ """
79
+ return pulumi.get(self, "project_id")
80
+
81
+ @project_id.setter
82
+ def project_id(self, value: pulumi.Input[str]):
83
+ pulumi.set(self, "project_id", value)
84
+
85
+ @property
86
+ @pulumi.getter(name="parentId")
87
+ def parent_id(self) -> Optional[pulumi.Input[str]]:
88
+ """
89
+ Link a project to an [organization or organizational unit](https://aiven.io/docs/platform/concepts/orgs-units-projects) by using its ID. To set up proper dependencies please refer to this variable as a reference.
90
+ """
91
+ return pulumi.get(self, "parent_id")
92
+
93
+ @parent_id.setter
94
+ def parent_id(self, value: Optional[pulumi.Input[str]]):
95
+ pulumi.set(self, "parent_id", value)
96
+
97
+ @property
98
+ @pulumi.getter
99
+ def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['OrganizationProjectTagArgs']]]]:
100
+ """
101
+ Tags are key-value pairs that allow you to categorize projects.
102
+ """
103
+ return pulumi.get(self, "tags")
104
+
105
+ @tags.setter
106
+ def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['OrganizationProjectTagArgs']]]]):
107
+ pulumi.set(self, "tags", value)
108
+
109
+ @property
110
+ @pulumi.getter(name="technicalEmails")
111
+ def technical_emails(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
112
+ """
113
+ The email addresses for [project contacts](https://aiven.io/docs/platform/howto/technical-emails), who will receive important alerts and updates about this project and its services. You can also set email contacts at the service level. It's good practice to keep these up-to-date to be aware of any potential issues with your project.
114
+ """
115
+ return pulumi.get(self, "technical_emails")
116
+
117
+ @technical_emails.setter
118
+ def technical_emails(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
119
+ pulumi.set(self, "technical_emails", value)
120
+
121
+
122
+ @pulumi.input_type
123
+ class _OrganizationProjectState:
124
+ def __init__(__self__, *,
125
+ billing_group_id: Optional[pulumi.Input[str]] = None,
126
+ organization_id: Optional[pulumi.Input[str]] = None,
127
+ parent_id: Optional[pulumi.Input[str]] = None,
128
+ project_id: Optional[pulumi.Input[str]] = None,
129
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input['OrganizationProjectTagArgs']]]] = None,
130
+ technical_emails: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
131
+ """
132
+ Input properties used for looking up and filtering OrganizationProject resources.
133
+ :param pulumi.Input[str] billing_group_id: Billing group ID to assign to the project.
134
+ :param pulumi.Input[str] organization_id: ID of an organization. Changing this property forces recreation of the resource.
135
+ :param pulumi.Input[str] parent_id: Link a project to an [organization or organizational unit](https://aiven.io/docs/platform/concepts/orgs-units-projects) by using its ID. To set up proper dependencies please refer to this variable as a reference.
136
+ :param pulumi.Input[str] project_id: Unique identifier for the project that also serves as the project name.
137
+ :param pulumi.Input[Sequence[pulumi.Input['OrganizationProjectTagArgs']]] tags: Tags are key-value pairs that allow you to categorize projects.
138
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] technical_emails: The email addresses for [project contacts](https://aiven.io/docs/platform/howto/technical-emails), who will receive important alerts and updates about this project and its services. You can also set email contacts at the service level. It's good practice to keep these up-to-date to be aware of any potential issues with your project.
139
+ """
140
+ if billing_group_id is not None:
141
+ pulumi.set(__self__, "billing_group_id", billing_group_id)
142
+ if organization_id is not None:
143
+ pulumi.set(__self__, "organization_id", organization_id)
144
+ if parent_id is not None:
145
+ pulumi.set(__self__, "parent_id", parent_id)
146
+ if project_id is not None:
147
+ pulumi.set(__self__, "project_id", project_id)
148
+ if tags is not None:
149
+ pulumi.set(__self__, "tags", tags)
150
+ if technical_emails is not None:
151
+ pulumi.set(__self__, "technical_emails", technical_emails)
152
+
153
+ @property
154
+ @pulumi.getter(name="billingGroupId")
155
+ def billing_group_id(self) -> Optional[pulumi.Input[str]]:
156
+ """
157
+ Billing group ID to assign to the project.
158
+ """
159
+ return pulumi.get(self, "billing_group_id")
160
+
161
+ @billing_group_id.setter
162
+ def billing_group_id(self, value: Optional[pulumi.Input[str]]):
163
+ pulumi.set(self, "billing_group_id", value)
164
+
165
+ @property
166
+ @pulumi.getter(name="organizationId")
167
+ def organization_id(self) -> Optional[pulumi.Input[str]]:
168
+ """
169
+ ID of an organization. Changing this property forces recreation of the resource.
170
+ """
171
+ return pulumi.get(self, "organization_id")
172
+
173
+ @organization_id.setter
174
+ def organization_id(self, value: Optional[pulumi.Input[str]]):
175
+ pulumi.set(self, "organization_id", value)
176
+
177
+ @property
178
+ @pulumi.getter(name="parentId")
179
+ def parent_id(self) -> Optional[pulumi.Input[str]]:
180
+ """
181
+ Link a project to an [organization or organizational unit](https://aiven.io/docs/platform/concepts/orgs-units-projects) by using its ID. To set up proper dependencies please refer to this variable as a reference.
182
+ """
183
+ return pulumi.get(self, "parent_id")
184
+
185
+ @parent_id.setter
186
+ def parent_id(self, value: Optional[pulumi.Input[str]]):
187
+ pulumi.set(self, "parent_id", value)
188
+
189
+ @property
190
+ @pulumi.getter(name="projectId")
191
+ def project_id(self) -> Optional[pulumi.Input[str]]:
192
+ """
193
+ Unique identifier for the project that also serves as the project name.
194
+ """
195
+ return pulumi.get(self, "project_id")
196
+
197
+ @project_id.setter
198
+ def project_id(self, value: Optional[pulumi.Input[str]]):
199
+ pulumi.set(self, "project_id", value)
200
+
201
+ @property
202
+ @pulumi.getter
203
+ def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['OrganizationProjectTagArgs']]]]:
204
+ """
205
+ Tags are key-value pairs that allow you to categorize projects.
206
+ """
207
+ return pulumi.get(self, "tags")
208
+
209
+ @tags.setter
210
+ def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['OrganizationProjectTagArgs']]]]):
211
+ pulumi.set(self, "tags", value)
212
+
213
+ @property
214
+ @pulumi.getter(name="technicalEmails")
215
+ def technical_emails(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
216
+ """
217
+ The email addresses for [project contacts](https://aiven.io/docs/platform/howto/technical-emails), who will receive important alerts and updates about this project and its services. You can also set email contacts at the service level. It's good practice to keep these up-to-date to be aware of any potential issues with your project.
218
+ """
219
+ return pulumi.get(self, "technical_emails")
220
+
221
+ @technical_emails.setter
222
+ def technical_emails(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
223
+ pulumi.set(self, "technical_emails", value)
224
+
225
+
226
+ class OrganizationProject(pulumi.CustomResource):
227
+ @overload
228
+ def __init__(__self__,
229
+ resource_name: str,
230
+ opts: Optional[pulumi.ResourceOptions] = None,
231
+ billing_group_id: Optional[pulumi.Input[str]] = None,
232
+ organization_id: Optional[pulumi.Input[str]] = None,
233
+ parent_id: Optional[pulumi.Input[str]] = None,
234
+ project_id: Optional[pulumi.Input[str]] = None,
235
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['OrganizationProjectTagArgs', 'OrganizationProjectTagArgsDict']]]]] = None,
236
+ technical_emails: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
237
+ __props__=None):
238
+ """
239
+ Creates and manages an [Aiven project](https://aiven.io/docs/platform/concepts/orgs-units-projects#projects).
240
+
241
+ **This resource is in the beta stage and may change without notice.** Set
242
+ the `PROVIDER_AIVEN_ENABLE_BETA` environment variable to use the resource.
243
+
244
+ ## Example Usage
245
+
246
+ ```python
247
+ import pulumi
248
+ import pulumi_aiven as aiven
249
+
250
+ foo = aiven.OrganizationProject("foo",
251
+ project_id="example-project",
252
+ organization_id=foo_aiven_organization["id"],
253
+ billing_group_id=foo_aiven_billing_group["id"],
254
+ tags=[{
255
+ "key": "key_1",
256
+ "value": "value_1",
257
+ }])
258
+ ```
259
+
260
+ ## Import
261
+
262
+ ```sh
263
+ $ pulumi import aiven:index/organizationProject:OrganizationProject main ORGANIZATION_ID/PROJECT_ID
264
+ ```
265
+
266
+ :param str resource_name: The name of the resource.
267
+ :param pulumi.ResourceOptions opts: Options for the resource.
268
+ :param pulumi.Input[str] billing_group_id: Billing group ID to assign to the project.
269
+ :param pulumi.Input[str] organization_id: ID of an organization. Changing this property forces recreation of the resource.
270
+ :param pulumi.Input[str] parent_id: Link a project to an [organization or organizational unit](https://aiven.io/docs/platform/concepts/orgs-units-projects) by using its ID. To set up proper dependencies please refer to this variable as a reference.
271
+ :param pulumi.Input[str] project_id: Unique identifier for the project that also serves as the project name.
272
+ :param pulumi.Input[Sequence[pulumi.Input[Union['OrganizationProjectTagArgs', 'OrganizationProjectTagArgsDict']]]] tags: Tags are key-value pairs that allow you to categorize projects.
273
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] technical_emails: The email addresses for [project contacts](https://aiven.io/docs/platform/howto/technical-emails), who will receive important alerts and updates about this project and its services. You can also set email contacts at the service level. It's good practice to keep these up-to-date to be aware of any potential issues with your project.
274
+ """
275
+ ...
276
+ @overload
277
+ def __init__(__self__,
278
+ resource_name: str,
279
+ args: OrganizationProjectArgs,
280
+ opts: Optional[pulumi.ResourceOptions] = None):
281
+ """
282
+ Creates and manages an [Aiven project](https://aiven.io/docs/platform/concepts/orgs-units-projects#projects).
283
+
284
+ **This resource is in the beta stage and may change without notice.** Set
285
+ the `PROVIDER_AIVEN_ENABLE_BETA` environment variable to use the resource.
286
+
287
+ ## Example Usage
288
+
289
+ ```python
290
+ import pulumi
291
+ import pulumi_aiven as aiven
292
+
293
+ foo = aiven.OrganizationProject("foo",
294
+ project_id="example-project",
295
+ organization_id=foo_aiven_organization["id"],
296
+ billing_group_id=foo_aiven_billing_group["id"],
297
+ tags=[{
298
+ "key": "key_1",
299
+ "value": "value_1",
300
+ }])
301
+ ```
302
+
303
+ ## Import
304
+
305
+ ```sh
306
+ $ pulumi import aiven:index/organizationProject:OrganizationProject main ORGANIZATION_ID/PROJECT_ID
307
+ ```
308
+
309
+ :param str resource_name: The name of the resource.
310
+ :param OrganizationProjectArgs args: The arguments to use to populate this resource's properties.
311
+ :param pulumi.ResourceOptions opts: Options for the resource.
312
+ """
313
+ ...
314
+ def __init__(__self__, resource_name: str, *args, **kwargs):
315
+ resource_args, opts = _utilities.get_resource_args_opts(OrganizationProjectArgs, pulumi.ResourceOptions, *args, **kwargs)
316
+ if resource_args is not None:
317
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
318
+ else:
319
+ __self__._internal_init(resource_name, *args, **kwargs)
320
+
321
+ def _internal_init(__self__,
322
+ resource_name: str,
323
+ opts: Optional[pulumi.ResourceOptions] = None,
324
+ billing_group_id: Optional[pulumi.Input[str]] = None,
325
+ organization_id: Optional[pulumi.Input[str]] = None,
326
+ parent_id: Optional[pulumi.Input[str]] = None,
327
+ project_id: Optional[pulumi.Input[str]] = None,
328
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['OrganizationProjectTagArgs', 'OrganizationProjectTagArgsDict']]]]] = None,
329
+ technical_emails: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
330
+ __props__=None):
331
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
332
+ if not isinstance(opts, pulumi.ResourceOptions):
333
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
334
+ if opts.id is None:
335
+ if __props__ is not None:
336
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
337
+ __props__ = OrganizationProjectArgs.__new__(OrganizationProjectArgs)
338
+
339
+ if billing_group_id is None and not opts.urn:
340
+ raise TypeError("Missing required property 'billing_group_id'")
341
+ __props__.__dict__["billing_group_id"] = billing_group_id
342
+ if organization_id is None and not opts.urn:
343
+ raise TypeError("Missing required property 'organization_id'")
344
+ __props__.__dict__["organization_id"] = organization_id
345
+ __props__.__dict__["parent_id"] = parent_id
346
+ if project_id is None and not opts.urn:
347
+ raise TypeError("Missing required property 'project_id'")
348
+ __props__.__dict__["project_id"] = project_id
349
+ __props__.__dict__["tags"] = tags
350
+ __props__.__dict__["technical_emails"] = technical_emails
351
+ super(OrganizationProject, __self__).__init__(
352
+ 'aiven:index/organizationProject:OrganizationProject',
353
+ resource_name,
354
+ __props__,
355
+ opts)
356
+
357
+ @staticmethod
358
+ def get(resource_name: str,
359
+ id: pulumi.Input[str],
360
+ opts: Optional[pulumi.ResourceOptions] = None,
361
+ billing_group_id: Optional[pulumi.Input[str]] = None,
362
+ organization_id: Optional[pulumi.Input[str]] = None,
363
+ parent_id: Optional[pulumi.Input[str]] = None,
364
+ project_id: Optional[pulumi.Input[str]] = None,
365
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['OrganizationProjectTagArgs', 'OrganizationProjectTagArgsDict']]]]] = None,
366
+ technical_emails: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None) -> 'OrganizationProject':
367
+ """
368
+ Get an existing OrganizationProject resource's state with the given name, id, and optional extra
369
+ properties used to qualify the lookup.
370
+
371
+ :param str resource_name: The unique name of the resulting resource.
372
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
373
+ :param pulumi.ResourceOptions opts: Options for the resource.
374
+ :param pulumi.Input[str] billing_group_id: Billing group ID to assign to the project.
375
+ :param pulumi.Input[str] organization_id: ID of an organization. Changing this property forces recreation of the resource.
376
+ :param pulumi.Input[str] parent_id: Link a project to an [organization or organizational unit](https://aiven.io/docs/platform/concepts/orgs-units-projects) by using its ID. To set up proper dependencies please refer to this variable as a reference.
377
+ :param pulumi.Input[str] project_id: Unique identifier for the project that also serves as the project name.
378
+ :param pulumi.Input[Sequence[pulumi.Input[Union['OrganizationProjectTagArgs', 'OrganizationProjectTagArgsDict']]]] tags: Tags are key-value pairs that allow you to categorize projects.
379
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] technical_emails: The email addresses for [project contacts](https://aiven.io/docs/platform/howto/technical-emails), who will receive important alerts and updates about this project and its services. You can also set email contacts at the service level. It's good practice to keep these up-to-date to be aware of any potential issues with your project.
380
+ """
381
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
382
+
383
+ __props__ = _OrganizationProjectState.__new__(_OrganizationProjectState)
384
+
385
+ __props__.__dict__["billing_group_id"] = billing_group_id
386
+ __props__.__dict__["organization_id"] = organization_id
387
+ __props__.__dict__["parent_id"] = parent_id
388
+ __props__.__dict__["project_id"] = project_id
389
+ __props__.__dict__["tags"] = tags
390
+ __props__.__dict__["technical_emails"] = technical_emails
391
+ return OrganizationProject(resource_name, opts=opts, __props__=__props__)
392
+
393
+ @property
394
+ @pulumi.getter(name="billingGroupId")
395
+ def billing_group_id(self) -> pulumi.Output[str]:
396
+ """
397
+ Billing group ID to assign to the project.
398
+ """
399
+ return pulumi.get(self, "billing_group_id")
400
+
401
+ @property
402
+ @pulumi.getter(name="organizationId")
403
+ def organization_id(self) -> pulumi.Output[str]:
404
+ """
405
+ ID of an organization. Changing this property forces recreation of the resource.
406
+ """
407
+ return pulumi.get(self, "organization_id")
408
+
409
+ @property
410
+ @pulumi.getter(name="parentId")
411
+ def parent_id(self) -> pulumi.Output[str]:
412
+ """
413
+ Link a project to an [organization or organizational unit](https://aiven.io/docs/platform/concepts/orgs-units-projects) by using its ID. To set up proper dependencies please refer to this variable as a reference.
414
+ """
415
+ return pulumi.get(self, "parent_id")
416
+
417
+ @property
418
+ @pulumi.getter(name="projectId")
419
+ def project_id(self) -> pulumi.Output[str]:
420
+ """
421
+ Unique identifier for the project that also serves as the project name.
422
+ """
423
+ return pulumi.get(self, "project_id")
424
+
425
+ @property
426
+ @pulumi.getter
427
+ def tags(self) -> pulumi.Output[Optional[Sequence['outputs.OrganizationProjectTag']]]:
428
+ """
429
+ Tags are key-value pairs that allow you to categorize projects.
430
+ """
431
+ return pulumi.get(self, "tags")
432
+
433
+ @property
434
+ @pulumi.getter(name="technicalEmails")
435
+ def technical_emails(self) -> pulumi.Output[Optional[Sequence[str]]]:
436
+ """
437
+ The email addresses for [project contacts](https://aiven.io/docs/platform/howto/technical-emails), who will receive important alerts and updates about this project and its services. You can also set email contacts at the service level. It's good practice to keep these up-to-date to be aware of any potential issues with your project.
438
+ """
439
+ return pulumi.get(self, "technical_emails")
440
+