pulumi-gcp 8.30.0a1746772896__py3-none-any.whl → 8.30.0a1747042890__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 (36) hide show
  1. pulumi_gcp/__init__.py +16 -0
  2. pulumi_gcp/apigee/__init__.py +1 -0
  3. pulumi_gcp/apigee/_inputs.py +61 -0
  4. pulumi_gcp/apigee/outputs.py +36 -0
  5. pulumi_gcp/apigee/security_profile_v2.py +554 -0
  6. pulumi_gcp/bigtable/_inputs.py +24 -4
  7. pulumi_gcp/bigtable/outputs.py +15 -1
  8. pulumi_gcp/cloudrun/_inputs.py +18 -0
  9. pulumi_gcp/cloudrun/outputs.py +12 -0
  10. pulumi_gcp/cloudrunv2/_inputs.py +44 -1
  11. pulumi_gcp/cloudrunv2/job.py +50 -0
  12. pulumi_gcp/cloudrunv2/outputs.py +55 -3
  13. pulumi_gcp/compute/forwarding_rule.py +21 -0
  14. pulumi_gcp/compute/outputs.py +8 -0
  15. pulumi_gcp/config/__init__.pyi +2 -0
  16. pulumi_gcp/config/vars.py +4 -0
  17. pulumi_gcp/container/_inputs.py +6 -6
  18. pulumi_gcp/container/outputs.py +4 -4
  19. pulumi_gcp/filestore/_inputs.py +156 -0
  20. pulumi_gcp/filestore/get_instance.py +12 -1
  21. pulumi_gcp/filestore/instance.py +47 -0
  22. pulumi_gcp/filestore/outputs.py +202 -0
  23. pulumi_gcp/networkconnectivity/_inputs.py +74 -0
  24. pulumi_gcp/networkconnectivity/outputs.py +61 -0
  25. pulumi_gcp/networkconnectivity/spoke.py +32 -0
  26. pulumi_gcp/provider.py +20 -0
  27. pulumi_gcp/pulumi-plugin.json +1 -1
  28. pulumi_gcp/resourcemanager/__init__.py +1 -0
  29. pulumi_gcp/resourcemanager/capability.py +346 -0
  30. pulumi_gcp/sql/_inputs.py +126 -0
  31. pulumi_gcp/sql/outputs.py +239 -4
  32. pulumi_gcp/tpu/node.py +4 -0
  33. {pulumi_gcp-8.30.0a1746772896.dist-info → pulumi_gcp-8.30.0a1747042890.dist-info}/METADATA +1 -1
  34. {pulumi_gcp-8.30.0a1746772896.dist-info → pulumi_gcp-8.30.0a1747042890.dist-info}/RECORD +36 -34
  35. {pulumi_gcp-8.30.0a1746772896.dist-info → pulumi_gcp-8.30.0a1747042890.dist-info}/WHEEL +1 -1
  36. {pulumi_gcp-8.30.0a1746772896.dist-info → pulumi_gcp-8.30.0a1747042890.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,554 @@
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
+ from . import outputs
18
+ from ._inputs import *
19
+
20
+ __all__ = ['SecurityProfileV2Args', 'SecurityProfileV2']
21
+
22
+ @pulumi.input_type
23
+ class SecurityProfileV2Args:
24
+ def __init__(__self__, *,
25
+ org_id: pulumi.Input[builtins.str],
26
+ profile_assessment_configs: pulumi.Input[Sequence[pulumi.Input['SecurityProfileV2ProfileAssessmentConfigArgs']]],
27
+ profile_id: pulumi.Input[builtins.str],
28
+ description: Optional[pulumi.Input[builtins.str]] = None):
29
+ """
30
+ The set of arguments for constructing a SecurityProfileV2 resource.
31
+ :param pulumi.Input[builtins.str] org_id: The Apigee Organization associated with the Apigee Security Profile V2,
32
+ in the format `organizations/{{org_name}}`.
33
+ :param pulumi.Input[Sequence[pulumi.Input['SecurityProfileV2ProfileAssessmentConfigArgs']]] profile_assessment_configs: A map of the assessment name and the assessment config.
34
+ Structure is documented below.
35
+ :param pulumi.Input[builtins.str] profile_id: Resource ID of the security profile.
36
+ :param pulumi.Input[builtins.str] description: Description of the security profile.
37
+ """
38
+ pulumi.set(__self__, "org_id", org_id)
39
+ pulumi.set(__self__, "profile_assessment_configs", profile_assessment_configs)
40
+ pulumi.set(__self__, "profile_id", profile_id)
41
+ if description is not None:
42
+ pulumi.set(__self__, "description", description)
43
+
44
+ @property
45
+ @pulumi.getter(name="orgId")
46
+ def org_id(self) -> pulumi.Input[builtins.str]:
47
+ """
48
+ The Apigee Organization associated with the Apigee Security Profile V2,
49
+ in the format `organizations/{{org_name}}`.
50
+ """
51
+ return pulumi.get(self, "org_id")
52
+
53
+ @org_id.setter
54
+ def org_id(self, value: pulumi.Input[builtins.str]):
55
+ pulumi.set(self, "org_id", value)
56
+
57
+ @property
58
+ @pulumi.getter(name="profileAssessmentConfigs")
59
+ def profile_assessment_configs(self) -> pulumi.Input[Sequence[pulumi.Input['SecurityProfileV2ProfileAssessmentConfigArgs']]]:
60
+ """
61
+ A map of the assessment name and the assessment config.
62
+ Structure is documented below.
63
+ """
64
+ return pulumi.get(self, "profile_assessment_configs")
65
+
66
+ @profile_assessment_configs.setter
67
+ def profile_assessment_configs(self, value: pulumi.Input[Sequence[pulumi.Input['SecurityProfileV2ProfileAssessmentConfigArgs']]]):
68
+ pulumi.set(self, "profile_assessment_configs", value)
69
+
70
+ @property
71
+ @pulumi.getter(name="profileId")
72
+ def profile_id(self) -> pulumi.Input[builtins.str]:
73
+ """
74
+ Resource ID of the security profile.
75
+ """
76
+ return pulumi.get(self, "profile_id")
77
+
78
+ @profile_id.setter
79
+ def profile_id(self, value: pulumi.Input[builtins.str]):
80
+ pulumi.set(self, "profile_id", value)
81
+
82
+ @property
83
+ @pulumi.getter
84
+ def description(self) -> Optional[pulumi.Input[builtins.str]]:
85
+ """
86
+ Description of the security profile.
87
+ """
88
+ return pulumi.get(self, "description")
89
+
90
+ @description.setter
91
+ def description(self, value: Optional[pulumi.Input[builtins.str]]):
92
+ pulumi.set(self, "description", value)
93
+
94
+
95
+ @pulumi.input_type
96
+ class _SecurityProfileV2State:
97
+ def __init__(__self__, *,
98
+ create_time: Optional[pulumi.Input[builtins.str]] = None,
99
+ description: Optional[pulumi.Input[builtins.str]] = None,
100
+ name: Optional[pulumi.Input[builtins.str]] = None,
101
+ org_id: Optional[pulumi.Input[builtins.str]] = None,
102
+ profile_assessment_configs: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityProfileV2ProfileAssessmentConfigArgs']]]] = None,
103
+ profile_id: Optional[pulumi.Input[builtins.str]] = None,
104
+ update_time: Optional[pulumi.Input[builtins.str]] = None):
105
+ """
106
+ Input properties used for looking up and filtering SecurityProfileV2 resources.
107
+ :param pulumi.Input[builtins.str] create_time: The timestamp at which this profile was created.
108
+ :param pulumi.Input[builtins.str] description: Description of the security profile.
109
+ :param pulumi.Input[builtins.str] name: Name of the security profile v2 resource,
110
+ in the format `organizations/{{org_name}}/securityProfilesV2/{{profile_id}}`.
111
+ :param pulumi.Input[builtins.str] org_id: The Apigee Organization associated with the Apigee Security Profile V2,
112
+ in the format `organizations/{{org_name}}`.
113
+ :param pulumi.Input[Sequence[pulumi.Input['SecurityProfileV2ProfileAssessmentConfigArgs']]] profile_assessment_configs: A map of the assessment name and the assessment config.
114
+ Structure is documented below.
115
+ :param pulumi.Input[builtins.str] profile_id: Resource ID of the security profile.
116
+ :param pulumi.Input[builtins.str] update_time: The timestamp at which this profile was most recently updated.
117
+ """
118
+ if create_time is not None:
119
+ pulumi.set(__self__, "create_time", create_time)
120
+ if description is not None:
121
+ pulumi.set(__self__, "description", description)
122
+ if name is not None:
123
+ pulumi.set(__self__, "name", name)
124
+ if org_id is not None:
125
+ pulumi.set(__self__, "org_id", org_id)
126
+ if profile_assessment_configs is not None:
127
+ pulumi.set(__self__, "profile_assessment_configs", profile_assessment_configs)
128
+ if profile_id is not None:
129
+ pulumi.set(__self__, "profile_id", profile_id)
130
+ if update_time is not None:
131
+ pulumi.set(__self__, "update_time", update_time)
132
+
133
+ @property
134
+ @pulumi.getter(name="createTime")
135
+ def create_time(self) -> Optional[pulumi.Input[builtins.str]]:
136
+ """
137
+ The timestamp at which this profile was created.
138
+ """
139
+ return pulumi.get(self, "create_time")
140
+
141
+ @create_time.setter
142
+ def create_time(self, value: Optional[pulumi.Input[builtins.str]]):
143
+ pulumi.set(self, "create_time", value)
144
+
145
+ @property
146
+ @pulumi.getter
147
+ def description(self) -> Optional[pulumi.Input[builtins.str]]:
148
+ """
149
+ Description of the security profile.
150
+ """
151
+ return pulumi.get(self, "description")
152
+
153
+ @description.setter
154
+ def description(self, value: Optional[pulumi.Input[builtins.str]]):
155
+ pulumi.set(self, "description", value)
156
+
157
+ @property
158
+ @pulumi.getter
159
+ def name(self) -> Optional[pulumi.Input[builtins.str]]:
160
+ """
161
+ Name of the security profile v2 resource,
162
+ in the format `organizations/{{org_name}}/securityProfilesV2/{{profile_id}}`.
163
+ """
164
+ return pulumi.get(self, "name")
165
+
166
+ @name.setter
167
+ def name(self, value: Optional[pulumi.Input[builtins.str]]):
168
+ pulumi.set(self, "name", value)
169
+
170
+ @property
171
+ @pulumi.getter(name="orgId")
172
+ def org_id(self) -> Optional[pulumi.Input[builtins.str]]:
173
+ """
174
+ The Apigee Organization associated with the Apigee Security Profile V2,
175
+ in the format `organizations/{{org_name}}`.
176
+ """
177
+ return pulumi.get(self, "org_id")
178
+
179
+ @org_id.setter
180
+ def org_id(self, value: Optional[pulumi.Input[builtins.str]]):
181
+ pulumi.set(self, "org_id", value)
182
+
183
+ @property
184
+ @pulumi.getter(name="profileAssessmentConfigs")
185
+ def profile_assessment_configs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['SecurityProfileV2ProfileAssessmentConfigArgs']]]]:
186
+ """
187
+ A map of the assessment name and the assessment config.
188
+ Structure is documented below.
189
+ """
190
+ return pulumi.get(self, "profile_assessment_configs")
191
+
192
+ @profile_assessment_configs.setter
193
+ def profile_assessment_configs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityProfileV2ProfileAssessmentConfigArgs']]]]):
194
+ pulumi.set(self, "profile_assessment_configs", value)
195
+
196
+ @property
197
+ @pulumi.getter(name="profileId")
198
+ def profile_id(self) -> Optional[pulumi.Input[builtins.str]]:
199
+ """
200
+ Resource ID of the security profile.
201
+ """
202
+ return pulumi.get(self, "profile_id")
203
+
204
+ @profile_id.setter
205
+ def profile_id(self, value: Optional[pulumi.Input[builtins.str]]):
206
+ pulumi.set(self, "profile_id", value)
207
+
208
+ @property
209
+ @pulumi.getter(name="updateTime")
210
+ def update_time(self) -> Optional[pulumi.Input[builtins.str]]:
211
+ """
212
+ The timestamp at which this profile was most recently updated.
213
+ """
214
+ return pulumi.get(self, "update_time")
215
+
216
+ @update_time.setter
217
+ def update_time(self, value: Optional[pulumi.Input[builtins.str]]):
218
+ pulumi.set(self, "update_time", value)
219
+
220
+
221
+ @pulumi.type_token("gcp:apigee/securityProfileV2:SecurityProfileV2")
222
+ class SecurityProfileV2(pulumi.CustomResource):
223
+ @overload
224
+ def __init__(__self__,
225
+ resource_name: str,
226
+ opts: Optional[pulumi.ResourceOptions] = None,
227
+ description: Optional[pulumi.Input[builtins.str]] = None,
228
+ org_id: Optional[pulumi.Input[builtins.str]] = None,
229
+ profile_assessment_configs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['SecurityProfileV2ProfileAssessmentConfigArgs', 'SecurityProfileV2ProfileAssessmentConfigArgsDict']]]]] = None,
230
+ profile_id: Optional[pulumi.Input[builtins.str]] = None,
231
+ __props__=None):
232
+ """
233
+ Security profile for risk assessment version 2 in Apigee.
234
+
235
+ To get more information about SecurityProfileV2, see:
236
+
237
+ * [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.securityProfilesV2/create)
238
+ * How-to Guides
239
+ * [Creating a security profile](https://cloud.google.com/apigee/docs/api-security/security-scores#security-profiles-v2)
240
+
241
+ ## Example Usage
242
+
243
+ ### Apigee Security Profile V2 Basic
244
+
245
+ ```python
246
+ import pulumi
247
+ import pulumi_gcp as gcp
248
+
249
+ current = gcp.organizations.get_client_config()
250
+ apigee_network = gcp.compute.Network("apigee_network", name="apigee-network")
251
+ apigee_range = gcp.compute.GlobalAddress("apigee_range",
252
+ name="apigee-range",
253
+ purpose="VPC_PEERING",
254
+ address_type="INTERNAL",
255
+ prefix_length=16,
256
+ network=apigee_network.id)
257
+ apigee_vpc_connection = gcp.servicenetworking.Connection("apigee_vpc_connection",
258
+ network=apigee_network.id,
259
+ service="servicenetworking.googleapis.com",
260
+ reserved_peering_ranges=[apigee_range.name])
261
+ apigee_org = gcp.apigee.Organization("apigee_org",
262
+ analytics_region="us-central1",
263
+ project_id=current.project,
264
+ authorized_network=apigee_network.id,
265
+ opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))
266
+ apigee_org_security_addons_config = gcp.apigee.AddonsConfig("apigee_org_security_addons_config",
267
+ org=apigee_org.name,
268
+ addons_config={
269
+ "api_security_config": {
270
+ "enabled": True,
271
+ },
272
+ })
273
+ security_profile_v2 = gcp.apigee.SecurityProfileV2("security_profile_v2",
274
+ profile_id="my-profile",
275
+ org_id=apigee_org.id,
276
+ description="terraform test description",
277
+ profile_assessment_configs=[
278
+ {
279
+ "assessment": "auth-policies-check",
280
+ "weight": "MAJOR",
281
+ },
282
+ {
283
+ "assessment": "mediation-policies-check",
284
+ "weight": "MODERATE",
285
+ },
286
+ {
287
+ "assessment": "threat-policies-check",
288
+ "weight": "MINOR",
289
+ },
290
+ ],
291
+ opts = pulumi.ResourceOptions(depends_on=[apigee_org_security_addons_config]))
292
+ ```
293
+
294
+ ## Import
295
+
296
+ SecurityProfileV2 can be imported using any of these accepted formats:
297
+
298
+ * `{{org_id}}/securityProfilesV2/{{profile_id}}`
299
+
300
+ * `{{org_id}}/{{profile_id}}`
301
+
302
+ When using the `pulumi import` command, SecurityProfileV2 can be imported using one of the formats above. For example:
303
+
304
+ ```sh
305
+ $ pulumi import gcp:apigee/securityProfileV2:SecurityProfileV2 default {{org_id}}/securityProfilesV2/{{profile_id}}
306
+ ```
307
+
308
+ ```sh
309
+ $ pulumi import gcp:apigee/securityProfileV2:SecurityProfileV2 default {{org_id}}/{{profile_id}}
310
+ ```
311
+
312
+ :param str resource_name: The name of the resource.
313
+ :param pulumi.ResourceOptions opts: Options for the resource.
314
+ :param pulumi.Input[builtins.str] description: Description of the security profile.
315
+ :param pulumi.Input[builtins.str] org_id: The Apigee Organization associated with the Apigee Security Profile V2,
316
+ in the format `organizations/{{org_name}}`.
317
+ :param pulumi.Input[Sequence[pulumi.Input[Union['SecurityProfileV2ProfileAssessmentConfigArgs', 'SecurityProfileV2ProfileAssessmentConfigArgsDict']]]] profile_assessment_configs: A map of the assessment name and the assessment config.
318
+ Structure is documented below.
319
+ :param pulumi.Input[builtins.str] profile_id: Resource ID of the security profile.
320
+ """
321
+ ...
322
+ @overload
323
+ def __init__(__self__,
324
+ resource_name: str,
325
+ args: SecurityProfileV2Args,
326
+ opts: Optional[pulumi.ResourceOptions] = None):
327
+ """
328
+ Security profile for risk assessment version 2 in Apigee.
329
+
330
+ To get more information about SecurityProfileV2, see:
331
+
332
+ * [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.securityProfilesV2/create)
333
+ * How-to Guides
334
+ * [Creating a security profile](https://cloud.google.com/apigee/docs/api-security/security-scores#security-profiles-v2)
335
+
336
+ ## Example Usage
337
+
338
+ ### Apigee Security Profile V2 Basic
339
+
340
+ ```python
341
+ import pulumi
342
+ import pulumi_gcp as gcp
343
+
344
+ current = gcp.organizations.get_client_config()
345
+ apigee_network = gcp.compute.Network("apigee_network", name="apigee-network")
346
+ apigee_range = gcp.compute.GlobalAddress("apigee_range",
347
+ name="apigee-range",
348
+ purpose="VPC_PEERING",
349
+ address_type="INTERNAL",
350
+ prefix_length=16,
351
+ network=apigee_network.id)
352
+ apigee_vpc_connection = gcp.servicenetworking.Connection("apigee_vpc_connection",
353
+ network=apigee_network.id,
354
+ service="servicenetworking.googleapis.com",
355
+ reserved_peering_ranges=[apigee_range.name])
356
+ apigee_org = gcp.apigee.Organization("apigee_org",
357
+ analytics_region="us-central1",
358
+ project_id=current.project,
359
+ authorized_network=apigee_network.id,
360
+ opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))
361
+ apigee_org_security_addons_config = gcp.apigee.AddonsConfig("apigee_org_security_addons_config",
362
+ org=apigee_org.name,
363
+ addons_config={
364
+ "api_security_config": {
365
+ "enabled": True,
366
+ },
367
+ })
368
+ security_profile_v2 = gcp.apigee.SecurityProfileV2("security_profile_v2",
369
+ profile_id="my-profile",
370
+ org_id=apigee_org.id,
371
+ description="terraform test description",
372
+ profile_assessment_configs=[
373
+ {
374
+ "assessment": "auth-policies-check",
375
+ "weight": "MAJOR",
376
+ },
377
+ {
378
+ "assessment": "mediation-policies-check",
379
+ "weight": "MODERATE",
380
+ },
381
+ {
382
+ "assessment": "threat-policies-check",
383
+ "weight": "MINOR",
384
+ },
385
+ ],
386
+ opts = pulumi.ResourceOptions(depends_on=[apigee_org_security_addons_config]))
387
+ ```
388
+
389
+ ## Import
390
+
391
+ SecurityProfileV2 can be imported using any of these accepted formats:
392
+
393
+ * `{{org_id}}/securityProfilesV2/{{profile_id}}`
394
+
395
+ * `{{org_id}}/{{profile_id}}`
396
+
397
+ When using the `pulumi import` command, SecurityProfileV2 can be imported using one of the formats above. For example:
398
+
399
+ ```sh
400
+ $ pulumi import gcp:apigee/securityProfileV2:SecurityProfileV2 default {{org_id}}/securityProfilesV2/{{profile_id}}
401
+ ```
402
+
403
+ ```sh
404
+ $ pulumi import gcp:apigee/securityProfileV2:SecurityProfileV2 default {{org_id}}/{{profile_id}}
405
+ ```
406
+
407
+ :param str resource_name: The name of the resource.
408
+ :param SecurityProfileV2Args args: The arguments to use to populate this resource's properties.
409
+ :param pulumi.ResourceOptions opts: Options for the resource.
410
+ """
411
+ ...
412
+ def __init__(__self__, resource_name: str, *args, **kwargs):
413
+ resource_args, opts = _utilities.get_resource_args_opts(SecurityProfileV2Args, pulumi.ResourceOptions, *args, **kwargs)
414
+ if resource_args is not None:
415
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
416
+ else:
417
+ __self__._internal_init(resource_name, *args, **kwargs)
418
+
419
+ def _internal_init(__self__,
420
+ resource_name: str,
421
+ opts: Optional[pulumi.ResourceOptions] = None,
422
+ description: Optional[pulumi.Input[builtins.str]] = None,
423
+ org_id: Optional[pulumi.Input[builtins.str]] = None,
424
+ profile_assessment_configs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['SecurityProfileV2ProfileAssessmentConfigArgs', 'SecurityProfileV2ProfileAssessmentConfigArgsDict']]]]] = None,
425
+ profile_id: Optional[pulumi.Input[builtins.str]] = None,
426
+ __props__=None):
427
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
428
+ if not isinstance(opts, pulumi.ResourceOptions):
429
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
430
+ if opts.id is None:
431
+ if __props__ is not None:
432
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
433
+ __props__ = SecurityProfileV2Args.__new__(SecurityProfileV2Args)
434
+
435
+ __props__.__dict__["description"] = description
436
+ if org_id is None and not opts.urn:
437
+ raise TypeError("Missing required property 'org_id'")
438
+ __props__.__dict__["org_id"] = org_id
439
+ if profile_assessment_configs is None and not opts.urn:
440
+ raise TypeError("Missing required property 'profile_assessment_configs'")
441
+ __props__.__dict__["profile_assessment_configs"] = profile_assessment_configs
442
+ if profile_id is None and not opts.urn:
443
+ raise TypeError("Missing required property 'profile_id'")
444
+ __props__.__dict__["profile_id"] = profile_id
445
+ __props__.__dict__["create_time"] = None
446
+ __props__.__dict__["name"] = None
447
+ __props__.__dict__["update_time"] = None
448
+ super(SecurityProfileV2, __self__).__init__(
449
+ 'gcp:apigee/securityProfileV2:SecurityProfileV2',
450
+ resource_name,
451
+ __props__,
452
+ opts)
453
+
454
+ @staticmethod
455
+ def get(resource_name: str,
456
+ id: pulumi.Input[str],
457
+ opts: Optional[pulumi.ResourceOptions] = None,
458
+ create_time: Optional[pulumi.Input[builtins.str]] = None,
459
+ description: Optional[pulumi.Input[builtins.str]] = None,
460
+ name: Optional[pulumi.Input[builtins.str]] = None,
461
+ org_id: Optional[pulumi.Input[builtins.str]] = None,
462
+ profile_assessment_configs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['SecurityProfileV2ProfileAssessmentConfigArgs', 'SecurityProfileV2ProfileAssessmentConfigArgsDict']]]]] = None,
463
+ profile_id: Optional[pulumi.Input[builtins.str]] = None,
464
+ update_time: Optional[pulumi.Input[builtins.str]] = None) -> 'SecurityProfileV2':
465
+ """
466
+ Get an existing SecurityProfileV2 resource's state with the given name, id, and optional extra
467
+ properties used to qualify the lookup.
468
+
469
+ :param str resource_name: The unique name of the resulting resource.
470
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
471
+ :param pulumi.ResourceOptions opts: Options for the resource.
472
+ :param pulumi.Input[builtins.str] create_time: The timestamp at which this profile was created.
473
+ :param pulumi.Input[builtins.str] description: Description of the security profile.
474
+ :param pulumi.Input[builtins.str] name: Name of the security profile v2 resource,
475
+ in the format `organizations/{{org_name}}/securityProfilesV2/{{profile_id}}`.
476
+ :param pulumi.Input[builtins.str] org_id: The Apigee Organization associated with the Apigee Security Profile V2,
477
+ in the format `organizations/{{org_name}}`.
478
+ :param pulumi.Input[Sequence[pulumi.Input[Union['SecurityProfileV2ProfileAssessmentConfigArgs', 'SecurityProfileV2ProfileAssessmentConfigArgsDict']]]] profile_assessment_configs: A map of the assessment name and the assessment config.
479
+ Structure is documented below.
480
+ :param pulumi.Input[builtins.str] profile_id: Resource ID of the security profile.
481
+ :param pulumi.Input[builtins.str] update_time: The timestamp at which this profile was most recently updated.
482
+ """
483
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
484
+
485
+ __props__ = _SecurityProfileV2State.__new__(_SecurityProfileV2State)
486
+
487
+ __props__.__dict__["create_time"] = create_time
488
+ __props__.__dict__["description"] = description
489
+ __props__.__dict__["name"] = name
490
+ __props__.__dict__["org_id"] = org_id
491
+ __props__.__dict__["profile_assessment_configs"] = profile_assessment_configs
492
+ __props__.__dict__["profile_id"] = profile_id
493
+ __props__.__dict__["update_time"] = update_time
494
+ return SecurityProfileV2(resource_name, opts=opts, __props__=__props__)
495
+
496
+ @property
497
+ @pulumi.getter(name="createTime")
498
+ def create_time(self) -> pulumi.Output[builtins.str]:
499
+ """
500
+ The timestamp at which this profile was created.
501
+ """
502
+ return pulumi.get(self, "create_time")
503
+
504
+ @property
505
+ @pulumi.getter
506
+ def description(self) -> pulumi.Output[Optional[builtins.str]]:
507
+ """
508
+ Description of the security profile.
509
+ """
510
+ return pulumi.get(self, "description")
511
+
512
+ @property
513
+ @pulumi.getter
514
+ def name(self) -> pulumi.Output[builtins.str]:
515
+ """
516
+ Name of the security profile v2 resource,
517
+ in the format `organizations/{{org_name}}/securityProfilesV2/{{profile_id}}`.
518
+ """
519
+ return pulumi.get(self, "name")
520
+
521
+ @property
522
+ @pulumi.getter(name="orgId")
523
+ def org_id(self) -> pulumi.Output[builtins.str]:
524
+ """
525
+ The Apigee Organization associated with the Apigee Security Profile V2,
526
+ in the format `organizations/{{org_name}}`.
527
+ """
528
+ return pulumi.get(self, "org_id")
529
+
530
+ @property
531
+ @pulumi.getter(name="profileAssessmentConfigs")
532
+ def profile_assessment_configs(self) -> pulumi.Output[Sequence['outputs.SecurityProfileV2ProfileAssessmentConfig']]:
533
+ """
534
+ A map of the assessment name and the assessment config.
535
+ Structure is documented below.
536
+ """
537
+ return pulumi.get(self, "profile_assessment_configs")
538
+
539
+ @property
540
+ @pulumi.getter(name="profileId")
541
+ def profile_id(self) -> pulumi.Output[builtins.str]:
542
+ """
543
+ Resource ID of the security profile.
544
+ """
545
+ return pulumi.get(self, "profile_id")
546
+
547
+ @property
548
+ @pulumi.getter(name="updateTime")
549
+ def update_time(self) -> pulumi.Output[builtins.str]:
550
+ """
551
+ The timestamp at which this profile was most recently updated.
552
+ """
553
+ return pulumi.get(self, "update_time")
554
+
@@ -291,6 +291,10 @@ if not MYPY:
291
291
  kms_key_name: NotRequired[pulumi.Input[builtins.str]]
