Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

In the current implementation, ACM supports multi-participant with same supported element Type but different participantId, so they need different properties file.

...

Can a participant share the database with other replicas? Yes, if participants do not work with same composition/instance at same time.

Shared database with same supported element Type: a composition will be connected to a specific participantId, so only one participant will do actions with this composition and his instances. But it can fetch all compositions that are sharing.
In a restarting scenario the participant will change the participantId, and it can still fetch compositions and instances. ACM-runtime decides who has to work with, and Participant will do actions based on the message.

...

  • 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/compositions


Code Block
languagexml
collapsetrue
{
  "settings": {
    "index": {
      "number_of_shards": 2,
      "number_of_replicas": 1
    }
  },
  "mappings": {
    "properties": {
      "compositionId": {
        "type": "text"
      }
    }
  }
}

Create a composition document

POST https://{{address}}:9200/compositions/_doc/0da7f17d-68d4-47f3-9dbf-b380413c5fad

Code Block
languagexml
collapsetrue
{
  "compositionId": "0da7f17d-68d4-47f3-9dbf-b380413c5fad",
  "automationCompositionElementDefinitionList": [
    {
      "acElementDefinitionId": {
        "name": "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElement",
        "version": "1.2.3"
      },
      "automationCompositionElementToscaNodeTemplate": {
        "type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement",
        "type_version": "1.0.0",
        "properties": {
          "provider": "ONAP",
          "startPhase": 0,
          "uninitializedToPassiveTimeout": 180,
          "podStatusCheckInterval": 30
        },
        "name": "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElement",
        "version": "1.2.3",
        "metadata": {},
        "description": "Automation composition element for the K8S microservice for AC Element Starter"
      },
      "outProperties": {}
    },
    {
      "acElementDefinitionId": {
        "name": "onap.policy.clamp.ac.element.K8S_BridgeAutomationCompositionElement",
        "version": "1.2.3"
      },
      "automationCompositionElementToscaNodeTemplate": {
        "type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement",
        "type_version": "1.0.0",
        "properties": {
          "provider": "ONAP",
          "startPhase": 0,
          "uninitializedToPassiveTimeout": 180,
          "podStatusCheckInterval": 30
        },
        "name": "onap.policy.clamp.ac.element.K8S_BridgeAutomationCompositionElement",
        "version": "1.2.3",
        "metadata": {},
        "description": "Automation composition element for the K8S microservice for AC Element Bridge"
      },
      "outProperties": {}
    },
    {
      "acElementDefinitionId": {
        "name": "onap.policy.clamp.ac.element.K8S_SinkAutomationCompositionElement",
        "version": "1.2.3"
      },
      "automationCompositionElementToscaNodeTemplate": {
        "type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement",
        "type_version": "1.0.0",
        "properties": {
          "provider": "ONAP",
          "startPhase": 0,
          "uninitializedToPassiveTimeout": 180,
          "podStatusCheckInterval": 30
        },
        "name": "onap.policy.clamp.ac.element.K8S_SinkAutomationCompositionElement",
        "version": "1.2.3",
        "metadata": {},
        "description": "Automation composition element for the K8S microservice for AC Element Sink"
      },
      "outProperties": {}
    }
  ]
}

Fetch a composition document

GET https://{{address}}:9200/compositions/_doc/0da7f17d-68d4-47f3-9dbf-b380413c5fad

Create an instance index

PUT https://{{address}}:9200/instances

Code Block
languagexml
collapsetrue
{
  "settings": {
    "index": {
      "number_of_shards": 2,
      "number_of_replicas": 1
    }
  },
  "mappings": {
    "properties": {
      "instanceId": {
        "type": "text"
      }
    }
  }
}

...

Create an instance document

POST https://{{address}}:9200/instances/_doc/caf50cde-11a2-4915-a49c-609762714a6f

