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 http, k8s and policy participants | Prime AC def - http, k8s and policy participants should send back error message | - Call each put request in the "Prime Failure Scenario" directory - each should return 200
- Call "Create AC Definition" - response should be 201
- Call "Priming AC definition" - response should be 202
- Finally call "Get commission"
| 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 http, k8s and policy participants | Deprime AC def - http, k8s and policy participants should send back error message | - Call each put request in the "Deprime Failure Scenario" directory - each should return 200
- Call "Create AC Definition" - response should be 201
- Call "Priming AC definition" - response should be 202
- Call "Depriming AC definition" - response should be 202
- Finally call "Get commission"
| 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 | - Call each put request in the "Deploy Failure Scenario" directory - each should return 200
- Call "Create AC Definition" - response should be 201
- Call "Priming AC definition" - response should be 202
- Call "Instantiation AC" - response should be 201
- Call "Deploy Instantiated" - response should be 202
- Finally, we call "Get Instantiated List" and should get a 200 response
| 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 http, k8s and policy participants | Undeploy AC instance - http, k8s and policy participants should send back error message | - Call each put request in the "Undeploy Failure Scenario" directory - each should return 200
- Call "Create AC Definition" - response should be 201
- Call "Priming AC definition" - response should be 202
- Call "Instantiation AC" - response should be 201
- Call "Deploy Instantiated" - response should be 202
- Call "Get Instantiated List" and should get a 200 response and we should see the "deployState: DEPLOYED" for the overall AC.
- Now, we call the "Undeploy Instantiated" call from the collection and should get a 202 response
- Call "Get Instantiated List" once again
| 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 http, k8s and policy participants | Delete AC instance - http, k8s and policy participants should send back error message | - Call each put request in the "Delete Failure Scenario" directory - each should return 200
- Call "Create AC Definition" - response should be 201
- Call "Priming AC definition" - response should be 202
- Call "Instantiation AC" - response should be 201
- Call "Deploy Instantiated" - response should be 202
- Call "Get Instantiated List" and should get a 200 response and we should see the "deployState: DEPLOYED" for the overall AC.
- Now, we call the "Undeploy Instantiated" call from the collection and should get a 202 response
- Then, we can call "Delete Instantiated" - should get a 202
- Finally, Call "Get Instantiated List" once again
| 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 http, k8s and policy participants | Update AC instance - http, k8s and policy participants should send back error message | - Call each put request in the "Update Failure Scenario" directory - each should return 200
- Call "Create AC Definition" - response should be 201
- Call "Priming AC definition" - response should be 202
- Call "Instantiation AC" - response should be 201
- Call "Deploy Instantiated" - response should be 202
- Call "Get Instantiated List" and should get a 200 response and we should see the "deployState: DEPLOYED" for the overall AC.
- Now, we call the "Update Instantiation AC" call from the collection and should get a 200 response
- Finally, Call "Get Instantiated List" once again
| 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 http, k8s and policy participants | Unlock AC instance - http, k8s and policy participants should send back error message | - Call each put request in the "Unlock Failure Scenario" directory - each should return 200
- Call "Create AC Definition" - response should be 201
- Call "Priming AC definition" - response should be 202
- Call "Instantiation AC" - response should be 201
- Call "Deploy Instantiated" - response should be 202
- Call "Get Instantiated List" and should get a 200 response and we should see the "deployState: DEPLOYED" for the overall AC.
- Now, we call the "Unlock Instantiated" call from the collection and should get a 202 response
- Finally, Call "Get Instantiated List" once again
| 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 http, k8s and policy participants | Lock AC instance - http, k8s and policy participants should send back error message | - Call each put request in the "Lock Failure Scenario" directory - each should return 200
- Call "Create AC Definition" - response should be 201
- Call "Priming AC definition" - response should beDeploy 202
- Call "Instantiation AC" - response should be 201
- Call "Deploy Instantiated" - response should be 202
- Call "Get Instantiated List" and should get a 200 response and we should see the "deployState: DEPLOYED" for the overall AC.
- Now, we call the "Unlock Instantiated" call from the collection and should get a 202 response
- Then, call "Lock Instantiated" from the collection - should get a 202 response
- Finally, Call "Get Instantiated List" once again
| 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 composition Out Properties | Set composition 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 | - Call "Create AC Definition" - response should be 201
- Call "Set parameters in http-participant" (to increase the delay for priming, deploy and depriming) - response should be 200
- Call "Priming AC definition" - response should be 202
- Call "Get commission" and should get a 200 response and we should see the "state: PRIMING" for the overall AC Definition. We should also be able to see an empty "outProperties" object under the http element.
- Call "Set composition outProperties in http-participant" when participant is still priming - the response should be 200.
- Call "Get composition outProperties from http-participant" - the response should be 200. We should see the outProperties object with values set before
- Finally, Call "Get commission".
| 200 response with an AC Definition object The outProperties object should now look like the json illustrated in the next column
|
| "outProperties": { "updateAll": "true", "nest": { "birdone": "jack", "birdtwo": "cuckoo", "egg": 4 }, "list": [ { "id": 10 }, { "id": 20 } ] } |
|
---|
Participant composition Out Properties | Set composition 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 | - Call "Create AC Definition" - response should be 201
- Call "Priming AC definition" - response should be 202
- Call "Get commission" and should get a 200 response and we should see the "state: PRIMED" for the overall AC Definition. We should also be able to see an empty "outProperties" object under the http element.
- Call "Set parameters in http-participant" (to increase the delay for priming, deploy and depriming) - response should be 200
- Call "Depriming AC definition" - response should be 202
- Call "Set composition outProperties in http-participant" when participant is still depriming - the response should be 200.
- Call "Get composition outProperties from http-participant" when participant is still depriming - the response should be 200. We should see the outProperties object with values set before
- Finally, Call "Get commission".
| 200 response with an AC Definition object The outProperties object should now look like the json illustrated in the next column
|
| "outProperties": { "updateAll": "true", "nest": { "birdone": "jack", "birdtwo": "cuckoo", "egg": 4 }, "list": [ { "id": 10 }, { "id": 20 } ] } |
|
---|
Participant composition Out Properties | Try to Set outProperties using the participant and retrieve them from the database before the composition is primed | Any properties we set on the participant-side composition "outProperties" object should not be retrievable from ACM before the composition is primed | - Call "Create AC Definition" - response should be 201
- Call "Get commission" and should get a 200 response and we should see the "State: COMMISSIONED" for the overall AC Definition. We should also be able to see an empty "outProperties" object under the http element.
- Call "Set composition outProperties in http-participant" - the response should be 200.
- Finally, Call "Get commission".
| 200 response with an AC Definition object The outProperties object should be empty as before
|
|
|
|
---|
|
|
|
|
|
|
|
|
---|
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 | - Call "Create AC Definition" - response should be 201
- Call "Priming AC definition" - response should be 202
- Call "Instantiation AC" - response should be 201
- Call "Deploy Instantiated" - response should be 202
- Call "Get Instantiated List" and should get a 200 response and we should see the "deployState: DEPLOYED" for the overall AC. We should also be able to see an empty "outProperties" object under the http element.
- Call "Set outProperties in http-participant" - the response should be 200.
- Finally, Call "Get Instantiated List".
| 200 response with an "automationCompositionList" The outProperties object should now look like the json illustrated in the next column
|
| "outProperties": { "deleteAll": "true", "nest": { "birdone": "sparrow", "birdtwo": "cuckoo", "egg": 4 }, "list": [ { "id": 1 }, { "id": 2 } ] } | 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 | - Call "Create AC Definition" - response should be 201
- Call "Priming AC definition" - response should be 202
- Call "Instantiation AC" - response should be 201
- Call "Get Instantiated List" and should get a 200 response and we should see the "deployState: UNDEPLOYED" for the overall AC. We should also be able to see an empty "outProperties" object under the http element.
- Call "Set outProperties in http-participant" - the response should be 200.
- Finally, Call "Get Instantiated List".
| 200 response with an "automationCompositionList" The outProperties object should be empty as before
|
|
| Y |
---|
|
|
|
|
|
|
|
|
---|
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}} | 409 Conflict response. Verify if runtime is restricting the deploy operation when one or more associated particpant is OFFLINE |
|
|
|
---|
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}} | 409 Conflict response. Verify if runtime is restricting the delete operation when one or more associated particpant is OFFLINE |
|
|
|
---|
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}} | 409 Conflict response. Verify if runtime is restricting the deprime operation when one or more associated particpant is OFFLINE |
|
|
|
---|
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
| 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 a deployed instance | 409 Conflict response. Verify if runtime is restricting the update operation when one or more associated 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 |
|
---|
|
|
|
|
|
|
|
|
---|
Successful Endpoint Interaction | Verify Participant Registration | Verify all the participants | - Call "Create AC Definition" - response should be 201
- Call "Priming AC definition" - response should be 202
- Call "Instantiation AC" - response should be 201
- Call "Deploy Instantiated" - response should be 202
- Call "Get Instantiated List" and should get a 200 response
- Finally, call "Get participants" and should get a 200 response.
| Verify all the deployed participants with their Ids and current status are retrieved | PASS |
|
|
---|
Successful Endpoint Interaction | CRUD Automation Composition Types | Create Automation Composition Type 1 | - Call "Create AC Definition" - response should be 201
- Call "Get AutomationCompositions" - response should be 200
- Finally, verify AC Definition has been created and returned in the list.
| 201 Response with compositionId | PASS |
|
|
---|
Successful Endpoint Interaction |
| Create Automation composition Type 2 | - Call "Create AC Definition" with a different definition than previously created - response should be 201
- Call "Get AutomationCompositions" - response should be 200
- Finally, verify AC Definition has been created and returned in the list.
| 201 Response with compositionId | PASS |
|
|
---|
Successful Endpoint Interaction | Update AC definition | Update the AC type 1 with some changes in the common properties | - Call "
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 definition | Delete the Ac type 2 | - Call "Delete Automation Composition" for Composition 2 - response should be 200
| 200 Response | PASS |
|
|
---|
Successful Endpoint Interaction | Fetch Commissioned definition before Priming | Get all the commisioned definitions from db | - Call "Get AutomationCompositions" - response should be 200
- Finally, verify the two AC Definitions are retrieved with all elements.
|
| OK |
Code Block |
---|
language | yml |
---|
firstline | 1 |
---|
title | Response |
---|
linenumbers | true |
---|
collapse | true |
---|
| {
"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.AutomationCompositionDefinition":K8S_BridgeAutomationCompositionElement",
"version": "1.2.3"
},
{
"typename": "org.onap.policy.clamp.acm.AutomationCompositionac.element.K8S_SinkAutomationCompositionElement",
"type_version": "1.02.13"
},
"properties": {
"providername": "ONAPonap.policy.clamp.ac.element.Http_StarterAutomationCompositionElement",
"elementsversion": [ "1.2.3"
},
{
"name": "onap.policy.clamp.ac.element.K8SHttp_StarterAutomationCompositionElementBridgeAutomationCompositionElement",
"version": "1.2.3"
},
{
"name": "onap.policy.clamp.ac.element.K8SHttp_BridgeAutomationCompositionElementSinkAutomationCompositionElement",
"version": "1.2.3"
},
{
]
},
"name": "onap.policy.clamp.ac.element.K8S_SinkAutomationCompositionElement",
"version": "1.2.3"
},
{
.AutomationCompositionDefinition",
"version": "1.2.3",
"metadata": {},
"description": "Automation composition for Demo"
}
},
"policies": []
},
"name": "onap.policy.clamp.ac.element.Http_StarterAutomationCompositionElementtosca",
"version": "1.20.30",
},
"metadata": {
"namecompositionId": "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 | - Ensure AC Type 1 & 2 are commissioned.
- Call "Prime Automation Composition Definition 1" - response 202
- Finally, confirm compositionid1 is returned in the response body
| 202 response | PASS | Successful Endpoint Interaction | Prime AC definition 2 | - Ensure AC Type 1 & 2 are commissioned.
- Call "Prime Automation Composition Definition 2" - response 202
- Finally, confirm compositionid2 is returned in the response body
| 202 response | PASS | 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 | - Call "Get AutomationCompositions" - response should be 200
- Finally, verify the two AC Definitions are retrieved with all elements.
| 200 response | OK | Code Block |
---|
language | yml |
---|
firstline | 1 |
---|
title | Response |
---|
linenumbers | true |
---|
collapse | true |
---|
| {
"service_templates": [
{
"tosca_definitions_version": "tosca_simple_yaml_1_3",
"data_types": {
"onap.datatypes.ToscaConceptIdentifier": {
"properties": {
"name8c3f8b69-7464-40dc-b034-0f73f200729f"
}
}
]
} |
|
|
---|
Successful Endpoint Interaction | Priming | Prime AC definition 1 | - Ensure AC Type 1 & 2 are commissioned.
- Call "Prime Automation Composition Definition 1" - response 202
- Finally, confirm compositionid1 is returned in the response body
| 202 response | PASS |
|
|
---|
Successful Endpoint Interaction |
| Prime AC definition 2 | - Ensure AC Type 1 & 2 are commissioned.
- Call "Prime Automation Composition Definition 2" - response 202
- Finally, confirm compositionid2 is returned in the response body
| 202 response | PASS | 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 | - Call "Get AutomationCompositions" - response should be 200
- Finally, verify the two AC Definitions are retrieved with all elements.
| 200 response | OK |
Code Block |
---|
language | yml |
---|
firstline | 1 |
---|
title | Response |
---|
linenumbers | true |
---|
collapse | true |
---|
| {
"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": "namehttpMethod",
"type": "string",
"type_version": "0.0.0",
"requireddescription": "The REST truemethod to }use",
"versionrequired": {true,
"nameconstraints": "version",
"type": "string",
"type_version": "0.0.0",
"required": true
}
},
[
{
"valid_values": [
"POST",
"PUT",
"GET",
"DELETE"
]
}
]
},
"path": {
"name": "onap.datatypes.ToscaConceptIdentifierpath",
"versiontype": "0.0.0string",
"derivedtype_fromversion": "tosca0.datatypes0.Root0",
"metadatadescription": {}
},
"org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest": {
"properties": {
"restRequestId "The path of the REST request relative to the base URL",
"required": true
},
"body": {
"name": "restRequestIdbody",
"type": "onap.datatypes.ToscaConceptIdentifierstring",
"type_version": "0.0.0",
"description": "The name and versionbody of athe REST request tofor bePUT sentand to a REST endpointPOST requests",
"required": truefalse
},
"httpMethodexpectedResponse": {
"name": "httpMethodexpectedResponse",
"type": "stringinteger",
"type_version": "0.0.0",
"description": "The REST method to useTHe expected HTTP status code for the REST request",
"required": true,
"constraints": [
{
"valid_values": [
"POST",
"PUT",
"GET",
"DELETE"
]
}
]
},
"path]
}
},
"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": "pathconfigurationEntityId",
"type": "stringonap.datatypes.ToscaConceptIdentifier",
"type_version": "0.0.0",
"description": "The pathname and version of the REST request relative to the base URLa Configuration Entity to be handled by the HTTP Automation Composition Element",
"required": true
},
"bodyrestSequence": {
"name": "bodyrestSequence",
"type": "stringlist",
"type_version": "0.0.0",
"description": "TheA bodysequence of theREST RESTcommands requestto forsend PUTto andthe POSTREST requestsendpoint",
"required": false
},
"expectedResponseentry_schema": {
"name": "expectedResponse",
"type": "integerorg.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest",
"type_version": "0.0.0",
"description": "THe expected HTTP status code for the REST request",
"required": true,
"constraints": []1.0.0"
}
}
},
"name": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequestConfigurationEntity",
"version": "1.0.0",
"derived_from": "tosca.datatypes.Root",
"metadata": {}
}
},
"node_types": {
"org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntityParticipant": {
"properties": {
"configurationEntityIdprovider": {
"name": "configurationEntityIdprovider",
"type": "onap.datatypes.ToscaConceptIdentifierstring",
"type_version": "0.0.0",
"descriptionrequired": "The name and version of a Configuration Entity to be handled by the HTTP Automation Composition Element",
"required": true
},
"restSequencefalse
}
},
"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": "restSequenceprovider",
"type": "liststring",
"type_version": "0.0.0",
"description": "A sequence of REST commands to send toSpecifies the organization that provides the RESTautomation composition endpointelement",
"required": false,
"entry_schemametadata": {
"typecommon": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest",
"type_version": "1.0.0"
true"
}
}
},
,
"startPhase": {
"name": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntitystartPhase",
"versiontype": "1.0.0integer",
"derivedtype_fromversion": "tosca0.datatypes0.Root0",
"metadata": {}
}
},
"node_types": {
"org.onap.policy.clamp.acm.Participant": {
"properties": {
"provider": {
"name": "provider",
"type": "string",
"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
}
},
"nameconstraints": "org.onap.policy.clamp.acm.Participant",
"version": "1.0.1",
"derived_from[
{
"greater_or_equal": "tosca.nodetypes.Root0",
"metadata": { }
}],
"org.onap.policy.clamp.acm.AutomationCompositionElementmetadata": {
"propertiescommon": { "true"
}
},
"provideruninitializedToPassiveTimeout": {
"name": "provideruninitializedToPassiveTimeout",
"type": "stringinteger",
"type_version": "0.0.0",
"description": "Specifies the organization that provides the automation composition element"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"
}
},
"startPhasepassiveToRunningTimeout": {
"name": "startPhasepassiveToRunningTimeout",
"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"",
"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"
}
},
"uninitializedToPassiveTimeoutrunningToPassiveTimeout": {
"name": "uninitializedToPassiveTimeoutrunningToPassiveTimeout",
"type": "integer",
"type_version": "0.0.0",
"description": "The maximum time in seconds to wait for a state chage from uninitializedrunning to passive",
"default": 60.0,
"required": false,
"constraints": [
{
"greater_or_equal": "0"
}
],
"metadata": {
"common": "true"
}
},
"passiveToRunningTimeoutpassiveToUninitializedTimeout": {
"name": "passiveToRunningTimeoutpassiveToUninitializedTimeout",
"type": "integer",
"type_version": "0.0.0",
"description": "The maximum time in seconds to wait for a state chage from passive to runninguninitialized",
"default": 60.0,
"required": false,
"constraints": [
{
"greater_or_equal": "0"
}
],
"metadata": [
{
"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": {
"commonproperties": "true"
}
{
},
"runningToPassiveTimeoutprovider": {
"name": "runningToPassiveTimeoutprovider",
"type": "integerstring",
"type_version": "0.0.0",
"description": "TheSpecifies maximumthe timeorganization inthat secondsprovides tothe waitautomation for a state chage from running to passivecomposition element",
"default": 60.0,
"required": false,
"constraints": [
{
"greater_or_equal": "0"
}
],
"metadata": {
"common": "true"
}
},
"passiveToUninitializedTimeoutelements": {
"name": "passiveToUninitializedTimeoutelements",
"type": "integerlist",
"type_version": "0.0.0",
"description": "TheSpecifies maximuma timelist inof secondsautomation tocomposition waitelement fordefinitions athat statemake chageup fromthis passiveautomation tocomposition uninitializeddefinition",
"defaultrequired": 60.0true,
"requiredentry_schema": false,{
"constraintstype": ["onap.datatypes.ToscaConceptIdentifier",
{
"greatertype_or_equalversion": "0.0.0"
}
],
"metadata": {
"common": "true"
}
}
},
"name": "org.onap.policy.clamp.acm.AutomationCompositionElementAutomationComposition",
"version": "1.0.1",
"derived_from": "tosca.nodetypes.Root",
"metadata": {}
},
"org.onap.policy.clamp.acm.AutomationCompositionK8SMicroserviceAutomationCompositionElement": {
"properties": {
"providerchart": {
"name": "providerchart",
"type": "string",
"type_version": "0.0.0",
"descriptionrequired": "Specifiestrue
the organization},
that provides the automation composition element "configs": {
"name": "configs",
"requiredtype": false"list",
"metadatatype_version": {
"0.0.0",
"commonrequired": "true"
}
false
},
"elementsrequirements": {
"name": "elementsrequirements",
"type": "liststring",
"type_version": "0.0.0",
"descriptionrequired": "Specifiesfalse
a list},
of automation composition element definitions that make up this automation composition definition "templates": {
"name": "templates",
"type": "list",
"type_version": "0.0.0",
"required": false
true,},
"values": {
"entry_schemaname": {
"values",
"type": "onap.datatypes.ToscaConceptIdentifierstring",
"type_version": "0.0.0"
},
"metadatarequired": {
"common": "true"
}
}
},
"name": "org.onap.policy.clamp.acm.AutomationCompositionK8SMicroserviceAutomationCompositionElement",
"version": "1.0.10",
"derived_from": "tosca.nodetypes.Rootorg.onap.policy.clamp.acm.AutomationCompositionElement",
"metadata": {}
},
"org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElementHttpAutomationCompositionElement": {
"properties": {
"chartbaseUrl": {
"name": "chartbaseUrl",
"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
},
"configshttpHeaders": {
"name": "configshttpHeaders",
"type": "listmap",
"type_version": "0.0.0",
"requireddescription": false
},
"requirements": {"HTTP headers to send on REST requests",
"required": false,
"nameentry_schema": "requirements",
{
"type": "string",
"type_version": "0.0.0",
"required": false
}
},
"templatesconfigurationEntities": {
"name": "templatesconfigurationEntities",
"type": "listmap",
"type_version": "0.0.0",
"requireddescription": false
},
"values": { "The connfiguration entities the Automation Composition Element is managing and their associated REST requests",
"required": true,
"nameentry_schema": "values",
{
"type": "stringorg.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity",
"type_version": "01.0.0",
"required": true
}
}
},
"name": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElementHttpAutomationCompositionElement",
"version": "1.0.0",
"derived_from": "org.onap.policy.clamp.acm.AutomationCompositionElement",
"metadata": {}
}
},
"org.onap.policy.clamp.acm.HttpAutomationCompositionElementtopology_template": {
"propertiesnode_templates": {
"baseUrlorg.onap.k8s.acm.K8SAutomationCompositionParticipant": {
"name": "baseUrl",
"type": "stringorg.onap.policy.clamp.acm.Participant",
"type_version": "01.0.01",
"descriptionproperties": "The base URL to be prepended to each path, identifies the host for the REST endpoints.",
{
"requiredprovider": true"ONAP"
},
"httpHeaders": {
"name": "httpHeadersorg.onap.k8s.acm.K8SAutomationCompositionParticipant",
"typeversion": "map2.3.4",
"type_versionmetadata": "0.0.0"{},
"description": "HTTPParticipant headersfor toK8S"
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": {
"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.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity.K8SMicroserviceAutomationCompositionElement",
"type_version": "1.0.0",
"properties": {
"provider": "ONAP",
"type_versionstartPhase": 0,
"1.0.0"uninitializedToPassiveTimeout": 300,
}"podStatusCheckInterval": 30
}
},
"name": "org.onap.policy.clamp.acm.HttpAutomationCompositionElementac.element.K8S_BridgeAutomationCompositionElement",
"version": "1.02.03",
"derived_frommetadata": "org.onap.policy.clamp.acm.AutomationCompositionElement"{},
"metadatadescription": "Automation {}composition element }for the },K8S "topology_template": {
"node_templates": {microservice for AC Element Bridge"
},
"orgonap.policy.onapclamp.k8sac.acmelement.K8SAutomationCompositionParticipantK8S_SinkAutomationCompositionElement": {
"type": "org.onap.policy.clamp.acm.ParticipantK8SMicroserviceAutomationCompositionElement",
"type_versionversion": "1.0.0",
"properties": {
"provider": "ONAP",
"startPhase": "1.0.1",
"propertiesuninitializedToPassiveTimeout": {300,
"providerpodStatusCheckInterval": "ONAP"30
},
"name": "orgonap.policy.onapclamp.k8sac.acmelement.K8SAutomationCompositionParticipantK8S_SinkAutomationCompositionElement",
"version": "1.2.3.4",
"metadata": {},
"description": "ParticipantAutomation composition element for the K8S microservice for AC Element Sink"
},
"org.onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElementacm.HttpParticipant": {
"type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElementParticipant",
"type_version": "1.0.01",
"properties": {
"provider": "ONAP",
"startPhase": 0,
"uninitializedToPassiveTimeout": 300,
"podStatusCheckInterval": 30
},
"name": "org.onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElementacm.HttpParticipant",
"version": "1.2.3.4",
"metadata": {},
"description": "AutomationParticipant composition element for the K8S microservice for AC Element StarterHttp requests"
},
"onap.policy.clamp.ac.element.K8SHttp_BridgeAutomationCompositionElementStarterAutomationCompositionElement": {
"type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElementHttpAutomationCompositionElement",
"type_version": "1.0.0",
"properties": {
"provider": "ONAP",
"startPhase": 0,
"uninitializedToPassiveTimeout": 300,
"podStatusCheckIntervalstartPhase": 301
},
"name": "onap.policy.clamp.ac.element.K8SHttp_BridgeAutomationCompositionElementStarterAutomationCompositionElement",
"version": "1.2.3",
"metadata": {},
"description": "Automation composition element for the K8Shttp microservicerequests forof AC Element BridgeStarter microservice"
},
"onap.policy.clamp.ac.element.K8SHttp_SinkAutomationCompositionElementBridgeAutomationCompositionElement": {
"type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElementHttpAutomationCompositionElement",
"type_version": "1.0.0",
"properties": {
"provider": "ONAP",
"startPhase": 0,
"uninitializedToPassiveTimeout": 300,
"podStatusCheckIntervalstartPhase": 301
},
"name": "onap.policy.clamp.ac.element.K8SHttp_SinkAutomationCompositionElementBridgeAutomationCompositionElement",
"version": "1.2.3",
"metadata": {},
"description": "Automation composition element for the K8Shttp microservicerequests forof AC Element Bridge Sinkmicroservice"
},
"org.onap.policy.clamp.ac.acmelement.HttpParticipantHttp_SinkAutomationCompositionElement": {
"type": "org.onap.policy.clamp.acm.ParticipantHttpAutomationCompositionElement",
"type_version": "1.0.10",
"properties": {
"provider": "ONAP",
"uninitializedToPassiveTimeout": 300,
"startPhase": 1
},
"name": "org.onap.policy.clamp.acm.HttpParticipantac.element.Http_SinkAutomationCompositionElement",
"version": "1.2.3.4",
"metadata": {},
"description": "ParticipantAutomation composition element for Httpthe http requests of AC Element Sink microservice"
},
"onap.policy.clamp.ac.element.Http_StarterAutomationCompositionElementAutomationCompositionDefinition": {
"type": "org.onap.policy.clamp.acm.HttpAutomationCompositionElementAutomationComposition",
"type_version": "1.0.01",
"properties": {
"provider": "ONAP",
"uninitializedToPassiveTimeoutelements": 300,[
"startPhase": 1
},
{
"name": "onap.policy.clamp.ac.element.HttpK8S_StarterAutomationCompositionElement",
"version": "1.2.3",
"metadata": { },
"description": "Automation composition element for the http requests of AC Element Starter microservice"
},
{
"name": "onap.policy.clamp.ac.element.HttpK8S_BridgeAutomationCompositionElement",
"version": "1.2.3"
},
{
"typename": "org.onap.policy.clamp.acm.HttpAutomationCompositionElementac.element.K8S_SinkAutomationCompositionElement",
"type_version": "1.02.03"
},
"properties": {
"providername": "ONAPonap.policy.clamp.ac.element.Http_StarterAutomationCompositionElement",
"uninitializedToPassiveTimeoutversion": 300, "startPhase": 1
"1.2.3"
},
{
"name": "onap.policy.clamp.ac.element.Http_BridgeAutomationCompositionElement",
"version": "1.2.3"
},
{
"metadataname": {}"onap.policy.clamp.ac.element.Http_SinkAutomationCompositionElement",
"descriptionversion": "Automation composition element for the http requests of AC Element Bridge microservice"
},
"onap.policy.clamp.ac.element.Http_SinkAutomationCompositionElement": {1.2.3"
}
]
},
"typename": "org.onap.policy.clamp.ac.acmelement.HttpAutomationCompositionElementAutomationCompositionDefinition",
"type_version": "1.02.03",
"propertiesmetadata": {},
"providerdescription": "ONAP",
"uninitializedToPassiveTimeout": 300,
"startPhase": 1
Automation composition for Demo"
}
},
"policies": []
},
"name": "onap.policy.clamp.ac.element.Http_SinkAutomationCompositionElementtosca",
"version": "1.20.30",
"metadata": {
"compositionId": "19210df5-c5bf-4431-862a-82b148cfb668"
}
},
{
"descriptiontosca_definitions_version": "Automation composition element for the http requests of AC Element Sink microservice"
},
"onap.policy.clamp.ac.element.AutomationCompositionDefinition": {
tosca_simple_yaml_1_3",
"data_types": {
"onap.datatypes.ToscaConceptIdentifier": {
"properties": {
"name": {
"name": "name",
"type": "org.onap.policy.clamp.acm.AutomationCompositionstring",
"type_version": "10.0.10",
"propertiesrequired": {true
"provider": "ONAP" },
"elementsversion": [
{
"name": "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElementversion",
"versiontype": "1.2.3"
},
{
"namestring",
"type_version": "onap0.policy.clamp.ac.element.K8S_BridgeAutomationCompositionElement0.0",
"versionrequired": "1.2.3"
true
},
{},
"name": "onap.policy.clamp.ac.element.K8S_SinkAutomationCompositionElementdatatypes.ToscaConceptIdentifier",
"version": "10.20.30"
},
{
"namederived_from": "onaptosca.policy.clamp.ac.element.Http_StarterAutomationCompositionElementdatatypes.Root",
"versionmetadata": "1.2.3"
{}
},
{ "name": "onap"org.onap.datatypes.policy.clamp.acacm.elementhttpAutomationCompositionElement.Http_BridgeAutomationCompositionElement",
RestRequest": {
"versionproperties": "1.2.3"
},
{
"name{
"restRequestId": {
"name": "restRequestId",
"type": "onap.policy.clamp.ac.element.Http_SinkAutomationCompositionElementdatatypes.ToscaConceptIdentifier",
"type_version": "10.2.3"
}
]0.0",
"description": "The name and version of a REST request to be sent to a REST endpoint",
"required": true
},
"httpMethod": {
"name": "onap.policy.clamp.ac.element.AutomationCompositionDefinitionhttpMethod",
"versiontype": "1.2.3string",
"metadatatype_version": {}"0.0.0",
"description": "AutomationThe REST compositionmethod forto Demouse",
}
},
"policies "required": true,
"constraints": []
},{
"namevalid_values": [
"toscaPOST",
"PUT",
"versionGET":,
"1.0.0",
"metadataDELETE"
]
}
]
},
"path": {
"compositionIdname": "19210df5-c5bf-4431-862a-82b148cfb668"
}
},
{
"tosca_definitionspath",
"type": "string",
"type_version": "tosca_simple_yaml_1_30.0.0",
"data_typesdescription": {
"onap.datatypes.ToscaConceptIdentifier": {
"properties": { "The path of the REST request relative to the base URL",
"required": true
},
"namebody": {
"name": "namebody",
"type": "string",
"type_version": "0.0.0",
"description": "The body of the REST request for PUT and POST requests",
"required": truefalse
},
"versionexpectedResponse": {
"name": "versionexpectedResponse",
"type": "stringinteger",
"type_version": "0.0.0",
"description": "THe expected HTTP status code for the REST request",
"required": true,
"constraints": []
}
},
"name": "org.onap.datatypes.ToscaConceptIdentifierpolicy.clamp.acm.httpAutomationCompositionElement.RestRequest",
"version": "01.0.0",
"derived_from": "tosca.datatypes.Root",
"metadata": {}
},
"org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequestConfigurationEntity": {
"properties": {
"restRequestIdconfigurationEntityId": {
"name": "restRequestIdconfigurationEntityId",
"type": "onap.datatypes.ToscaConceptIdentifier",
"type_version": "0.0.0",
"description": "The name and version of a RESTConfiguration requestEntity to be senthandled toby athe RESTHTTP endpoint",Automation Composition "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"
]
}
]
Element",
"required": true
},
"pathrestSequence": {
"name": "pathrestSequence",
"type": "stringlist",
"type_version": "0.0.0",
"description": "TheA pathsequence of theREST RESTcommands requestto relativesend to the baseREST URLendpoint",
"required": true
}false,
"bodyentry_schema": {
"nametype": "body",
"type": "string",
"type_org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequest",
"type_version": "1.0.0"
}
}
},
"name": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntity",
"version": "01.0.0",
"descriptionderived_from": "The body of the REST request for PUT and POST requests",
"required": false
},
"expectedResponsetosca.datatypes.Root",
"metadata": {}
}
},
"node_types": {
"org.onap.policy.clamp.acm.Participant": {
"properties": {
"provider": {
"name": "expectedResponseprovider",
"type": "integerstring",
"type_version": "0.0.0",
"description": "THe expected HTTP status code for the REST request",
"required": true,
"constraints": []
false
}
},
"name": "org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.RestRequestParticipant",
"version": "1.0.01",
"derived_from": "tosca.datatypesnodetypes.Root",
"metadata": {}
},
"org.onap.datatypes.policy.clamp.acm.httpAutomationCompositionElement.ConfigurationEntityAutomationCompositionElement": {
"properties": {
"configurationEntityIdprovider": {
"name": "configurationEntityIdprovider",
"type": "onap.datatypes.ToscaConceptIdentifierstring",
"type_version": "0.0.0",
"description": "TheSpecifies namethe andorganization versionthat ofprovides athe Configurationautomation Entitycomposition toelement",
be handled by the HTTP Automation Composition Element",
"required": true "required": false,
"metadata": {
"common": "true"
}
},
"restSequencestartPhase": {
"name": "restSequencestartPhase",
"type": "listinteger",
"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": {
"providerdescription": "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": "provideruninitializedToPassiveTimeout",
"type": "stringinteger",
"type_version": "0.0.0",
"requireddescription": false"The maximum }time in },seconds "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"to wait for a state chage from uninitialized to passive",
"default": 60.0,
"typerequired": "string"false,
"type_versionconstraints": [
"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 | - Call "Create AC Instance 1".
- Verify 200 Response returned
| 200 Response with InstanceId | PASS | Successful Endpoint Interaction | Create AC instance 2 | - Call "Create AC Instance 2".
- Verify 200 Response returned
| 200 Response with InstanceId | PASS | Successful Endpoint Interaction | Update AC instance | Update AC instance1 with wrong paramter | - Call "Update AC Instance 1"
- Verify 200 Response returned
| 200 Response with Instance id | PASS | Successful Endpoint Interaction | Undeploy AC instance | Undeploy AC instance 1 | - Call "Undeploy AC Instance 1"
- Call "Get AC Instance 1"
- Verify the AC Instance is "UNDEPLOYED"
| 202 Response. Verify the AC instance's is "UNDEPLOYED" | PASS | Successful Endpoint Interaction | Update AC instance | Update AC instance1 with correct paramter | - Call "Update AC Instance 1"
- Verify 200 Response returned
| 200 Response with Instance id | PASS | Successful Endpoint Interaction | Delete AC instance | Delete AC instance2 | - Call "Delete AC Instance 2"
- Verify 200 Response
| 200 Response | PASS | Successful Endpoint Interaction | Deploy AC instance | Deploy AC instance 1 | - Call "Get AC Instances"
- Verify AC Instance 1 and 2 are created
- Verify no operation has been carried out by the participants
- Call "Deploy AC Instance 1"
- Verify 202 Response
| 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. | PASS | Successful Endpoint Interaction | Deploy AC instance 2 | - Call "Get AC Instances"
- Verify AC Instance 1 and 2 are created
- Verify no operation has been carried out by the participants
- Call "Deploy AC Instance 2"
- Verify 202 Response
| 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. | PASS | Successful Endpoint Interaction | Get deployed instance by id | - Call "Get AC Instances"
- Verify the instance 1 is retrieved and in LOCKED state
| Verify the instance is retrieved and present in LOCKED state. | PASS | Successful Endpoint Interaction | UNLOCK the AC instance | - Call "Get all participants"
- Verify all participants are on UNLOCKED STATE
| 200 Response Verify the k8s , http and policy participants have performed the intended operations on UNLOCKED state | PASS | 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 | PASS | 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 | PASS | 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 | PASS | 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 | PASS | Successful Endpoint Interaction | Undeploy AC instance | LOCK the AC instance with instanceid | - Call "Get AC Instance 1"
- Verify the instance is deployed and in UNLOCKED state
- Call "Lock AC Instance 1"
- Verify the participants have been removed
| 200 Response. The instance should be moved to LOCKED state. Participants should have removed the corresponding deployments from the system | PASS | Successful Endpoint Interaction | Delete AC instance | - Call "Delete AC Instance 1"
- Verify 202 Response and the AC instance has been deleted
| 202 Response. The AC instance should get deleted from the db. | PASS | Successful Endpoint Interaction | Deprime AC defintion | - Call "Deprime AC definition"
- 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. | PASS | Successful Endpoint Interaction | Delete AC defintion | - Call "Delete AC Defintion"
- Verify the AC Definition has been deleted from the DB
| 200 Response. The AC defintion should get deleted from the db | PASS | Update Scenario | Update AC instance property on the deployed instance | Verify updating of AC properties in runtime | Make sure the AC instance is deployed successfully. - Verify the 'GET instance' Api shows the instance state as 'Deployed'
Call "Instantiation AC" Api with the updated properties of the instance elements in the request body. - response should be 202
Verify the runtime logs that the 'PROPERTIES_UPDATE' event is sent to the participants from runtime-acm. Call the 'GET instance' Api - should get the 200 response and the deploy state of the instance should be "UPDATING" The ACM instance state should be "UPDATING" until the properties update is completed in the participant. Verify the properties are updated in runtime database and the GET instance Api returns the instance state as 'Deployed' after update operation | Update Scenario | Update AC instance property on an Undeployed instance | Verify updating of instance properties on an undeployed instance | Make sure the AC instances are in UNDEPLOYED state. - Verify the 'GET instance' Api shows the instance state as 'Undeployed'
Call "Instantiation AC" with the updated properties of the instance elements in the request body. - response should be 202
Call "get Instantiated List" - should get a 200 response and we should see the properties updated for the instance in the runtime database. In this case, there should not be any PROPERTIES_UPDATE event sends out from the runtime as the instance is not yet deployed to the participant. | 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 | Restart Scenario | Restart participant after priming | Verify restarting of participant after the composition is primed. | Make sure the AC composition is commissioned and primed to the participants. Execute the test step 8 specified in the restart scenario section of this document. For the step 8d, execute the GET compositions to verify the Ac element info are primed to the restarted participant. | Verify the restarted participant is primed again by the runtime with the AC element info. | Restart Scenario | Restart after deployment | Verify restarting of participant after the deployment | Make sure an AC instance is deployed successfully and the GET instance Api returns 200 response with the deploy state 'Deployed' Execute the test step 8 specified in the restart scenario section of this document. For the step 8d, execute the GET instance Api to verify the Ac element info are in deployed state without any changes. | Verify the runtime logs for composition and instance events sent to the restarted participant. The AC instance state should be preserved as 'DEPLOYED' without any changes. | Restart Scenario | Restart during deployment | Verify restarting of participant when the deployment is in progress | Trigger the deployment of an AC instance and make sure the AC instance is in DEPLOYING state. This can be achieved by using mock participant by configuring appropriate delays.
Execute the test step 8 specified in the restart scenario section of this document.
Verify the runtime sends out composition and instance info to the participant through kafka events.
Execute GET AC instance to verify the deployment gets executed by the participant again and the over all state is updated accordingly with success/fail results | Restart Scenario | Restart during Undeployment | Verify restarting of participant when the undeployment is in progress | Trigger the undeployment of an AC instance and make sure the AC instance is in UNDEPLOYING state. This can be achieved by using mock participant by configuring appropriate delays. Execute the test step 8 specified in the restart scenario section of this document. Verify the runtime sends out composition and instance info to the participant through kafka events. | Execute GET AC instance to verify the undeployment gets executed by the participant again and the over all state is updated accordingly with success/fail results | Restart Scenario | Restart during UPDATE | Verify restarting behavior of participant when the update operation is in progress | Make sure an AC instance is deployed successfully and the GET instance API returns 200 response with the deploy state DEPLOYED. Trigger the update of an AC instance properties by executing the AC instantiation API call with updated properties on the request body. Make sure the AC instance is in UPDATING state. This can be achieved by using mock participant by configuring appropriate delays. Execute the test step 8 specified in the restart scenario section of this document. Verify the runtime sends out composition and instance info to the participant through kafka events. | Execute GET AC instance to verify the updating operation gets executed by the participant again and the over all state is updated accordingly with success/fail
results
Verify fetching the AC instance to confirm the properties of the AC instance are updated as per the update request. |
|
---|
Successful Endpoint Interaction | Create AC instance | Create AC instance 1 | - Call "Create AC Instance 1".
- Verify 200 Response returned
| 200 Response with InstanceId | PASS |
|
|
---|
Successful Endpoint Interaction |
| Create AC instance 2 | - Call "Create AC Instance 2".
- Verify 200 Response returned
| 200 Response with InstanceId | PASS |
|
|
---|
Successful Endpoint Interaction | Update AC instance | Update AC instance1 with wrong paramter | - Call "Update AC Instance 1"
- Verify 200 Response returned
| 200 Response with Instance id | PASS |
|
|
---|
Successful Endpoint Interaction | Undeploy AC instance | Undeploy AC instance 1 | - Call "Undeploy AC Instance 1"
- Call "Get AC Instance 1"
- Verify the AC Instance is "UNDEPLOYED"
| 202 Response. Verify the AC instance's is "UNDEPLOYED" | PASS |
|
|
---|
Successful Endpoint Interaction | Update AC instance | Update AC instance1 with correct paramter | - Call "Update AC Instance 1"
- Verify 200 Response returned
| 200 Response with Instance id | PASS |
|
|
---|
Successful Endpoint Interaction | Delete AC instance | Delete AC instance2 | - Call "Delete AC Instance 2"
- Verify 200 Response
| 200 Response | PASS |
|
|
---|
Successful Endpoint Interaction | Deploy AC instance | Deploy AC instance 1 | - Call "Get AC Instances"
- Verify AC Instance 1 and 2 are created
- Verify no operation has been carried out by the participants
- Call "Deploy AC Instance 1"
- Verify 202 Response
| 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. | PASS |
|
|
---|
Successful Endpoint Interaction |
| Deploy AC instance 2 | - Call "Get AC Instances"
- Verify AC Instance 1 and 2 are created
- Verify no operation has been carried out by the participants
- Call "Deploy AC Instance 2"
- Verify 202 Response
| 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. | PASS |
|
|
---|
Successful Endpoint Interaction |
| Get deployed instance by id | - Call "Get AC Instances"
- Verify the instance 1 is retrieved and in LOCKED state
| Verify the instance is retrieved and present in LOCKED state. | PASS |
|
|
---|
Successful Endpoint Interaction |
| UNLOCK the AC instance | - Call "Get all participants"
- Verify all participants are on UNLOCKED STATE
| 200 Response Verify the k8s , http and policy participants have performed the intended operations on UNLOCKED state | PASS |
|
|
---|
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 | PASS |
|
|
---|
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 | PASS |
|
|
---|
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 | PASS |
|
|
---|
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 | PASS |
|
|
---|
Successful Endpoint Interaction | Undeploy AC instance | LOCK the AC instance with instanceid | - Call "Get AC Instance 1"
- Verify the instance is deployed and in UNLOCKED state
- Call "Lock AC Instance 1"
- Verify the participants have been removed
| 200 Response. The instance should be moved to LOCKED state. Participants should have removed the corresponding deployments from the system | PASS |
|
|
---|
Successful Endpoint Interaction |
| Delete AC instance | - Call "Delete AC Instance 1"
- Verify 202 Response and the AC instance has been deleted
| 202 Response. The AC instance should get deleted from the db. | PASS |
|
|
---|
Successful Endpoint Interaction |
| Deprime AC defintion | - Call "Deprime AC definition"
- 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. | PASS |
|
|
---|
Successful Endpoint Interaction |
| Delete AC defintion | - Call "Delete AC Defintion"
- Verify the AC Definition has been deleted from the DB
| 200 Response. The AC defintion should get deleted from the db | PASS |
|
|
---|
|
|
|
|
|
|
|
|
---|
Update Scenario | Update AC instance property on the deployed instance | Verify updating of AC properties in runtime | Make sure the AC instance is deployed successfully. - Verify the 'GET instance' Api shows the instance state as 'Deployed' Call "Instantiation AC" Api with the updated properties of the instance elements in the request body. - response should be 202
| Verify the runtime logs that the 'PROPERTIES_UPDATE' event is sent to the participants from runtime-acm. Call the 'GET instance' Api - should get the 200 response and the deploy state of the instance should be "UPDATING" The ACM instance state should be "UPDATING" until the properties update is completed in the participant. Verify the properties are updated in runtime database and the GET instance Api returns the instance state as 'Deployed' after update operation |
|
|
|
---|
Update Scenario | Update AC instance property on an Undeployed instance | Verify updating of instance properties on an undeployed instance | Make sure the AC instances are in UNDEPLOYED state. - Verify the 'GET instance' Api shows the instance state as 'Undeployed' Call "Instantiation AC" with the updated properties of the instance elements in the request body. - response should be 202
| Call "get Instantiated List" - should get a 200 response and we should see the properties updated for the instance in the runtime database. In this case, there should not be any PROPERTIES_UPDATE event sends out from the runtime as the instance is not yet deployed to the participant. |
|
|
|
---|
|
|
|
|
|
|
|
|
---|
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 |
|
|
|
---|
Restart Scenario | Restart participant after priming | Verify restarting of participant after the composition is primed. | Make sure the AC composition is commissioned and primed to the participants. Execute the test step 8 specified in the restart scenario section of this document. For the step 8d, execute the GET compositions to verify the Ac element info are primed to the restarted participant. | Verify the restarted participant is primed again by the runtime with the AC element info. |
|
|
|
---|
Restart Scenario | Restart after deployment | Verify restarting of participant after the deployment | Make sure an AC instance is deployed successfully and the GET instance Api returns 200 response with the deploy state 'Deployed' Execute the test step 8 specified in the restart scenario section of this document. For the step 8d, execute the GET instance Api to verify the Ac element info are in deployed state without any changes. | Verify the runtime logs for composition and instance events sent to the restarted participant. The AC instance state should be preserved as 'DEPLOYED' without any changes. |
|
|
|
---|
Restart Scenario | Restart during deployment | Verify restarting of participant when the deployment is in progress | Trigger the deployment of an AC instance and make sure the AC instance is in DEPLOYING state. This can be achieved by using mock participant by configuring appropriate delays. Execute the test step 8 specified in the restart scenario section of this document. Verify the runtime sends out composition and instance info to the participant through kafka events.
| Execute GET AC instance to verify the deployment gets executed by the participant again and the over all state is updated accordingly with success/fail results |
|
|
|
---|
Restart Scenario | Restart during Undeployment | Verify restarting of participant when the undeployment is in progress | Trigger the undeployment of an AC instance and make sure the AC instance is in UNDEPLOYING state. This can be achieved by using mock participant by configuring appropriate delays. Execute the test step 8 specified in the restart scenario section of this document. Verify the runtime sends out composition and instance info to the participant through kafka events. | Execute GET AC instance to verify the undeployment gets executed by the participant again and the over all state is updated accordingly with success/fail results |
|
|
|
---|
Restart Scenario | Restart during UPDATE | Verify restarting behavior of participant when the update operation is in progress | Make sure an AC instance is deployed successfully and the GET instance API returns 200 response with the deploy state DEPLOYED. Trigger the update of an AC instance properties by executing the AC instantiation API call with updated properties on the request body. Make sure the AC instance is in UPDATING state. This can be achieved by using mock participant by configuring appropriate delays. Execute the test step 8 specified in the restart scenario section of this document. Verify the runtime sends out composition and instance info to the participant through kafka events. | Execute GET AC instance to verify the updating operation gets executed by the participant again and the over all state is updated accordingly with success/fail results Verify fetching the AC instance to confirm the properties of the AC instance are updated as per the update request. |
|
|
|
---|
|
|
|
|
|
|
|
|
---|
Migration Scenario | Creation AC definition and instance | Creation AC definition and instance | - create AC definition "Group A" using the endpoint: "Create AC definition Group A"
- prime AC definition "Group A" using the endpoint: "Priming AC definition Group A"
- create AC instance using the endpoint "Instantiation AC Group A"
- deploy AC instance using the endpoint "Deploy Group A instantiated"
- fetch AC instance using the endpoint "Get instantiated by Group A and instanceId"
| Verify fetching the AC instance using "Get instantiated by Group A and instanceId" | PASS |
|
|
---|
Migration Scenario | Creation AC definition and instance | Creation second AC definition | - create AC definition "Group B" using the endpoint: "Create AC definition Group B"
- prime AC definition "Group B" using the endpoint: "Priming AC definition Group B"
- the endpoint "Get instantiated by Group B and instanceId" should not working
| Verify fetching the AC instance using "Get instantiated by Group B and instanceId" | 404 Bad request |
|
|
---|
Migration Scenario | Participant Configuration | Participant Configuration for migration delay | using the endpoint "Post http-participant parameters", set migrateTimerMs to 30000 Ms |
| PASS | { "deploySuccess": true, "undeploySuccess": true, "lockSuccess": true, "unlockSuccess": true, "deleteSuccess": true, "updateSuccess": true, "migrateSuccess": true, "primeSuccess": true, "deprimeSuccess": true, "deployTimerMs": 1000, "undeployTimerMs": 1000, "lockTimerMs": 100, "unlockTimerMs": 100, "updateTimerMs": 100, "migrateTimerMs": 30000, "deleteTimerMs": 100, "primeTimerMs": 100, "deprimeTimerMs": 100 } |
|
---|
Migration Scenario | Testing endpoint visibility | Testing endpoint visibility during migration | - start migration using the endpoint: "Migration instantiated Group A to Group B"
- fetch the AC instance using the endpoint "Get instantiated list Group A"
- fetch the AC instance using the endpoint "Get instantiated list Group B"
| Verify fetching the AC instance from composition source and composition target | PASS | DepolyState should be in "MIGRATING" state stateChangeResult should be "NO_ERROR" |
|
---|
Migration Scenario | Testing endpoint visibility | Testing endpoint visibility after migration | - wait the end of the migration
- fetch the AC instance using the endpoint "Get instantiated list Group B"
| Verify fetching the AC instance from composition target | PASS | DepolyState should be in "DEPLOYED" state stateChangeResult should be "NO_ERROR" |
|
---|
Migration Scenario | Testing endpoint visibility | Testing endpoint visibility after migration | fetching the AC instance using the endpoint "Get instantiated list Group A" should fail | Verify that fetching the AC instance from composition source should fail | FAIL | 404 Bad request |
|
---|
Migration Scenario | Participant Configuration | Participant Configuration for migration fail | using the endpoint "Post http-participant parameters", set "migrateSuccess" to false |
| PASS | { "deploySuccess": true, "undeploySuccess": true, "lockSuccess": true, "unlockSuccess": true, "deleteSuccess": true, "updateSuccess": true, "migrateSuccess": false, "primeSuccess": true, "deprimeSuccess": true, "deployTimerMs": 1000, "undeployTimerMs": 1000, "lockTimerMs": 100, "unlockTimerMs": 100, "updateTimerMs": 100, "migrateTimerMs": 100, "deleteTimerMs": 100, "primeTimerMs": 100, "deprimeTimerMs": 100 } |
|
---|
Migration Scenario | Testing migration fail | Testing migration fail | - start migration using the endpoint: "Migration instantiated Group B to Group A"
- fetch the AC instance using the endpoint "Get instantiated list Group A"
- fetch the AC instance using the endpoint "Get instantiated list Group B"
| Verify fetching the AC instance from composition source and composition target | PASS | DepolyState should be in "MIGRATING" state stateChangeResult should be "FAILED"
|
|
---|
Migration Scenario | Testing migration fail | Testing undeploy after migration fail | - undeploy the AC instance using the endpoint "Undeploy Group B instantiated"
- wait the undeploy completed
- fetch the AC instance using the endpoint "Get instantiated list Group B"
|
| PASS | DepolyState should be in "UNDEPLOYED" state stateChangeResult should be "NO_ERROR" |
|
---|