292
292
  """
293
293
  Describes the Cloud KMS encryption key that will be used to protect the destination Bigtable cluster. The requirements for this key are: 1) The Cloud Bigtable service account associated with the project that contains this cluster must be granted the `cloudkms.cryptoKeyEncrypterDecrypter` role on the CMEK key. 2) Only regional keys can be used and the region of the CMEK key must match the region of the cluster.
294
+ """
295
+ node_scaling_factor: NotRequired[pulumi.Input[builtins.str]]
296
+ """
297
+ The node scaling factor for this cluster. One of `"NodeScalingFactor1X"` or `"NodeScalingFactor2X"`. Defaults to `"NodeScalingFactor1X"`. If `"NodeScalingFactor2X"` is specified, then `num_nodes`, `min_nodes`, and `max_nodes` would need to be specified in increments of 2. This value cannot be updated after the cluster is created.
294
298
 
295
299
  > **Note**: Removing the field entirely from the config will cause the provider to default to the backend value.
296
300
 
@@ -330,6 +334,7 @@ class InstanceClusterArgs:
330
334
  cluster_id: pulumi.Input[builtins.str],
331
335
  autoscaling_config: Optional[pulumi.Input['InstanceClusterAutoscalingConfigArgs']] = None,
332
336
  kms_key_name: Optional[pulumi.Input[builtins.str]] = None,
337
+ node_scaling_factor: Optional[pulumi.Input[builtins.str]] = None,
333
338
  num_nodes: Optional[pulumi.Input[builtins.int]] = None,
334
339
  state: Optional[pulumi.Input[builtins.str]] = None,
335
340
  storage_type: Optional[pulumi.Input[builtins.str]] = None,
@@ -338,6 +343,7 @@ class InstanceClusterArgs:
338
343
  :param pulumi.Input[builtins.str] cluster_id: The ID of the Cloud Bigtable cluster. Must be 6-30 characters and must only contain hyphens, lowercase letters and numbers.
339
344
  :param pulumi.Input['InstanceClusterAutoscalingConfigArgs'] autoscaling_config: [Autoscaling](https://cloud.google.com/bigtable/docs/autoscaling#parameters) config for the cluster, contains the following arguments:
340
345
  :param pulumi.Input[builtins.str] kms_key_name: Describes the Cloud KMS encryption key that will be used to protect the destination Bigtable cluster. The requirements for this key are: 1) The Cloud Bigtable service account associated with the project that contains this cluster must be granted the `cloudkms.cryptoKeyEncrypterDecrypter` role on the CMEK key. 2) Only regional keys can be used and the region of the CMEK key must match the region of the cluster.
346
+ :param pulumi.Input[builtins.str] node_scaling_factor: The node scaling factor for this cluster. One of `"NodeScalingFactor1X"` or `"NodeScalingFactor2X"`. Defaults to `"NodeScalingFactor1X"`. If `"NodeScalingFactor2X"` is specified, then `num_nodes`, `min_nodes`, and `max_nodes` would need to be specified in increments of 2. This value cannot be updated after the cluster is created.
341
347
 
342
348
  > **Note**: Removing the field entirely from the config will cause the provider to default to the backend value.
343
349
 
@@ -361,6 +367,8 @@ class InstanceClusterArgs:
361
367
  pulumi.set(__self__, "autoscaling_config", autoscaling_config)
362
368
  if kms_key_name is not None:
363
369
  pulumi.set(__self__, "kms_key_name", kms_key_name)
370
+ if node_scaling_factor is not None:
371
+ pulumi.set(__self__, "node_scaling_factor", node_scaling_factor)
364
372
  if num_nodes is not None:
365
373
  pulumi.set(__self__, "num_nodes", num_nodes)
366
374
  if state is not None:
@@ -399,6 +407,18 @@ class InstanceClusterArgs:
399
407
  def kms_key_name(self) -> Optional[pulumi.Input[builtins.str]]:
400
408
  """
