In the current implementation, ACM supports multi-participant with same supported element Type but different participantId, so they need different properties file.
...
Distributed Coordinator ED (Etcd): Distributed systems use etcd as a consistent key-value store for configuration management, service discovery, and coordinating distributed work. Many organizations use etcd to implement production systems such as container schedulers, service discovery services, and distributed data storage.
- Document Database PG (PostgreSql)
- Key Value Database AG (Apache Geode): Apache Geode provides a database-like consistency model, reliable transaction processing and a shared-nothing architecture to maintain very low latency performance with high concurrency processing.(https://geode.apache.org/docs/guide/114/getting_started/intro_to_clients.html) or (https://docs.spring.io/spring-boot-data-geode-build/1.7.5/reference/html5/).
- Key Value Database RD (Redis): RDB is NOT good if you need to minimize the chance of data loss in case Redis stops working.
- Wide Column Database CD (Apache Cassandra)
- Search Engine (Open Search): It supports Rest Api, https://opensearch.org/docs/latest/clients/java/
...
Create a composition index
PUT https://{{address}}:9200/composition
Code Block | ||
---|---|---|
| ||
{ "settings": { "index": { "number_of_shards": 2, "number_of_replicas": 1 } }, "mappings": { "properties": { "id": { "type": "text" } } }, "aliases": { "sample-alias1": {} } } |
Create a composition document
POST https://{{address}}:9200/composition/_doc/0da7f17d-68d4-47f3-9dbf-b380413c5fad
Code Block | ||||
---|---|---|---|---|
| ||||
{ "id": "0da7f17d-68d4-47f3-9dbf-b380413c5fad", "dataautomationCompositionElementDefinitionList": [ { "tosca_definitions_version": "tosca_simple_yaml_1_3", "data_typesacElementDefinitionId": { "onap.datatypes.ToscaConceptIdentifier": { "name": "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElement", "derived_fromversion": "tosca1.datatypes2.Root3", "properties": { }, "nameautomationCompositionElementToscaNodeTemplate": { "type": "stringorg.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement", "requiredtype_version": true"1.0.0", },"properties": { "versionprovider": {"ONAP", "typestartPhase": "string"0, "requireduninitializedToPassiveTimeout": true180, } "podStatusCheckInterval": 30 } }, "org.onap.datatypes "name": "onap.policy.clamp.acmac.httpAutomationCompositionElementelement.RestRequest": {K8S_StarterAutomationCompositionElement", "version": "1.02.03", "derived_frommetadata": "tosca.datatypes.Root",{}, "propertiesdescription": "Automation {composition element for the K8S microservice for AC Element Starter"restRequestId": { }, "typeoutProperties": "onap.datatypes.ToscaConceptIdentifier", {} }, { "requiredacElementDefinitionId": true, { "descriptionname": "The name and version of a REST request to be sent to a REST endpoint" onap.policy.clamp.ac.element.K8S_BridgeAutomationCompositionElement", "version": "1.2.3" }, "httpMethodautomationCompositionElementToscaNodeTemplate": { "type": "stringorg.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement", "requiredtype_version": true, "1.0.0", "constraintsproperties": { [ "provider": "ONAP", { "startPhase": 0, "valid_values": [ "uninitializedToPassiveTimeout": 180, "POSTpodStatusCheckInterval",: 30 }, "PUT", "name": "onap.policy.clamp.ac.element.K8S_BridgeAutomationCompositionElement", "version": "1.2.3", "GETmetadata": {}, "description": "Automation composition element for the K8S microservice "DELETE"for AC Element Bridge" }, ] "outProperties": {} }, }{ "acElementDefinitionId": { ], "name": "onap.policy.clamp.ac.element.K8S_SinkAutomationCompositionElement", "description": "The REST method to use"version" : "1.2.3" }, "pathautomationCompositionElementToscaNodeTemplate": { "type": "string", "required": true, "description": "The path of the REST request relative to the base URL" }, "body": { "type": "string", "required": false, "description": "The body of the REST request for PUT and POST requests" }, "expectedResponse": { "type": "integer", "required": true, "constraints": [], "description": "THe expected HTTP status code for the REST request" } } }, "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity": { "version": "1.0.0", "derived_from": "tosca.datatypes.Root", "properties": { "configurationEntityId": { "type": "onap.datatypes.ToscaConceptIdentifier", "required": true, "description": "The name and version of a Configuration Entity to be handled by the HTTP Automation Composition Element" }, "restSequence": { "type": "list", "entry_schema": { "type": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest", "type_version": "1.0.0" }, "description": "A sequence of REST commands to send to the REST endpoint" } } } }, "node_types": { "org.onap.policy.clamp.acm.Participant": { "version": "1.0.1", "derived_from": "tosca.nodetypes.Root", "properties": { "provider": { "type": "string", "required": false } } }, "org.onap.policy.clamp.acm.AutomationCompositionElement": { "version": "1.0.1", "derived_from": "tosca.nodetypes.Root", "properties": { "provider": { "type": "string", "required": false, "metadata": { "common": true }, "description": "Specifies the organization that provides the automation composition element" }, "startPhase": { "type": "integer", "required": false, "constraints": [ { "greater_or_equal": 0 } ], "metadata": { "common": true }, "description": "A value indicating the start phase in which this automation composition element will be started, the first start phase is zero. Automation Composition Elements are started in their start_phase order and stopped in reverse start phase order. Automation Composition Elements with the same start phase are started and stopped simultaneously" }, "uninitializedToPassiveTimeout": { "type": "integer", "required": false, "constraints": [ { "greater_or_equal": 0 } ], "default": 60, "metadata": { "common": true }, "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive" } } }, "org.onap.policy.clamp.acm.AutomationComposition": { "version": "1.0.1", "derived_from": "tosca.nodetypes.Root", "properties": { "provider": { "type": "string", "required": false, "metadata": { "common": true }, "description": "Specifies the organization that provides the automation composition element" }, "elements": { "type": "list", "required": true, "metadata": { "common": true }, "entry_schema": { "type": "onap.datatypes.ToscaConceptIdentifier" }, "description": "Specifies a list of automation composition element definitions that make up this automation composition definition" } } }, "org.onap.policy.clamp.acm.HttpAutomationCompositionElement": { "version": "1.0.0", "derived_from": "org.onap.policy.clamp.acm.AutomationCompositionElement", "properties": { "baseUrl": { "type": "string", "required": true, "description": "The base URL to be prepended to each path, identifies the host for the REST endpoints." }, "httpHeaders": { "type": "map", "required": false, "entry_schema": { "type": "string" }, "description": "HTTP headers to send on REST requests" }, "configurationEntities": { "type": "map", "required": true, "entry_schema": { "type": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity", "type_version": "1.0.0" }, "description": "The connfiguration entities the Automation Composition Element is managing and their associated REST requests" } } } }, "topology_template": { "node_templates": { "org.onap.policy.clamp.acm.HttpParticipant": { "version": "2.3.4", "type": "org.onap.policy.clamp.acm.Participant", "type_version": "1.0.1", "description": "Participant for Http requests", "properties": { "provider": "ONAP" } }, "onap.policy.clamp.ac.element.Http_StarterAutomationCompositionElement": { "version": "1.2.3", "type": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement", "type_version": "1.0.0", "description": "Automation composition element for the http requests of AC Element Starter microservice", "properties": { "provider": "ONAP", "uninitializedToPassiveTimeout": 180, "startPhase": 0 } }, "onap.policy.clamp.ac.element.Http_BridgeAutomationCompositionElement": { "version": "1.2.3", "type": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement", "type_version": "1.0.0", "description": "Automation composition element for the http requests of AC Element Bridge microservice", "properties": { "provider": "ONAP", "uninitializedToPassiveTimeout": 180, "startPhase": 0 } }, "onap.policy.clamp.ac.element.Http_SinkAutomationCompositionElement": { "version": "1.2.3", "type": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement", "type_version": "1.0.0", "description": "Automation composition element for the http requests of AC Element Sink microservice", "properties": { "provider": "ONAP", "uninitializedToPassiveTimeout": 180, "startPhase": 0 } }, "onap.policy.clamp.ac.element.AutomationCompositionDefinition": { "version": "1.2.3", "type": "org.onap.policy.clamp.acm.AutomationComposition", "type_version": "1.0.1", "description": "Automation composition for Demp", "properties": { "provider": "ONAP", "elements": [ { "name": "org.onap.policy.clamp.ac.element.Http_StarterAutomationCompositionElement", acm.K8SMicroserviceAutomationCompositionElement", "type_version": "1.20.3" }0", "properties": { "nameprovider": "onap.policy.clamp.ac.element.Http_BridgeAutomationCompositionElementONAP", "versionstartPhase": "1.2.3" 0, "uninitializedToPassiveTimeout": 180, }, "podStatusCheckInterval": 30 { }, "name": "onap.policy.clamp.ac.element.HttpK8S_SinkAutomationCompositionElement", "version": "1.2.3", "metadata": {}, } "description": "Automation composition element for the K8S microservice for ]AC Element Sink" }, "outProperties": {} } } }] } |
Fetch a composition
GET https://{{address}}:9200/composition/_doc/0da7f17d-68d4-47f3-9dbf-b380413c5fad