Code Block
languagexml
collapsetrue
{
    "instanceId": "caf50cde-11a2-4915-a49c-609762714a6f",
    "compositionId": "0da7f17d-68d4-47f3-9dbf-b380413c5fad",
    "deployState": "DEPLOYED",
    "lockState": "LOCKED",
    "elements": {
        "709c62b3-8918-41b9-a747-d21eb79c6c23": {
            "id": "709c62b3-8918-41b9-a747-d21eb79c6c23",
            "definition": {
                "name": "onap.policy.clamp.ac.element.Http_SinkAutomationCompositionElement",
                "version": "1.2.3"
            },
            "deployState": "DEPLOYED",
            "lockState": "LOCKED",
            "properties": {
                "baseUrl": "http://10.101.0.249:30802",
                "httpHeaders": {
                    "Content-Type": "application/json",
                    "Authorization": "Basic YWNtVXNlcjp6YiFYenRHMzQ="
                },
                "configurationEntities": [
                    {
                        "configurationEntityId": {
                            "name": "onap.policy.clamp.ac.sink",
                            "version": "1.0.0"
                        },
                        "restSequence": [
                            {
                                "restRequestId": {
                                    "name": "request3",
                                    "version": "1.0.1"
                                },
                                "httpMethod": "POST",
                                "path": "/activate",
                                "body": "{ \"receiverId\": { \"name\": \"onap.policy.clamp.ac.sink\", \"version\": \"1.0.0\" }, \"timerMs\": 20000, \"elementType\": \"SINK\", \"topicParameterGroup\": { \"server\": \"message-router\", \"listenerTopic\": \"POLICY_UPDATE_MSG\", \"publisherTopic\": \"AC_ELEMENT_MSG\", \"fetchTimeout\": 15000, \"topicCommInfrastructure\": \"dmaap\" } }",
                                "expectedResponse": 201
                            }
                        ]
                    }
                ]
            },
            "outProperties": {}
        },
        "709c62b3-8918-41b9-a747-d21eb79c6c24": {
            "id": "709c62b3-8918-41b9-a747-d21eb79c6c24",
            "definition": {
                "name": "onap.policy.clamp.ac.element.Http_StarterAutomationCompositionElement",
                "version": "1.2.3"
            },
            "deployState": "DEPLOYED",
            "lockState": "LOCKED",
            "properties": {
                "baseUrl": "http://10.101.0.249:30800",
                "httpHeaders": {
                    "Content-Type": "application/json",
                    "Authorization": "Basic YWNtVXNlcjp6YiFYenRHMzQ="
                },
                "configurationEntities": [
                    {
                        "configurationEntityId": {
                            "name": "onap.policy.clamp.ac.starter",
                            "version": "1.0.0"
                        },
                        "restSequence": [
                            {
                                "restRequestId": {
                                    "name": "request1",
                                    "version": "1.0.1"
                                },
                                "httpMethod": "POST",
                                "path": "/activate",
                                "body": "{ \"receiverId\": { \"name\": \"onap.policy.clamp.ac.startertobridge\", \"version\": \"1.0.0\" }, \"timerMs\": 20000, \"elementType\": \"STARTER\", \"topicParameterGroup\": { \"server\": \"message-router:3904\", \"listenerTopic\": \"POLICY_UPDATE_MSG\", \"publisherTopic\": \"AC_ELEMENT_MSG\", \"fetchTimeout\": 15000, \"topicCommInfrastructure\": \"dmaap\" } }",
                                "expectedResponse": 201
                            }
                        ]
                    }
                ]
            },
            "outProperties": {}
        },
        "709c62b3-8918-41b9-a747-d21eb79c6c25": {
            "id": "709c62b3-8918-41b9-a747-d21eb79c6c25",
            "definition": {
                "name": "onap.policy.clamp.ac.element.Http_BridgeAutomationCompositionElement",
                "version": "1.2.3"
            },
            "deployState": "DEPLOYED",
            "lockState": "LOCKED",
            "properties": {
                "baseUrl": "http://10.101.0.249:30801",
                "httpHeaders": {
                    "Content-Type": "application/json",
                    "Authorization": "Basic YWNtVXNlcjp6YiFYenRHMzQ="
                },
                "configurationEntities": [
                    {
                        "configurationEntityId": {
                            "name": "onap.policy.clamp.ac.bridge",
                            "version": "1.0.0"
                        },
                        "restSequence": [
                            {
                                "restRequestId": {
                                    "name": "request2",
                                    "version": "1.0.1"
                                },
                                "httpMethod": "POST",
                                "path": "/activate",
                                "body": "{ \"receiverId\": { \"name\": \"onap.policy.clamp.ac.bridgetosink\", \"version\": \"1.0.0\" }, \"timerMs\": 20000, \"elementType\": \"BRIDGE\", \"topicParameterGroup\": { \"server\": \"message-router:3904\", \"listenerTopic\": \"POLICY_UPDATE_MSG\", \"publisherTopic\": \"AC_ELEMENT_MSG\", \"fetchTimeout\": 15000, \"topicCommInfrastructure\": \"dmaap\" } }",
                                "expectedResponse": 201
                            }
                        ]
                    }
                ]
            },
            "outProperties": {}
        }
    },
    "stateChangeResult": "NO_ERROR"
}

Fetch an instance document

GET https://{{address}}:9200/instances/_doc/caf50cde-11a2-4915-a49c-609762714a6f