401
409
  Describes the Cloud KMS encryption key that will be used to protect the destination Bigtable cluster. The requirements for this key are: 1) The Cloud Bigtable service account associated with the project that contains this cluster must be granted the `cloudkms.cryptoKeyEncrypterDecrypter` role on the CMEK key. 2) Only regional keys can be used and the region of the CMEK key must match the region of the cluster.
410
+ """
411
+ return pulumi.get(self, "kms_key_name")
412
+
413
+ @kms_key_name.setter
414
+ def kms_key_name(self, value: Optional[pulumi.Input[builtins.str]]):
415
+ pulumi.set(self, "kms_key_name", value)
416
+
417
+ @property
418
+ @pulumi.getter(name="nodeScalingFactor")
419
+ def node_scaling_factor(self) -> Optional[pulumi.Input[builtins.str]]:
420
+ """
421
+ The node scaling factor for this cluster. One of `"NodeScalingFactor1X"` or `"NodeScalingFactor2X"`. Defaults to `"NodeScalingFactor1X"`. If `"NodeScalingFactor2X"` is specified, then `num_nodes`, `min_nodes`, and `max_nodes` would need to be specified in increments of 2. This value cannot be updated after the cluster is created.
402
422
 
403
423
  > **Note**: Removing the field entirely from the config will cause the provider to default to the backend value.
404
424
 
@@ -409,11 +429,11 @@ class InstanceClusterArgs:
409
429
  `bigtable.Instance` resource. If these values are changing, use a new
410
430
  `cluster_id`.
411
431
  """
412
- return pulumi.get(self, "kms_key_name")
432
+ return pulumi.get(self, "node_scaling_factor")
413
433
 
414
- @kms_key_name.setter
415
- def kms_key_name(self, value: Optional[pulumi.Input[builtins.str]]):
416
- pulumi.set(self, "kms_key_name", value)
434
+ @node_scaling_factor.setter
435
+ def node_scaling_factor(self, value: Optional[pulumi.Input[builtins.str]]):
436
+ pulumi.set(self, "node_scaling_factor", value)
417
437
 
418
438
  @property
419
439
  @pulumi.getter(name="numNodes")