From ad6e51f883d787c25e7717c9cb7761adada4e91f Mon Sep 17 00:00:00 2001 From: garciaale Date: Tue, 7 Jul 2020 17:41:24 -0400 Subject: [PATCH] Adds Robot test BASIC-08 for disabling port security Change-Id: Icf1b73a823de38935319e08d0046363e90b211e0 Signed-off-by: garciaale --- ...isable_port_security_network_level_data.py | 64 ++++++++++++ ...-disable_port_security_network_level.robot | 99 +++++++++++++++++++ 2 files changed, 163 insertions(+) create mode 100644 robot-systest/resources/basic_08-disable_port_security_network_level_data.py create mode 100644 robot-systest/testsuite/basic_08-disable_port_security_network_level.robot diff --git a/robot-systest/resources/basic_08-disable_port_security_network_level_data.py b/robot-systest/resources/basic_08-disable_port_security_network_level_data.py new file mode 100644 index 0000000..1522e03 --- /dev/null +++ b/robot-systest/resources/basic_08-disable_port_security_network_level_data.py @@ -0,0 +1,64 @@ +# 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. + +import os +import yaml +from pathlib import Path + +# Prometheus host and port +if os.environ.get("PROMETHEUS_HOSTNAME", False): + prometheus_host = os.environ.get("PROMETHEUS_HOSTNAME") + prometheus_port = "9090" +else: + prometheus_host = os.environ.get("OSM_HOSTNAME") + prometheus_port = "9091" + +# VIM Configuration +vim_account_type = "openstack" +vim_name = "basic_08_vim_test" +# Get credentials from Openstack clouds file +os_cloud = os.environ.get("OS_CLOUD") +clouds_file_paths = ["./clouds.yaml", str(Path.home()) + "/.config/openstack/clouds.yaml", "/etc/openstack/clouds.yaml"] +for path in clouds_file_paths: + clouds_file_path = Path(path) + if clouds_file_path.exists(): break +if not clouds_file_path.exists(): raise Exception("Openstack clouds file not found") +with clouds_file_path.open() as clouds_file: + clouds = yaml.safe_load(clouds_file) + if not os_cloud in clouds["clouds"]: raise Exception("Openstack cloud '" + os_cloud + "' not found") + cloud = clouds["clouds"][os_cloud] + if not "username" in cloud["auth"]: raise Exception("Username not found in Openstack cloud '" + os_cloud + "'") + vim_user = cloud["auth"]["username"] + if not "password" in cloud["auth"]: raise Exception("Password not found in Openstack cloud '" + os_cloud + "'") + vim_password = cloud["auth"]["password"] + if not "auth_url" in cloud["auth"]: raise Exception("Auth url not found in Openstack cloud '" + os_cloud + "'") + vim_auth_url = cloud["auth"]["auth_url"] + if not "project_name" in cloud["auth"]: raise Exception("Project name not found in Openstack cloud '" + os_cloud + "'") + vim_tenant = cloud["auth"]["project_name"] + vim_user_domain_name = cloud["auth"]["user_domain_name"] if "user_domain_name" in cloud["auth"] else "Default" + vim_project_domain_name = cloud["auth"]["project_domain_name"] if "project_domain_name" in cloud["auth"] else "Default" +# Extra VIM config +vim_config = "'{project_domain_name: " + vim_project_domain_name + ", user_domain_name: " + vim_user_domain_name + ", vim_network_name: " + os.environ.get("VIM_MGMT_NET") + ", disable_network_port_security: True}'" + +# Get ${HOME} from local machine +home = str(Path.home()) +# NS and VNF descriptor package folder +vnfd_pkg = 'hackfest_multivdu_vnf' +nsd_pkg = 'hackfest_multivdu_ns' +# NS and VNF descriptor id +vnfd_name = 'hackfest_multivdu-vnf' +nsd_name = 'hackfest_multivdu-ns' +# NS instance name +ns_name = 'basic_08_disable_port_security_network_level_test' +# SSH keys to be used +publickey = home + '/.ssh/id_rsa.pub' +privatekey = home + '/.ssh/id_rsa' diff --git a/robot-systest/testsuite/basic_08-disable_port_security_network_level.robot b/robot-systest/testsuite/basic_08-disable_port_security_network_level.robot new file mode 100644 index 0000000..644f1c9 --- /dev/null +++ b/robot-systest/testsuite/basic_08-disable_port_security_network_level.robot @@ -0,0 +1,99 @@ +# 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. + +*** Settings *** +Documentation [BASIC-08] Disable port security at network level. + +Library OperatingSystem +Library String +Library Collections + +Resource %{ROBOT_DEVOPS_FOLDER}/lib/vim_lib.robot +Resource %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot +Resource %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot +Resource %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot +Resource %{ROBOT_DEVOPS_FOLDER}/lib/prometheus_lib.robot + +Variables %{ROBOT_DEVOPS_FOLDER}/resources/basic_08-disable_port_security_network_level_data.py + +Suite Teardown Run Keyword And Ignore Error Test Cleanup + + +*** Variables *** +${ns_config} {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] } +${port_disabled_msg} port_security_enabled: false + +*** Test Cases *** +Create VIM With Port Security Disabled + [Tags] disable_port_security sanity regression + + ${created_vim_account_id}= Create VIM Target ${vim_name} ${vim_user} ${vim_password} ${vim_auth_url} ${vim_tenant} ${vim_account_type} config=${vim_config} + Check for VIM Target Status ${vim_name} ${prometheus_host} ${prometheus_port} + +Create VNF Descriptor + [Tags] disable_port_security sanity regression + + Create VNFD '%{PACKAGES_FOLDER}/${vnfd_pkg}' + + +Create NS Descriptor + [Tags] disable_port_security sanity regression + + Create NSD '%{PACKAGES_FOLDER}/${nsd_pkg}' + + +Instantiate Network Service + [Tags] disable_port_security sanity regression + + ${id}= Create Network Service ${nsd_name} ${vim_name} ${ns_name} ${ns_config} ${publickey} + Set Suite Variable ${ns_id} ${id} + + +Check Port Security Is Disabled + [Tags] disable_port_security sanity regression + + ${rc} ${disabled_ports}= Run and Return RC and Output osm ns-show ${ns_name} | grep -c '${port_disabled_msg}' + Run Keyword Unless ${disabled_ports} > 6 Fail msg=Found only '${disabled_ports}' matches for '${port_disabled_msg}' + + +Delete NS Instance + [Tags] disable_port_security sanity regression cleanup + + Delete NS ${ns_name} + + +Delete NS Descriptor + [Tags] disable_port_security sanity regression cleanup + + Delete NSD ${nsd_name} + + +Delete VNF Descriptor + [Tags] disable_port_security sanity regression cleanup + + Delete VNFD ${vnfd_name} + + +Delete VIM + [Tags] disable_port_security sanity regression cleanup + + Delete VIM Target ${vim_name} + + +*** Keywords *** +Test Cleanup + [Documentation] Test Suite Cleanup: Deleting descriptors and NS instance + + Run Keyword If Test Failed Delete NS ${ns_name} + Run Keyword If Test Failed Delete NSD ${nsd_name} + Run Keyword If Test Failed Delete VNFD ${vnfd_name} + Run Keyword If Test Failed Delete VIM Target ${vim_name} -- 2.17.1