From 8fadfb9667186910af1b9b6c31b9bb673057f729 Mon Sep 17 00:00:00 2001 From: FrancescoFioraEst Date: Wed, 17 Apr 2024 11:42:58 +0100 Subject: Add migration in integration tests Issue-ID: POLICY-4972 Change-Id: I40c554fcb062b4928663bbfd5a03ddd2dd1f6805 Signed-off-by: FrancescoFioraEst --- README.md | 3 + compose/get-k8s-versions.sh | 6 +- csit/resources/scripts/get-cluster-info.sh | 23 +- csit/resources/scripts/run-test.sh | 4 +- csit/resources/scripts/setup-clamp.sh | 3 +- csit/resources/tests/data/OutProperties.json | 13 ++ .../tests/data/ac-definition-migration-from.yaml | 153 +++++++++++++ .../tests/data/ac-definition-migration-to.yaml | 153 +++++++++++++ .../tests/data/ac-instance-migration-from.yaml | 97 ++++++++ .../tests/data/ac-instance-migration-to.yaml | 59 +++++ csit/resources/tests/data/ac-instance-update.yaml | 60 +++++ csit/resources/tests/policy-clamp-test.robot | 243 +++++++++++++++++++-- csit/run-k8s-csit.sh | 31 ++- helm/policy/templates/job.yaml | 4 +- 14 files changed, 817 insertions(+), 35 deletions(-) create mode 100644 csit/resources/tests/data/OutProperties.json create mode 100644 csit/resources/tests/data/ac-definition-migration-from.yaml create mode 100644 csit/resources/tests/data/ac-definition-migration-to.yaml create mode 100644 csit/resources/tests/data/ac-instance-migration-from.yaml create mode 100644 csit/resources/tests/data/ac-instance-migration-to.yaml create mode 100644 csit/resources/tests/data/ac-instance-update.yaml diff --git a/README.md b/README.md index 709eee3d..c1e90e5f 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,9 @@ Steps involved in running CSIT in kubernetes: 4. Invokes the respective robot test file for the project supplied by the user. The test execution results can be viewed from the logs of policy-csit-robot pod. +Running Policy CSIT in docker: +To run CSIT in docker, docker/csit/run-project-csit.sh script can be invoked with the argument {project_name}. + Running Policy Regression Tests: ACM regression tests can be invoked using the script docker/csit/run-acm-regression.sh with the arguments {ACM-R release name} {participant release name} For example, if ACM-R and participants needs to be tested for backward compatbility between montreal and london versions, the script can be invoked diff --git a/compose/get-k8s-versions.sh b/compose/get-k8s-versions.sh index 1575164c..49954604 100755 --- a/compose/get-k8s-versions.sh +++ b/compose/get-k8s-versions.sh @@ -1,7 +1,7 @@ #! /bin/bash # ============LICENSE_START==================================================== -# Copyright (C) 2023 Nordix Foundation. All rights reserved. +# Copyright (C) 2023-2024 Nordix Foundation. All rights reserved. # ============================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -27,9 +27,9 @@ fi VALUES_YML=${WORKSPACE}/helm/policy/values.yaml -policy_components=(policy-api policy-pap policy-apex-pdp policy-models-simulator policy-pdpd-cl policy-xacml-pdp policy-distribution) +policy_components=(policy-api policy-pap policy-apex-pdp policy-models-simulator policy-pdpd-cl policy-xacml-pdp policy-distribution policy-db-migrator) -clamp_components=(policy-clamp-runtime-acm policy-clamp-ac-kserve-ppnt policy-clamp-ac-k8s-ppnt policy-clamp-ac-pf-ppnt policy-clamp-ac-http-ppnt policy-clamp-ac-a1pms-ppnt) +clamp_components=(policy-clamp-runtime-acm policy-clamp-ac-kserve-ppnt policy-clamp-ac-k8s-ppnt policy-clamp-ac-pf-ppnt policy-clamp-ac-http-ppnt policy-clamp-ac-sim-ppnt policy-clamp-ac-a1pms-ppnt) version_tags=$(source ${WORKSPACE}/compose/get-versions.sh) export version_tags diff --git a/csit/resources/scripts/get-cluster-info.sh b/csit/resources/scripts/get-cluster-info.sh index ab0b27b9..539bf6a3 100755 --- a/csit/resources/scripts/get-cluster-info.sh +++ b/csit/resources/scripts/get-cluster-info.sh @@ -1,6 +1,6 @@ #!/bin/bash # ============LICENSE_START======================================================= -# Copyright (C) 2023 Nordix Foundation. All rights reserved. +# Copyright (C) 2023-2024 Nordix Foundation. All rights reserved. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -28,9 +28,10 @@ export XACML_PORT=30004 export DROOLS_PORT=30005 export DIST_PORT=30006 export ACM_PORT=30007 -export POLICY_PF_PARTICIPANT_PORT=30008 -export POLICY_HTTP_PARTICIPANT_PORT=30009 -export POLICY_K8S_PARTICIPANT_PORT=30010 +export PF_PARTICIPANT_PORT=30008 +export HTTP_PARTICIPANT_PORT=30009 +export K8S_PARTICIPANT_PORT=30010 +export SIM_PARTICIPANT_PORT=30011 export SIMULATOR_PORT=30904 # Retrieve pod names @@ -44,8 +45,9 @@ function get_pod_names() { export DIST_POD=$(get_pod_name distribution) export ACM_POD=$(get_pod_name acm-runtime) export POLICY_PPNT_POD=$(get_pod_name policy-ppnt) - export POLICY_PPNT_POD=$(get_pod_name http-ppnt) - export POLICY_PPNT_POD=$(get_pod_name k8s-ppnt) + export POLICY_HTTP_POD=$(get_pod_name http-ppnt) + export POLICY_SIM_POD=$(get_pod_name sim-ppnt) + export POLICY_K8S_POD=$(get_pod_name k8s-ppnt) } # Retrieve service names @@ -60,6 +62,7 @@ function get_svc_names() { export ACM_SVC=$(get_svc_name policy-clamp-runtime-acm) export POLICY_PPNT_SVC=$(get_svc_name policy-clamp-ac-pf-ppnt) export POLICY_HTTP_SVC=$(get_svc_name policy-clamp-ac-http-ppnt) + export POLICY_SIM_SVC=$(get_svc_name policy-clamp-ac-sim-ppnt) export POLICY_K8S_SVC=$(get_svc_name policy-clamp-ac-k8s-ppnt) } @@ -74,6 +77,7 @@ function expose_services() { expose_service $ACM_SVC expose_service $POLICY_PPNT_SVC expose_service POLICY_HTTP_SVC + expose_service POLICY_SIM_SVC expose_service POLICY_K8S_SVC setup_message_router_svc @@ -103,9 +107,10 @@ function patch_ports() { patch_port "$API_SVC" $API_PORT patch_port "$PAP_SVC" $PAP_PORT patch_port "$ACM_SVC" $ACM_PORT - patch_port "$POLICY_PPNT_SVC" $POLICY_PF_PARTICIPANT_PORT - patch_port "$HTTP_PPNT_SVC" $POLICY_HTTP_PARTICIPANT_PORT - patch_port "$K8S_PPNT_SVC" $POLICY_K8S_PARTICIPANT_PORT + patch_port "$POLICY_PPNT_SVC" $PF_PARTICIPANT_PORT + patch_port "$POLICY_HTTP_SVC" $HTTP_PARTICIPANT_PORT + patch_port "$POLICY_SIM_SVC" $SIM_PARTICIPANT_PORT + patch_port "$POLICY_K8S_SVC" $K8S_PARTICIPANT_PORT patch_port "$DIST_SVC" $DIST_PORT patch_port "$DROOLS_SVC" $DROOLS_PORT patch_port "$XACML_SVC" $XACML_PORT diff --git a/csit/resources/scripts/run-test.sh b/csit/resources/scripts/run-test.sh index 34048e2e..90dec572 100755 --- a/csit/resources/scripts/run-test.sh +++ b/csit/resources/scripts/run-test.sh @@ -27,6 +27,7 @@ DATA=/opt/robotworkspace/models/models-examples/src/main/resources/policies NODETEMPLATES=/opt/robotworkspace/models/models-examples/src/main/resources/nodetemplates POLICY_RUNTIME_ACM_IP=policy-clamp-runtime-acm:${DEFAULT_PORT} +POLICY_PARTICIPANT_SIM_IP=policy-clamp-ac-sim-ppnt:${DEFAULT_PORT} POLICY_API_IP=policy-api:${DEFAULT_PORT} POLICY_PAP_IP=policy-pap:${DEFAULT_PORT} APEX_IP=policy-apex-pdp:${DEFAULT_PORT} @@ -42,7 +43,8 @@ DIST_TEMP_FOLDER=/tmp/distribution export ROBOT_VARIABLES= ROBOT_VARIABLES="-v DATA:$DATA -v NODETEMPLATES:$NODETEMPLATES -v POLICY_API_IP:$POLICY_API_IP --v POLICY_RUNTIME_ACM_IP:$POLICY_RUNTIME_ACM_IP -v POLICY_PAP_IP:$POLICY_PAP_IP -v APEX_IP:$APEX_IP +-v POLICY_RUNTIME_ACM_IP:$POLICY_RUNTIME_ACM_IP -v POLICY_PARTICIPANT_SIM_IP:$POLICY_PARTICIPANT_SIM_IP +-v POLICY_PAP_IP:$POLICY_PAP_IP -v APEX_IP:$APEX_IP -v APEX_EVENTS_IP:$APEX_EVENTS_IP -v KAFKA_IP:$KAFKA_IP -v PROMETHEUS_IP:${PROMETHEUS_IP} -v POLICY_PDPX_IP:$POLICY_PDPX_IP -v POLICY_DROOLS_IP:$POLICY_DROOLS_IP -v TEMP_FOLDER:${DIST_TEMP_FOLDER} -v DISTRIBUTION_IP:$DISTRIBUTION_IP -v CLAMP_K8S_TEST:$CLAMP_K8S_TEST" diff --git a/csit/resources/scripts/setup-clamp.sh b/csit/resources/scripts/setup-clamp.sh index 4eae4da3..ba4467b9 100755 --- a/csit/resources/scripts/setup-clamp.sh +++ b/csit/resources/scripts/setup-clamp.sh @@ -1,6 +1,6 @@ #!/bin/bash # ============LICENSE_START======================================================= -# Copyright (C) 2021-2023 Nordix Foundation. +# Copyright (C) 2021-2024 Nordix Foundation. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -30,6 +30,7 @@ CLAMP_K8S_TEST=false export SUITES="policy-clamp-test.robot" ROBOT_VARIABLES="-v POLICY_RUNTIME_ACM_IP:localhost:${ACM_PORT} +-v POLICY_PARTICIPANT_SIM_IP:localhost:${SIM_PARTICIPANT_PORT} -v POLICY_API_IP:localhost:${API_PORT} -v POLICY_PAP_IP:localhost:${PAP_PORT} -v CLAMP_K8S_TEST:$CLAMP_K8S_TEST" diff --git a/csit/resources/tests/data/OutProperties.json b/csit/resources/tests/data/OutProperties.json new file mode 100644 index 00000000..1d4144c1 --- /dev/null +++ b/csit/resources/tests/data/OutProperties.json @@ -0,0 +1,13 @@ +{ + "outProperties": { + "test": { + "object": "TEXTPLACEHOLDER", + "from": "Participant", + "to": "Runtime" + } + }, + "automationCompositionId": "INSTACEIDPLACEHOLDER", + "automationCompositionElementId": "709c62b3-8918-41b9-a747-d21eb79c6c34", + "useState": "IDLE", + "operationalState": "ENABLED" +} diff --git a/csit/resources/tests/data/ac-definition-migration-from.yaml b/csit/resources/tests/data/ac-definition-migration-from.yaml new file mode 100644 index 00000000..273cfec3 --- /dev/null +++ b/csit/resources/tests/data/ac-definition-migration-from.yaml @@ -0,0 +1,153 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2024 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= +tosca_definitions_version: tosca_simple_yaml_1_3 +name: Migration-From +data_types: + onap.datatypes.ToscaConceptIdentifier: + derived_from: tosca.datatypes.Root + properties: + name: + type: string + required: true + version: + type: string + required: true + +node_types: + org.onap.policy.clamp.acm.Participant: + version: 1.0.1 + derived_from: tosca.nodetypes.Root + properties: + provider: + type: string + required: false + org.onap.policy.clamp.acm.AutomationCompositionElement: + version: 1.0.1 + derived_from: tosca.nodetypes.Root + properties: + provider: + type: string + required: false + metadata: + common: true + description: Specifies the organization that provides the automation composition element + startPhase: + type: integer + required: false + constraints: + - greater_or_equal: 0 + metadata: + common: true + description: A value indicating the start phase in which this automation composition element will be started, the + first start phase is zero. Automation Composition Elements are started in their start_phase order and stopped + in reverse start phase order. Automation Composition Elements with the same start phase are started and + stopped simultaneously + + org.onap.policy.clamp.acm.AutomationComposition: + version: 1.0.1 + derived_from: tosca.nodetypes.Root + properties: + provider: + type: string + required: false + metadata: + common: true + description: Specifies the organization that provides the automation composition element + elements: + type: list + required: true + metadata: + common: true + entry_schema: + type: onap.datatypes.ToscaConceptIdentifier + description: Specifies a list of automation composition element definitions that make up this automation composition definition + + org.onap.policy.clamp.acm.SimAutomationCompositionElement: + version: 1.0.0 + derived_from: org.onap.policy.clamp.acm.AutomationCompositionElement + properties: + baseUrl: + type: string + required: true + description: The base URL to be prepended to each path, identifies the host for the REST endpoints. + httpHeaders: + type: map + required: false + entry_schema: + type: string + description: HTTP headers to send on REST requests + configurationEntities: + type: map + required: true + entry_schema: + type: map + description: The connfiguration entities the Automation Composition Element is managing and their associated REST requests + +topology_template: + + node_templates: + + org.onap.policy.clamp.acm.SimParticipant: + version: 2.3.4 + type: org.onap.policy.clamp.acm.Participant + type_version: 1.0.1 + description: Participant Simulator + properties: + provider: ONAP + + onap.policy.clamp.ac.element.Sim_StarterAutomationCompositionElement: + version: 1.2.3 + type: org.onap.policy.clamp.acm.SimAutomationCompositionElement + type_version: 1.0.0 + description: Automation composition element for the http requests of AC Element Starter microservice + properties: + provider: ONAP + startPhase: 0 + + onap.policy.clamp.ac.element.Sim_BridgeAutomationCompositionElement: + version: 1.2.3 + type: org.onap.policy.clamp.acm.SimAutomationCompositionElement + type_version: 1.0.0 + description: Automation composition element for the http requests of AC Element Bridge microservice + properties: + provider: ONAP + startPhase: 0 + + onap.policy.clamp.ac.element.Sim_SinkAutomationCompositionElement: + version: 1.2.3 + type: org.onap.policy.clamp.acm.SimAutomationCompositionElement + type_version: 1.0.0 + description: Automation composition element for the http requests of AC Element Sink microservice + properties: + provider: ONAP + startPhase: 0 + + onap.policy.clamp.ac.element.AutomationCompositionDefinition: + version: 1.2.3 + type: org.onap.policy.clamp.acm.AutomationComposition + type_version: 1.0.1 + description: Automation composition for Demo + properties: + provider: ONAP + elements: + - name: onap.policy.clamp.ac.element.Sim_StarterAutomationCompositionElement + version: 1.2.3 + - name: onap.policy.clamp.ac.element.Sim_BridgeAutomationCompositionElement + version: 1.2.3 + - name: onap.policy.clamp.ac.element.Sim_SinkAutomationCompositionElement + version: 1.2.3 diff --git a/csit/resources/tests/data/ac-definition-migration-to.yaml b/csit/resources/tests/data/ac-definition-migration-to.yaml new file mode 100644 index 00000000..efc550b0 --- /dev/null +++ b/csit/resources/tests/data/ac-definition-migration-to.yaml @@ -0,0 +1,153 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2024 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= +tosca_definitions_version: tosca_simple_yaml_1_3 +name: Migration-To +data_types: + onap.datatypes.ToscaConceptIdentifier: + derived_from: tosca.datatypes.Root + properties: + name: + type: string + required: true + version: + type: string + required: true + +node_types: + org.onap.policy.clamp.acm.Participant: + version: 1.0.1 + derived_from: tosca.nodetypes.Root + properties: + provider: + type: string + required: false + org.onap.policy.clamp.acm.AutomationCompositionElement: + version: 1.0.1 + derived_from: tosca.nodetypes.Root + properties: + provider: + type: string + required: false + metadata: + common: true + description: Specifies the organization that provides the automation composition element + startPhase: + type: integer + required: false + constraints: + - greater_or_equal: 0 + metadata: + common: true + description: A value indicating the start phase in which this automation composition element will be started, the + first start phase is zero. Automation Composition Elements are started in their start_phase order and stopped + in reverse start phase order. Automation Composition Elements with the same start phase are started and + stopped simultaneously + + org.onap.policy.clamp.acm.AutomationComposition: + version: 1.0.1 + derived_from: tosca.nodetypes.Root + properties: + provider: + type: string + required: false + metadata: + common: true + description: Specifies the organization that provides the automation composition element + elements: + type: list + required: true + metadata: + common: true + entry_schema: + type: onap.datatypes.ToscaConceptIdentifier + description: Specifies a list of automation composition element definitions that make up this automation composition definition + + org.onap.policy.clamp.acm.SimAutomationCompositionElement: + version: 1.0.0 + derived_from: org.onap.policy.clamp.acm.AutomationCompositionElement + properties: + baseUrl: + type: string + required: true + description: The base URL to be prepended to each path, identifies the host for the REST endpoints. + httpHeaders: + type: map + required: false + entry_schema: + type: string + description: HTTP headers to send on REST requests + configurationEntities: + type: map + required: true + entry_schema: + type: map + description: The connfiguration entities the Automation Composition Element is managing and their associated REST requests + +topology_template: + + node_templates: + + org.onap.policy.clamp.acm.SimParticipant: + version: 2.3.4 + type: org.onap.policy.clamp.acm.Participant + type_version: 1.0.1 + description: Participant Simulator + properties: + provider: ONAP + + onap.policy.clamp.ac.element.Sim_StarterAutomationCompositionElement: + version: 1.2.4 + type: org.onap.policy.clamp.acm.SimAutomationCompositionElement + type_version: 1.0.0 + description: Automation composition element for the http requests of AC Element Starter microservice + properties: + provider: ONAP + startPhase: 0 + + onap.policy.clamp.ac.element.Sim_BridgeAutomationCompositionElement: + version: 1.2.4 + type: org.onap.policy.clamp.acm.SimAutomationCompositionElement + type_version: 1.0.0 + description: Automation composition element for the http requests of AC Element Bridge microservice + properties: + provider: ONAP + startPhase: 0 + + onap.policy.clamp.ac.element.Sim_SinkAutomationCompositionElement: + version: 1.2.4 + type: org.onap.policy.clamp.acm.SimAutomationCompositionElement + type_version: 1.0.0 + description: Automation composition element for the http requests of AC Element Sink microservice + properties: + provider: ONAP + startPhase: 0 + + onap.policy.clamp.ac.element.AutomationCompositionDefinition: + version: 1.2.4 + type: org.onap.policy.clamp.acm.AutomationComposition + type_version: 1.0.1 + description: Automation composition for Demo + properties: + provider: ONAP + elements: + - name: onap.policy.clamp.ac.element.Sim_StarterAutomationCompositionElement + version: 1.2.4 + - name: onap.policy.clamp.ac.element.Sim_BridgeAutomationCompositionElement + version: 1.2.4 + - name: onap.policy.clamp.ac.element.Sim_SinkAutomationCompositionElement + version: 1.2.4 diff --git a/csit/resources/tests/data/ac-instance-migration-from.yaml b/csit/resources/tests/data/ac-instance-migration-from.yaml new file mode 100644 index 00000000..76858e4e --- /dev/null +++ b/csit/resources/tests/data/ac-instance-migration-from.yaml @@ -0,0 +1,97 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2024 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the License); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an AS IS BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= +name: Instance-Migration-From +version: 1.0.1 +compositionId: COMPOSITIONIDPLACEHOLDER +description: Demo automation composition instance 0 +elements: + + 709c62b3-8918-41b9-a747-d21eb79c6c34: + id: 709c62b3-8918-41b9-a747-d21eb79c6c34 + definition: + name: onap.policy.clamp.ac.element.Sim_StarterAutomationCompositionElement + version: 1.2.3 + description: Starter Automation Composition Element for the Demo + properties: + baseUrl: http://address:30800 + httpHeaders: + Content-Type: application/json + Authorization: Basic YWNtVXNlcjp6YiFYenRHMzQ= + configurationEntities: + - configurationEntityId: + name: onap.policy.clamp.ac.starter + version: 1.0.0 + restSequence: + - restRequestId: + name: request1 + version: 1.0.1 + httpMethod: POST + path: /onap/policy/clamp/acelement/v2/activate + body: '{ "receiverId": { "name": "onap.policy.clamp.ac.startertobridge", "version": "1.0.0" }, "timerMs": 20000, "elementType": "STARTER", "topicParameterGroup": { "server": "message-router:3904", "listenerTopic": "POLICY_UPDATE_MSG", "publisherTopic": "AC_ELEMENT_MSG", "fetchTimeout": 15000, "topicCommInfrastructure": "dmaap" } }' + expectedResponse: 201 + myParameterToUpdate: text + + 709c62b3-8918-41b9-a747-d21eb79c6c35: + id: 709c62b3-8918-41b9-a747-d21eb79c6c35 + definition: + name: onap.policy.clamp.ac.element.Sim_BridgeAutomationCompositionElement + version: 1.2.3 + description: Bridge Automation Composition Element for the Demo + properties: + baseUrl: http://address:30801 + httpHeaders: + Content-Type: application/json + Authorization: Basic YWNtVXNlcjp6YiFYenRHMzQ= + configurationEntities: + - configurationEntityId: + name: onap.policy.clamp.ac.bridge + version: 1.0.0 + restSequence: + - restRequestId: + name: request2 + version: 1.0.1 + httpMethod: POST + path: /onap/policy/clamp/acelement/v2/activate + body: '{ "receiverId": { "name": "onap.policy.clamp.ac.bridgetosink", "version": "1.0.0" }, "timerMs": 20000, "elementType": "BRIDGE", "topicParameterGroup": { "server": "message-router:3904", "listenerTopic": "POLICY_UPDATE_MSG", "publisherTopic": "AC_ELEMENT_MSG", "fetchTimeout": 15000, "topicCommInfrastructure": "dmaap" } }' + expectedResponse: 201 + myParameterToUpdate: text + + 709c62b3-8918-41b9-a747-d21eb79c6c36: + id: 709c62b3-8918-41b9-a747-d21eb79c6c36 + definition: + name: onap.policy.clamp.ac.element.Sim_SinkAutomationCompositionElement + version: 1.2.3 + description: Sink Automation Composition Element for the Demo + properties: + baseUrl: http://address:30802 + httpHeaders: + Content-Type: application/json + Authorization: Basic YWNtVXNlcjp6YiFYenRHMzQ= + configurationEntities: + - configurationEntityId: + name: onap.policy.clamp.ac.sink + version: 1.0.0 + restSequence: + - restRequestId: + name: request3 + version: 1.0.1 + httpMethod: POST + path: /onap/policy/clamp/acelement/v2/activate + body: '{ "receiverId": { "name": "onap.policy.clamp.ac.sink", "version": "1.0.0" }, "timerMs": 20000, "elementType": "SINK", "topicParameterGroup": { "server": "message-router", "listenerTopic": "POLICY_UPDATE_MSG", "publisherTopic": "AC_ELEMENT_MSG", "fetchTimeout": 15000, "topicCommInfrastructure": "dmaap" } }' + expectedResponse: 201 + myParameterToUpdate: text diff --git a/csit/resources/tests/data/ac-instance-migration-to.yaml b/csit/resources/tests/data/ac-instance-migration-to.yaml new file mode 100644 index 00000000..65b684a3 --- /dev/null +++ b/csit/resources/tests/data/ac-instance-migration-to.yaml @@ -0,0 +1,59 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2024 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the License); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an AS IS BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= +name: Instance-Migration-To +version: 1.0.1 +compositionId: COMPOSITIONIDPLACEHOLDER +instanceId: INSTACEIDPLACEHOLDER +compositionTargetId: COMPOSITIONTARGETIDPLACEHOLDER +description: Demo automation composition instance 0 +elements: + + 709c62b3-8918-41b9-a747-d21eb79c6c34: + id: 709c62b3-8918-41b9-a747-d21eb79c6c34 + definition: + name: onap.policy.clamp.ac.element.Sim_StarterAutomationCompositionElement + version: 1.2.4 + description: Starter Automation Composition Element for the Demo + properties: + baseUrl: http://10.101.0.249:30800 + configurationEntities: + - configurationEntityId: + myParameterToUpdate: text updated for migration + + 709c62b3-8918-41b9-a747-d21eb79c6c35: + id: 709c62b3-8918-41b9-a747-d21eb79c6c35 + definition: + name: onap.policy.clamp.ac.element.Sim_BridgeAutomationCompositionElement + version: 1.2.4 + description: Bridge Automation Composition Element for the Demo + properties: + baseUrl: http://10.101.0.249:30801 + configurationEntities: + - configurationEntityId: + myParameterToUpdate: TEXTPLACEHOLDER + + 709c62b3-8918-41b9-a747-d21eb79c6c36: + id: 709c62b3-8918-41b9-a747-d21eb79c6c36 + definition: + name: onap.policy.clamp.ac.element.Sim_SinkAutomationCompositionElement + version: 1.2.4 + description: Sink Automation Composition Element for the Demo + properties: + configurationEntities: + - configurationEntityId: + myParameterToUpdate: text updated for migration diff --git a/csit/resources/tests/data/ac-instance-update.yaml b/csit/resources/tests/data/ac-instance-update.yaml new file mode 100644 index 00000000..26015591 --- /dev/null +++ b/csit/resources/tests/data/ac-instance-update.yaml @@ -0,0 +1,60 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2024 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the License); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an AS IS BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= +name: Instance-Migration-To +version: 1.0.1 +compositionId: COMPOSITIONIDPLACEHOLDER +instanceId: INSTACEIDPLACEHOLDER +description: Demo automation composition instance 0 +elements: + + 709c62b3-8918-41b9-a747-d21eb79c6c34: + id: 709c62b3-8918-41b9-a747-d21eb79c6c34 + definition: + name: onap.policy.clamp.ac.element.Sim_StarterAutomationCompositionElement + version: 1.2.3 + description: Starter Automation Composition Element for the Demo + properties: + baseUrl: http://address:30800 + httpHeaders: + Content-Type: application/json + Authorization: Basic YWNtVXNlcjp6YiFYenRHMzQ= + configurationEntities: + - configurationEntityId: + myParameterToUpdate: TEXTPLACEHOLDER + + 709c62b3-8918-41b9-a747-d21eb79c6c35: + id: 709c62b3-8918-41b9-a747-d21eb79c6c35 + definition: + name: onap.policy.clamp.ac.element.Sim_BridgeAutomationCompositionElement + version: 1.2.3 + description: Bridge Automation Composition Element for the Demo + properties: + configurationEntities: + - configurationEntityId: + myParameterToUpdate: text updated + + 709c62b3-8918-41b9-a747-d21eb79c6c36: + id: 709c62b3-8918-41b9-a747-d21eb79c6c36 + definition: + name: onap.policy.clamp.ac.element.Sim_SinkAutomationCompositionElement + version: 1.2.3 + description: Sink Automation Composition Element for the Demo + properties: + configurationEntities: + - configurationEntityId: + myParameterToUpdate: text updated diff --git a/csit/resources/tests/policy-clamp-test.robot b/csit/resources/tests/policy-clamp-test.robot index 95af26a2..eff970a6 100644 --- a/csit/resources/tests/policy-clamp-test.robot +++ b/csit/resources/tests/policy-clamp-test.robot @@ -17,6 +17,16 @@ HealthcheckAcm Log Received response from ACM healthcheck {resp.text} Should Be Equal As Strings ${resp.status_code} 200 +HealthcheckParticipantSim + [Documentation] Healthcheck on Participant Simulator + ${auth}= Create List participantUser zb!XztG34 + Log Creating session http://${POLICY_PARTICIPANT_SIM_IP} + ${session}= Create Session participant http://${POLICY_PARTICIPANT_SIM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${resp}= GET On Session participant /onap/policy/simparticipant/health headers=${headers} + Log Received response from participant healthcheck {resp.text} + Should Be Equal As Strings ${resp.status_code} 200 + HealthcheckApi [Documentation] Healthcheck on policy-api Wait Until Keyword Succeeds 5 min 10 sec VerifyHealthcheckApi @@ -35,7 +45,7 @@ RegisterParticipants Should Be Equal As Strings ${resp.status_code} 202 CommissionAutomationComposition - [Documentation] Commission automation composition. + [Documentation] Commission automation composition definition. ${auth}= Create List runtimeUser zb!XztG34 Log Creating session http://${POLICY_RUNTIME_ACM_IP} ${postyaml}= Get file ${CURDIR}/data/acelement-usecase.yaml @@ -47,6 +57,32 @@ CommissionAutomationComposition set Suite variable ${compositionId} ${respyaml["compositionId"]} Should Be Equal As Strings ${resp.status_code} 201 +CommissionAcDefinitionMigrationFrom + [Documentation] Commission automation composition definition From. + ${auth}= Create List runtimeUser zb!XztG34 + Log Creating session http://${POLICY_RUNTIME_ACM_IP} + ${postyaml}= Get file ${CURDIR}/data/ac-definition-migration-from.yaml + ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/yaml Content-Type=application/yaml + ${resp}= POST On Session policy /onap/policy/clamp/acm/v2/compositions data=${postyaml} headers=${headers} + Log Received response from runtime acm ${resp.text} + ${respyaml}= yaml.Safe Load ${resp.text} + set Suite variable ${compositionFromId} ${respyaml["compositionId"]} + Should Be Equal As Strings ${resp.status_code} 201 + +CommissionAcDefinitionMigrationTo + [Documentation] Commission automation composition definition To. + ${auth}= Create List runtimeUser zb!XztG34 + Log Creating session http://${POLICY_RUNTIME_ACM_IP} + ${postyaml}= Get file ${CURDIR}/data/ac-definition-migration-to.yaml + ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/yaml Content-Type=application/yaml + ${resp}= POST On Session policy /onap/policy/clamp/acm/v2/compositions data=${postyaml} headers=${headers} + Log Received response from runtime acm ${resp.text} + ${respyaml}= yaml.Safe Load ${resp.text} + set Suite variable ${compositionToId} ${respyaml["compositionId"]} + Should Be Equal As Strings ${resp.status_code} 201 + PrimeACDefinitions [Documentation] Prime automation composition definition ${auth}= Create List runtimeUser zb!XztG34 @@ -56,8 +92,29 @@ PrimeACDefinitions ${headers}= Create Dictionary Accept=application/json Content-Type=application/json ${resp}= PUT On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionId} data=${postjson} headers=${headers} Should Be Equal As Strings ${resp.status_code} 202 - Wait Until Keyword Succeeds 2 min 5 sec VerifyPriming PRIMED + Wait Until Keyword Succeeds 2 min 5 sec VerifyPriming ${compositionId} PRIMED +PrimeACDefinitionFrom + [Documentation] Prime automation composition definition Migration From. + ${auth}= Create List runtimeUser zb!XztG34 + Log Creating session http://${POLICY_RUNTIME_ACM_IP} + ${postjson}= Get file ${CURDIR}/data/ACPriming.json + ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${resp}= PUT On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionFromId} data=${postjson} headers=${headers} + Should Be Equal As Strings ${resp.status_code} 202 + Wait Until Keyword Succeeds 2 min 5 sec VerifyPriming ${compositionFromId} PRIMED + +PrimeACDefinitionTo + [Documentation] Prime automation composition definition Migration To. + ${auth}= Create List runtimeUser zb!XztG34 + Log Creating session http://${POLICY_RUNTIME_ACM_IP} + ${postjson}= Get file ${CURDIR}/data/ACPriming.json + ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${resp}= PUT On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionToId} data=${postjson} headers=${headers} + Should Be Equal As Strings ${resp.status_code} 202 + Wait Until Keyword Succeeds 2 min 5 sec VerifyPriming ${compositionToId} PRIMED InstantiateAutomationComposition [Documentation] Instantiate automation composition. @@ -77,6 +134,20 @@ InstantiateAutomationComposition set Suite variable ${instanceId} ${respyaml["instanceId"]} Should Be Equal As Strings ${resp.status_code} 201 +InstantiateAutomationCompositionMigrationFrom + [Documentation] Instantiate automation composition migration. + ${auth}= Create List runtimeUser zb!XztG34 + Log Creating session http://${POLICY_RUNTIME_ACM_IP} + ${postyaml}= Get file ${CURDIR}/data/ac-instance-migration-from.yaml + ${updatedpostyaml}= Replace String ${postyaml} COMPOSITIONIDPLACEHOLDER ${compositionFromId} + ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/yaml Content-Type=application/yaml + ${resp}= POST On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionFromId}/instances data=${updatedpostyaml} headers=${headers} + Log Received response from runtime acm ${resp.text} + ${respyaml}= yaml.Safe Load ${resp.text} + set Suite variable ${instanceMigrationId} ${respyaml["instanceId"]} + Should Be Equal As Strings ${resp.status_code} 201 + DeployAutomationComposition [Documentation] Deploy automation composition. ${auth}= Create List runtimeUser zb!XztG34 @@ -87,8 +158,7 @@ DeployAutomationComposition ${resp}= PUT On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId} data=${postjson} headers=${headers} Log Received response from runtime acm ${resp.text} Should Be Equal As Strings ${resp.status_code} 202 - Wait Until Keyword Succeeds 10 min 5 sec VerifyDeployStatus DEPLOYED - + Wait Until Keyword Succeeds 10 min 5 sec VerifyDeployStatus ${compositionId} ${instanceId} DEPLOYED QueryPolicies [Documentation] Verify the new policies deployed @@ -102,7 +172,6 @@ QueryPolicies Should Be Equal As Strings ${resp.status_code} 200 Dictionary Should Contain Value ${resp.json()[0]} onap.policies.native.apex.ac.element - QueryPolicyTypes [Documentation] Verify the new policy types created ${auth}= Create List policyadmin zb!XztG34 @@ -115,6 +184,66 @@ QueryPolicyTypes Should Be Equal As Strings ${resp.status_code} 200 List Should Contain Value ${resp.json()['policy_types']} onap.policies.native.Apex +DeployAutomationCompositionMigration + [Documentation] Deploy automation composition. + ${auth}= Create List runtimeUser zb!XztG34 + Log Creating session http://${POLICY_RUNTIME_ACM_IP} + ${postjson}= Get file ${CURDIR}/data/DeployAC.json + ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${resp}= PUT On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionFromId}/instances/${instanceMigrationId} data=${postjson} headers=${headers} + Log Received response from runtime acm ${resp.text} + Should Be Equal As Strings ${resp.status_code} 202 + Wait Until Keyword Succeeds 10 min 5 sec VerifyDeployStatus ${compositionFromId} ${instanceMigrationId} DEPLOYED + +SendOutPropertiesToRuntime + [Documentation] Send Out Properties To Runtime + ${auth}= Create List participantUser zb!XztG34 + Log Creating session http://${POLICY_PARTICIPANT_SIM_IP} + ${postjson}= Get file ${CURDIR}/data/OutProperties.json + ${updatedpostjson}= Replace String ${postjson} INSTACEIDPLACEHOLDER ${instanceMigrationId} + ${updatedpostjson}= Replace String ${updatedpostjson} TEXTPLACEHOLDER MyTextToSend + ${session}= Create Session policy http://${POLICY_PARTICIPANT_SIM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${resp}= PUT On Session policy /onap/policy/simparticipant/v2/datas data=${updatedpostjson} headers=${headers} + Log Received response from participant sim ${resp.text} + Should Be Equal As Strings ${resp.status_code} 200 + Wait Until Keyword Succeeds 2 min 5 sec VerifyPropertiesUpdated ${compositionFromId} ${instanceMigrationId} MyTextToSend + +AutomationCompositionUpdate + [Documentation] Update of an automation composition. + ${auth}= Create List runtimeUser zb!XztG34 + Log Creating session http://${POLICY_RUNTIME_ACM_IP} + ${postyaml}= Get file ${CURDIR}/data/ac-instance-update.yaml + ${updatedpostyaml}= Replace String ${postyaml} COMPOSITIONIDPLACEHOLDER ${compositionFromId} + ${updatedpostyaml}= Replace String ${updatedpostyaml} INSTACEIDPLACEHOLDER ${instanceMigrationId} + ${updatedpostyaml}= Replace String ${updatedpostyaml} TEXTPLACEHOLDER MyTextUpdated + ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/yaml Content-Type=application/yaml + ${resp}= POST On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionFromId}/instances data=${updatedpostyaml} headers=${headers} + Log Received response from runtime acm ${resp.text} + Should Be Equal As Strings ${resp.status_code} 200 + Wait Until Keyword Succeeds 2 min 5 sec VerifyDeployStatus ${compositionFromId} ${instanceMigrationId} DEPLOYED + VerifyPropertiesUpdated ${compositionFromId} ${instanceMigrationId} MyTextUpdated + VerifyParticipantSim ${instanceMigrationId} MyTextUpdated + +AutomationCompositionMigrationTo + [Documentation] Migration of an automation composition. + ${auth}= Create List runtimeUser zb!XztG34 + Log Creating session http://${POLICY_RUNTIME_ACM_IP} + ${postyaml}= Get file ${CURDIR}/data/ac-instance-migration-to.yaml + ${updatedpostyaml}= Replace String ${postyaml} COMPOSITIONIDPLACEHOLDER ${compositionFromId} + ${updatedpostyaml}= Replace String ${updatedpostyaml} COMPOSITIONTARGETIDPLACEHOLDER ${compositionToId} + ${updatedpostyaml}= Replace String ${updatedpostyaml} INSTACEIDPLACEHOLDER ${instanceMigrationId} + ${updatedpostyaml}= Replace String ${updatedpostyaml} TEXTPLACEHOLDER TextForMigration + ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/yaml Content-Type=application/yaml + ${resp}= POST On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionFromId}/instances data=${updatedpostyaml} headers=${headers} + Log Received response from runtime acm ${resp.text} + Should Be Equal As Strings ${resp.status_code} 200 + Wait Until Keyword Succeeds 10 min 5 sec VerifyDeployStatus ${compositionToId} ${instanceMigrationId} DEPLOYED + VerifyPropertiesUpdated ${compositionToId} ${instanceMigrationId} TextForMigration + VerifyParticipantSim ${instanceMigrationId} TextForMigration UnDeployAutomationComposition [Documentation] UnDeploy automation composition. @@ -126,8 +255,19 @@ UnDeployAutomationComposition ${resp}= PUT On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId} data=${postjson} headers=${headers} Log Received response from runtime acm ${resp.text} Should Be Equal As Strings ${resp.status_code} 202 - Wait Until Keyword Succeeds 10 min 5 sec VerifyDeployStatus UNDEPLOYED + Wait Until Keyword Succeeds 10 min 5 sec VerifyDeployStatus ${compositionId} ${instanceId} UNDEPLOYED +UnDeployAutomationCompositionMigrationTo + [Documentation] UnDeploy automation composition migrated. + ${auth}= Create List runtimeUser zb!XztG34 + Log Creating session http://${POLICY_RUNTIME_ACM_IP} + ${postjson}= Get file ${CURDIR}/data/UndeployAC.json + ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${resp}= PUT On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionToId}/instances/${instanceMigrationId} data=${postjson} headers=${headers} + Log Received response from runtime acm ${resp.text} + Should Be Equal As Strings ${resp.status_code} 202 + Wait Until Keyword Succeeds 10 min 5 sec VerifyDeployStatus ${compositionToId} ${instanceMigrationId} UNDEPLOYED UnInstantiateAutomationComposition [Documentation] Delete automation composition instance. @@ -138,8 +278,18 @@ UnInstantiateAutomationComposition ${resp}= DELETE On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId} headers=${headers} Log Received response from runtime acm ${resp.text} Should Be Equal As Strings ${resp.status_code} 202 - Wait Until Keyword Succeeds 1 min 5 sec VerifyUninstantiated + Wait Until Keyword Succeeds 1 min 5 sec VerifyUninstantiated ${compositionId} +UnInstantiateAutomationCompositionMigrationTo + [Documentation] Delete automation composition instance migrated. + ${auth}= Create List runtimeUser zb!XztG34 + Log Creating session http://${POLICY_RUNTIME_ACM_IP} + ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${resp}= DELETE On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionToId}/instances/${instanceMigrationId} headers=${headers} + Log Received response from runtime acm ${resp.text} + Should Be Equal As Strings ${resp.status_code} 202 + Wait Until Keyword Succeeds 1 min 5 sec VerifyUninstantiated ${compositionToId} DePrimeACDefinitions [Documentation] DePrime automation composition definition @@ -150,8 +300,29 @@ DePrimeACDefinitions ${headers}= Create Dictionary Accept=application/json Content-Type=application/json ${resp}= PUT On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionId} data=${postjson} headers=${headers} Should Be Equal As Strings ${resp.status_code} 202 - Wait Until Keyword Succeeds 2 min 5 sec VerifyPriming COMMISSIONED + Wait Until Keyword Succeeds 2 min 5 sec VerifyPriming ${compositionId} COMMISSIONED + +DePrimeACDefinitionsFrom + [Documentation] DePrime automation composition definition migration From. + ${auth}= Create List runtimeUser zb!XztG34 + Log Creating session http://${POLICY_RUNTIME_ACM_IP} + ${postjson}= Get file ${CURDIR}/data/ACDepriming.json + ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${resp}= PUT On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionFromId} data=${postjson} headers=${headers} + Should Be Equal As Strings ${resp.status_code} 202 + Wait Until Keyword Succeeds 2 min 5 sec VerifyPriming ${compositionFromId} COMMISSIONED +DePrimeACDefinitionsTo + [Documentation] DePrime automation composition definition migration To. + ${auth}= Create List runtimeUser zb!XztG34 + Log Creating session http://${POLICY_RUNTIME_ACM_IP} + ${postjson}= Get file ${CURDIR}/data/ACDepriming.json + ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${resp}= PUT On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionToId} data=${postjson} headers=${headers} + Should Be Equal As Strings ${resp.status_code} 202 + Wait Until Keyword Succeeds 2 min 5 sec VerifyPriming ${compositionToId} COMMISSIONED DeleteACDefinition [Documentation] Delete automation composition definition. @@ -163,6 +334,25 @@ DeleteACDefinition Log Received response from runtime acm ${resp.text} Should Be Equal As Strings ${resp.status_code} 200 +DeleteACDefinitionFrom + [Documentation] Delete automation composition definition migration From. + ${auth}= Create List runtimeUser zb!XztG34 + Log Creating session http://${POLICY_RUNTIME_ACM_IP} + ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/yaml Content-Type=application/yaml + ${resp}= DELETE On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionFromId} headers=${headers} + Log Received response from runtime acm ${resp.text} + Should Be Equal As Strings ${resp.status_code} 200 + +DeleteACDefinitionTo + [Documentation] Delete automation composition definition migration To. + ${auth}= Create List runtimeUser zb!XztG34 + Log Creating session http://${POLICY_RUNTIME_ACM_IP} + ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/yaml Content-Type=application/yaml + ${resp}= DELETE On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionToId} headers=${headers} + Log Received response from runtime acm ${resp.text} + Should Be Equal As Strings ${resp.status_code} 200 *** Keywords *** @@ -188,35 +378,60 @@ VerifyHealthcheckPap Should Be Equal As Strings ${resp.status_code} 200 VerifyPriming - [Arguments] ${primestate} + [Arguments] ${theCompositionId} ${primestate} [Documentation] Verify the AC definitions are primed to the participants ${auth}= Create List runtimeUser zb!XztG34 Log Creating session http://${POLICY_RUNTIME_ACM_IP} ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} ${headers}= Create Dictionary Accept=application/json Content-Type=application/json - ${resp}= GET On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionId} headers=${headers} + ${resp}= GET On Session policy /onap/policy/clamp/acm/v2/compositions/${theCompositionId} headers=${headers} Should Be Equal As Strings ${resp.status_code} 200 Run Keyword If ${resp.status_code}==200 Should Be Equal As Strings ${resp.json()['state']} ${primestate} VerifyDeployStatus - [Arguments] ${deploystate} + [Arguments] ${theCompositionId} ${theInstanceId} ${deploystate} [Documentation] Verify the Deploy status of automation composition. ${auth}= Create List runtimeUser zb!XztG34 Log Creating session http://${POLICY_RUNTIME_ACM_IP} - ${postjson}= Get file ${CURDIR}/data/DeployAC.json ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} ${headers}= Create Dictionary Accept=application/json Content-Type=application/json - ${resp}= GET On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId} headers=${headers} + ${resp}= GET On Session policy /onap/policy/clamp/acm/v2/compositions/${theCompositionId}/instances/${theInstanceId} headers=${headers} Should Be Equal As Strings ${resp.status_code} 200 Run Keyword If ${resp.status_code}==200 Should Be Equal As Strings ${resp.json()['deployState']} ${deploystate} +VerifyPropertiesUpdated + [Arguments] ${theCompositionId} ${theInstanceId} ${textToFind} + [Documentation] Verify the Deploy status of automation composition. + ${auth}= Create List runtimeUser zb!XztG34 + Log Creating session http://${POLICY_RUNTIME_ACM_IP} + ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${resp}= GET On Session policy /onap/policy/clamp/acm/v2/compositions/${theCompositionId}/instances/${theInstanceId} headers=${headers} + Should Be Equal As Strings ${resp.status_code} 200 + ${respstring} Convert To String ${resp.json()} + Run Keyword If ${resp.status_code}==200 Should Match Regexp ${respstring} ${textToFind} + +VerifyParticipantSim + [Arguments] ${theInstanceId} ${textToFind} + [Documentation] Query on Participant Simulator + ${auth}= Create List participantUser zb!XztG34 + Log Creating session http://${POLICY_PARTICIPANT_SIM_IP} + ${session}= Create Session ACM http://${POLICY_PARTICIPANT_SIM_IP} auth=${auth} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${resp}= GET On Session ACM /onap/policy/simparticipant/v2/instances/${theInstanceId} headers=${headers} + Log Received response from participant {resp.text} + Should Be Equal As Strings ${resp.status_code} 200 + ${respstring} Convert To String ${resp.json()} + Should Match Regexp ${respstring} ${textToFind} + VerifyUninstantiated + [Arguments] ${theCompositionId} [Documentation] Verify the Uninstantiation of automation composition. ${auth}= Create List runtimeUser zb!XztG34 Log Creating session http://${POLICY_RUNTIME_ACM_IP} ${session}= Create Session policy http://${POLICY_RUNTIME_ACM_IP} auth=${auth} ${headers}= Create Dictionary Accept=application/json Content-Type=application/json - ${resp}= GET On Session policy /onap/policy/clamp/acm/v2/compositions/${compositionId}/instances headers=${headers} + ${resp}= GET On Session policy /onap/policy/clamp/acm/v2/compositions/${theCompositionId}/instances headers=${headers} Should Be Equal As Strings ${resp.status_code} 200 Run Keyword If ${resp.status_code}==200 Length Should Be ${resp.json()['automationCompositionList']} 0 diff --git a/csit/run-k8s-csit.sh b/csit/run-k8s-csit.sh index 478d0485..d8fda028 100755 --- a/csit/run-k8s-csit.sh +++ b/csit/run-k8s-csit.sh @@ -45,6 +45,7 @@ POLICY_XACML_CONTAINER="policy-xacml-pdp" POLICY_DISTRIBUTION_CONTAINER="policy-distribution" POLICY_K8S_PPNT_CONTAINER="policy-clamp-ac-k8s-ppnt" POLICY_HTTP_PPNT_CONTAINER="policy-clamp-ac-http-ppnt" +POLICY_SIM_PPNT_CONTAINER="policy-clamp-ac-sim-ppnt" POLICY_PF_PPNT_CONTAINER="policy-clamp-ac-pf-ppnt" KAFKA_CONTAINER="kafka-deployment" ZK_CONTAINER="zookeeper-deployment" @@ -87,9 +88,27 @@ function spin_microk8s_cluster() { else echo "K8s cluster is already running" echo "----------------------------------------" - return 0 fi + echo "Verify if kubectl is running.." + kubectl version + exitcode="${?}" + + if [ "$exitcode" -ne 0 ]; then + echo "Kubectl not available, Spinning up the cluster.." + sudo snap install kubectl --classic --channel=1.26/stable + + if [ "${?}" -ne 0 ]; then + echo "Failed to install Kubectl. Aborting.." + return 1 + fi + echo "Kubectl installation completed" + echo "----------------------------------------" + else + echo "Kubectl is already running" + echo "----------------------------------------" + return 0 + fi } function install_kafka() { @@ -216,9 +235,10 @@ function set_project_config() { clamp | policy-clamp) export ROBOT_FILE=$POLICY_CLAMP_ROBOT export READINESS_CONTAINERS=($POLICY_CLAMP_CONTAINER,$POLICY_APEX_CONTAINER,$POLICY_PF_PPNT_CONTAINER,$POLICY_K8S_PPNT_CONTAINER, - $POLICY_HTTP_PPNT_CONTAINER) + $POLICY_HTTP_PPNT_CONTAINER,$POLICY_SIM_PPNT_CONTAINER) export SET_VALUES="--set $POLICY_CLAMP_CONTAINER.enabled=true --set $POLICY_APEX_CONTAINER.enabled=true - --set $POLICY_PF_PPNT_CONTAINER.enabled=true --set $POLICY_K8S_PPNT_CONTAINER.enabled=true --set $POLICY_HTTP_PPNT_CONTAINER.enabled=true" + --set $POLICY_PF_PPNT_CONTAINER.enabled=true --set $POLICY_K8S_PPNT_CONTAINER.enabled=true + --set $POLICY_HTTP_PPNT_CONTAINER.enabled=true --set $POLICY_SIM_PPNT_CONTAINER.enabled=true" install_chartmuseum ;; @@ -263,11 +283,12 @@ function set_project_config() { export READINESS_CONTAINERS=($POLICY_APEX_CONTAINER,$POLICY_API_CONTAINER,$POLICY_PAP_CONTAINER, $POLICY_DISTRIBUTION_CONTAINER,$POLICY_DROOLS_CONTAINER,$POLICY_XACML_CONTAINER, $POLICY_CLAMP_CONTAINER,$POLICY_PF_PPNT_CONTAINER,$POLICY_K8S_PPNT_CONTAINER, - $POLICY_HTTP_PPNT_CONTAINER) + $POLICY_HTTP_PPNT_CONTAINER,$POLICY_SIM_PPNT_CONTAINER) export SET_VALUES="--set $POLICY_APEX_CONTAINER.enabled=true --set $POLICY_XACML_CONTAINER.enabled=true --set $POLICY_DISTRIBUTION_CONTAINER.enabled=true --set $POLICY_DROOLS_CONTAINER.enabled=true --set $POLICY_CLAMP_CONTAINER.enabled=true --set $POLICY_PF_PPNT_CONTAINER.enabled=true - --set $POLICY_K8S_PPNT_CONTAINER.enabled=true --set $POLICY_HTTP_PPNT_CONTAINER.enabled=true" + --set $POLICY_K8S_PPNT_CONTAINER.enabled=true --set $POLICY_HTTP_PPNT_CONTAINER.enabled=true + --set $POLICY_SIM_PPNT_CONTAINER.enabled=true" ;; esac diff --git a/helm/policy/templates/job.yaml b/helm/policy/templates/job.yaml index 560cea09..4d3bd714 100755 --- a/helm/policy/templates/job.yaml +++ b/helm/policy/templates/job.yaml @@ -128,7 +128,7 @@ spec: fieldPath: metadata.namespace containers: - name: policy-galera-db-migrator-policy - image: {{ .Values.global.dockerRepository }}/{{ .Values.dbmigrator.image }} + image: {{ .Values.global.repository }}/{{ .Values.dbmigrator.image }} imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} volumeMounts: - mountPath: /dbcmd-config/db_migrator_policy_init.sh @@ -212,7 +212,7 @@ spec: fieldPath: metadata.namespace containers: - name: policy-galera-db-migrator-clamp - image: {{ .Values.global.dockerRepository }}/{{ .Values.dbmigrator.image }} + image: {{ .Values.global.repository }}/{{ .Values.dbmigrator.image }} imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} volumeMounts: - mountPath: /dbcmd-config/db_migrator_policy_init.sh -- cgit 1.2.3-korg