From: ajay_dp001 Date: Thu, 3 Dec 2020 09:48:08 +0000 (+0530) Subject: CSIT Support for ServiceLevel PNF Software Upgrade X-Git-Url: https://gerrit.onap.org/r/gitweb?p=integration%2Fcsit.git;a=commitdiff_plain;h=1feb0a77c857d811283d74d0f3df018d42c2debe CSIT Support for ServiceLevel PNF Software Upgrade - Details on CSIT test cases: https://wiki.onap.org/display/DW/E2E+Integration+Test+Cases+PNF-Software+Upgrade+With+Schema+Updates - Newly added test are listed below: 1. Distribute Service Level Upgrade Template 2. Get ServiceModel Version from AAI using ServiceModelInVariant UUId 3. Invoke Service Instantiation for ServiceLevel Upgrade 4. Verify PNF-1 Configuration for Service Level Upgrade 5. AAI-Update for PNF-1 Target Software Version after Service Level Upgrade 6. Verify PNF-2 Configuration for Service Level Upgrade 7. AAI-Update for PNF-2 Target Software Version after Service Level Upgrade 8. Test AAI-Update for ServiceInstance after Service Level Upgrade Issue-ID: INT-1591 Signed-off-by: ajay_dp001 Change-Id: I7bd1ee8d19692f16e0f4415b5115e88a9feff869 --- diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/setup.sh b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/setup.sh index 65cd576f..6dbe58c1 100755 --- a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/setup.sh +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/setup.sh @@ -57,6 +57,7 @@ docker-compose -f $PNF_SIM_DOCKER_PATH/docker-compose.yml -p $PROJECT_NAME up -d ##### update pnf simulator ip in config deploy request ####### RES_KEY=$(uuidgen -r) sed -i "s/pnfaddr/$LOCAL_IP/g" $REQUEST_DATA_PATH/mount.json +sed -i "s/pnfaddr/$LOCAL_IP/g" $REQUEST_DATA_PATH/mount2.json ############################################################## diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/simulators/pnfsim/docker-compose.yml b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/simulators/pnfsim/docker-compose.yml index 7b1d5a8f..c6657e27 100755 --- a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/simulators/pnfsim/docker-compose.yml +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/simulators/pnfsim/docker-compose.yml @@ -8,5 +8,15 @@ services: ports: - "830:830" - "6513:6513" + volumes: + - ./:/config/modules + + netconf-pnp-simulator-2: + image: nexus3.onap.org:10001/onap/integration/simulators/netconf-pnp-simulator:2.8.6 + container_name: netconf-pnp-simulator-2 + restart: always + ports: + - "831:830" + - "6514:6513" volumes: - ./:/config/modules \ No newline at end of file diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/a51e2bef-961c-496f-b235-b4540400e885.json b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/a51e2bef-961c-496f-b235-b4540400e885.json new file mode 100644 index 00000000..fc42fa55 --- /dev/null +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/a51e2bef-961c-496f-b235-b4540400e885.json @@ -0,0 +1,20 @@ +{ + "model-vers": { + "model-ver": [ + { + "model-version-id": "cd4decf6-4f27-4775-9561-0e683ed43635", + "model-name": "EricService", + "model-version": "1.0", + "model-description": "service_instance_1.0", + "resource-version": "1594657102313" + }, + { + "model-version-id": "4442dfc1-0d2d-46b4-b0bc-a2ac10448269", + "model-name": "EricService", + "model-version": "2.0", + "model-description": "service_instance_2.0", + "resource-version": "1594707742646" + } + ] + } +} \ No newline at end of file diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/aai-simulator-populate-data/pnf.json b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/aai-simulator-populate-data/pnf.json index ab39d8c7..331b249d 100755 --- a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/aai-simulator-populate-data/pnf.json +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/aai-simulator-populate-data/pnf.json @@ -1,5 +1,5 @@ { - "pnf-name2":"PNFDemo-pnf-name2-val-78244", + "pnf-name2":"6513", "pnf-name2-source":"PNFDemo-pnf-name2-source-val-99275", "equip-type":"PNFDemo-equip-type-val-20348", "equip-vendor":"PNFDemo-equip-vendor-val-52182", diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/aai-simulator-populate-data/pnf2.json b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/aai-simulator-populate-data/pnf2.json new file mode 100755 index 00000000..07732f21 --- /dev/null +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/aai-simulator-populate-data/pnf2.json @@ -0,0 +1,16 @@ +{ + "pnf-name2":"6514", + "pnf-name2-source":"PNFDemo1-pnf-name2-source-val-99275", + "equip-type":"PNFDemo1-equip-type-val-20348", + "equip-vendor":"PNFDemo1-equip-vendor-val-52182", + "equip-model":"PNFDemo1-equip-model-val-8370", + "management-option":"PNFDemo1-management-option-val-72881", + "ipaddress-v4-oam":"pnfaddr", + "ipaddress-v6-oam":"0:0:0:0:0:0", + "sw-version":"pnf_sw_version-1.0.0", + "pnf-name":"PNFDemo1", + "pnf-id":"PNFDemo1", + "in-maint":false, + "resource-version":"1371558818531", + "selflink": "http://localhost:9993/pnf/PNFDemo1" +} \ No newline at end of file diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/aai-simulator-populate-data/service-instance-aai.json b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/aai-simulator-populate-data/service-instance-aai.json index 8ea4263b..53dc39d2 100644 --- a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/aai-simulator-populate-data/service-instance-aai.json +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/aai-simulator-populate-data/service-instance-aai.json @@ -1,9 +1,9 @@ { - "service-instance-id": "5df8b6de-2083-11e7-93ae-92361f002676", + "service-instance-id": "df4decf6-h727-8875-8761-89683ed43645", "service-instance-name": "Service_Ete_Name123452c4-3d7f-42ce-8188-818fab951269", "environment-context": "General_Revenue-Bearing", "workload-context": "Production", - "model-version-id": "d88da85c-d9e8-4f73-b837-3a72a431622b", + "model-version-id": "cd4decf6-4f27-4775-9561-0e683ed43635", "modelInvariantId": "fe41489e-1563-46a3-b90a-1db629e4375b", "resource-version": "1595258335377", "selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/5df8b6de-2083-11e7-93ae-92361f002676/service-data/service-topology/", diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/apply-workarounds.sh b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/apply-workarounds.sh index cb61ca34..72e84347 100755 --- a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/apply-workarounds.sh +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/apply-workarounds.sh @@ -72,6 +72,9 @@ apply_workaround() insert into $WORKFLOW_TABLE_NAME(artifact_uuid, artifact_name, name, operation_name, version, description, body, resource_target, source) values ('02bffbd9-6af0-4f8d-bf9b-d1dfccd28c84','GenericPnfSWUPDownload','GenericPnfSWUPDownload','GenericPnfSWUPDownload',1.0,'Pnf Workflow to download software',null,'pnf','native'); + insert into $WORKFLOW_TABLE_NAME(artifact_uuid, artifact_name, name, operation_name, version, description, body, resource_target, source) values + ('03fcdjf2-6af0-4f8d-bf9b-s3frzca23c19','ServiceLevelUpgrade','ServiceLevelUpgrade','ServiceLevelUpgrade',1.0,'ServiceLevel Upgrade Workflow to upgrade software',null,'service','native'); + COMMIT; EOF diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/distribution-test-zip/zipped_sdc_csar_2.0.tar.gz b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/distribution-test-zip/zipped_sdc_csar_2.0.tar.gz new file mode 100644 index 00000000..357260ef Binary files /dev/null and b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/distribution-test-zip/zipped_sdc_csar_2.0.tar.gz differ diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/env b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/env index ab4e3df4..71e9daff 100644 --- a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/env +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/env @@ -1,6 +1,6 @@ NEXUS_DOCKER_REPO_MSO=nexus3.onap.org:10001 DOCKER_ENVIRONMENT=remote -TAG=1.7.7-STAGING-latest +TAG=1.8.0-STAGING-latest TIME_OUT_DEFAULT_VALUE_SEC=1200 PROJECT_NAME=pnfSwU DEFAULT_NETWORK_NAME=pnfswu_default diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/populate-aai-simulator.sh b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/populate-aai-simulator.sh index 26673fcf..bbc5b9f3 100755 --- a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/populate-aai-simulator.sh +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/populate-aai-simulator.sh @@ -62,6 +62,7 @@ populate_aai_simulator() ESR_SYSTEM_INFO_JSON_FILE=$AAI_SIMULATOR_DATA_DIR/esr-system-info.json CLOUD_ESR_SYSTEM_INFO_JSON_FILE=$AAI_SIMULATOR_DATA_DIR/cloud-esr-system-info.json PNF_JSON_FILE=$AAI_SIMULATOR_DATA_DIR/pnf.json + PNF2_JSON_FILE=$AAI_SIMULATOR_DATA_DIR/pnf2.json SERVICE_INSTANCE_JSON_FILE=$AAI_SIMULATOR_DATA_DIR/service-instance-aai.json STATUS_CODE_ACCEPTED="202" @@ -157,8 +158,16 @@ populate_aai_simulator() exit 1 fi + echo "$SCRIPT_NAME $(current_timestamp): Adding PNF_2.0" + status_code=$(curl -k --write-out %{http_code} --silent --output /dev/null -H "$BASIC_AUTHORIZATION_HEADER" -H "$ACCEPT_HEADER" -H "$CONTENT_TYPE_HEADER" $BASE_URL/network/pnfs/pnf/PNFDemo1 -X PUT -d @$"$PNF2_JSON_FILE") + + if [[ "$status_code" -ne "$STATUS_CODE_ACCEPTED" ]] ; then + echo "$SCRIPT_NAME $(current_timestamp) ERROR: Unable to put PNF data in AAI Simulator. Status code received: $status_code" + exit 1 + fi + echo "$SCRIPT_NAME $(current_timestamp): Adding ServiceInstance" - status_code=$(curl -k --write-out %{http_code} --silent --output /dev/null -H "$BASIC_AUTHORIZATION_HEADER" -H "$ACCEPT_HEADER" -H "$CONTENT_TYPE_HEADER" $BASE_URL/business/customers/customer/5df8b6de-2083-11e7-93ae-92361f002676/service-subscriptions/service-subscription/pNF/service-instances/service-instance/ETE_Customer_807c7a02-249c-4db8-9fa9-bee973fe08ce -X PUT -d @$"$SERVICE_INSTANCE_JSON_FILE") + status_code=$(curl -k --write-out %{http_code} --silent --output /dev/null -H "$BASIC_AUTHORIZATION_HEADER" -H "$ACCEPT_HEADER" -H "$CONTENT_TYPE_HEADER" $BASE_URL/business/customers/customer/807c7a02-249c-4db8-9fa9-bee973fe08ce/service-subscriptions/service-subscription/pNF/service-instances/service-instance/cd4decf6-4f27-4775-9561-0e683ed43635 -X PUT -d @$"$SERVICE_INSTANCE_JSON_FILE") if [[ "$status_code" -ne "$STATUS_CODE_ACCEPTED" ]] ; then echo "$SCRIPT_NAME $(current_timestamp) ERROR: Unable to put ServiceInstance data in AAI Simulator. Status code received: $status_code" diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/docker-compose.yml b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/docker-compose.yml index 0886d9d5..4699be33 100755 --- a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/docker-compose.yml +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/docker-compose.yml @@ -140,6 +140,7 @@ services: - /etc/localtime:/etc/localtime:ro - ${TEST_LAB_DIR}/volumes/so/ca-certificates/onapheat:/app/ca-certificates - ${CONFIG_DIR_PATH}/distribution-test-zip/zipped_sdc_csar.tar.gz:/distribution-test-zip/zipped_sdc_csar.tar.gz + - ${CONFIG_DIR_PATH}/distribution-test-zip/zipped_sdc_csar_2.0.tar.gz:/distribution-test-zip/zipped_sdc_csar_2.0.tar.gz - ${CONFIG_DIR_PATH}/override-files/sdc-controller/onapheat:/app/config environment: - APP=sdc-controller @@ -160,7 +161,7 @@ services: entrypoint: - /bin/sh - -c - - 'mkdir -p /app/distribution-test-zip/unzipped && cp -R /distribution-test-zip/zipped_sdc_csar.tar.gz /app && tar -xvzf /app/zipped_sdc_csar.tar.gz -C /app/distribution-test-zip/unzipped && /app/wait-for.sh -q -t "300" request-db-adapter:8083 -- "/app/start-app.sh"' + - 'mkdir -p /app/distribution-test-zip/unzipped && cp -R /distribution-test-zip/zipped_sdc_csar.tar.gz /app && cp -R /distribution-test-zip/zipped_sdc_csar_2.0.tar.gz /app && tar -xvzf /app/zipped_sdc_csar.tar.gz -C /app/distribution-test-zip/unzipped && tar -xvzf /app/zipped_sdc_csar_2.0.tar.gz -C /app/distribution-test-zip/unzipped && /app/wait-for.sh -q -t "300" request-db-adapter:8083 -- "/app/start-app.sh"' ################################################################################ bpmn-infra: user: root @@ -246,6 +247,7 @@ services: container_name: aai-simulator volumes: - /etc/localtime:/etc/localtime:ro + - ${CONFIG_DIR_PATH}/a51e2bef-961c-496f-b235-b4540400e885.json:/app/a51e2bef-961c-496f-b235-b4540400e885.json ports: - "9993:9993" environment: diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/pom.xml b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/pom.xml index 30d25215..99768146 100755 --- a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/pom.xml +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/pom.xml @@ -55,6 +55,11 @@ javax.activation activation + + com.google.code.gson + gson + 2.8.5 + diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/main/java/org/onap/aaisimulator/controller/ServiceDesignAndCreationController.java b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/main/java/org/onap/aaisimulator/controller/ServiceDesignAndCreationController.java index ddc2b624..13753871 100644 --- a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/main/java/org/onap/aaisimulator/controller/ServiceDesignAndCreationController.java +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/main/java/org/onap/aaisimulator/controller/ServiceDesignAndCreationController.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. + * Copyright (C) 2020 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,11 +19,14 @@ */ package org.onap.aaisimulator.controller; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import javax.ws.rs.core.MediaType; +import org.onap.aaisimulator.models.ServiceModelVersion; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -50,25 +53,27 @@ public class ServiceDesignAndCreationController { @Value("${SERVICE_DESIGN_AND_CREATION_RESPONSES_LOCATION:./}") private String responsesLocation; - @GetMapping(path = "/models/model/{model-invariant-id}/model-vers", - produces = MediaType.APPLICATION_XML_VALUE) + @GetMapping(path = "/models/model/{model-invariant-id}/model-vers", produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public ResponseEntity getModelVers(@PathVariable("model-invariant-id") String modelInvariantId) { Path responsesPath = Paths.get(responsesLocation).toAbsolutePath(); LOGGER.info("Will get ModelVer for 'model-invariant-id': {}, looking under {}", modelInvariantId, responsesPath.toString()); - Path responsePath = responsesPath.resolve(modelInvariantId + ".xml"); + Path responsePath = responsesPath.resolve(modelInvariantId + ".json"); if (!responsePath.toFile().exists()) { LOGGER.error("{} not found", responsePath.toString()); return ResponseEntity.notFound().build(); } try { String content = new String(Files.readAllBytes(responsePath), StandardCharsets.UTF_8); + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + ServiceModelVersion json = gson.fromJson(content, ServiceModelVersion.class); + String jsonInString = gson.toJson(json); LOGGER.info("{} found with {} characters", responsePath.toString(), content.length()); - return ResponseEntity.ok().body(content); + return ResponseEntity.ok().body(jsonInString); } catch (IOException e) { LOGGER.error("Failed to read response from {}: {}}", responsePath.toString(), e.getMessage()); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); } } -} +} \ No newline at end of file diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/main/java/org/onap/aaisimulator/models/ModelVersion.java b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/main/java/org/onap/aaisimulator/models/ModelVersion.java new file mode 100644 index 00000000..d6825089 --- /dev/null +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/main/java/org/onap/aaisimulator/models/ModelVersion.java @@ -0,0 +1,86 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2020 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========================================================= + */ +package org.onap.aaisimulator.models; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class ModelVersion { + + @SerializedName("model-version-id") + @Expose + private String modelVersionId; + + @SerializedName("model-name") + @Expose + private String modelName; + + @SerializedName("model-version") + @Expose + private String modelVersion; + + @SerializedName("model-description") + @Expose + private String modelDescription; + + @SerializedName("resource-version") + @Expose + private String resourceVersion; + + public String getModelVersionId() { + return modelVersionId; + } + + public void setModelVersionId(String modelVersionId) { + this.modelVersionId = modelVersionId; + } + + public String getModelName() { + return modelName; + } + + public void setModelName(String modelName) { + this.modelName = modelName; + } + + public String getModelVersion() { + return modelVersion; + } + + public void setModelVersion(String modelVersion) { + this.modelVersion = modelVersion; + } + + public String getModelDescription() { + return modelDescription; + } + + public void setModelDescription(String modelDescription) { + this.modelDescription = modelDescription; + } + + public String getResourceVersion() { + return resourceVersion; + } + + public void setResourceVersion(String resourceVersion) { + this.resourceVersion = resourceVersion; + } +} diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/main/java/org/onap/aaisimulator/models/ModelVersions.java b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/main/java/org/onap/aaisimulator/models/ModelVersions.java new file mode 100644 index 00000000..7d74ec36 --- /dev/null +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/main/java/org/onap/aaisimulator/models/ModelVersions.java @@ -0,0 +1,39 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2020 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========================================================= + */ +package org.onap.aaisimulator.models; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import java.util.List; + +public class ModelVersions { + + @SerializedName("model-ver") + @Expose + private List modelVer = null; + + public List getModelVer() { + return modelVer; + } + + public void setModelVer(List modelVer) { + this.modelVer = modelVer; + } +} diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/main/java/org/onap/aaisimulator/models/ServiceModelVersion.java b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/main/java/org/onap/aaisimulator/models/ServiceModelVersion.java new file mode 100644 index 00000000..d0a879c4 --- /dev/null +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/main/java/org/onap/aaisimulator/models/ServiceModelVersion.java @@ -0,0 +1,38 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2020 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========================================================= + */ +package org.onap.aaisimulator.models; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class ServiceModelVersion { + + @SerializedName("model-vers") + @Expose + private ModelVersions modelVers; + + public ModelVersions getModelVers() { + return modelVers; + } + + public void setModelVers(ModelVersions modelVers) { + this.modelVers = modelVers; + } +} diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/test/java/org/onap/aaisimulator/controller/ServiceDesignAndCreationControllerTest.java b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/test/java/org/onap/aaisimulator/controller/ServiceDesignAndCreationControllerTest.java index d0e652bd..8bda17e4 100644 --- a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/test/java/org/onap/aaisimulator/controller/ServiceDesignAndCreationControllerTest.java +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/test/java/org/onap/aaisimulator/controller/ServiceDesignAndCreationControllerTest.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. + * Copyright (C) 2020 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ package org.onap.aaisimulator.controller; import org.junit.Test; +import org.onap.aaisimulator.models.ServiceModelVersion; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.http.HttpStatus; @@ -37,31 +38,35 @@ public class ServiceDesignAndCreationControllerTest extends AbstractSpringBootTe @Test public void should_reply_sample_modelvers_response() { - final String url = getUrl(SERVICE_DESIGN_AND_CREATION_URL, - "/models/model/a51e2bef-961c-496f-b235-b4540400e885/model-vers"); - ResponseEntity actual = testRestTemplateService.invokeHttpGet(url, String.class); - String expectedXml = "\n" + - "\n" + - " \n" + - " c0818142-324d-4a8c-8065-45a61df247a5\n" + - " EricService\n" + - " 1.0\n" + - " blah\n" + - " 1594657102313\n" + - " \n" + - " \n" + - " 4442dfc1-0d2d-46b4-b0bc-a2ac10448269\n" + - " EricService\n" + - " 2.0\n" + - " blahhhh\n" + - " 1594707742646\n" + - " \n" + - ""; + final String url = getUrl(SERVICE_DESIGN_AND_CREATION_URL, "/models/model/a51e2bef-961c-496f-b235-b4540400e885/model-vers"); + + ResponseEntity actual = testRestTemplateService.invokeHttpGet(url, String.class); + + String expectedXml = "{\n" + + " \"model-vers\": {\n" + + " \"model-ver\": [\n" + + " {\n" + + " \"model-version-id\": \"cd4decf6-4f27-4775-9561-0e683ed43635\",\n" + + " \"model-name\": \"EricService\",\n" + + " \"model-version\": \"1.0\",\n" + + " \"model-description\": \"service_instance_1.0\",\n" + + " \"resource-version\": \"1594657102313\"\n" + + " },\n" + + " {\n" + + " \"model-version-id\": \"4442dfc1-0d2d-46b4-b0bc-a2ac10448269\",\n" + + " \"model-name\": \"EricService\",\n" + + " \"model-version\": \"2.0\",\n" + + " \"model-description\": \"service_instance_2.0\",\n" + + " \"resource-version\": \"1594707742646\"\n" + + " }\n" + + " ]\n" + + " }\n" + + "}"; assertEquals(HttpStatus.OK, actual.getStatusCode()); MediaType contentType = actual.getHeaders().getContentType(); assertNotNull(contentType); - assertTrue(contentType.isCompatibleWith(MediaType.APPLICATION_XML)); + assertTrue(contentType.isCompatibleWith(MediaType.APPLICATION_JSON)); assertEquals(expectedXml, actual.getBody()); } } \ No newline at end of file diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/test/resources/test-data/service-design-and-creation-responses/a51e2bef-961c-496f-b235-b4540400e885.json b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/test/resources/test-data/service-design-and-creation-responses/a51e2bef-961c-496f-b235-b4540400e885.json new file mode 100644 index 00000000..fc42fa55 --- /dev/null +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/test/resources/test-data/service-design-and-creation-responses/a51e2bef-961c-496f-b235-b4540400e885.json @@ -0,0 +1,20 @@ +{ + "model-vers": { + "model-ver": [ + { + "model-version-id": "cd4decf6-4f27-4775-9561-0e683ed43635", + "model-name": "EricService", + "model-version": "1.0", + "model-description": "service_instance_1.0", + "resource-version": "1594657102313" + }, + { + "model-version-id": "4442dfc1-0d2d-46b4-b0bc-a2ac10448269", + "model-name": "EricService", + "model-version": "2.0", + "model-description": "service_instance_2.0", + "resource-version": "1594707742646" + } + ] + } +} \ No newline at end of file diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/test/resources/test-data/service-design-and-creation-responses/a51e2bef-961c-496f-b235-b4540400e885.xml b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/test/resources/test-data/service-design-and-creation-responses/a51e2bef-961c-496f-b235-b4540400e885.xml deleted file mode 100644 index 55247be6..00000000 --- a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/simulator/aai-simulator/src/test/resources/test-data/service-design-and-creation-responses/a51e2bef-961c-496f-b235-b4540400e885.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - c0818142-324d-4a8c-8065-45a61df247a5 - EricService - 1.0 - blah - 1594657102313 - - - 4442dfc1-0d2d-46b4-b0bc-a2ac10448269 - EricService - 2.0 - blahhhh - 1594707742646 - - \ No newline at end of file diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/so_setup.sh b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/so_setup.sh index ed5f6f07..de90c1f3 100755 --- a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/so_setup.sh +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/so_setup.sh @@ -45,6 +45,7 @@ WAIT_FOR_WORKAROUND_SCRIPT=$CONFIG_DIR/"wait-for-workaround-job.sh" WAIT_FOR_POPULATE_AAI_SCRIPT=$CONFIG_DIR/"wait-for-aai-config-job.sh" WAIT_FOR_CONTAINER_SCRIPT=$CONFIG_DIR/"wait-for-container.sh" PNF_PAYLOAD_PATH=$CONFIG_DIR/aai-simulator-populate-data/pnf.json +PNF2_PAYLOAD_PATH=$CONFIG_DIR/aai-simulator-populate-data/pnf2.json echo "Running $SCRIPT_HOME/$SCRIPT_NAME ..." @@ -142,6 +143,7 @@ export CONFIG_DIR_PATH=$CONFIG_DIR echo "updating PNF ip-address in pnf.json" sed -i "s/pnfaddr/$LOCAL_IP/g" $PNF_PAYLOAD_PATH +sed -i "s/pnfaddr/$LOCAL_IP/g" $PNF2_PAYLOAD_PATH if [ "$DOCKER_ENVIRONMENT" == "remote" ]; then echo "Starting docker containers with remote images ..." diff --git a/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/data/blueprint_archive.zip b/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/data/blueprint_archive.zip index 4edc9ded..055d7dec 100644 Binary files a/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/data/blueprint_archive.zip and b/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/data/blueprint_archive.zip differ diff --git a/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/data/distributeServiceTemplate_2.0.json b/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/data/distributeServiceTemplate_2.0.json new file mode 100644 index 00000000..e5b3d890 --- /dev/null +++ b/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/data/distributeServiceTemplate_2.0.json @@ -0,0 +1,35 @@ +{ + "distributionID": "6ac9fa0c-70f0-4213-a8d4-5b58d6a17697", + "serviceName": "Demo_svc", + "serviceVersion": "2.0", + "serviceUUID": "8351245d-50da-4695-8756-3a22618377f7", + "serviceDescription": "ServiceLevelUpgrade", + "serviceInvariantUUID": "fe41489e-1563-46a3-b90a-1db629e4375b", + "resources": [ + { + "resourceInstanceName": "Demo_pnf 0", + "resourceCustomizationUUID": "23b43821-4eds-31f4-bfd4-66a7e0fd9bb2", + "resourceName": "Demo_pnf", + "resourceVersion": "1.0", + "resoucreType": "PNF", + "resourceUUID": "a42f6566-6a29-43e1-bac9-b91a59d702ac", + "resourceInvariantUUID": "fdf44827-35db-4ee5-bd70-7500e633576e", + "category": "Network L4+", + "subcategory": "Common Network Resources", + "artifacts": [] + } + ], + "serviceArtifacts": [ + { + "artifactName": "service-DemoSvc-csar_2.0.csar", + "artifactType": "TOSCA_CSAR", + "artifactURL": "//unzipped_sdc_csar/v1/catalog/services/DemoSvc/2.0/artifacts/service-DemoSvc-csar.csar", + "artifactChecksum": "YjFhZWZhOTU2MzljMDI4ZmVlNzlhOTgxYTcxMzg5ODI\u003d", + "artifactDescription": "TOSCA definition package of the asset", + "artifactTimeout": 0, + "artifactVersion": "2", + "artifactUUID": "809894a4-c862-4294-b2fb-e016b4268546" + } + ], + "workloadContext": "Production" + } \ No newline at end of file diff --git a/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/data/mount2.json b/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/data/mount2.json new file mode 100755 index 00000000..efe94b42 --- /dev/null +++ b/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/data/mount2.json @@ -0,0 +1,18 @@ +{ + "node": [ + { + "node-id": "PNFDemo1", + "netconf-node-topology:protocol": { + "name": "TLS" + }, + "netconf-node-topology:host": "pnfaddr", + "netconf-node-topology:key-based": { + "username": "netconf", + "key-id": "ODL_private_key_0" + }, + "netconf-node-topology:port": 6514, + "netconf-node-topology:tcp-only": false, + "netconf-node-topology:max-connection-attempts": 5 + } + ] +} \ No newline at end of file diff --git a/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/data/serviceLevelUpgradeRequest.json b/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/data/serviceLevelUpgradeRequest.json new file mode 100644 index 00000000..d7a6b57f --- /dev/null +++ b/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/data/serviceLevelUpgradeRequest.json @@ -0,0 +1,38 @@ +{ + "requestDetails": { + "subscriberInfo": { + "globalSubscriberId": "807c7a02-249c-4db8-9fa9-bee973fe08ce" + }, + "modelInfo": { + "modelVersion": "2.0", + "modelVersionId": "8351245d-50da-4695-8756-3a22618377f7", + "modelInvariantId": "fe41489e-1563-46a3-b90a-1db629e4375b", + "modelName": "Demo_svc", + "modelType": "service" + }, + "requestInfo": { + "suppressRollback": false, + "requestorId": "demo", + "instanceName": "testInstanceName", + "source": "VID" + }, + "requestParameters": { + "subscriptionServiceType": "pNF", + "userParams": [ + { + "name": "targetSoftwareVersion", + "value": "pnf_sw_version-4.0.0" + } + ], + "aLaCarte": false, + "payload": "{\"k1\": \"v1\"}" + }, + "project": { + "projectName": "ServiceLevelUpgrade" + }, + "owningEntity": { + "owningEntityId": "67f2e84c-734d-4e90-a1e4-d2ffa2e75849", + "owningEntityName": "OE-Test" + } + } +} \ No newline at end of file diff --git a/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/pnf-sw-upgrade.robot b/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/pnf-sw-upgrade.robot index d3762a0b..1bb2d714 100644 --- a/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/pnf-sw-upgrade.robot +++ b/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/pnf-sw-upgrade.robot @@ -8,7 +8,9 @@ Library String *** Variables *** ${SDNC_KEYSTORE_CONFIG_PATH} /restconf/config/netconf-keystore:keystore ${SDNC_MOUNT_PATH} /restconf/config/network-topology:network-topology/topology/topology-netconf/node/PNFDemo +${SDNC_MOUNT_PATH2} /restconf/config/network-topology:network-topology/topology/topology-netconf/node/PNFDemo1 ${PNFSIM_MOUNT_PATH} /restconf/config/network-topology:network-topology/topology/topology-netconf/node/PNFDemo/yang-ext:mount/pnf-sw-upgrade:software-upgrade +${PNFSIM_MOUNT_PATH2} /restconf/config/network-topology:network-topology/topology/topology-netconf/node/PNFDemo1/yang-ext:mount/pnf-sw-upgrade:software-upgrade ${PNFSIM_DELETE_PATH} /restconf/config/network-topology:network-topology/topology/topology-netconf/node/PNFDemo ${BP_UPLOAD_URL} /api/v1/blueprint-model/publish ${BP_PROCESS_URL} /api/v1/execution-service/process @@ -48,12 +50,14 @@ Distribute Service Template ${serviceInstanceId}= Set Variable cd4decf6-4f27-4775-9561-0e683ed43635 SET GLOBAL VARIABLE ${serviceInstanceId} ${pnfName}= Set Variable PNFDemo - SET GLOBAL VARIABLE ${pnfName} + SET GLOBAL VARIABLE ${pnfName} + ${pnfName1}= Set Variable PNFDemo1 + SET GLOBAL VARIABLE ${pnfName1} Get pnf workflow Create Session api_handler_session http://${REPO_IP}:8080 &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json - ${get_pnfworkflows_request}= Get Request api_handler_session /onap/so/infra/workflowSpecifications/v1/pnfWorkflows headers=${headers} + ${get_pnfworkflows_request}= Get Request api_handler_session /onap/so/infra/workflowSpecifications/v1/workflows headers=${headers} Run Keyword If '${get_pnfworkflows_request.status_code}' == '200' log to console \nexecuted with expected result log to console ${get_pnfworkflows_request.content} ${pnfworkflows_json_response}= Evaluate json.loads(r"""${get_pnfworkflows_request.content}""", strict=False) json @@ -62,6 +66,8 @@ Get pnf workflow ${activate_workflow_name}= Set Variable "" ${download_workflow_uuid}= Set Variable "" ${download_workflow_name}= Set Variable "" + ${serviceLevel_workflow_uuid}= Set Variable "" + ${serviceLevel_workflow_name}= Set Variable "" FOR ${member} IN @{all_wf_members} ${workflow_uuid}= Set Variable ${member}[workflowSpecification][artifactInfo][artifactUuid] ${workflow_name}= Set Variable ${member}[workflowSpecification][artifactInfo][artifactName] @@ -70,14 +76,19 @@ Get pnf workflow ${activate_workflow_name}= Set Variable If '${workflow_name}' == 'GenericPnfSoftwareUpgrade' ${workflow_name} ${activate_workflow_name} ${download_workflow_uuid}= Set Variable If '${workflow_name}' == 'GenericPnfSWUPDownload' ${workflow_uuid} ${download_workflow_uuid} ${download_workflow_name}= Set Variable If '${workflow_name}' == 'GenericPnfSWUPDownload' ${workflow_name} ${download_workflow_name} + ${serviceLevel_workflow_uuid}= Set Variable If '${workflow_name}' == 'ServiceLevelUpgrade' ${workflow_uuid} ${serviceLevel_workflow_uuid} + ${serviceLevel_workflow_name}= Set Variable If '${workflow_name}' == 'ServiceLevelUpgrade' ${workflow_name} ${serviceLevel_workflow_name} END SET GLOBAL VARIABLE ${activate_workflow_uuid} SET GLOBAL VARIABLE ${download_workflow_uuid} + SET GLOBAL VARIABLE ${serviceLevel_workflow_uuid} Run Keyword If '${activate_workflow_name}' == 'GenericPnfSoftwareUpgrade' log to console \nexecuted with expected result Run Keyword If '${download_workflow_name}' == 'GenericPnfSWUPDownload' log to console \nexecuted with expected result + Run Keyword If '${serviceLevel_workflow_name}' == 'ServiceLevelUpgrade' log to console \nexecuted with expected result Should Be Equal As Strings '${activate_workflow_name}' 'GenericPnfSoftwareUpgrade' Should Be Equal As Strings '${download_workflow_name}' 'GenericPnfSWUPDownload' + Should Be Equal As Strings '${serviceLevel_workflow_name}' 'ServiceLevelUpgrade' Invoke Service Instantiation for pnf software download Create Session api_handler_session http://${REPO_IP}:8080 @@ -194,3 +205,158 @@ Test AAI-update for target software version verify Log To Console final target software version received: ${sw_version} Run Keyword If '${sw_version}' == 'pnf_sw_version-3.0.0' log to console \nexecuted with expected result Should Be Equal As Strings '${sw_version}' 'pnf_sw_version-3.0.0' + +Distribute ServiceLevel Upgrade Template + Create Session sdc_controller_session http://${REPO_IP}:8085 + ${data}= Get Binary File ${CURDIR}${/}data${/}distributeServiceTemplate_2.0.json + &{headers}= Create Dictionary Authorization=Basic bXNvX2FkbWluOnBhc3N3b3JkMSQ= resource-location=/app/distribution-test-zip/unzipped/ Content-Type=application/json Accept=application/json + ${resp}= Post Request sdc_controller_session /test/treatNotification/v1 data=${data} headers=${headers} + Run Keyword If '${resp.status_code}' == '200' log to console \nexecuted with expected result + Should Be Equal As Strings '${resp.status_code}' '200' + ${model_version_id_2}= Set Variable 8351245d-50da-4695-8756-3a22618377f7 + SET GLOBAL VARIABLE ${model_version_id_2} + +Get Service-Model-Version From AAI Using Service-Model-InVariant-UUId + Create Session aai_simulator_session https://${REPO_IP}:9993 + &{headers}= Create Dictionary Authorization=Basic YWFpOmFhaS5vbmFwLm9yZzpkZW1vMTIzNDU2IQ== Content-Type=application/xml Accept=application/xml verify=False + ${model-invariant-id}= Set Variable a51e2bef-961c-496f-b235-b4540400e885 + ${get_serviceVersion}= Get Request aai_simulator_session aai/v11/service-design-and-creation/models/model/${model-invariant-id}/model-vers headers=${headers} + Run Keyword If '${get_serviceVersion.status_code}' == '200' log to console \nExecuted with expected + Log to console ${get_serviceVersion.content} + Should Be Equal As Strings ${get_serviceVersion.status_code} 200 + ${serviceVersion_json_response}= Evaluate json.loads(r"""${get_serviceVersion.content}""", strict=False) json + ${all_service_version}= Set Variable ${serviceVersion_json_response['model-vers']['model-ver']} + ${model-version-id_1}= Set Variable "" + ${model-version-id_2}= Set Variable "" + FOR ${member} IN @{all_service_version} + ${model-version}= Set Variable ${member}[model-version] + ${model-version-id}= Set Variable ${member}[model-version-id] + Log to console The ServiceModel Version ${model-version} has ModelVersion Id : ${model-version-id} + ${model-version-id_1}= Set Variable If '${model-version}' == '1.0' ${model-version-id} ${model-version-id_1} + ${model-version-id_2}= Set Variable If '${model-version}' == '2.0' ${model-version-id} ${model-version-id_2} + END + SET GLOBAL VARIABLE ${model-version-id_1} + SET GLOBAL VARIABLE ${model-version-id_2} + +Invoke Service Instantiation for ServiceLevel Upgrade + Create Session api_handler_session http://${REPO_IP}:8080 + ${data}= Get Binary File ${CURDIR}${/}data${/}serviceLevelUpgradeRequest.json + ${serviceInstanceId}= Set Variable ${model-version-id_1} + &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json X-ONAP-RequestID=0ffc559c-5513-44bc-8b02-5759d84600f4 X-ONAP-PartnerName=ONAP X-RequestorID=VID + ${service_instantiation_request}= Post Request api_handler_session /onap/so/infra/instanceManagement/v1/serviceInstances/${serviceInstanceId}/workflows/${serviceLevel_workflow_uuid} data=${data} headers=${headers} + Run Keyword If '${service_instantiation_request.status_code}' == '200' log to console \nexecuted with expected result + log to console ${service_instantiation_request.content} + ${service_instantiation_json_response}= Evaluate json.loads(r"""${service_instantiation_request.content}""", strict=False) json + ${request_ID}= Set Variable ${service_instantiation_json_response}[requestReferences][requestId] + ${actual_service_request_state}= Set Variable "" + FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT} + ${orchestration_status_service_request}= Get Request api_handler_session /onap/so/infra/orchestrationRequests/v7/${request_ID} + Run Keyword If '${orchestration_status_service_request.status_code}' == '200' log to console \nexecuted with expected result + log to console ${orchestration_status_service_request.content} + ${orchestration_json_service_response}= Evaluate json.loads(r"""${orchestration_status_service_request.content}""", strict=False) json + ${actual_service_request_state}= SET VARIABLE ${orchestration_json_service_response}[request][requestStatus][requestState] + Log To Console Received actual repsonse status:${actual_service_request_state} + RUN KEYWORD IF '${actual_service_request_state}' == 'COMPLETE' or '${actual_service_request_state}' == 'FAILED' Exit For Loop + log to console Will try again after ${SLEEP_INTERVAL_SEC} seconds + SLEEP ${SLEEP_INTERVAL_SEC}s + END + Log To Console final repsonse status received: ${actual_service_request_state} + Run Keyword If '${actual_service_request_state}' == 'COMPLETE' log to console \nexecuted with expected result + Should Be Equal As Strings '${actual_service_request_state}' 'COMPLETE' + +Test Verify PNF-1 Configuration for Service Level Upgrade + [Documentation] Checking PNF configuration params + Create Session sdnc http://${REPO_IP}:8282 + &{headers}= Create Dictionary Authorization=Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ== Content-Type=application/json + ${mount}= Get File ${CURDIR}${/}data${/}mount.json + Log to console ${mount} + ${pnf_mount_resp}= Put Request sdnc ${SDNC_MOUNT_PATH} data=${mount} headers=${headers} + Should Be Equal As Strings ${pnf_mount_resp.status_code} 201 + SLEEP 10 + ${pnfsim_software_resp}= Get Request sdnc ${PNFSIM_MOUNT_PATH} headers=${headers} + Should Be Equal As Strings ${pnfsim_software_resp.status_code} 200 + Log to console ${pnfsim_software_resp.content} + ${pnfsim_software_resp_json}= Evaluate json.loads(r"""${pnfsim_software_resp.content}""", strict=False) json + ${all_upgp_members}= Set Variable ${pnfsim_software_resp_json['software-upgrade']['upgrade-package']} + FOR ${member} IN @{all_upgp_members} + ${soft_ver}= Get From Dictionary ${member} software-version + ${soft_status}= Get From Dictionary ${member} current-status + Log to console The node ${pnfName} has software version ${soft_ver} : ${soft_status} + Run Keyword If '${soft_ver}' == 'pnf_sw_version-4.0.0' Exit For Loop + END + Run Keyword If '${soft_ver}' == 'pnf_sw_version-4.0.0' log to console \nexecuted with expected result + Should Be Equal As Strings '${soft_ver}' 'pnf_sw_version-4.0.0' + Should Be Equal As Strings '${soft_status}' 'ACTIVATION_COMPLETED' + +Test AAI-Update for PNF-1 Target Software Version after Service Level Upgrade + Create Session aai_simulator_session https://${REPO_IP}:9993 + &{headers}= Create Dictionary Authorization=Basic YWFpOmFhaS5vbmFwLm9yZzpkZW1vMTIzNDU2IQ== Content-Type=application/json Accept=application/json verify=False + FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT} + ${get_pnf_request}= Get Request aai_simulator_session aai/v11/network/pnfs/pnf/${pnfName} headers=${headers} + Run Keyword If '${get_pnf_request.status_code}' == '200' log to console \nexecuted with expected result + ${get_pnf_json_response}= Evaluate json.loads(r"""${get_pnf_request.content}""", strict=False) json + Log to console ${get_pnf_json_response} + ${sw_version}= Set Variable ${get_pnf_json_response}[sw-version] + Log to console ${sw_version} + Run Keyword If '${sw_version}' == 'pnf_sw_version-4.0.0' Exit For Loop + log to console Will try again after ${SLEEP_INTERVAL_SEC} seconds + SLEEP ${SLEEP_INTERVAL_SEC}s + END + Log To Console final target software version received: ${sw_version} + Run Keyword If '${sw_version}' == 'pnf_sw_version-4.0.0' log to console \nexecuted with expected result + Should Be Equal As Strings '${sw_version}' 'pnf_sw_version-4.0.0' + +Test Verify PNF-2 Configuration for Service Level Upgrade + [Documentation] Checking PNF configuration params + Create Session sdnc http://${REPO_IP}:8282 + &{headers}= Create Dictionary Authorization=Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ== Content-Type=application/json + ${mount}= Get File ${CURDIR}${/}data${/}mount2.json + Log to console ${mount} + ${pnf_mount_resp}= Put Request sdnc ${SDNC_MOUNT_PATH2} data=${mount} headers=${headers} + Should Be Equal As Strings ${pnf_mount_resp.status_code} 201 + SLEEP 10 + ${pnfsim_software_resp}= Get Request sdnc ${PNFSIM_MOUNT_PATH2} headers=${headers} + Should Be Equal As Strings ${pnfsim_software_resp.status_code} 200 + Log to console ${pnfsim_software_resp.content} + ${pnfsim_software_resp_json}= Evaluate json.loads(r"""${pnfsim_software_resp.content}""", strict=False) json + ${all_upgp_members}= Set Variable ${pnfsim_software_resp_json['software-upgrade']['upgrade-package']} + FOR ${member} IN @{all_upgp_members} + ${soft_ver}= Get From Dictionary ${member} software-version + ${soft_status}= Get From Dictionary ${member} current-status + Log to console The node ${pnfName1} has software version ${soft_ver} : ${soft_status} + Run Keyword If '${soft_ver}' == 'pnf_sw_version-4.0.0' Exit For Loop + END + Run Keyword If '${soft_ver}' == 'pnf_sw_version-4.0.0' log to console \nexecuted with expected result + Should Be Equal As Strings '${soft_ver}' 'pnf_sw_version-4.0.0' + Should Be Equal As Strings '${soft_status}' 'ACTIVATION_COMPLETED' + +Test AAI-Update for PNF-2 Target Software Version after Service Level Upgrade + Create Session aai_simulator_session https://${REPO_IP}:9993 + &{headers}= Create Dictionary Authorization=Basic YWFpOmFhaS5vbmFwLm9yZzpkZW1vMTIzNDU2IQ== Content-Type=application/json Accept=application/json verify=False + FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT} + ${get_pnf_request}= Get Request aai_simulator_session aai/v11/network/pnfs/pnf/${pnfName1} headers=${headers} + Run Keyword If '${get_pnf_request.status_code}' == '200' log to console \nexecuted with expected result + ${get_pnf_json_response}= Evaluate json.loads(r"""${get_pnf_request.content}""", strict=False) json + Log to console ${get_pnf_json_response} + ${sw_version}= Set Variable ${get_pnf_json_response}[sw-version] + Log to console ${sw_version} + Run Keyword If '${sw_version}' == 'pnf_sw_version-4.0.0' Exit For Loop + log to console Will try again after ${SLEEP_INTERVAL_SEC} seconds + SLEEP ${SLEEP_INTERVAL_SEC}s + END + Log To Console final target software version received: ${sw_version} + Run Keyword If '${sw_version}' == 'pnf_sw_version-4.0.0' log to console \nexecuted with expected result + Should Be Equal As Strings '${sw_version}' 'pnf_sw_version-4.0.0' + +Test AAI-Update for ServiceInstance after Service Level Upgrade + ${globalSubscriberId}= Set Variable 807c7a02-249c-4db8-9fa9-bee973fe08ce + Create Session aai_simulator_session https://${REPO_IP}:9993 + &{headers}= Create Dictionary Authorization=Basic YWFpOmFhaS5vbmFwLm9yZzpkZW1vMTIzNDU2IQ== Content-Type=application/json Accept=application/json verify=False + ${get_service_request}= Get Request aai_simulator_session aai/v17/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/pNF/service-instances/service-instance/${model_version_id_2} headers=${headers} + Run Keyword If '${get_service_request.status_code}' == '200' log to console \nexecuted with expected result + ${get_service_json_response}= Evaluate json.loads(r"""${get_service_request.content}""", strict=False) json + Log to console ${get_service_json_response} + ${service_instance_id}= Set Variable ${get_service_json_response}[service-instance-id] + Should Be Equal As Strings '${service_instance_id}' 'df4decf6-h727-8875-8761-89683ed43645' + ${model_version_id}= Set Variable ${get_service_json_response}[model-version-id] + Should Be Equal As Strings '${model_version_id}' '${model_version_id_2}' \ No newline at end of file