pulumi-gcp 9.3.0a1759561069__py3-none-any.whl → 9.4.0a1759906655__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.
- pulumi_gcp/__init__.py +32 -0
- pulumi_gcp/apigee/__init__.py +1 -0
- pulumi_gcp/apigee/api_deployment.py +372 -0
- pulumi_gcp/apihub/plugin.py +1 -1
- pulumi_gcp/artifactregistry/__init__.py +2 -0
- pulumi_gcp/artifactregistry/get_maven_artifacts.py +164 -0
- pulumi_gcp/artifactregistry/get_npm_packages.py +164 -0
- pulumi_gcp/artifactregistry/outputs.py +165 -0
- pulumi_gcp/cloudrunv2/_inputs.py +823 -15
- pulumi_gcp/cloudrunv2/outputs.py +1749 -743
- pulumi_gcp/cloudrunv2/worker_pool.py +110 -0
- pulumi_gcp/compute/_inputs.py +28 -0
- pulumi_gcp/compute/outputs.py +20 -1
- pulumi_gcp/compute/vpn_tunnel.py +97 -23
- pulumi_gcp/compute/wire_group.py +2 -0
- pulumi_gcp/dataloss/_inputs.py +970 -30
- pulumi_gcp/dataloss/outputs.py +850 -20
- pulumi_gcp/dataloss/prevention_discovery_config.py +54 -0
- pulumi_gcp/diagflow/_inputs.py +66 -0
- pulumi_gcp/diagflow/conversation_profile.py +84 -0
- pulumi_gcp/diagflow/outputs.py +57 -0
- pulumi_gcp/discoveryengine/__init__.py +1 -0
- pulumi_gcp/discoveryengine/_inputs.py +187 -0
- pulumi_gcp/discoveryengine/data_connector.py +1368 -0
- pulumi_gcp/discoveryengine/outputs.py +135 -0
- pulumi_gcp/discoveryengine/search_engine.py +47 -0
- pulumi_gcp/gkebackup/_inputs.py +111 -0
- pulumi_gcp/gkebackup/backup_plan.py +72 -0
- pulumi_gcp/gkebackup/outputs.py +84 -0
- pulumi_gcp/kms/__init__.py +1 -0
- pulumi_gcp/kms/_inputs.py +43 -0
- pulumi_gcp/kms/organization_kaj_policy_config.py +290 -0
- pulumi_gcp/kms/outputs.py +43 -0
- pulumi_gcp/logging/metric.py +2 -2
- pulumi_gcp/looker/instance.py +51 -0
- pulumi_gcp/managedkafka/connect_cluster.py +20 -82
- pulumi_gcp/managedkafka/connector.py +24 -94
- pulumi_gcp/netapp/_inputs.py +28 -5
- pulumi_gcp/netapp/outputs.py +19 -3
- pulumi_gcp/netapp/storage_pool.py +56 -0
- pulumi_gcp/netapp/volume.py +28 -0
- pulumi_gcp/networkconnectivity/spoke.py +14 -14
- pulumi_gcp/networksecurity/mirroring_endpoint_group.py +211 -23
- pulumi_gcp/oracledatabase/odb_network.py +101 -2
- pulumi_gcp/orgpolicy/policy.py +2 -2
- pulumi_gcp/privilegedaccessmanager/_inputs.py +27 -4
- pulumi_gcp/privilegedaccessmanager/outputs.py +31 -6
- pulumi_gcp/pubsub/get_subscription.py +12 -1
- pulumi_gcp/pubsub/get_topic.py +15 -4
- pulumi_gcp/pubsub/subscription.py +153 -7
- pulumi_gcp/pubsub/topic.py +145 -3
- pulumi_gcp/pulumi-plugin.json +1 -1
- pulumi_gcp/saasruntime/__init__.py +1 -0
- pulumi_gcp/saasruntime/_inputs.py +60 -0
- pulumi_gcp/saasruntime/outputs.py +55 -0
- pulumi_gcp/saasruntime/rollout_kind.py +1086 -0
- pulumi_gcp/sql/_inputs.py +122 -3
- pulumi_gcp/sql/database_instance.py +47 -0
- pulumi_gcp/sql/get_database_instance.py +12 -1
- pulumi_gcp/sql/outputs.py +233 -2
- pulumi_gcp/storage/bucket.py +52 -24
- pulumi_gcp/storage/get_insights_dataset_config.py +12 -1
- pulumi_gcp/storage/insights_dataset_config.py +49 -0
- pulumi_gcp/storage/insights_report_config.py +47 -0
- pulumi_gcp/vertex/_inputs.py +339 -1
- pulumi_gcp/vertex/ai_endpoint.py +4 -4
- pulumi_gcp/vertex/ai_endpoint_with_model_garden_deployment.py +102 -0
- pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
- pulumi_gcp/vertex/ai_index.py +74 -2
- pulumi_gcp/vertex/ai_index_endpoint.py +54 -0
- pulumi_gcp/vertex/get_ai_index.py +12 -1
- pulumi_gcp/vertex/outputs.py +303 -1
- {pulumi_gcp-9.3.0a1759561069.dist-info → pulumi_gcp-9.4.0a1759906655.dist-info}/METADATA +1 -1
- {pulumi_gcp-9.3.0a1759561069.dist-info → pulumi_gcp-9.4.0a1759906655.dist-info}/RECORD +76 -70
- {pulumi_gcp-9.3.0a1759561069.dist-info → pulumi_gcp-9.4.0a1759906655.dist-info}/WHEEL +0 -0
- {pulumi_gcp-9.3.0a1759561069.dist-info → pulumi_gcp-9.4.0a1759906655.dist-info}/top_level.txt +0 -0
@@ -23,6 +23,8 @@ __all__ = [
|
|
23
23
|
'ChatEngineChatEngineMetadata',
|
24
24
|
'ChatEngineCommonConfig',
|
25
25
|
'CmekConfigSingleRegionKey',
|
26
|
+
'DataConnectorEntity',
|
27
|
+
'DataConnectorError',
|
26
28
|
'DataStoreAdvancedSiteSearchConfig',
|
27
29
|
'DataStoreDocumentProcessingConfig',
|
28
30
|
'DataStoreDocumentProcessingConfigChunkingConfig',
|
@@ -405,6 +407,139 @@ class CmekConfigSingleRegionKey(dict):
|
|
405
407
|
return pulumi.get(self, "kms_key")
|
406
408
|
|
407
409
|
|
410
|
+
@pulumi.output_type
|
411
|
+
class DataConnectorEntity(dict):
|
412
|
+
@staticmethod
|
413
|
+
def __key_warning(key: str):
|
414
|
+
suggest = None
|
415
|
+
if key == "dataStore":
|
416
|
+
suggest = "data_store"
|
417
|
+
elif key == "entityName":
|
418
|
+
suggest = "entity_name"
|
419
|
+
elif key == "keyPropertyMappings":
|
420
|
+
suggest = "key_property_mappings"
|
421
|
+
|
422
|
+
if suggest:
|
423
|
+
pulumi.log.warn(f"Key '{key}' not found in DataConnectorEntity. Access the value via the '{suggest}' property getter instead.")
|
424
|
+
|
425
|
+
def __getitem__(self, key: str) -> Any:
|
426
|
+
DataConnectorEntity.__key_warning(key)
|
427
|
+
return super().__getitem__(key)
|
428
|
+
|
429
|
+
def get(self, key: str, default = None) -> Any:
|
430
|
+
DataConnectorEntity.__key_warning(key)
|
431
|
+
return super().get(key, default)
|
432
|
+
|
433
|
+
def __init__(__self__, *,
|
434
|
+
data_store: Optional[_builtins.str] = None,
|
435
|
+
entity_name: Optional[_builtins.str] = None,
|
436
|
+
key_property_mappings: Optional[Mapping[str, _builtins.str]] = None,
|
437
|
+
params: Optional[Mapping[str, _builtins.str]] = None):
|
438
|
+
"""
|
439
|
+
:param _builtins.str data_store: (Output)
|
440
|
+
The full resource name of the associated data store for the source
|
441
|
+
entity.
|
442
|
+
Format: `projects/*/locations/*/collections/*/dataStores/*`.
|
443
|
+
When the connector is initialized by the DataConnectorService.SetUpDataConnector
|
444
|
+
method, a DataStore is automatically created for each source entity.
|
445
|
+
:param _builtins.str entity_name: The name of the entity. Supported values by data source:
|
446
|
+
* Salesforce: `Lead`, `Opportunity`, `Contact`, `Account`, `Case`, `Contract`, `Campaign`
|
447
|
+
* Jira: project, issue, attachment, comment, worklog
|
448
|
+
* Confluence: `Content`, `Space`
|
449
|
+
:param Mapping[str, _builtins.str] key_property_mappings: Attributes for indexing.
|
450
|
+
Key: Field name.
|
451
|
+
Value: The key property to map a field to, such as `title`, and
|
452
|
+
`description`. Supported key properties:
|
453
|
+
:param Mapping[str, _builtins.str] params: The parameters for the entity to facilitate data ingestion.
|
454
|
+
"""
|
455
|
+
if data_store is not None:
|
456
|
+
pulumi.set(__self__, "data_store", data_store)
|
457
|
+
if entity_name is not None:
|
458
|
+
pulumi.set(__self__, "entity_name", entity_name)
|
459
|
+
if key_property_mappings is not None:
|
460
|
+
pulumi.set(__self__, "key_property_mappings", key_property_mappings)
|
461
|
+
if params is not None:
|
462
|
+
pulumi.set(__self__, "params", params)
|
463
|
+
|
464
|
+
@_builtins.property
|
465
|
+
@pulumi.getter(name="dataStore")
|
466
|
+
def data_store(self) -> Optional[_builtins.str]:
|
467
|
+
"""
|
468
|
+
(Output)
|
469
|
+
The full resource name of the associated data store for the source
|
470
|
+
entity.
|
471
|
+
Format: `projects/*/locations/*/collections/*/dataStores/*`.
|
472
|
+
When the connector is initialized by the DataConnectorService.SetUpDataConnector
|
473
|
+
method, a DataStore is automatically created for each source entity.
|
474
|
+
"""
|
475
|
+
return pulumi.get(self, "data_store")
|
476
|
+
|
477
|
+
@_builtins.property
|
478
|
+
@pulumi.getter(name="entityName")
|
479
|
+
def entity_name(self) -> Optional[_builtins.str]:
|
480
|
+
"""
|
481
|
+
The name of the entity. Supported values by data source:
|
482
|
+
* Salesforce: `Lead`, `Opportunity`, `Contact`, `Account`, `Case`, `Contract`, `Campaign`
|
483
|
+
* Jira: project, issue, attachment, comment, worklog
|
484
|
+
* Confluence: `Content`, `Space`
|
485
|
+
"""
|
486
|
+
return pulumi.get(self, "entity_name")
|
487
|
+
|
488
|
+
@_builtins.property
|
489
|
+
@pulumi.getter(name="keyPropertyMappings")
|
490
|
+
def key_property_mappings(self) -> Optional[Mapping[str, _builtins.str]]:
|
491
|
+
"""
|
492
|
+
Attributes for indexing.
|
493
|
+
Key: Field name.
|
494
|
+
Value: The key property to map a field to, such as `title`, and
|
495
|
+
`description`. Supported key properties:
|
496
|
+
"""
|
497
|
+
return pulumi.get(self, "key_property_mappings")
|
498
|
+
|
499
|
+
@_builtins.property
|
500
|
+
@pulumi.getter
|
501
|
+
def params(self) -> Optional[Mapping[str, _builtins.str]]:
|
502
|
+
"""
|
503
|
+
The parameters for the entity to facilitate data ingestion.
|
504
|
+
"""
|
505
|
+
return pulumi.get(self, "params")
|
506
|
+
|
507
|
+
|
508
|
+
@pulumi.output_type
|
509
|
+
class DataConnectorError(dict):
|
510
|
+
def __init__(__self__, *,
|
511
|
+
code: Optional[_builtins.int] = None,
|
512
|
+
message: Optional[_builtins.str] = None):
|
513
|
+
"""
|
514
|
+
:param _builtins.int code: (Output)
|
515
|
+
The status code, which should be an enum value of google.rpc.Code.
|
516
|
+
:param _builtins.str message: (Output)
|
517
|
+
A developer-facing error message, which should be in English.
|
518
|
+
"""
|
519
|
+
if code is not None:
|
520
|
+
pulumi.set(__self__, "code", code)
|
521
|
+
if message is not None:
|
522
|
+
pulumi.set(__self__, "message", message)
|
523
|
+
|
524
|
+
@_builtins.property
|
525
|
+
@pulumi.getter
|
526
|
+
def code(self) -> Optional[_builtins.int]:
|
527
|
+
"""
|
528
|
+
(Output)
|
529
|
+
The status code, which should be an enum value of google.rpc.Code.
|
530
|
+
"""
|
531
|
+
return pulumi.get(self, "code")
|
532
|
+
|
533
|
+
@_builtins.property
|
534
|
+
@pulumi.getter
|
535
|
+
def message(self) -> Optional[_builtins.str]:
|
536
|
+
"""
|
537
|
+
(Output)
|
538
|
+
A developer-facing error message, which should be in English.
|
539
|
+
"""
|
540
|
+
return pulumi.get(self, "message")
|
541
|
+
|
542
|
+
|
408
543
|
@pulumi.output_type
|
409
544
|
class DataStoreAdvancedSiteSearchConfig(dict):
|
410
545
|
@staticmethod
|
@@ -29,6 +29,7 @@ class SearchEngineArgs:
|
|
29
29
|
search_engine_config: pulumi.Input['SearchEngineSearchEngineConfigArgs'],
|
30
30
|
app_type: Optional[pulumi.Input[_builtins.str]] = None,
|
31
31
|
common_config: Optional[pulumi.Input['SearchEngineCommonConfigArgs']] = None,
|
32
|
+
features: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
|
32
33
|
industry_vertical: Optional[pulumi.Input[_builtins.str]] = None,
|
33
34
|
project: Optional[pulumi.Input[_builtins.str]] = None):
|
34
35
|
"""
|
@@ -44,6 +45,7 @@ class SearchEngineArgs:
|
|
44
45
|
The supported values: 'APP_TYPE_UNSPECIFIED', 'APP_TYPE_INTRANET'.
|
45
46
|
:param pulumi.Input['SearchEngineCommonConfigArgs'] common_config: Common config spec that specifies the metadata of the engine.
|
46
47
|
Structure is documented below.
|
48
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] features: A map of the feature config for the engine to opt in or opt out of features.
|
47
49
|
:param pulumi.Input[_builtins.str] industry_vertical: The industry vertical that the engine registers. The restriction of the Engine industry vertical is based on DataStore: If unspecified, default to GENERIC. Vertical on Engine has to match vertical of the DataStore liniked to the engine.
|
48
50
|
Default value is `GENERIC`.
|
49
51
|
Possible values are: `GENERIC`, `MEDIA`, `HEALTHCARE_FHIR`.
|
@@ -60,6 +62,8 @@ class SearchEngineArgs:
|
|
60
62
|
pulumi.set(__self__, "app_type", app_type)
|
61
63
|
if common_config is not None:
|
62
64
|
pulumi.set(__self__, "common_config", common_config)
|
65
|
+
if features is not None:
|
66
|
+
pulumi.set(__self__, "features", features)
|
63
67
|
if industry_vertical is not None:
|
64
68
|
pulumi.set(__self__, "industry_vertical", industry_vertical)
|
65
69
|
if project is not None:
|
@@ -164,6 +168,18 @@ class SearchEngineArgs:
|
|
164
168
|
def common_config(self, value: Optional[pulumi.Input['SearchEngineCommonConfigArgs']]):
|
165
169
|
pulumi.set(self, "common_config", value)
|
166
170
|
|
171
|
+
@_builtins.property
|
172
|
+
@pulumi.getter
|
173
|
+
def features(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
|
174
|
+
"""
|
175
|
+
A map of the feature config for the engine to opt in or opt out of features.
|
176
|
+
"""
|
177
|
+
return pulumi.get(self, "features")
|
178
|
+
|
179
|
+
@features.setter
|
180
|
+
def features(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
|
181
|
+
pulumi.set(self, "features", value)
|
182
|
+
|
167
183
|
@_builtins.property
|
168
184
|
@pulumi.getter(name="industryVertical")
|
169
185
|
def industry_vertical(self) -> Optional[pulumi.Input[_builtins.str]]:
|
@@ -202,6 +218,7 @@ class _SearchEngineState:
|
|
202
218
|
data_store_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
203
219
|
display_name: Optional[pulumi.Input[_builtins.str]] = None,
|
204
220
|
engine_id: Optional[pulumi.Input[_builtins.str]] = None,
|
221
|
+
features: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
|
205
222
|
industry_vertical: Optional[pulumi.Input[_builtins.str]] = None,
|
206
223
|
location: Optional[pulumi.Input[_builtins.str]] = None,
|
207
224
|
name: Optional[pulumi.Input[_builtins.str]] = None,
|
@@ -219,6 +236,7 @@ class _SearchEngineState:
|
|
219
236
|
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] data_store_ids: The data stores associated with this engine. For SOLUTION_TYPE_SEARCH type of engines, they can only associate with at most one data store.
|
220
237
|
:param pulumi.Input[_builtins.str] display_name: Required. The display name of the engine. Should be human readable. UTF-8 encoded string with limit of 1024 characters.
|
221
238
|
:param pulumi.Input[_builtins.str] engine_id: Unique ID to use for Search Engine App.
|
239
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] features: A map of the feature config for the engine to opt in or opt out of features.
|
222
240
|
:param pulumi.Input[_builtins.str] industry_vertical: The industry vertical that the engine registers. The restriction of the Engine industry vertical is based on DataStore: If unspecified, default to GENERIC. Vertical on Engine has to match vertical of the DataStore liniked to the engine.
|
223
241
|
Default value is `GENERIC`.
|
224
242
|
Possible values are: `GENERIC`, `MEDIA`, `HEALTHCARE_FHIR`.
|
@@ -247,6 +265,8 @@ class _SearchEngineState:
|
|
247
265
|
pulumi.set(__self__, "display_name", display_name)
|
248
266
|
if engine_id is not None:
|
249
267
|
pulumi.set(__self__, "engine_id", engine_id)
|
268
|
+
if features is not None:
|
269
|
+
pulumi.set(__self__, "features", features)
|
250
270
|
if industry_vertical is not None:
|
251
271
|
pulumi.set(__self__, "industry_vertical", industry_vertical)
|
252
272
|
if location is not None:
|
@@ -346,6 +366,18 @@ class _SearchEngineState:
|
|
346
366
|
def engine_id(self, value: Optional[pulumi.Input[_builtins.str]]):
|
347
367
|
pulumi.set(self, "engine_id", value)
|
348
368
|
|
369
|
+
@_builtins.property
|
370
|
+
@pulumi.getter
|
371
|
+
def features(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
|
372
|
+
"""
|
373
|
+
A map of the feature config for the engine to opt in or opt out of features.
|
374
|
+
"""
|
375
|
+
return pulumi.get(self, "features")
|
376
|
+
|
377
|
+
@features.setter
|
378
|
+
def features(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
|
379
|
+
pulumi.set(self, "features", value)
|
380
|
+
|
349
381
|
@_builtins.property
|
350
382
|
@pulumi.getter(name="industryVertical")
|
351
383
|
def industry_vertical(self) -> Optional[pulumi.Input[_builtins.str]]:
|
@@ -438,6 +470,7 @@ class SearchEngine(pulumi.CustomResource):
|
|
438
470
|
data_store_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
439
471
|
display_name: Optional[pulumi.Input[_builtins.str]] = None,
|
440
472
|
engine_id: Optional[pulumi.Input[_builtins.str]] = None,
|
473
|
+
features: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
|
441
474
|
industry_vertical: Optional[pulumi.Input[_builtins.str]] = None,
|
442
475
|
location: Optional[pulumi.Input[_builtins.str]] = None,
|
443
476
|
project: Optional[pulumi.Input[_builtins.str]] = None,
|
@@ -534,6 +567,7 @@ class SearchEngine(pulumi.CustomResource):
|
|
534
567
|
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] data_store_ids: The data stores associated with this engine. For SOLUTION_TYPE_SEARCH type of engines, they can only associate with at most one data store.
|
535
568
|
:param pulumi.Input[_builtins.str] display_name: Required. The display name of the engine. Should be human readable. UTF-8 encoded string with limit of 1024 characters.
|
536
569
|
:param pulumi.Input[_builtins.str] engine_id: Unique ID to use for Search Engine App.
|
570
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] features: A map of the feature config for the engine to opt in or opt out of features.
|
537
571
|
:param pulumi.Input[_builtins.str] industry_vertical: The industry vertical that the engine registers. The restriction of the Engine industry vertical is based on DataStore: If unspecified, default to GENERIC. Vertical on Engine has to match vertical of the DataStore liniked to the engine.
|
538
572
|
Default value is `GENERIC`.
|
539
573
|
Possible values are: `GENERIC`, `MEDIA`, `HEALTHCARE_FHIR`.
|
@@ -651,6 +685,7 @@ class SearchEngine(pulumi.CustomResource):
|
|
651
685
|
data_store_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
652
686
|
display_name: Optional[pulumi.Input[_builtins.str]] = None,
|
653
687
|
engine_id: Optional[pulumi.Input[_builtins.str]] = None,
|
688
|
+
features: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
|
654
689
|
industry_vertical: Optional[pulumi.Input[_builtins.str]] = None,
|
655
690
|
location: Optional[pulumi.Input[_builtins.str]] = None,
|
656
691
|
project: Optional[pulumi.Input[_builtins.str]] = None,
|
@@ -678,6 +713,7 @@ class SearchEngine(pulumi.CustomResource):
|
|
678
713
|
if engine_id is None and not opts.urn:
|
679
714
|
raise TypeError("Missing required property 'engine_id'")
|
680
715
|
__props__.__dict__["engine_id"] = engine_id
|
716
|
+
__props__.__dict__["features"] = features
|
681
717
|
__props__.__dict__["industry_vertical"] = industry_vertical
|
682
718
|
if location is None and not opts.urn:
|
683
719
|
raise TypeError("Missing required property 'location'")
|
@@ -706,6 +742,7 @@ class SearchEngine(pulumi.CustomResource):
|
|
706
742
|
data_store_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
|
707
743
|
display_name: Optional[pulumi.Input[_builtins.str]] = None,
|
708
744
|
engine_id: Optional[pulumi.Input[_builtins.str]] = None,
|
745
|
+
features: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
|
709
746
|
industry_vertical: Optional[pulumi.Input[_builtins.str]] = None,
|
710
747
|
location: Optional[pulumi.Input[_builtins.str]] = None,
|
711
748
|
name: Optional[pulumi.Input[_builtins.str]] = None,
|
@@ -728,6 +765,7 @@ class SearchEngine(pulumi.CustomResource):
|
|
728
765
|
:param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] data_store_ids: The data stores associated with this engine. For SOLUTION_TYPE_SEARCH type of engines, they can only associate with at most one data store.
|
729
766
|
:param pulumi.Input[_builtins.str] display_name: Required. The display name of the engine. Should be human readable. UTF-8 encoded string with limit of 1024 characters.
|
730
767
|
:param pulumi.Input[_builtins.str] engine_id: Unique ID to use for Search Engine App.
|
768
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] features: A map of the feature config for the engine to opt in or opt out of features.
|
731
769
|
:param pulumi.Input[_builtins.str] industry_vertical: The industry vertical that the engine registers. The restriction of the Engine industry vertical is based on DataStore: If unspecified, default to GENERIC. Vertical on Engine has to match vertical of the DataStore liniked to the engine.
|
732
770
|
Default value is `GENERIC`.
|
733
771
|
Possible values are: `GENERIC`, `MEDIA`, `HEALTHCARE_FHIR`.
|
@@ -753,6 +791,7 @@ class SearchEngine(pulumi.CustomResource):
|
|
753
791
|
__props__.__dict__["data_store_ids"] = data_store_ids
|
754
792
|
__props__.__dict__["display_name"] = display_name
|
755
793
|
__props__.__dict__["engine_id"] = engine_id
|
794
|
+
__props__.__dict__["features"] = features
|
756
795
|
__props__.__dict__["industry_vertical"] = industry_vertical
|
757
796
|
__props__.__dict__["location"] = location
|
758
797
|
__props__.__dict__["name"] = name
|
@@ -819,6 +858,14 @@ class SearchEngine(pulumi.CustomResource):
|
|
819
858
|
"""
|
820
859
|
return pulumi.get(self, "engine_id")
|
821
860
|
|
861
|
+
@_builtins.property
|
862
|
+
@pulumi.getter
|
863
|
+
def features(self) -> pulumi.Output[Optional[Mapping[str, _builtins.str]]]:
|
864
|
+
"""
|
865
|
+
A map of the feature config for the engine to opt in or opt out of features.
|
866
|
+
"""
|
867
|
+
return pulumi.get(self, "features")
|
868
|
+
|
822
869
|
@_builtins.property
|
823
870
|
@pulumi.getter(name="industryVertical")
|
824
871
|
def industry_vertical(self) -> pulumi.Output[Optional[_builtins.str]]:
|
pulumi_gcp/gkebackup/_inputs.py
CHANGED
@@ -23,6 +23,10 @@ __all__ = [
|
|
23
23
|
'BackupPlanBackupConfigSelectedApplicationsArgsDict',
|
24
24
|
'BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs',
|
25
25
|
'BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgsDict',
|
26
|
+
'BackupPlanBackupConfigSelectedNamespaceLabelsArgs',
|
27
|
+
'BackupPlanBackupConfigSelectedNamespaceLabelsArgsDict',
|
28
|
+
'BackupPlanBackupConfigSelectedNamespaceLabelsResourceLabelArgs',
|
29
|
+
'BackupPlanBackupConfigSelectedNamespaceLabelsResourceLabelArgsDict',
|
26
30
|
'BackupPlanBackupConfigSelectedNamespacesArgs',
|
27
31
|
'BackupPlanBackupConfigSelectedNamespacesArgsDict',
|
28
32
|
'BackupPlanBackupScheduleArgs',
|
@@ -118,6 +122,11 @@ if not MYPY:
|
|
118
122
|
A list of namespaced Kubernetes Resources.
|
119
123
|
Structure is documented below.
|
120
124
|
"""
|
125
|
+
selected_namespace_labels: NotRequired[pulumi.Input['BackupPlanBackupConfigSelectedNamespaceLabelsArgsDict']]
|
126
|
+
"""
|
127
|
+
If set, include just the resources in the listed namespace Labels.
|
128
|
+
Structure is documented below.
|
129
|
+
"""
|
121
130
|
selected_namespaces: NotRequired[pulumi.Input['BackupPlanBackupConfigSelectedNamespacesArgsDict']]
|
122
131
|
"""
|
123
132
|
If set, include just the resources in the listed namespaces.
|
@@ -135,6 +144,7 @@ class BackupPlanBackupConfigArgs:
|
|
135
144
|
include_volume_data: Optional[pulumi.Input[_builtins.bool]] = None,
|
136
145
|
permissive_mode: Optional[pulumi.Input[_builtins.bool]] = None,
|
137
146
|
selected_applications: Optional[pulumi.Input['BackupPlanBackupConfigSelectedApplicationsArgs']] = None,
|
147
|
+
selected_namespace_labels: Optional[pulumi.Input['BackupPlanBackupConfigSelectedNamespaceLabelsArgs']] = None,
|
138
148
|
selected_namespaces: Optional[pulumi.Input['BackupPlanBackupConfigSelectedNamespacesArgs']] = None):
|
139
149
|
"""
|
140
150
|
:param pulumi.Input[_builtins.bool] all_namespaces: If True, include all namespaced resources.
|
@@ -150,6 +160,8 @@ class BackupPlanBackupConfigArgs:
|
|
150
160
|
non-standard or requires additional setup to restore.
|
151
161
|
:param pulumi.Input['BackupPlanBackupConfigSelectedApplicationsArgs'] selected_applications: A list of namespaced Kubernetes Resources.
|
152
162
|
Structure is documented below.
|
163
|
+
:param pulumi.Input['BackupPlanBackupConfigSelectedNamespaceLabelsArgs'] selected_namespace_labels: If set, include just the resources in the listed namespace Labels.
|
164
|
+
Structure is documented below.
|
153
165
|
:param pulumi.Input['BackupPlanBackupConfigSelectedNamespacesArgs'] selected_namespaces: If set, include just the resources in the listed namespaces.
|
154
166
|
Structure is documented below.
|
155
167
|
"""
|
@@ -165,6 +177,8 @@ class BackupPlanBackupConfigArgs:
|
|
165
177
|
pulumi.set(__self__, "permissive_mode", permissive_mode)
|
166
178
|
if selected_applications is not None:
|
167
179
|
pulumi.set(__self__, "selected_applications", selected_applications)
|
180
|
+
if selected_namespace_labels is not None:
|
181
|
+
pulumi.set(__self__, "selected_namespace_labels", selected_namespace_labels)
|
168
182
|
if selected_namespaces is not None:
|
169
183
|
pulumi.set(__self__, "selected_namespaces", selected_namespaces)
|
170
184
|
|
@@ -247,6 +261,19 @@ class BackupPlanBackupConfigArgs:
|
|
247
261
|
def selected_applications(self, value: Optional[pulumi.Input['BackupPlanBackupConfigSelectedApplicationsArgs']]):
|
248
262
|
pulumi.set(self, "selected_applications", value)
|
249
263
|
|
264
|
+
@_builtins.property
|
265
|
+
@pulumi.getter(name="selectedNamespaceLabels")
|
266
|
+
def selected_namespace_labels(self) -> Optional[pulumi.Input['BackupPlanBackupConfigSelectedNamespaceLabelsArgs']]:
|
267
|
+
"""
|
268
|
+
If set, include just the resources in the listed namespace Labels.
|
269
|
+
Structure is documented below.
|
270
|
+
"""
|
271
|
+
return pulumi.get(self, "selected_namespace_labels")
|
272
|
+
|
273
|
+
@selected_namespace_labels.setter
|
274
|
+
def selected_namespace_labels(self, value: Optional[pulumi.Input['BackupPlanBackupConfigSelectedNamespaceLabelsArgs']]):
|
275
|
+
pulumi.set(self, "selected_namespace_labels", value)
|
276
|
+
|
250
277
|
@_builtins.property
|
251
278
|
@pulumi.getter(name="selectedNamespaces")
|
252
279
|
def selected_namespaces(self) -> Optional[pulumi.Input['BackupPlanBackupConfigSelectedNamespacesArgs']]:
|
@@ -376,6 +403,90 @@ class BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs:
|
|
376
403
|
pulumi.set(self, "namespace", value)
|
377
404
|
|
378
405
|
|
406
|
+
if not MYPY:
|
407
|
+
class BackupPlanBackupConfigSelectedNamespaceLabelsArgsDict(TypedDict):
|
408
|
+
resource_labels: pulumi.Input[Sequence[pulumi.Input['BackupPlanBackupConfigSelectedNamespaceLabelsResourceLabelArgsDict']]]
|
409
|
+
"""
|
410
|
+
A list of Kubernetes Namespace labels.
|
411
|
+
Structure is documented below.
|
412
|
+
"""
|
413
|
+
elif False:
|
414
|
+
BackupPlanBackupConfigSelectedNamespaceLabelsArgsDict: TypeAlias = Mapping[str, Any]
|
415
|
+
|
416
|
+
@pulumi.input_type
|
417
|
+
class BackupPlanBackupConfigSelectedNamespaceLabelsArgs:
|
418
|
+
def __init__(__self__, *,
|
419
|
+
resource_labels: pulumi.Input[Sequence[pulumi.Input['BackupPlanBackupConfigSelectedNamespaceLabelsResourceLabelArgs']]]):
|
420
|
+
"""
|
421
|
+
:param pulumi.Input[Sequence[pulumi.Input['BackupPlanBackupConfigSelectedNamespaceLabelsResourceLabelArgs']]] resource_labels: A list of Kubernetes Namespace labels.
|
422
|
+
Structure is documented below.
|
423
|
+
"""
|
424
|
+
pulumi.set(__self__, "resource_labels", resource_labels)
|
425
|
+
|
426
|
+
@_builtins.property
|
427
|
+
@pulumi.getter(name="resourceLabels")
|
428
|
+
def resource_labels(self) -> pulumi.Input[Sequence[pulumi.Input['BackupPlanBackupConfigSelectedNamespaceLabelsResourceLabelArgs']]]:
|
429
|
+
"""
|
430
|
+
A list of Kubernetes Namespace labels.
|
431
|
+
Structure is documented below.
|
432
|
+
"""
|
433
|
+
return pulumi.get(self, "resource_labels")
|
434
|
+
|
435
|
+
@resource_labels.setter
|
436
|
+
def resource_labels(self, value: pulumi.Input[Sequence[pulumi.Input['BackupPlanBackupConfigSelectedNamespaceLabelsResourceLabelArgs']]]):
|
437
|
+
pulumi.set(self, "resource_labels", value)
|
438
|
+
|
439
|
+
|
440
|
+
if not MYPY:
|
441
|
+
class BackupPlanBackupConfigSelectedNamespaceLabelsResourceLabelArgsDict(TypedDict):
|
442
|
+
key: pulumi.Input[_builtins.str]
|
443
|
+
"""
|
444
|
+
The key of the kubernetes label.
|
445
|
+
"""
|
446
|
+
value: pulumi.Input[_builtins.str]
|
447
|
+
"""
|
448
|
+
The value of the Label.
|
449
|
+
"""
|
450
|
+
elif False:
|
451
|
+
BackupPlanBackupConfigSelectedNamespaceLabelsResourceLabelArgsDict: TypeAlias = Mapping[str, Any]
|
452
|
+
|
453
|
+
@pulumi.input_type
|
454
|
+
class BackupPlanBackupConfigSelectedNamespaceLabelsResourceLabelArgs:
|
455
|
+
def __init__(__self__, *,
|
456
|
+
key: pulumi.Input[_builtins.str],
|
457
|
+
value: pulumi.Input[_builtins.str]):
|
458
|
+
"""
|
459
|
+
:param pulumi.Input[_builtins.str] key: The key of the kubernetes label.
|
460
|
+
:param pulumi.Input[_builtins.str] value: The value of the Label.
|
461
|
+
"""
|
462
|
+
pulumi.set(__self__, "key", key)
|
463
|
+
pulumi.set(__self__, "value", value)
|
464
|
+
|
465
|
+
@_builtins.property
|
466
|
+
@pulumi.getter
|
467
|
+
def key(self) -> pulumi.Input[_builtins.str]:
|
468
|
+
"""
|
469
|
+
The key of the kubernetes label.
|
470
|
+
"""
|
471
|
+
return pulumi.get(self, "key")
|
472
|
+
|
473
|
+
@key.setter
|
474
|
+
def key(self, value: pulumi.Input[_builtins.str]):
|
475
|
+
pulumi.set(self, "key", value)
|
476
|
+
|
477
|
+
@_builtins.property
|
478
|
+
@pulumi.getter
|
479
|
+
def value(self) -> pulumi.Input[_builtins.str]:
|
480
|
+
"""
|
481
|
+
The value of the Label.
|
482
|
+
"""
|
483
|
+
return pulumi.get(self, "value")
|
484
|
+
|
485
|
+
@value.setter
|
486
|
+
def value(self, value: pulumi.Input[_builtins.str]):
|
487
|
+
pulumi.set(self, "value", value)
|
488
|
+
|
489
|
+
|
379
490
|
if not MYPY:
|
380
491
|
class BackupPlanBackupConfigSelectedNamespacesArgsDict(TypedDict):
|
381
492
|
namespaces: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]
|
@@ -660,6 +660,42 @@ class BackupPlan(pulumi.CustomResource):
|
|
660
660
|
},
|
661
661
|
})
|
662
662
|
```
|
663
|
+
### Gkebackup Backupplan Nslabels
|
664
|
+
|
665
|
+
```python
|
666
|
+
import pulumi
|
667
|
+
import pulumi_gcp as gcp
|
668
|
+
|
669
|
+
primary = gcp.container.Cluster("primary",
|
670
|
+
name="nslabels-cluster",
|
671
|
+
location="us-central1",
|
672
|
+
initial_node_count=1,
|
673
|
+
workload_identity_config={
|
674
|
+
"workload_pool": "my-project-name.svc.id.goog",
|
675
|
+
},
|
676
|
+
addons_config={
|
677
|
+
"gke_backup_agent_config": {
|
678
|
+
"enabled": True,
|
679
|
+
},
|
680
|
+
},
|
681
|
+
deletion_protection=True,
|
682
|
+
network="default",
|
683
|
+
subnetwork="default")
|
684
|
+
nslabels = gcp.gkebackup.BackupPlan("nslabels",
|
685
|
+
name="nslabels-plan",
|
686
|
+
cluster=primary.id,
|
687
|
+
location="us-central1",
|
688
|
+
backup_config={
|
689
|
+
"include_volume_data": True,
|
690
|
+
"include_secrets": True,
|
691
|
+
"selected_namespace_labels": {
|
692
|
+
"resource_labels": [{
|
693
|
+
"key": "key1",
|
694
|
+
"value": "value1",
|
695
|
+
}],
|
696
|
+
},
|
697
|
+
})
|
698
|
+
```
|
663
699
|
### Gkebackup Backupplan Full
|
664
700
|
|
665
701
|
```python
|
@@ -1077,6 +1113,42 @@ class BackupPlan(pulumi.CustomResource):
|
|
1077
1113
|
},
|
1078
1114
|
})
|
1079
1115
|
```
|
1116
|
+
### Gkebackup Backupplan Nslabels
|
1117
|
+
|
1118
|
+
```python
|
1119
|
+
import pulumi
|
1120
|
+
import pulumi_gcp as gcp
|
1121
|
+
|
1122
|
+
primary = gcp.container.Cluster("primary",
|
1123
|
+
name="nslabels-cluster",
|
1124
|
+
location="us-central1",
|
1125
|
+
initial_node_count=1,
|
1126
|
+
workload_identity_config={
|
1127
|
+
"workload_pool": "my-project-name.svc.id.goog",
|
1128
|
+
},
|
1129
|
+
addons_config={
|
1130
|
+
"gke_backup_agent_config": {
|
1131
|
+
"enabled": True,
|
1132
|
+
},
|
1133
|
+
},
|
1134
|
+
deletion_protection=True,
|
1135
|
+
network="default",
|
1136
|
+
subnetwork="default")
|
1137
|
+
nslabels = gcp.gkebackup.BackupPlan("nslabels",
|
1138
|
+
name="nslabels-plan",
|
1139
|
+
cluster=primary.id,
|
1140
|
+
location="us-central1",
|
1141
|
+
backup_config={
|
1142
|
+
"include_volume_data": True,
|
1143
|
+
"include_secrets": True,
|
1144
|
+
"selected_namespace_labels": {
|
1145
|
+
"resource_labels": [{
|
1146
|
+
"key": "key1",
|
1147
|
+
"value": "value1",
|
1148
|
+
}],
|
1149
|
+
},
|
1150
|
+
})
|
1151
|
+
```
|
1080
1152
|
### Gkebackup Backupplan Full
|
1081
1153
|
|
1082
1154
|
```python
|
pulumi_gcp/gkebackup/outputs.py
CHANGED
@@ -20,6 +20,8 @@ __all__ = [
|
|
20
20
|
'BackupPlanBackupConfigEncryptionKey',
|
21
21
|
'BackupPlanBackupConfigSelectedApplications',
|
22
22
|
'BackupPlanBackupConfigSelectedApplicationsNamespacedName',
|
23
|
+
'BackupPlanBackupConfigSelectedNamespaceLabels',
|
24
|
+
'BackupPlanBackupConfigSelectedNamespaceLabelsResourceLabel',
|
23
25
|
'BackupPlanBackupConfigSelectedNamespaces',
|
24
26
|
'BackupPlanBackupSchedule',
|
25
27
|
'BackupPlanBackupScheduleRpoConfig',
|
@@ -68,6 +70,8 @@ class BackupPlanBackupConfig(dict):
|
|
68
70
|
suggest = "permissive_mode"
|
69
71
|
elif key == "selectedApplications":
|
70
72
|
suggest = "selected_applications"
|
73
|
+
elif key == "selectedNamespaceLabels":
|
74
|
+
suggest = "selected_namespace_labels"
|
71
75
|
elif key == "selectedNamespaces":
|
72
76
|
suggest = "selected_namespaces"
|
73
77
|
|
@@ -89,6 +93,7 @@ class BackupPlanBackupConfig(dict):
|
|
89
93
|
include_volume_data: Optional[_builtins.bool] = None,
|
90
94
|
permissive_mode: Optional[_builtins.bool] = None,
|
91
95
|
selected_applications: Optional['outputs.BackupPlanBackupConfigSelectedApplications'] = None,
|
96
|
+
selected_namespace_labels: Optional['outputs.BackupPlanBackupConfigSelectedNamespaceLabels'] = None,
|
92
97
|
selected_namespaces: Optional['outputs.BackupPlanBackupConfigSelectedNamespaces'] = None):
|
93
98
|
"""
|
94
99
|
:param _builtins.bool all_namespaces: If True, include all namespaced resources.
|
@@ -104,6 +109,8 @@ class BackupPlanBackupConfig(dict):
|
|
104
109
|
non-standard or requires additional setup to restore.
|
105
110
|
:param 'BackupPlanBackupConfigSelectedApplicationsArgs' selected_applications: A list of namespaced Kubernetes Resources.
|
106
111
|
Structure is documented below.
|
112
|
+
:param 'BackupPlanBackupConfigSelectedNamespaceLabelsArgs' selected_namespace_labels: If set, include just the resources in the listed namespace Labels.
|
113
|
+
Structure is documented below.
|
107
114
|
:param 'BackupPlanBackupConfigSelectedNamespacesArgs' selected_namespaces: If set, include just the resources in the listed namespaces.
|
108
115
|
Structure is documented below.
|
109
116
|
"""
|
@@ -119,6 +126,8 @@ class BackupPlanBackupConfig(dict):
|
|
119
126
|
pulumi.set(__self__, "permissive_mode", permissive_mode)
|
120
127
|
if selected_applications is not None:
|
121
128
|
pulumi.set(__self__, "selected_applications", selected_applications)
|
129
|
+
if selected_namespace_labels is not None:
|
130
|
+
pulumi.set(__self__, "selected_namespace_labels", selected_namespace_labels)
|
122
131
|
if selected_namespaces is not None:
|
123
132
|
pulumi.set(__self__, "selected_namespaces", selected_namespaces)
|
124
133
|
|
@@ -177,6 +186,15 @@ class BackupPlanBackupConfig(dict):
|
|
177
186
|
"""
|
178
187
|
return pulumi.get(self, "selected_applications")
|
179
188
|
|
189
|
+
@_builtins.property
|
190
|
+
@pulumi.getter(name="selectedNamespaceLabels")
|
191
|
+
def selected_namespace_labels(self) -> Optional['outputs.BackupPlanBackupConfigSelectedNamespaceLabels']:
|
192
|
+
"""
|
193
|
+
If set, include just the resources in the listed namespace Labels.
|
194
|
+
Structure is documented below.
|
195
|
+
"""
|
196
|
+
return pulumi.get(self, "selected_namespace_labels")
|
197
|
+
|
180
198
|
@_builtins.property
|
181
199
|
@pulumi.getter(name="selectedNamespaces")
|
182
200
|
def selected_namespaces(self) -> Optional['outputs.BackupPlanBackupConfigSelectedNamespaces']:
|
@@ -288,6 +306,72 @@ class BackupPlanBackupConfigSelectedApplicationsNamespacedName(dict):
|
|
288
306
|
return pulumi.get(self, "namespace")
|
289
307
|
|
290
308
|
|
309
|
+
@pulumi.output_type
|
310
|
+
class BackupPlanBackupConfigSelectedNamespaceLabels(dict):
|
311
|
+
@staticmethod
|
312
|
+
def __key_warning(key: str):
|
313
|
+
suggest = None
|
314
|
+
if key == "resourceLabels":
|
315
|
+
suggest = "resource_labels"
|
316
|
+
|
317
|
+
if suggest:
|
318
|
+
pulumi.log.warn(f"Key '{key}' not found in BackupPlanBackupConfigSelectedNamespaceLabels. Access the value via the '{suggest}' property getter instead.")
|
319
|
+
|
320
|
+
def __getitem__(self, key: str) -> Any:
|
321
|
+
BackupPlanBackupConfigSelectedNamespaceLabels.__key_warning(key)
|
322
|
+
return super().__getitem__(key)
|
323
|
+
|
324
|
+
def get(self, key: str, default = None) -> Any:
|
325
|
+
BackupPlanBackupConfigSelectedNamespaceLabels.__key_warning(key)
|
326
|
+
return super().get(key, default)
|
327
|
+
|
328
|
+
def __init__(__self__, *,
|
329
|
+
resource_labels: Sequence['outputs.BackupPlanBackupConfigSelectedNamespaceLabelsResourceLabel']):
|
330
|
+
"""
|
331
|
+
:param Sequence['BackupPlanBackupConfigSelectedNamespaceLabelsResourceLabelArgs'] resource_labels: A list of Kubernetes Namespace labels.
|
332
|
+
Structure is documented below.
|
333
|
+
"""
|
334
|
+
pulumi.set(__self__, "resource_labels", resource_labels)
|
335
|
+
|
336
|
+
@_builtins.property
|
337
|
+
@pulumi.getter(name="resourceLabels")
|
338
|
+
def resource_labels(self) -> Sequence['outputs.BackupPlanBackupConfigSelectedNamespaceLabelsResourceLabel']:
|
339
|
+
"""
|
340
|
+
A list of Kubernetes Namespace labels.
|
341
|
+
Structure is documented below.
|
342
|
+
"""
|
343
|
+
return pulumi.get(self, "resource_labels")
|
344
|
+
|
345
|
+
|
346
|
+
@pulumi.output_type
|
347
|
+
class BackupPlanBackupConfigSelectedNamespaceLabelsResourceLabel(dict):
|
348
|
+
def __init__(__self__, *,
|
349
|
+
key: _builtins.str,
|
350
|
+
value: _builtins.str):
|
351
|
+
"""
|
352
|
+
:param _builtins.str key: The key of the kubernetes label.
|
353
|
+
:param _builtins.str value: The value of the Label.
|
354
|
+
"""
|
355
|
+
pulumi.set(__self__, "key", key)
|
356
|
+
pulumi.set(__self__, "value", value)
|
357
|
+
|
358
|
+
@_builtins.property
|
359
|
+
@pulumi.getter
|
360
|
+
def key(self) -> _builtins.str:
|
361
|
+
"""
|
362
|
+
The key of the kubernetes label.
|
363
|
+
"""
|
364
|
+
return pulumi.get(self, "key")
|
365
|
+
|
366
|
+
@_builtins.property
|
367
|
+
@pulumi.getter
|
368
|
+
def value(self) -> _builtins.str:
|
369
|
+
"""
|
370
|
+
The value of the Label.
|
371
|
+
"""
|
372
|
+
return pulumi.get(self, "value")
|
373
|
+
|
374
|
+
|
291
375
|
@pulumi.output_type
|
292
376
|
class BackupPlanBackupConfigSelectedNamespaces(dict):
|
293
377
|
def __init__(__self__, *,
|