This page details the test specification for ACM for all new and existing functionality.
Prerequisites
- Access to a development laptop capable of running many docker containers
- Access to a Kubernetes cluster, either locally or remotely (if carrying out kubernetes participant tests)
Environment Setup
The immediate components like, acm, participants, databases etc will be deployed in your local environment using docker compose configurations from the policy/docker repo details are in the documentation here. However, we want to add mock participants for http, k8s and policy participants. So, we have to replace the docker-compose.yaml
in the policy/docker `/compose` directory with this one
Once this change is made, we can bring up all our required components with `./start-compose.sh policy-clamp-runtime-acm`
Test Group Setup Steps
Steps for Scenario Setup | Scenario Finish Steps | |
---|---|---|
Successful Endpoint Interaction | ||
Non-Successful Endpoint Interaction | ||
Failure Handling Scenario |
| |
Participant Set Properties Scenario |
| |
Participant Restart Scenario | ||
Multiple Simultaneous Message Scenario | ||
Timeout Scenario |
| |
Update Scenario | ||
Check Validation Scenario | ||
Test Cases
In all test cases, that are calling rest endpoints, it is the ACM rest API that is being called. The url prefix to each rest call is: IP_ADDRESS:RUNTIME_PORT/onap/policy/clamp/acm/v2/. Use the provided POSTMAN collection to make the relevant calls.
Functionality Being Tested | Title | Test case | Steps | Expected Result | Test Result PASS/FAIL | Notes | Mock Participant |
---|---|---|---|---|---|---|---|
Failure Handling | Prime AC Def and confirm test failure from from http, k8s and policy participants | Prime AC def - http, k8s and policy participants should send back error message |
| 200 response In the response json, we should see – "state": "PRIMING" – and also a message in each element "Prime failed!" | HTTP Participant, K8s Participant, Policy Participant | Y | |
Failure Handling | Deprime AC Def and confirm test failure from from http, k8s and policy participants | Deprime AC def - http, k8s and policy participants should send back error message |
| 200 response In the response json, we should see – "state": "PRIMED" – and also a message in each element "Deprime failed!" | HTTP Participant, K8s Participant, Policy Participant | Y | |
Failure Handling | Deploy AC instance and confirm test failure from http, k8s and policy participants | Deploy AC instance - http, k8s and policy participants should send back error message |
| 200 response with an "automationCompositionList" In the JSON returned, the instance deployState should be "DEPLOYING" Each element should contain the message "Deploy failed!" | HTTP Participant, K8s Participant, Policy Participant | Y | |
Failure Handling | Undeploy AC instance and confirm test failure from from http, k8s and policy participants | Undeploy AC instance - http, k8s and policy participants should send back error message |
| 200 response we should see the overall "deployState: UNDEPLOYING" with a message in each element that says "Deployed" | HTTP Participant, K8s Participant, Policy Participant | Y | |
Failure Handling | Delete AC instance and confirm test failure from from http, k8s and policy participants | Delete AC instance - http, k8s and policy participants should send back error message |
| 200 response with an "automationCompositionList" In the JSON returned, the instance deployState should be "DELETING" Each element should contain the message "Undeployed" | HTTP Participant, K8s Participant, Policy Participant | Y | |
Failure Handling | Update AC instance and confirm test failure from from http, k8s and policy participants | Update AC instance - http, k8s and policy participants should send back error message |
| 200 response with an "automationCompositionList" In the JSON returned, the instance deployState should be "UPDATING" Each element should contain the message "Update failed!" | HTTP Participant, K8s Participant, Policy Participant | Y | |
Failure Handling | Unlock AC instance and confirm test failure from from http, k8s and policy participants | Unlock AC instance - http, k8s and policy participants should send back error message |
| 200 response with an "automationCompositionList" In the JSON returned, the instance deployState should be "UNLOCKING" Each element should contain the message "Unlock failed!" | HTTP Participant, K8s Participant, Policy Participant | Y | |
Failure Handling | Lock AC instance and confirm test failure from from http, k8s and policy participants | Lock AC instance - http, k8s and policy participants should send back error message |
| 200 response with an "automationCompositionList" In the JSON returned, the instance deployState should be "LOCKING" Each element should contain the message "Unlocked" | HTTP Participant, K8s Participant, Policy Participant | Y | |
Timeout | Prime AC Def and confirm timeout from from http, k8s and policy participants | Prime AC def - http, k8s and policy participants operation should timeout after 30 seconds |
| 200 response In the response json, we should see – "state": "COMMISSIONED" – and also a stateChangeResult: NO_ERROR - so depriming has worked after the timeout. | HTTP Participant, K8s Participant, Policy Participant | Y | |
Timeout | Deprime AC Def and confirm timeout from from http, k8s and policy participants | Deprime AC def - http, k8s and policy participants should timeout after 30 seconds |
| 200 response In the response json, we should see – "state": "PRIMED" – and also a stateChangeResult: NO_ERROR | HTTP Participant, K8s Participant, Policy Participant | Y | |
Timeout | Deploy AC instance and confirm timeout from http, k8s and policy participants | Deploy AC instance - http, k8s and policy participants should timeout after 30 seconds |
| 200 response with an "automationCompositionList" In the JSON returned, the instance deployState should be "UNDEPLOYED" | HTTP Participant, K8s Participant, Policy Participant | Y | |
Timeout | Undeploy AC instance and confirm timeout from from http, k8s and policy participants | Undeploy AC instance - http, k8s and policy participants should timeout after 30 seconds |
| 200 response we should see the overall "deployState: DEPLOYED" with a message in each element that says "Deployed" | HTTP Participant, K8s Participant, Policy Participant | Y | |
Timeout | Delete AC instance and confirm test failure from from http, k8s and policy participants | Delete AC instance - http, k8s and policy participants should send back error message |
| 200 response with an "automationCompositionList" It should be empty | HTTP Participant, K8s Participant, Policy Participant | Y | |
Timeout | Update AC instance and confirm test failure from from http, k8s and policy participants | Update AC instance - http, k8s and policy participants should send back error message |
| 200 response with an "automationCompositionList" In the JSON returned, the instance deployState should be "UPDATING" Each element should contain the message "Update failed!" | HTTP Participant, K8s Participant, Policy Participant | Y | |
Timeout | Unlock AC instance and confirm test failure from from http, k8s and policy participants | Unlock AC instance - http, k8s and policy participants should send back error message |
| 200 response with an "automationCompositionList" In the JSON returned, the instance deployState should be "UNLOCKING" Each element should contain the message "Unlock failed!" | HTTP Participant, K8s Participant, Policy Participant | Y | |
Timeout | Lock AC instance and confirm test failure from from http, k8s and policy participants | Lock AC instance - http, k8s and policy participants should send back error message |
| 200 response with an "automationCompositionList" In the JSON returned, the instance deployState should be "LOCKING" Each element should contain the message "Unlocked" | HTTP Participant, K8s Participant, Policy Participant | Y | |
Participant Out Properties | Set outProperties using the participant and retrieve them from the database | Any properties we set on the participant-side "outProperties" object should be retrievable from ACM |
| 200 response with an "automationCompositionList" The outProperties object should now look like the json illustrated in the next column | "outProperties": { | Y | |
Participant Out Properties | Try to Set outProperties using the participant and retrieve them from the database before the instance is deployed | Any properties we set on the participant-side "outProperties" object should not be retrievable from ACM before the instance is deployed |
| 200 response with an "automationCompositionList" The outProperties object should be empty as before | Y | ||
Multiple Messages Scenario | LOCK the instance in "DEPLOYING/UNLOCKING" state | Execute PUT request on runtime acm. {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId}}/instances/{{instanceId}} | 200 Response The runtime should allow undeploy operation and deleting the instance when one or more element is stuck in DEPLOYING state | ||||
Non-Successful Endpoint Interaction | Delete AC defintion after priming | Delete the commissioned defintion type2 after priming | Execute DELETE request on runtime acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId2}} | 400 Bad Request response. Should not allow to delete when primed | "ACM not in COMMISSIONED state, Update of ACM Definition not allowed" | ||
Non-Successful Endpoint Interaction | Update AC definition after priming | Update AC definition type 2 after priming | Execute PUT request on runtime acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId2}} | 406 Not acceptable response Should not allow to update when primed | |||
Non-Successful Endpoint Interaction | Shut down participant and Deploy | Shutdown one of the participants and trigger deployment | Remove one of the participant. Execute PUT request on runtime acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId1}}/instances/{{instanceId1}} | 406 Not acceptable response. Verify if runtime is restricting the deploy operation when one or more associated particpant is OFFLINE | Needs updating because of new validation that ppnt is online | ||
Non-Successful Endpoint Interaction | Delete AC instance with OFFLINE participant | Delete the AC instance after removing participant | Execute DELETE request on runtime-acm {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId2}}/instances/{{instanceId2}} | 202 Response Verify if runtime accepts the delete AC instance request when the associated participant is in OFFLINE state The overall state is stuck in DELETING and updated to TIMEOUT after the configured timeout is reached Verify the user is allowed to order a state change after TIMEOUT is reached | Needs updating because of new validation that ppnt is online | ||
Non-Successful Endpoint Interaction | Deprime AC defintion with OFFLINE participant | Deprime AC defintion when the participant is OFFLINE | Make sure the AC instance is deleted and shutdown the participant again. Execute PUT request on runtime acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId}} | 202 Response Verify the runtime allows to Deprime the definitions from all the participants when one of the participant is OFFLINE Verify the AC state is stuck in DEPRIMING and updated to TIMEOUT after the configured timeout is reached. | Needs updating because of new validation that ppnt is online | ||
Non-Successful Endpoint Interaction | Verify restricted operations in deployed state | Try to perform the following operations Delete the AC instance2 Deprime the Ac definition 2 Update the AC instance 2 | All the perfomed operations should return 400 response. The instances should not be allowed to get deleted or deprimed in Deployed state. Update IS allowed now | ||||
Non-Successful Endpoint Interaction | Update AC instance property after participant shutdown | Shutdown participant and trigger UPDATE | Shutdown the participant and trigger the update property event on the runtime as per the steps specified above | Verify if the rest request is accepted with 202 response Verify the PROPERTIES_UPDATE event is sent to the participants from runtime-acm. The ACM instance state should be "UPDATING" until the properties update is completed in the participant. The AC state should be updated as TIMEOUT after the configured timeout in runtime | This should be updated because the operation will no longer be allowed by ACM if the participant is OFFLINE | ||
Non-Successful Endpoint Interaction | Shut down participant on UNLOCKED state | Shut down one of the participants on UNLOCKED state | Manually stop one of the participants | ??? Verify the behaviour of runtime when the participant is OFFLINE and the instances are deployed(it depend how restart will be implemented) | This should be updated because the operation will no longer be allowed by ACM if the participant is OFFLINE | ||
Restart Testing | Restart acm runtime | Restart runtime application | Manually restart the container or mvn application | Verify if the runtime comes up and running and get synced with the database. Retrieve participants and compositions from runtime endpoint. | microk8s kubectl delete pod policy-clamp-runtime-acm-7ff68ff9fd-kllb7 pod "policy-clamp-runtime-acm-7ff68ff9fd-kllb7" deleted | ||
Restart Testing | Shut down participant after priming | Restart any of the participant | Manually restart the container or mvn application Execute GET request on the runtime-acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/participants/ | Participants should get registered and get the primed definitions from runtime once they are up again. | |||
Restart Testing | Shut down any of the participant | Delete one of the participants permanently. Execute GET request on the runtime-acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/participants/ | Verify the removed participants should have been marked OFFLINE by the runtime. Verify fetching the automation compositions where the element of removed participants should not have participant ids associated. (it depend how restart will be implemented) | It needs 10 minutes on my deployment after requesting a Participant Report from all participants | |||
Restart Testing | Restart participant after Priming | Restart any of the participant | Manually restart the container or mvn application | Fetch participants list from runtime, restarted participant should get reregistered with runtime again. Fetch commisioned defintions, it should have elements with restarted participant id associated | |||
Successful Endpoint Interaction | Verify Participant Registration | Verify all the participants | Execute GET request on the runtime-acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/participants/ | Verify all the deployed participants with their Ids and current status are retrieved | |||
Successful Endpoint Interaction | CRUD Automation Composition Types | Create Automation Composition Type 1 | Execute POST request on the runtime-acm endpoint to create AC definition via Tosca service template {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions | 201 Response with compositionId | |||
Successful Endpoint Interaction | Create Automation composition Type 2 | Execute POST request on the runtime-acm endpoint to create a different AC definition via Tosca service template {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions | 201 Response with compositionId | ||||
Successful Endpoint Interaction | Update AC defintion | Update the AC type 1 with some changes in the common properties | Execute PUT request on runtime acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId1}} | 201 Response with composition Id | |||
Successful Endpoint Interaction | Delete AC defintion | Delete the Ac type 2 | Execute DELETE request on runtime acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId2}} | 200 Response | |||
Successful Endpoint Interaction | Fetch Commisioned definition before Priming | Get all the commisioned definitions from db | Execute GET request on the runtime-acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions | Verify two AC definitions are retrieved with all the elements. No participant Ids should have been associated with the elements yet before priming | { "service_templates": [ { "tosca_definitions_version": "tosca_simple_yaml_1_3", "data_types": { "onap.datatypes.ToscaConceptIdentifier": { "properties": { "name": { "name": "name", "type": "string", "type_version": "0.0.0", "required": true }, "version": { "name": "version", "type": "string", "type_version": "0.0.0", "required": true } }, "name": "onap.datatypes.ToscaConceptIdentifier", "version": "0.0.0", "derived_from": "tosca.datatypes.Root", "metadata": {} }, "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest": { "properties": { "restRequestId": { "name": "restRequestId", "type": "onap.datatypes.ToscaConceptIdentifier", "type_version": "0.0.0", "description": "The name and version of a REST request to be sent to a REST endpoint", "required": true }, "httpMethod": { "name": "httpMethod", "type": "string", "type_version": "0.0.0", "description": "The REST method to use", "required": true, "constraints": [ { "valid_values": [ "POST", "PUT", "GET", "DELETE" ] } ] }, "path": { "name": "path", "type": "string", "type_version": "0.0.0", "description": "The path of the REST request relative to the base URL", "required": true }, "body": { "name": "body", "type": "string", "type_version": "0.0.0", "description": "The body of the REST request for PUT and POST requests", "required": false }, "expectedResponse": { "name": "expectedResponse", "type": "integer", "type_version": "0.0.0", "description": "THe expected HTTP status code for the REST request", "required": true, "constraints": [] } }, "name": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest", "version": "1.0.0", "derived_from": "tosca.datatypes.Root", "metadata": {} }, "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity": { "properties": { "configurationEntityId": { "name": "configurationEntityId", "type": "onap.datatypes.ToscaConceptIdentifier", "type_version": "0.0.0", "description": "The name and version of a Configuration Entity to be handled by the HTTP Automation Composition Element", "required": true }, "restSequence": { "name": "restSequence", "type": "list", "type_version": "0.0.0", "description": "A sequence of REST commands to send to the REST endpoint", "required": false, "entry_schema": { "type": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest", "type_version": "1.0.0" } } }, "name": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity", "version": "1.0.0", "derived_from": "tosca.datatypes.Root", "metadata": {} } }, "node_types": { "org.onap.policy.clamp.acm.Participant": { "properties": { "provider": { "name": "provider", "type": "string", "type_version": "0.0.0", "required": false } }, "name": "org.onap.policy.clamp.acm.Participant", "version": "1.0.1", "derived_from": "tosca.nodetypes.Root", "metadata": {} }, "org.onap.policy.clamp.acm.AutomationCompositionElement": { "properties": { "provider": { "name": "provider", "type": "string", "type_version": "0.0.0", "description": "Specifies the organization that provides the automation composition element", "required": false, "metadata": { "common": "true" } }, "startPhase": { "name": "startPhase", "type": "integer", "type_version": "0.0.0", "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", "required": false, "constraints": [ { "greater_or_equal": "0" } ], "metadata": { "common": "true" } }, "uninitializedToPassiveTimeout": { "name": "uninitializedToPassiveTimeout", "type": "integer", "type_version": "0.0.0", "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", "default": 60.0, "required": false, "constraints": [ { "greater_or_equal": "0" } ], "metadata": { "common": "true" } }, "passiveToRunningTimeout": { "name": "passiveToRunningTimeout", "type": "integer", "type_version": "0.0.0", "description": "The maximum time in seconds to wait for a state chage from passive to running", "default": 60.0, "required": false, "constraints": [ { "greater_or_equal": "0" } ], "metadata": { "common": "true" } }, "runningToPassiveTimeout": { "name": "runningToPassiveTimeout", "type": "integer", "type_version": "0.0.0", "description": "The maximum time in seconds to wait for a state chage from running to passive", "default": 60.0, "required": false, "constraints": [ { "greater_or_equal": "0" } ], "metadata": { "common": "true" } }, "passiveToUninitializedTimeout": { "name": "passiveToUninitializedTimeout", "type": "integer", "type_version": "0.0.0", "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", "default": 60.0, "required": false, "constraints": [ { "greater_or_equal": "0" } ], "metadata": { "common": "true" } } }, "name": "org.onap.policy.clamp.acm.AutomationCompositionElement", "version": "1.0.1", "derived_from": "tosca.nodetypes.Root", "metadata": {} }, "org.onap.policy.clamp.acm.AutomationComposition": { "properties": { "provider": { "name": "provider", "type": "string", "type_version": "0.0.0", "description": "Specifies the organization that provides the automation composition element", "required": false, "metadata": { "common": "true" } }, "elements": { "name": "elements", "type": "list", "type_version": "0.0.0", "description": "Specifies a list of automation composition element definitions that make up this automation composition definition", "required": true, "entry_schema": { "type": "onap.datatypes.ToscaConceptIdentifier", "type_version": "0.0.0" }, "metadata": { "common": "true" } } }, "name": "org.onap.policy.clamp.acm.AutomationComposition", "version": "1.0.1", "derived_from": "tosca.nodetypes.Root", "metadata": {} }, "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement": { "properties": { "chart": { "name": "chart", "type": "string", "type_version": "0.0.0", "required": true }, "configs": { "name": "configs", "type": "list", "type_version": "0.0.0", "required": false }, "requirements": { "name": "requirements", "type": "string", "type_version": "0.0.0", "required": false }, "templates": { "name": "templates", "type": "list", "type_version": "0.0.0", "required": false }, "values": { "name": "values", "type": "string", "type_version": "0.0.0", "required": true } }, "name": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement", "version": "1.0.0", "derived_from": "org.onap.policy.clamp.acm.AutomationCompositionElement", "metadata": {} }, "org.onap.policy.clamp.acm.HttpAutomationCompositionElement": { "properties": { "baseUrl": { "name": "baseUrl", "type": "string", "type_version": "0.0.0", "description": "The base URL to be prepended to each path, identifies the host for the REST endpoints.", "required": true }, "httpHeaders": { "name": "httpHeaders", "type": "map", "type_version": "0.0.0", "description": "HTTP headers to send on REST requests", "required": false, "entry_schema": { "type": "string", "type_version": "0.0.0" } }, "configurationEntities": { "name": "configurationEntities", "type": "map", "type_version": "0.0.0", "description": "The connfiguration entities the Automation Composition Element is managing and their associated REST requests", "required": true, "entry_schema": { "type": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity", "type_version": "1.0.0" } } }, "name": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement", "version": "1.0.0", "derived_from": "org.onap.policy.clamp.acm.AutomationCompositionElement", "metadata": {} } }, "topology_template": { "node_templates": { "org.onap.k8s.acm.K8SAutomationCompositionParticipant": { "type": "org.onap.policy.clamp.acm.Participant", "type_version": "1.0.1", "properties": { "provider": "ONAP" }, "name": "org.onap.k8s.acm.K8SAutomationCompositionParticipant", "version": "2.3.4", "metadata": {}, "description": "Participant for K8S" }, "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElement": { "type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement", "type_version": "1.0.0", "properties": { "provider": "ONAP", "startPhase": 0, "uninitializedToPassiveTimeout": 300, "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" }, "onap.policy.clamp.ac.element.K8S_BridgeAutomationCompositionElement": { "type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement", "type_version": "1.0.0", "properties": { "provider": "ONAP", "startPhase": 0, "uninitializedToPassiveTimeout": 300, "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" }, "onap.policy.clamp.ac.element.K8S_SinkAutomationCompositionElement": { "type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement", "type_version": "1.0.0", "properties": { "provider": "ONAP", "startPhase": 0, "uninitializedToPassiveTimeout": 300, "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" }, "org.onap.policy.clamp.acm.HttpParticipant": { "type": "org.onap.policy.clamp.acm.Participant", "type_version": "1.0.1", "properties": { "provider": "ONAP" }, "name": "org.onap.policy.clamp.acm.HttpParticipant", "version": "2.3.4", "metadata": {}, "description": "Participant for Http requests" }, "onap.policy.clamp.ac.element.Http_StarterAutomationCompositionElement": { "type": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement", "type_version": "1.0.0", "properties": { "provider": "ONAP", "uninitializedToPassiveTimeout": 300, "startPhase": 1 }, "name": "onap.policy.clamp.ac.element.Http_StarterAutomationCompositionElement", "version": "1.2.3", "metadata": {}, "description": "Automation composition element for the http requests of AC Element Starter microservice" }, "onap.policy.clamp.ac.element.Http_BridgeAutomationCompositionElement": { "type": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement", "type_version": "1.0.0", "properties": { "provider": "ONAP", "uninitializedToPassiveTimeout": 300, "startPhase": 1 }, "name": "onap.policy.clamp.ac.element.Http_BridgeAutomationCompositionElement", "version": "1.2.3", "metadata": {}, "description": "Automation composition element for the http requests of AC Element Bridge microservice" }, "onap.policy.clamp.ac.element.Http_SinkAutomationCompositionElement": { "type": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement", "type_version": "1.0.0", "properties": { "provider": "ONAP", "uninitializedToPassiveTimeout": 300, "startPhase": 1 }, "name": "onap.policy.clamp.ac.element.Http_SinkAutomationCompositionElement", "version": "1.2.3", "metadata": {}, "description": "Automation composition element for the http requests of AC Element Sink microservice" }, "onap.policy.clamp.ac.element.AutomationCompositionDefinition": { "type": "org.onap.policy.clamp.acm.AutomationComposition", "type_version": "1.0.1", "properties": { "provider": "ONAP", "elements": [ { "name": "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElement", "version": "1.2.3" }, { "name": "onap.policy.clamp.ac.element.K8S_BridgeAutomationCompositionElement", "version": "1.2.3" }, { "name": "onap.policy.clamp.ac.element.K8S_SinkAutomationCompositionElement", "version": "1.2.3" }, { "name": "onap.policy.clamp.ac.element.Http_StarterAutomationCompositionElement", "version": "1.2.3" }, { "name": "onap.policy.clamp.ac.element.Http_BridgeAutomationCompositionElement", "version": "1.2.3" }, { "name": "onap.policy.clamp.ac.element.Http_SinkAutomationCompositionElement", "version": "1.2.3" } ] }, "name": "onap.policy.clamp.ac.element.AutomationCompositionDefinition", "version": "1.2.3", "metadata": {}, "description": "Automation composition for Demo" } }, "policies": [] }, "name": "tosca", "version": "1.0.0", "metadata": { "compositionId": "8c3f8b69-7464-40dc-b034-0f73f200729f" } } ] } | ||
Successful Endpoint Interaction | Priming | Prime AC definition 1 | Make sure both AC type 1 and 2 are commissioned. Execute PUT request on the runtime-acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId1}} Note: {{compositionId1}} is retrieved from the previous test response | 202 response | |||
Successful Endpoint Interaction | Prime AC definition 2 | Execute PUT request on the runtime-acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId2}} Note: {{compositionId2}} is retrieved from the previous test response | 202 response | Create the composition Type 2 again after it was deleted earlier | |||
Successful Endpoint Interaction | Fetch Commisioned definition after Priming | Get all the commisioned definitions from db | Execute GET request on the runtime-acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions | Two AC definitions retrieved with all the elements. Participant Ids should have been associated for each element | { "service_templates": [ { "tosca_definitions_version": "tosca_simple_yaml_1_3", "data_types": { "onap.datatypes.ToscaConceptIdentifier": { "properties": { "name": { "name": "name", "type": "string", "type_version": "0.0.0", "required": true }, "version": { "name": "version", "type": "string", "type_version": "0.0.0", "required": true } }, "name": "onap.datatypes.ToscaConceptIdentifier", "version": "0.0.0", "derived_from": "tosca.datatypes.Root", "metadata": {} }, "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest": { "properties": { "restRequestId": { "name": "restRequestId", "type": "onap.datatypes.ToscaConceptIdentifier", "type_version": "0.0.0", "description": "The name and version of a REST request to be sent to a REST endpoint", "required": true }, "httpMethod": { "name": "httpMethod", "type": "string", "type_version": "0.0.0", "description": "The REST method to use", "required": true, "constraints": [ { "valid_values": [ "POST", "PUT", "GET", "DELETE" ] } ] }, "path": { "name": "path", "type": "string", "type_version": "0.0.0", "description": "The path of the REST request relative to the base URL", "required": true }, "body": { "name": "body", "type": "string", "type_version": "0.0.0", "description": "The body of the REST request for PUT and POST requests", "required": false }, "expectedResponse": { "name": "expectedResponse", "type": "integer", "type_version": "0.0.0", "description": "THe expected HTTP status code for the REST request", "required": true, "constraints": [] } }, "name": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest", "version": "1.0.0", "derived_from": "tosca.datatypes.Root", "metadata": {} }, "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity": { "properties": { "configurationEntityId": { "name": "configurationEntityId", "type": "onap.datatypes.ToscaConceptIdentifier", "type_version": "0.0.0", "description": "The name and version of a Configuration Entity to be handled by the HTTP Automation Composition Element", "required": true }, "restSequence": { "name": "restSequence", "type": "list", "type_version": "0.0.0", "description": "A sequence of REST commands to send to the REST endpoint", "required": false, "entry_schema": { "type": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest", "type_version": "1.0.0" } } }, "name": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity", "version": "1.0.0", "derived_from": "tosca.datatypes.Root", "metadata": {} } }, "node_types": { "org.onap.policy.clamp.acm.Participant": { "properties": { "provider": { "name": "provider", "type": "string", "type_version": "0.0.0", "required": false } }, "name": "org.onap.policy.clamp.acm.Participant", "version": "1.0.1", "derived_from": "tosca.nodetypes.Root", "metadata": {} }, "org.onap.policy.clamp.acm.AutomationCompositionElement": { "properties": { "provider": { "name": "provider", "type": "string", "type_version": "0.0.0", "description": "Specifies the organization that provides the automation composition element", "required": false, "metadata": { "common": "true" } }, "startPhase": { "name": "startPhase", "type": "integer", "type_version": "0.0.0", "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", "required": false, "constraints": [ { "greater_or_equal": "0" } ], "metadata": { "common": "true" } }, "uninitializedToPassiveTimeout": { "name": "uninitializedToPassiveTimeout", "type": "integer", "type_version": "0.0.0", "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", "default": 60.0, "required": false, "constraints": [ { "greater_or_equal": "0" } ], "metadata": { "common": "true" } }, "passiveToRunningTimeout": { "name": "passiveToRunningTimeout", "type": "integer", "type_version": "0.0.0", "description": "The maximum time in seconds to wait for a state chage from passive to running", "default": 60.0, "required": false, "constraints": [ { "greater_or_equal": "0" } ], "metadata": { "common": "true" } }, "runningToPassiveTimeout": { "name": "runningToPassiveTimeout", "type": "integer", "type_version": "0.0.0", "description": "The maximum time in seconds to wait for a state chage from running to passive", "default": 60.0, "required": false, "constraints": [ { "greater_or_equal": "0" } ], "metadata": { "common": "true" } }, "passiveToUninitializedTimeout": { "name": "passiveToUninitializedTimeout", "type": "integer", "type_version": "0.0.0", "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized", "default": 60.0, "required": false, "constraints": [ { "greater_or_equal": "0" } ], "metadata": { "common": "true" } } }, "name": "org.onap.policy.clamp.acm.AutomationCompositionElement", "version": "1.0.1", "derived_from": "tosca.nodetypes.Root", "metadata": {} }, "org.onap.policy.clamp.acm.AutomationComposition": { "properties": { "provider": { "name": "provider", "type": "string", "type_version": "0.0.0", "description": "Specifies the organization that provides the automation composition element", "required": false, "metadata": { "common": "true" } }, "elements": { "name": "elements", "type": "list", "type_version": "0.0.0", "description": "Specifies a list of automation composition element definitions that make up this automation composition definition", "required": true, "entry_schema": { "type": "onap.datatypes.ToscaConceptIdentifier", "type_version": "0.0.0" }, "metadata": { "common": "true" } } }, "name": "org.onap.policy.clamp.acm.AutomationComposition", "version": "1.0.1", "derived_from": "tosca.nodetypes.Root", "metadata": {} }, "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement": { "properties": { "chart": { "name": "chart", "type": "string", "type_version": "0.0.0", "required": true }, "configs": { "name": "configs", "type": "list", "type_version": "0.0.0", "required": false }, "requirements": { "name": "requirements", "type": "string", "type_version": "0.0.0", "required": false }, "templates": { "name": "templates", "type": "list", "type_version": "0.0.0", "required": false }, "values": { "name": "values", "type": "string", "type_version": "0.0.0", "required": true } }, "name": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement", "version": "1.0.0", "derived_from": "org.onap.policy.clamp.acm.AutomationCompositionElement", "metadata": {} }, "org.onap.policy.clamp.acm.HttpAutomationCompositionElement": { "properties": { "baseUrl": { "name": "baseUrl", "type": "string", "type_version": "0.0.0", "description": "The base URL to be prepended to each path, identifies the host for the REST endpoints.", "required": true }, "httpHeaders": { "name": "httpHeaders", "type": "map", "type_version": "0.0.0", "description": "HTTP headers to send on REST requests", "required": false, "entry_schema": { "type": "string", "type_version": "0.0.0" } }, "configurationEntities": { "name": "configurationEntities", "type": "map", "type_version": "0.0.0", "description": "The connfiguration entities the Automation Composition Element is managing and their associated REST requests", "required": true, "entry_schema": { "type": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity", "type_version": "1.0.0" } } }, "name": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement", "version": "1.0.0", "derived_from": "org.onap.policy.clamp.acm.AutomationCompositionElement", "metadata": {} } }, "topology_template": { "node_templates": { "org.onap.k8s.acm.K8SAutomationCompositionParticipant": { "type": "org.onap.policy.clamp.acm.Participant", "type_version": "1.0.1", "properties": { "provider": "ONAP" }, "name": "org.onap.k8s.acm.K8SAutomationCompositionParticipant", "version": "2.3.4", "metadata": {}, "description": "Participant for K8S" }, "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElement": { "type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement", "type_version": "1.0.0", "properties": { "provider": "ONAP", "startPhase": 0, "uninitializedToPassiveTimeout": 300, "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" }, "onap.policy.clamp.ac.element.K8S_BridgeAutomationCompositionElement": { "type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement", "type_version": "1.0.0", "properties": { "provider": "ONAP", "startPhase": 0, "uninitializedToPassiveTimeout": 300, "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" }, "onap.policy.clamp.ac.element.K8S_SinkAutomationCompositionElement": { "type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement", "type_version": "1.0.0", "properties": { "provider": "ONAP", "startPhase": 0, "uninitializedToPassiveTimeout": 300, "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" }, "org.onap.policy.clamp.acm.HttpParticipant": { "type": "org.onap.policy.clamp.acm.Participant", "type_version": "1.0.1", "properties": { "provider": "ONAP" }, "name": "org.onap.policy.clamp.acm.HttpParticipant", "version": "2.3.4", "metadata": {}, "description": "Participant for Http requests" }, "onap.policy.clamp.ac.element.Http_StarterAutomationCompositionElement": { "type": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement", "type_version": "1.0.0", "properties": { "provider": "ONAP", "uninitializedToPassiveTimeout": 300, "startPhase": 1 }, "name": "onap.policy.clamp.ac.element.Http_StarterAutomationCompositionElement", "version": "1.2.3", "metadata": {}, "description": "Automation composition element for the http requests of AC Element Starter microservice" }, "onap.policy.clamp.ac.element.Http_BridgeAutomationCompositionElement": { "type": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement", "type_version": "1.0.0", "properties": { "provider": "ONAP", "uninitializedToPassiveTimeout": 300, "startPhase": 1 }, "name": "onap.policy.clamp.ac.element.Http_BridgeAutomationCompositionElement", "version": "1.2.3", "metadata": {}, "description": "Automation composition element for the http requests of AC Element Bridge microservice" }, "onap.policy.clamp.ac.element.Http_SinkAutomationCompositionElement": { "type": "org.onap.policy.clamp.acm.HttpAutomationCompositionElement", "type_version": "1.0.0", "properties": { "provider": "ONAP", "uninitializedToPassiveTimeout": 300, "startPhase": 1 }, "name": "onap.policy.clamp.ac.element.Http_SinkAutomationCompositionElement", "version": "1.2.3", "metadata": {}, "description": "Automation composition element for the http requests of AC Element Sink microservice" }, "onap.policy.clamp.ac.element.AutomationCompositionDefinition": { "type": "org.onap.policy.clamp.acm.AutomationComposition", "type_version": "1.0.1", "properties": { "provider": "ONAP", "elements": [ { "name": "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElement", "version": "1.2.3" }, { "name": "onap.policy.clamp.ac.element.K8S_BridgeAutomationCompositionElement", "version": "1.2.3" }, { "name": "onap.policy.clamp.ac.element.K8S_SinkAutomationCompositionElement", "version": "1.2.3" }, { "name": "onap.policy.clamp.ac.element.Http_StarterAutomationCompositionElement", "version": "1.2.3" }, { "name": "onap.policy.clamp.ac.element.Http_BridgeAutomationCompositionElement", "version": "1.2.3" }, { "name": "onap.policy.clamp.ac.element.Http_SinkAutomationCompositionElement", "version": "1.2.3" } ] }, "name": "onap.policy.clamp.ac.element.AutomationCompositionDefinition", "version": "1.2.3", "metadata": {}, "description": "Automation composition for Demo" } }, "policies": [] }, "name": "tosca", "version": "1.0.0", "metadata": { "compositionId": "19210df5-c5bf-4431-862a-82b148cfb668" } }, { "tosca_definitions_version": "tosca_simple_yaml_1_3", "data_types": { "onap.datatypes.ToscaConceptIdentifier": { "properties": { "name": { "name": "name", "type": "string", "type_version": "0.0.0", "required": true }, "version": { "name": "version", "type": "string", "type_version": "0.0.0", "required": true } }, "name": "onap.datatypes.ToscaConceptIdentifier", "version": "0.0.0", "derived_from": "tosca.datatypes.Root", "metadata": {} }, "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest": { "properties": { "restRequestId": { "name": "restRequestId", "type": "onap.datatypes.ToscaConceptIdentifier", "type_version": "0.0.0", "description": "The name and version of a REST request to be sent to a REST endpoint", "required": true }, "httpMethod": { "name": "httpMethod", "type": "string", "type_version": "0.0.0", "description": "The REST method to use", "required": true, "constraints": [ { "valid_values": [ "POST", "PUT", "GET", "DELETE" ] } ] }, "path": { "name": "path", "type": "string", "type_version": "0.0.0", "description": "The path of the REST request relative to the base URL", "required": true }, "body": { "name": "body", "type": "string", "type_version": "0.0.0", "description": "The body of the REST request for PUT and POST requests", "required": false }, "expectedResponse": { "name": "expectedResponse", "type": "integer", "type_version": "0.0.0", "description": "THe expected HTTP status code for the REST request", "required": true, "constraints": [] } }, "name": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest", "version": "1.0.0", "derived_from": "tosca.datatypes.Root", "metadata": {} }, "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity": { "properties": { "configurationEntityId": { "name": "configurationEntityId", "type": "onap.datatypes.ToscaConceptIdentifier", "type_version": "0.0.0", "description": "The name and version of a Configuration Entity to be handled by the HTTP Automation Composition Element", "required": true }, "restSequence": { "name": "restSequence", "type": "list", "type_version": "0.0.0", "description": "A sequence of REST commands to send to the REST endpoint", "required": false, "entry_schema": { "type": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest", "type_version": "1.0.0" } } }, "name": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity", "version": "1.0.0", "derived_from": "tosca.datatypes.Root", "metadata": {} } }, "node_types": { "org.onap.policy.clamp.acm.Participant": { "properties": { "provider": { "name": "provider", "type": "string", "type_version": "0.0.0", "required": false } }, "name": "org.onap.policy.clamp.acm.Participant", "version": "1.0.1", "derived_from": "tosca.nodetypes.Root", "metadata": {} }, "org.onap.policy.clamp.acm.AutomationCompositionElement": { "properties": { "provider": { "name": "provider", "type": "string", "type_version": "0.0.0", "description": "Specifies the organization that provides the automation composition element", "required": false, "metadata": { "common": "true" } }, "startPhase": { "name": "startPhase", "type": "integer", "type_version": "0.0.0", "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", "required": false, "constraints": [ { "greater_or_equal": "0" } ], "metadata": { "common": "true" } }, "uninitializedToPassiveTimeout": { "name": "uninitializedToPassiveTimeout", "type": "integer", "type_version": "0.0.0", "description": "The maximum time in seconds to wait for a state chage from uninitialized to passive", "default": 60.0, "required": false, "constraints": [ { | ||
Successful Endpoint Interaction | Create AC instance | Create AC instance 1 | Execute POST request on runtime-acm {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId1}}/instances | 200 Response with InstanceId | |||
Successful Endpoint Interaction | Create AC instance 2 | Execute POST request on runtime-acm {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId2}}/instances | 200 Response with InstanceId | ||||
Successful Endpoint Interaction | Update AC instance | Update AC instance1 with wrong paramter | Execute PUT request on runtime-acm {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId1}}/instances | 200 Response with Instance id | |||
Successful Endpoint Interaction | Undeploy AC instance | Undeploy AC instance 1 | Execute PUT request on runtime acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId1}}/instances/{{instanceId1}} Execute GET request on runtime acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId1}}/instances/{{instanceId1}} | 202 Response. Verify the AC instance's is "UNDEPLOYED" | |||
Successful Endpoint Interaction | Update AC instance | Update AC instance1 with correct paramter | Execute PUT request on runtime-acm {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId1}}/instances | 200 Response with Instance id | |||
Successful Endpoint Interaction | Delete AC instance | Delete AC instance2 | Execute DELETE request on runtime-acm {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId2}}/instances/{{instanceId2}} | 200 Response | |||
Successful Endpoint Interaction | Deploy AC instance | Deploy AC instance 1 | Make sure AC instance 1 and 2 are created. Execute PUT request on runtime acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId1}}/instances/{{instanceId1}} Execute GET request on runtime acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId1}}/instances/{{instanceId1}} | 202 Response. Verify the AC instance's admin state is "LOCKED". No operation has been carried out by the participants. Depending on the participant being used and whether it has a specific implementation of lock and unlock. | |||
Successful Endpoint Interaction | Deploy AC instance 2 | Execute PUT request on runtime acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId2}}/instances/{{instanceId2}} | 202 Response. Verify the AC instance's admin state is "LOCKED". No operation has been carried out by the participants. Depending on the participant being used and whether it has a specific implementation of lock and unlock. | ||||
Successful Endpoint Interaction | Get deployed instance by id | Execute GET request on runtime ACM {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId}}/instances/{{instanceId}} | Verify the instance is retrieved and present in LOCKED state. | ||||
Successful Endpoint Interaction | UNLOCK the AC instance | Execute PUT request on runtime acm endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId2}}/instances/{{instanceId2}} | 200 Response Verify the k8s , http and policy participants have performed the intended operations on UNLOCKED state | ||||
Successful Endpoint Interaction | Verify the operational state | Fetch the operational state of the AC instance | Verify the instance elements are reporting operational state "ACTIVE" in UNLOCKED state | ||||
Successful Endpoint Interaction | Verify the usage state | Fetch the usage state of the AC instance | Verify the instance elements are reporting usage state "IDLE/BUSY/AVAILABLE" in UNLOCKED state | ||||
Successful Endpoint Interaction | Verify the operational state | Fetch the operational state of the AC instance | Verify the instance elements are reporting operational state "INACTIVE" in LOCKED state | ||||
Successful Endpoint Interaction | Verify the usage state | Fetch the usage state of the AC instance | Verify the instance elements are reporting usage state "IDLE/BUSY/AVAILABLE" in LOCKED state | ||||
Successful Endpoint Interaction | Undeploy AC instance | LOCK the AC instance with instanceid | Make sure the AC instance is deployed and UNLOCKED successfully. Execute PUT request on runtime acm. {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId}}/instances/{{instanceId}} | 200 Response. The instance should be moved to LOCKED state. Participants should have removed the corresponding deployments from the system | |||
Successful Endpoint Interaction | Delete AC instance | Execute DELETE request on runtime acm {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId}}/instances/{{instanceId}} | 202 Response. The AC instance should get deleted from the db. | ||||
Successful Endpoint Interaction | Deprime AC defintion | Execute PUT request on runtime ACM {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId}} Verify fetching the commisioned defintions and make sure the AC elements are unassigned from the participants | 202 Response. The AC instance should get deleted from the db. | ||||
Successful Endpoint Interaction | Delete AC defintion | Execute DELETE request on runtime ACM {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId}} | 200 Response. The AC defintion should get deleted from the db | ||||
Timeout Scenario | Delay participant while DEPLOYING | Delay the participant when instances are deploying | Make sure the instance deployment takes longer time and shutdown the participant when the instances are being deployed. (Note: AcElement microservice can be used to alter the behaviour of deployment) | Verify the behaviour of runtime when the participant goes offline in the middle of deployment. Verify the instance state to go TIMEOUT after the configured timeout is reached. (it depend how restart will be implemented) | Mock participant must be called with configuration for how long to delay. Participant shoul be ONLINE | ||
Update Scenario | Update AC instance property on the deployed instance | Verify updating of AC properties in runtime | Execute POST request on runtime endpoint {{address}}:{{runtimeport}}/onap/policy/clamp/acm/v2/compositions/{{compositionId1}}/instances The properties to be updated is provided on the request body for the specified instance id | Verify if the rest request is accepted with 202 response Verify the PROPERTIES_UPDATE event is sent to the participants from runtime-acm. The ACM instance state should be "UPDATING" until the properties update is completed in the participant. Verify the properties are updated in runtime database |