From 9a7128436b8d7c292dd8de849883c0cce18e5e68 Mon Sep 17 00:00:00 2001 From: Dan Timoney Date: Mon, 17 May 2021 10:20:29 -0400 Subject: Remove SDNC CSIT tests SDNC CSIT tests have been moved to SDNC project repo (sdnc/oam), so tests in integration/csit are no longer needed. Change-Id: Iae8b2e5b609e50ea7f6a215e82fb8344fea0fe69 Issue-ID: SDNC-1545 Signed-off-by: Dan Timoney --- tests/sdnc/healthcheck/__init__.robot | 2 - tests/sdnc/healthcheck/data/data.json | 4 - tests/sdnc/healthcheck/data/preload.json | 41 ---- tests/sdnc/healthcheck/test1.robot | 27 --- .../sdnc_netconf_tls_post_deploy/__init__.robot | 2 - .../csr/netconf_pnp_simulator_csr.env | 17 -- .../sdnc_netconf_tls_post_deploy/csr/sdnc_csr.env | 17 -- .../libraries/ClientManager.py | 207 --------------------- .../libraries/config.sh | 129 ------------- .../libraries/config_tls.sh | 104 ----------- .../resources/sdnc-keywords.robot | 82 -------- .../resources/sdnc-properties.robot | 37 ---- .../sdnc_post_deploy_cert_check.robot | 27 --- 13 files changed, 696 deletions(-) delete mode 100644 tests/sdnc/healthcheck/__init__.robot delete mode 100644 tests/sdnc/healthcheck/data/data.json delete mode 100644 tests/sdnc/healthcheck/data/preload.json delete mode 100644 tests/sdnc/healthcheck/test1.robot delete mode 100644 tests/sdnc/sdnc_netconf_tls_post_deploy/__init__.robot delete mode 100644 tests/sdnc/sdnc_netconf_tls_post_deploy/csr/netconf_pnp_simulator_csr.env delete mode 100644 tests/sdnc/sdnc_netconf_tls_post_deploy/csr/sdnc_csr.env delete mode 100644 tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/ClientManager.py delete mode 100755 tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/config.sh delete mode 100755 tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/config_tls.sh delete mode 100644 tests/sdnc/sdnc_netconf_tls_post_deploy/resources/sdnc-keywords.robot delete mode 100644 tests/sdnc/sdnc_netconf_tls_post_deploy/resources/sdnc-properties.robot delete mode 100644 tests/sdnc/sdnc_netconf_tls_post_deploy/sdnc_post_deploy_cert_check.robot (limited to 'tests/sdnc') diff --git a/tests/sdnc/healthcheck/__init__.robot b/tests/sdnc/healthcheck/__init__.robot deleted file mode 100644 index 8dac1b6a..00000000 --- a/tests/sdnc/healthcheck/__init__.robot +++ /dev/null @@ -1,2 +0,0 @@ -*** Settings *** -Documentation SDNC - healthcheck diff --git a/tests/sdnc/healthcheck/data/data.json b/tests/sdnc/healthcheck/data/data.json deleted file mode 100644 index 583e26fb..00000000 --- a/tests/sdnc/healthcheck/data/data.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "input" : { - } -} diff --git a/tests/sdnc/healthcheck/data/preload.json b/tests/sdnc/healthcheck/data/preload.json deleted file mode 100644 index b53afa85..00000000 --- a/tests/sdnc/healthcheck/data/preload.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "input": { - "vnf-topology-information": { - "vnf-topology-identifier": { - "service-type": "robot_demo", - "vnf-name": "vf_robot_module", - "vnf-type": "vf_robot_type", - "generic-vnf-name": "generic_vnf_name", - "generic-vnf-type": "generic_vnf_type" - }, - "vnf-assignments": { - "availability-zones": [], - "vnf-networks": [], - "vnf-vms": [] - }, - "vnf-parameters": [ - { - "vnf-parameter-name": "ngm1_management_ip_0", - "vnf-parameter-value":"127.0.0.1" - }, - { - "vnf-parameter-name": "ngm2_management_ip_1", - "vnf-parameter-value":"127.0.0.2" - } - ] - }, - "request-information": { - "request-id": "robot12", - "order-version": "1", - "notification-url": "openecomp.org", - "order-number": "1", - "request-action": "PreloadVNFRequest" - }, - "sdnc-request-header": { - "svc-request-id": "robot12", - "svc-notification-url": "http:\/\/openecomp.org:8080\/adapters\/rest\/SDNCNotify", - "svc-action": "reserve" - } - } -} - diff --git a/tests/sdnc/healthcheck/test1.robot b/tests/sdnc/healthcheck/test1.robot deleted file mode 100644 index 85783a79..00000000 --- a/tests/sdnc/healthcheck/test1.robot +++ /dev/null @@ -1,27 +0,0 @@ -*** Settings *** -Library Collections -Library RequestsLibrary -Library OperatingSystem -Library json -Library String - -*** Variables *** -${SDN_APIDOCS_URI} /apidoc/openapi3/18/apis/single -${SDN_HEALTHCHECK_OPERATION_PATH} /operations/SLI-API:healthcheck - -*** Test Cases *** - -Healthcheck API - Create Session sdnc http://localhost:8282/restconf - ${data}= Get File ${CURDIR}${/}data${/}data.json - &{headers}= Create Dictionary Authorization=Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ== Content-Type=application/json Accept=application/json - ${resp}= Post Request sdnc ${SDN_HEALTHCHECK_OPERATION_PATH} data=${data} headers=${headers} - Should Be Equal As Strings ${resp.status_code} 200 - Should Be Equal As Strings ${resp.json()['output']['response-code']} 200 - -Check SLI-API - Create Session sdnc http://localhost:8282 - &{headers}= Create Dictionary Authorization=Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ== Content-Type=application/json Accept=application/json - ${resp}= Get Request sdnc ${SDN_APIDOCS_URI} headers=${headers} - Log ${resp.text} - Should Contain ${resp.text} SLI-API diff --git a/tests/sdnc/sdnc_netconf_tls_post_deploy/__init__.robot b/tests/sdnc/sdnc_netconf_tls_post_deploy/__init__.robot deleted file mode 100644 index d7353060..00000000 --- a/tests/sdnc/sdnc_netconf_tls_post_deploy/__init__.robot +++ /dev/null @@ -1,2 +0,0 @@ -1 *** Settings *** -2 Documentation SDNC - keystorecheck diff --git a/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/netconf_pnp_simulator_csr.env b/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/netconf_pnp_simulator_csr.env deleted file mode 100644 index e85ab6cc..00000000 --- a/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/netconf_pnp_simulator_csr.env +++ /dev/null @@ -1,17 +0,0 @@ -#Client Envs -REQUEST_TIMEOUT=30000 -OUTPUT_PATH=/var/certs -CA_NAME=RA -OUTPUT_TYPE=P12 -KEYSTORE_PATH=/etc/onap/aaf/certservice/certs/certServiceClient-keystore.jks -KEYSTORE_PASSWORD=secret -TRUSTSTORE_PATH=/etc/onap/aaf/certservice/certs/truststore.jks -TRUSTSTORE_PASSWORD=secret -#CSR Config Envs -COMMON_NAME=netconf.pnp.simulator.onap.org -ORGANIZATION=Linux-Foundation -ORGANIZATION_UNIT=ONAP -LOCATION=San-Francisco -STATE=California -COUNTRY=US -SANS=netconf.com:netconfsimulator.com diff --git a/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/sdnc_csr.env b/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/sdnc_csr.env deleted file mode 100644 index 5d647de6..00000000 --- a/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/sdnc_csr.env +++ /dev/null @@ -1,17 +0,0 @@ -#Client CSR -REQUEST_TIMEOUT=30000 -OUTPUT_PATH=/var/certs -CA_NAME=RA -OUTPUT_TYPE=PEM -KEYSTORE_PATH=/etc/onap/aaf/certservice/certs/certServiceClient-keystore.jks -KEYSTORE_PASSWORD=secret -TRUSTSTORE_PATH=/etc/onap/aaf/certservice/certs/truststore.jks -TRUSTSTORE_PASSWORD=secret -#CSR Config Envs -COMMON_NAME=sdnc.onap.org -ORGANIZATION=Linux-Foundation -ORGANIZATION_UNIT=ONAP -LOCATION=San-Francisco -STATE=California -COUNTRY=US -SANS=example.com:sample.com \ No newline at end of file diff --git a/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/ClientManager.py b/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/ClientManager.py deleted file mode 100644 index b1c024ff..00000000 --- a/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/ClientManager.py +++ /dev/null @@ -1,207 +0,0 @@ -# ============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========================================================= - -__author__ = "Ajay Deep Singh (ajay.deep.singh@est.tech)" -__copyright__ = "Copyright (C) 2020 Nordix Foundation" -__license__ = "Apache 2.0" - -import os -import shutil -import subprocess - -import docker -from OpenSSL import crypto -from docker.types import Mount - -DEV_NULL = open(os.devnull, 'wb') -NETCONF_PNP_SIM_CONTAINER_NAME = 'netconf-simulator' -ARCHIVES_PATH = os.getenv("WORKSPACE") + "/archives/" - - -class ClientManager: - - def __init__(self, mount_path, truststore_path): - self.mount_path = mount_path - self.truststore_path = truststore_path - self.keyPem = mount_path + '/key.pem' - self.caCertPem = mount_path + '/ca.pem' - self.serverKeyPem = mount_path + '/server_key.pem' - self.serverCertPem = mount_path + '/server_cert.pem' - self.keystorePemPath = mount_path + '/keystore.pem' - self.keystoreP12Path = mount_path + '/keystore.p12' - self.keystorePassPath = mount_path + '/keystore.pass' - self.truststorePemPath = mount_path + '/truststore.pem' - self.truststoreP12Path = mount_path + '/truststore.p12' - self.truststorePassPath = mount_path + '/truststore.pass' - - # Function Create docker container. - def run_client_container(self, client_image, container_name, path_to_env, request_url, network): - self.create_mount_dir() - client = docker.from_env() - environment = self.read_env_list_from_file(path_to_env) - environment.append("REQUEST_URL=" + request_url) - container = client.containers.run( - image=client_image, - name=container_name, - environment=environment, - network=network, - user='root', - mounts=[Mount(target='/var/certs', source=self.mount_path, type='bind'), - Mount(target='/etc/onap/aaf/certservice/certs/', source=self.truststore_path, type='bind')], - detach=True - ) - exitcode = container.wait() - return exitcode - - # Function to validate keystore/truststore can be opened with generated pass-phrase. - def can_open_keystore_and_truststore_with_pass(self, container_name): - if container_name != NETCONF_PNP_SIM_CONTAINER_NAME: - return self.can_open_keystore_and_truststore_pem_files() - else: - return self.can_open_keystore_and_truststore_p12_files() - - # Function to validate keystore.pem/truststore.pem exist and are not empty. - def can_open_keystore_and_truststore_pem_files(self): - try: - private_key = self.file_exist_and_not_empty(self.keyPem) - keystore_pem = self.file_exist_and_not_empty(self.keystorePemPath) - truststore_pem = self.file_exist_and_not_empty(self.truststorePemPath) - return private_key and keystore_pem and truststore_pem - except Exception as e: - print("UnExpected Error in validating keystore.pem/truststore.pem: {0}".format(e)) - return False - - # Function to validate keystore.p12/truststore.p12 can be opened with generated pass-phrase. - def can_open_keystore_and_truststore_p12_files(self): - can_open_keystore = self.can_open_p12_file_with_pass_file(self.keystorePassPath, self.keystoreP12Path) - can_open_truststore = self.can_open_p12_file_with_pass_file(self.truststorePassPath, self.truststoreP12Path) - return can_open_keystore & can_open_truststore - - # Method for Uploading Certificate in SDNC-Container. - # Creating/Uploading Server-key, Server-cert, Ca-cert PEM files in Netconf-Pnp-Simulator. - def can_install_keystore_and_truststore_certs(self, cmd, cmd_tls, container_name): - continue_exec = True - if container_name == NETCONF_PNP_SIM_CONTAINER_NAME: - print("Generating PEM files for {0} from P12 files".format(container_name)) - continue_exec = self.create_pem(self.keystorePassPath, self.keystoreP12Path, self.truststorePassPath, - self.truststoreP12Path) - else: - cmd = cmd_tls - if continue_exec: - print("Initiate Configuration Push for : {0}".format(container_name)) - resp_code = self.execute_bash_config(cmd, container_name) - if resp_code == 0: - print("Execution Successful for: {0}".format(container_name)) - return True - else: - print("Execution Failed for: {0}".format(container_name)) - return False - - def create_pem(self, keystore_pass_path, keystore_p12_path, truststore_pass_path, truststore_p12_path): - # Create [server_key.pem, server_cert.pem, ca.pem] files for Netconf-Pnp-Simulation/TLS Configuration. - try: - with open(self.serverKeyPem, "wb+") as key_file: - key_file.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, - self.get_pkcs12(keystore_pass_path, - keystore_p12_path).get_privatekey())) - with open(self.serverCertPem, "wb+") as server_cert_file: - server_cert_file.write(crypto.dump_certificate(crypto.FILETYPE_PEM, - self.get_pkcs12(keystore_pass_path, - keystore_p12_path).get_certificate())) - with open(self.caCertPem, "wb+") as ca_cert_file: - ca_cert_file.write( - crypto.dump_certificate(crypto.FILETYPE_PEM, - self.get_pkcs12(truststore_pass_path, - truststore_p12_path).get_ca_certificates()[0])) - return True - except IOError as err: - print("I/O Error: {0}".format(err)) - return False - except Exception as e: - print("UnExpected Error: {0}".format(e)) - return False - - def can_open_p12_file_with_pass_file(self, pass_file_path, p12_file_path): - try: - if p12_file_path.split('/')[-1] == 'truststore.p12': - pkcs12 = self.get_pkcs12(pass_file_path, p12_file_path).get_ca_certificates()[0] - else: - pkcs12 = self.get_pkcs12(pass_file_path, p12_file_path).get_certificate() - if pkcs12 is None: - return False - return True - except IOError as err: - print("I/O Error PKCS12 Creation failed: {0}".format(err)) - return False - except Exception as e: - print("UnExpected Error PKCS12 Creation failed: {0}".format(e)) - return False - - def remove_client_container_and_save_logs(self, container_name, log_file_name): - client = docker.from_env() - container = client.containers.get(container_name) - text_file = open(ARCHIVES_PATH + container_name + '_' + log_file_name + ".log", "w") - text_file.write(container.logs()) - text_file.close() - container.remove() - self.remove_mount_dir() - - def create_mount_dir(self): - if not os.path.exists(self.mount_path): - os.makedirs(self.mount_path) - - def remove_mount_dir(self): - shutil.rmtree(self.mount_path) - - def file_exist_and_not_empty(self, path_to_file): - return os.path.isfile(path_to_file) and os.path.getsize(path_to_file) > 0 - - @staticmethod - def get_pkcs12(pass_file_path, p12_file_path): - # Load PKCS12 Object - password = open(pass_file_path, 'rb').read() - return crypto.load_pkcs12(open(p12_file_path, 'rb').read(), password) - - @staticmethod - def execute_bash_config(cmd, container_name): - # Run command with arguments. Wait for command to complete or timeout, return code attribute. - try: - resp_code = subprocess.call(["%s %s" % (cmd, container_name)], shell=True, stdout=DEV_NULL, - stderr=subprocess.STDOUT) - print("Response Code from Config.sh execution: {0}".format(resp_code)) - return resp_code - except subprocess.CalledProcessError as e: - print("CalledProcessError Certificate installation failed in SDNC-ODL Container: {0}".format(e)) - return 1 # Return Error Code - - @staticmethod - def get_container_logs(container_name): - client = docker.from_env() - container = client.containers.get(container_name) - logs = container.logs() - return logs - - @staticmethod - def read_env_list_from_file(path): - f = open(path, "r") - r_list = [] - for line in f: - line = line.strip() - if line[0] != "#": - r_list.append(line) - return r_list diff --git a/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/config.sh b/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/config.sh deleted file mode 100755 index cc6bf188..00000000 --- a/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/config.sh +++ /dev/null @@ -1,129 +0,0 @@ -#!/bin/bash - -# -# ============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========================================================= - -# @author Ajay Deep Singh (ajay.deep.singh@est.tech) - -CONTAINER_NAME="$1" -LOGFILE="${WORKSPACE}"/archives/config.log -CONTAINER_ID=$(docker inspect --format="{{.Id}}" "$CONTAINER_NAME") - -OWNER="odl" -DEST_DIR="/tmp" - -CERT_DIR="${WORKSPACE}"/tests/sdnc/sdnc_netconf_tls_post_deploy/cert-data/* - -function now_ms() { - date +"%Y-%m-%d %H:%M:%S.%3N" -} - -function log() { - local level=$1 - shift - local message="$*" - printf "%s %-5s %s\n" "$(now_ms)" "$level" "$message" >>"$LOGFILE" -} - -# Copy [keystore.jks, truststore.jks, truststore.pass, keystore.pass] files into SDNC container. -function docker_cp() { - local file=$1 - docker cp "$file" "$CONTAINER_ID":"$DEST_DIR" - docker exec -u 0 "$CONTAINER_ID" chown "$OWNER":"$OWNER" "$DEST_DIR"/"${file##*/}" -} - -# Run installCerts.py script to push X509 Certificates to SDNC-ODL Keystore/Truststore. -function sdnc_conf() { - log INFO "Configuring SDNC-ODL Keystore..." - count=0 - exit_code=false - for i in {1..4}; do - for file in $CERT_DIR; do - if [[ -f $file ]]; then - log INFO "Uploading file :" "$file" - docker_cp "$file" - count=$((count + 1)) - fi - done - if [[ $count -eq 4 ]]; then - log INFO "SDNC JKS files upload successful" - exit_code=true - break - fi - log DEBUG "Waiting for JKS files to be uploaded to SDNC container.." - sleep 2m - done - if [[ "$exit_code" != "true" ]]; then - log DEBUG "JKS files Not found in $CERT_DIR" - exit 1 # Return error code - fi - sleep 2m - docker exec "$CONTAINER_ID" rm -rf /tmp/certs.properties - docker exec "$CONTAINER_ID" rm -rf /tmp/keys0.zip - if ! docker exec "$CONTAINER_ID" /usr/bin/python /opt/onap/sdnc/bin/installCerts.py; then - log DEBUG "Issue executing installCerts.py script" - docker cp "$CONTAINER_ID":/opt/opendaylight/data/log/installCerts.log "${WORKSPACE}"/archives - exit 1 # Return error code - fi - log INFO "Configuring SDNC-ODL Keystore successful" -} - -# Copy [Server_key.pem, Server_cert.pem, Ca.pem] files into Netconf-Simulator container. -# Reconfigure TLS config by invoking reconfigure-tls.sh script. -function netconf-simulator_conf() { - log INFO "Configuring Netconf-Pnp-Simulator..." - count=0 - exit_code=false - for i in {1..4}; do - for file in $CERT_DIR; do - if [[ -f $file && ${file: -4} == ".pem" ]]; then - log INFO "Uploading file :" "$file" - docker cp "$file" "$CONTAINER_ID":/config/tls - count=$((count + 1)) - fi - done - if [[ $count -eq 3 ]]; then - log INFO "PEM files upload successful" - exit_code=true - break - fi - log DEBUG "Waiting for PEM files to be uploaded to Netconf-Pnp-Simulator.." - sleep 2m - done - if [[ "$exit_code" != "true" ]]; then - log DEBUG "PEM files Not found in $CERT_DIR" - exit 1 # Return error code - fi - sleep 2m - if ! docker exec "$CONTAINER_ID" /opt/bin/reconfigure-tls.sh; then - log DEBUG "Issue executing reconfigure-tls.sh script" - docker logs "$CONTAINER_ID" > "${WORKSPACE}"/archives/simulator.log - exit 1 # Return error code - fi - log INFO "Configuring Netconf-Pnp-Simulator successful" -} - -# Push Config on SDNC, Netconf-Simulator. -if [[ -n $CONTAINER_ID ]]; then - log INFO "Container Name: $CONTAINER_NAME, Container Id: $CONTAINER_ID" - if [[ "$CONTAINER_NAME" == "sdnc" ]]; then - sdnc_conf - elif [[ "$CONTAINER_NAME" == "netconf-simulator" ]]; then - netconf-simulator_conf - fi -fi diff --git a/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/config_tls.sh b/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/config_tls.sh deleted file mode 100755 index 323f8100..00000000 --- a/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/config_tls.sh +++ /dev/null @@ -1,104 +0,0 @@ -#!/bin/bash - -# ============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========================================================= - -set -o errexit -set -o pipefail -set -o nounset -[ "${SHELL_XTRACE:-false}" = "true" ] && set -o xtrace - -CONFIG=${CONFIG:-"${WORKSPACE}"/tests/sdnc/sdnc_netconf_tls_post_deploy/cert-data} -CONTAINER_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}' sdnc) -ODL_URL=${ODL_URL:-http://"${CONTAINER_IP}":8282} -PROC_NAME=${0##*/} -PROC_NAME=${PROC_NAME%.sh} - -function now_ms() { - # Requires coreutils package - date +"%Y-%m-%d %H:%M:%S.%3N" -} - -function log() { - local level=$1 - shift - local message="$*" - printf "%s %-5s [%s] %s\n" "$(now_ms)" $level $PROC_NAME "$message" -} - -# Extracts the body of a PEM file by removing the dashed header and footer -pem_body() { - grep -Fv -- ----- $1 -} - -CA_CERT_ID=xNF_CA_certificate_0_0 -CA_CERT=$(pem_body $CONFIG/truststore.pem) - -SERVER_PRIV_KEY_ID=ODL_private_key_0 -SERVER_KEY=$(pem_body $CONFIG/key.pem) -SERVER_CERT=$(pem_body $CONFIG/keystore.pem) - -RESTCONF_URL=$ODL_URL/restconf -NETCONF_KEYSTORE_PATH=$RESTCONF_URL/config/netconf-keystore:keystore - -xcurl() { - curl -s -o /dev/null -H "Authorization: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==" -w %{http_code} "$@" -} - -log INFO Delete Keystore -sc=$(xcurl -X DELETE $NETCONF_KEYSTORE_PATH) - -if [ "$sc" != "200" -a "$sc" != "404" ]; then - log ERROR "Keystore deletion failed with SC=$sc" - exit 1 -fi - -log INFO Load CA certificate -sc=$(xcurl -X POST $NETCONF_KEYSTORE_PATH --header "Content-Type: application/json" --data " -{ - \"trusted-certificate\": [ - { - \"name\": \"$CA_CERT_ID\", - \"certificate\": \"$CA_CERT\" - } - ] -} -") - -if [ "$sc" != "200" -a "$sc" != "204" ]; then - log ERROR Trusted-certificate update failed with SC=$sc - exit 1 -fi - -log INFO Load server private key and certificate -sc=$(xcurl -X POST $NETCONF_KEYSTORE_PATH --header "Content-Type: application/json" --data " -{ - \"private-key\": { - \"name\": \"$SERVER_PRIV_KEY_ID\", - \"certificate-chain\": [ - \"$SERVER_CERT\" - ], - \"data\": \"$SERVER_KEY\" - } -} -") - -if [ "$sc" != "200" -a "$sc" != "204" ]; then - log ERROR Private-key update failed with SC=$sc - exit 1 -fi \ No newline at end of file diff --git a/tests/sdnc/sdnc_netconf_tls_post_deploy/resources/sdnc-keywords.robot b/tests/sdnc/sdnc_netconf_tls_post_deploy/resources/sdnc-keywords.robot deleted file mode 100644 index 3ea61649..00000000 --- a/tests/sdnc/sdnc_netconf_tls_post_deploy/resources/sdnc-keywords.robot +++ /dev/null @@ -1,82 +0,0 @@ -*** Settings *** - -Resource ../../../common.robot -Resource ./sdnc-properties.robot - -Library Collections -Library RequestsLibrary -Library HttpLibrary.HTTP -Library ../libraries/ClientManager.py ${MOUNT_PATH} ${TRUSTSTORE_PATH} - -*** Keywords *** - -Create sessions - [Documentation] Create all required sessions - ${certs}= Create List ${CERTSERVICE_SERVER_CRT} ${CERTSERVICE_SERVER_KEY} - Create Client Cert Session alias ${AAFCERT_URL} client_certs=${certs} verify=${ROOTCA} disable_warnings=1 - Set Suite Variable ${https_valid_cert_session} alias - -Run Healthcheck - [Documentation] Run Healthcheck - ${resp}= Get Request ${https_valid_cert_session} /actuator/health - Should Be Equal As Strings ${resp.status_code} 200 - Validate Recieved Response ${resp} status UP - -Validate Recieved Response - [Documentation] Validate message that has been received - [Arguments] ${resp} ${key} ${expected_value} - ${json}= Parse Json ${resp.content} - ${value}= Get From Dictionary ${json} ${key} - Should Be Equal As Strings ${value} ${expected_value} - -Send Get Request And Validate Response - [Documentation] Send request to passed url and validate received response - [Arguments] ${path} ${resp_code} - ${resp}= Get Request ${https_valid_cert_session} ${path} - Should Be Equal As Strings ${resp.status_code} ${resp_code} - -Send Get Request And Validate Response Sdnc - [Documentation] Send request to passed url and validate received response - [Arguments] ${path} ${resp_code} - Create Session sdnc_restconf ${SDNC_RESTCONF_URL} - &{headers}= Create Dictionary Authorization=Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ== Content-Type=application/json Accept=application/json - ${resp}= Get Request sdnc_restconf ${path} headers=${headers} - Should Be Equal As Strings ${resp.status_code} ${resp_code} - -Send Get Request And Validate TLS Connection Response - [Documentation] Send request to passed url and validate received response - [Arguments] ${path} ${resp_code} - Create Session sdnc_restconf ${SDNC_RESTCONF_URL} - ${mount}= Get File ${REQUEST_DATA_PATH}${/}mount.xml - &{headers}= Create Dictionary Authorization=Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ== Content-Type=application/xml Accept=application/xml - ${resp}= Put Request sdnc_restconf ${path} data=${mount} headers=${headers} - Should Be Equal As Strings ${resp.status_code} 201 - Sleep 30 - &{headers1}= Create Dictionary Authorization=Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ== Content-Type=application/json Accept=application/json - ${resp1}= Get Request sdnc_restconf ${PNFSIM_MOUNT_PATH} headers=${headers1} - Should Be Equal As Strings ${resp1.status_code} ${resp_code} - -Send Delete Request And Validate PNF Mount Deleted - [Documentation] Send request to passed url and validate received response - [Arguments] ${path} ${resp_code} - Create Session sdnc_restconf ${SDNC_RESTCONF_URL} - ${mount}= Get File ${REQUEST_DATA_PATH}${/}mount.xml - &{headers}= Create Dictionary Authorization=Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ== Content-Type=application/json Accept=application/json - ${deleteresponse}= Delete Request sdnc_restconf ${path} data=${mount} headers=${headers} - Should Be Equal As Strings ${deleteresponse.status_code} ${resp_code} - Sleep 30 - ${del_topology}= Delete Request sdnc_restconf ${SDNC_NETWORK_TOPOLOGY} - ${del_keystore}= Delete Request sdnc_restconf ${SDNC_KEYSTORE_CONFIG_PATH} - Should Be Equal As Strings ${del_keystore.status_code} ${resp_code} - Should Be Equal As Strings ${del_topology.status_code} ${resp_code} - -Run Cert Service Client And Validate JKS File Creation And Client Exit Code - [Documentation] Run Cert Service Client Container And Validate Exit Code For SDNC - [Arguments] ${env_file} ${CONTAINER_NAME} ${expected_exit_code} - ${exit_code}= Run Client Container ${DOCKER_CLIENT_IMAGE} ${CLIENT_CONTAINER_NAME} ${env_file} ${CERT_SERVICE_ADDRESS}${CERT_SERVICE_ENDPOINT} ${CERT_SERVICE_NETWORK} - ${can_open}= Can Open Keystore And Truststore With Pass ${CONTAINER_NAME} - ${install_certs}= Can Install Keystore And Truststore Certs ${CONF_SCRIPT} ${CONF_TLS_SCRIPT} ${CONTAINER_NAME} - Remove Client Container And Save Logs ${CLIENT_CONTAINER_NAME} positive_path - Should Be Equal As Strings ${exit_code} ${expected_exit_code} Client return: ${exitcode} exit code, but expected: ${expected_exit_code} - Should Be True ${can_open} Cannot Open Keystore/TrustStore by Passphrase - Should Be True ${install_certs} Cannot Install Keystore/Truststore \ No newline at end of file diff --git a/tests/sdnc/sdnc_netconf_tls_post_deploy/resources/sdnc-properties.robot b/tests/sdnc/sdnc_netconf_tls_post_deploy/resources/sdnc-properties.robot deleted file mode 100644 index 2f2d6f5a..00000000 --- a/tests/sdnc/sdnc_netconf_tls_post_deploy/resources/sdnc-properties.robot +++ /dev/null @@ -1,37 +0,0 @@ -*** Variables *** - -# AAF CertService -${NEXUS_DOCKER_REPO} nexus3.onap.org:10001 - -${RA_CA_NAME} RA -${CERT_SERVICE_PORT} 8443 -${CERT_SERVICE_CONTAINER_NAME} aaf-cert-service -${CERT_SERVICE_NETWORK} certservice_certservice -${AAFCERT_URL} https://localhost:${CERT_SERVICE_PORT} -${CERT_SERVICE_ENDPOINT} /v1/certificate/ -${CERT_SERVICE_ADDRESS} https://${CERT_SERVICE_CONTAINER_NAME}:${CERT_SERVICE_PORT} -${ROOTCA} %{WORKSPACE}/tests/sdnc/sdnc_netconf_tls_post_deploy/certs/root.crt -${CERTSERVICE_SERVER_CRT} %{WORKSPACE}/tests/sdnc/sdnc_netconf_tls_post_deploy/certs/certServiceServer.crt -${CERTSERVICE_SERVER_KEY} %{WORKSPACE}/tests/sdnc/sdnc_netconf_tls_post_deploy/certs/certServiceServer.key - -#AAF CerService Client -${CLIENT_CONTAINER_NAME} %{CLIENT_CONTAINER_NAME} -${DOCKER_CLIENT_IMAGE} nexus3.onap.org:10001/onap/org.onap.aaf.certservice.aaf-certservice-client:latest -${TRUSTSTORE_PATH} %{WORKSPACE}/plans/sdnc/sdnc_netconf_tls_post_deploy/certs - -# SDNC Configuration -${REQUEST_DATA_PATH} %{REQUEST_DATA_PATH} -${SDNC_CONTAINER_NAME} %{SDNC_CONTAINER_NAME} -${SDNC_RESTCONF_URL} http://localhost:8282/restconf -${SDNC_KEYSTORE_CONFIG_PATH} /config/netconf-keystore:keystore -${SDNC_NETWORK_TOPOLOGY} /config/network-topology:network-topology -${MOUNT_PATH} %{WORKSPACE}/tests/sdnc/sdnc_netconf_tls_post_deploy/cert-data -${SDNC_CSR_FILE} %{WORKSPACE}/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/sdnc_csr.env -${SDNC_MOUNT_PATH} /config/network-topology:network-topology/topology/topology-netconf/node/PNFDemo -${PNFSIM_MOUNT_PATH} /config/network-topology:network-topology/topology/topology-netconf/node/PNFDemo/yang-ext:mount/turing-machine:turing-machine - -# Netconf-Pnp-Simulator -${NETCONF_PNP_SIM_CONTAINER_NAME} %{NETCONF_PNP_SIM_CONTAINER_NAME} -${NETCONF_PNP_SIM_CSR_FILE} %{WORKSPACE}/tests/sdnc/sdnc_netconf_tls_post_deploy/csr/netconf_pnp_simulator_csr.env -${CONF_SCRIPT} %{WORKSPACE}/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/config.sh -${CONF_TLS_SCRIPT} %{WORKSPACE}/tests/sdnc/sdnc_netconf_tls_post_deploy/libraries/config_tls.sh diff --git a/tests/sdnc/sdnc_netconf_tls_post_deploy/sdnc_post_deploy_cert_check.robot b/tests/sdnc/sdnc_netconf_tls_post_deploy/sdnc_post_deploy_cert_check.robot deleted file mode 100644 index 4d935974..00000000 --- a/tests/sdnc/sdnc_netconf_tls_post_deploy/sdnc_post_deploy_cert_check.robot +++ /dev/null @@ -1,27 +0,0 @@ -*** Settings *** - -Documentation SDNC, Netconf-Pnp-Simulator E2E Test Case Scenarios - -Library RequestsLibrary -Resource ./resources/sdnc-keywords.robot - -Suite Setup Create sessions - -*** Test Cases *** - -Check SDNC Keystore For Netopeer2 Certificates - [Tags] SDNC-NETOPEER2-CERT-DEPLOYMENT - [Documentation] Checking Keystore after SDNC istallation - Send Get Request And Validate Response Sdnc ${SDNC_KEYSTORE_CONFIG_PATH} 200 - - -Check SDNC And PNF TLS Connection Over Netopeer2 Certificates - [Tags] SDNC-PNF-TLS-CONNECTION-CHECK - [Documentation] Checking PNF Mount after SDNC Installation - Send Get Request And Validate TLS Connection Response ${SDNC_MOUNT_PATH} 200 - -Check PNF Delete And Remove Netopeer2 Certificates From Keystore - [Tags] SDNC-PNF-MOUNT-DELETE-CLEAR-KEYSTORE - [Documentation] Checking PNF Mount Delete from SDNC - Send Delete Request And Validate PNF Mount Deleted ${SDNC_MOUNT_PATH} 200 - -- cgit 1.2.3-korg