Revert "Feature 11001: Robot framework linting for E2E tests" 16/14116/1
authorgarciadeblas <gerardo.garciadeblas@telefonica.com>
Mon, 11 Dec 2023 15:26:40 +0000 (16:26 +0100)
committergarciadeblas <gerardo.garciadeblas@telefonica.com>
Mon, 11 Dec 2023 15:28:39 +0000 (16:28 +0100)
This reverts commit 5e001f506b744021d5ef25999c9da28cf56d8fbc.

Change-Id: I37e214089048810454eee0e1e2fcea54632f8b3f
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
111 files changed:
devops-stages/stage-test.sh
robot-systest/lib/connectivity_lib.resource [deleted file]
robot-systest/lib/connectivity_lib.robot [new file with mode: 0644]
robot-systest/lib/juju_lib.resource [deleted file]
robot-systest/lib/juju_lib.robot [new file with mode: 0644]
robot-systest/lib/k8scluster_lib.resource [deleted file]
robot-systest/lib/k8scluster_lib.robot [new file with mode: 0644]
robot-systest/lib/ns_lib.resource [deleted file]
robot-systest/lib/ns_lib.robot [new file with mode: 0644]
robot-systest/lib/ns_operation_lib.resource [deleted file]
robot-systest/lib/nsd_lib.resource [deleted file]
robot-systest/lib/nsd_lib.robot [new file with mode: 0644]
robot-systest/lib/nsi_lib.resource [deleted file]
robot-systest/lib/nsi_lib.robot [new file with mode: 0644]
robot-systest/lib/nst_lib.resource [deleted file]
robot-systest/lib/nst_lib.robot [new file with mode: 0644]
robot-systest/lib/openstack_lib.resource [deleted file]
robot-systest/lib/openstack_lib.robot [new file with mode: 0644]
robot-systest/lib/package_lib.resource [deleted file]
robot-systest/lib/package_lib.robot [new file with mode: 0644]
robot-systest/lib/project_lib.resource [deleted file]
robot-systest/lib/project_lib.robot [new file with mode: 0644]
robot-systest/lib/prometheus_lib.resource [deleted file]
robot-systest/lib/prometheus_lib.robot [new file with mode: 0644]
robot-systest/lib/repo_lib.resource [deleted file]
robot-systest/lib/repo_lib.robot [new file with mode: 0644]
robot-systest/lib/rest_lib.resource [deleted file]
robot-systest/lib/rest_lib.robot [new file with mode: 0644]
robot-systest/lib/role_lib.resource [deleted file]
robot-systest/lib/role_lib.robot [new file with mode: 0644]
robot-systest/lib/sdnc_lib.resource [deleted file]
robot-systest/lib/sdnc_lib.robot [new file with mode: 0644]
robot-systest/lib/ssh_lib.resource [deleted file]
robot-systest/lib/ssh_lib.robot [new file with mode: 0644]
robot-systest/lib/user_lib.resource [deleted file]
robot-systest/lib/user_lib.robot [new file with mode: 0644]
robot-systest/lib/vim_lib.resource [deleted file]
robot-systest/lib/vim_lib.robot [new file with mode: 0644]
robot-systest/lib/vnf_lib.resource [deleted file]
robot-systest/lib/vnf_lib.robot [new file with mode: 0644]
robot-systest/lib/vnfd_lib.resource [deleted file]
robot-systest/lib/vnfd_lib.robot [new file with mode: 0644]
robot-systest/resources/basic_01-crud_operations_on_vim_targets_data.py
robot-systest/resources/basic_08-disable_port_security_network_level_data.py
robot-systest/resources/basic_32-volume_with_different_az.py
robot-systest/run_test.sh
robot-systest/testsuite/basic_01-crud_operations_on_vim_targets.robot
robot-systest/testsuite/basic_05-instantiation_parameters_in_cloud_init.robot
robot-systest/testsuite/basic_06-vnf_with_charm.robot
robot-systest/testsuite/basic_07-secure_key_management.robot
robot-systest/testsuite/basic_08-disable_port_security_network_level.robot
robot-systest/testsuite/basic_09-manual_vdu_scaling.robot
robot-systest/testsuite/basic_11-native_charms.robot
robot-systest/testsuite/basic_12-ns_primitives.robot
robot-systest/testsuite/basic_13-ns_relations.robot
robot-systest/testsuite/basic_14-vnf_relations.robot
robot-systest/testsuite/basic_15-rbac_configurations.robot
robot-systest/testsuite/basic_16-advanced_onboarding_and_scaling.robot
robot-systest/testsuite/basic_17-delete_vnf_package.robot
robot-systest/testsuite/basic_18-ns_ip_profile.robot
robot-systest/testsuite/basic_19-vnf_ip_profile.robot
robot-systest/testsuite/basic_20-manual_native_charm_vdu_scaling.robot
robot-systest/testsuite/basic_21-support_of_volumes.robot
robot-systest/testsuite/basic_22-cross_model_relations.robot
robot-systest/testsuite/basic_23-sol004_sol007_packages.robot
robot-systest/testsuite/basic_24-affinity_groups.robot
robot-systest/testsuite/basic_25-update_charm_in_running_vnf_instance.robot
robot-systest/testsuite/basic_26-secure_helm_execution_environment.robot
robot-systest/testsuite/basic_27-update_helm_ee_in_running_vnf_instance.robot
robot-systest/testsuite/basic_28-keep_persistent_volumes.robot
robot-systest/testsuite/basic_29-vnf_ipv6_profile.robot
robot-systest/testsuite/basic_30-ns_ipv6_profile.robot
robot-systest/testsuite/basic_31-multivdu_volume_multiattach.robot
robot-systest/testsuite/basic_32-volume_with_different_az.robot
robot-systest/testsuite/epa_01-epa_sriov.robot
robot-systest/testsuite/epa_02-additional_capabilities.robot
robot-systest/testsuite/epa_03-crud_operations_on_sdnc.robot
robot-systest/testsuite/epa_04-epa_underlay_sriov.robot
robot-systest/testsuite/epa_05-epa_underlay_passthrough.robot
robot-systest/testsuite/fail_01-insufficient_resources.robot
robot-systest/testsuite/hackfest_basic.robot
robot-systest/testsuite/hackfest_cloudinit.robot
robot-systest/testsuite/hackfest_multivdu.robot
robot-systest/testsuite/heal_01-volume_vdu_healing.robot
robot-systest/testsuite/heal_02-scale_vdu_healing.robot
robot-systest/testsuite/heal_03-multiple_healing.robot
robot-systest/testsuite/heal_04-autohealing.robot
robot-systest/testsuite/k8s_01-create_k8s_cluster.robot
robot-systest/testsuite/k8s_02-k8scluster_creation.robot
robot-systest/testsuite/k8s_03-simple_k8s.robot
robot-systest/testsuite/k8s_04-openldap_helm.robot
robot-systest/testsuite/k8s_05-k8s_proxy_charms.robot
robot-systest/testsuite/k8s_06-k8s_secure_key_management.robot
robot-systest/testsuite/k8s_07-dummy_helm.robot
robot-systest/testsuite/k8s_08-simple_k8s_scaling.robot
robot-systest/testsuite/k8s_09-pebble_charm_k8s.robot
robot-systest/testsuite/k8s_10-sol004_sol007_with_k8s_proxy_charms.robot
robot-systest/testsuite/k8s_11-simple_helm_k8s_scaling.robot
robot-systest/testsuite/k8s_12-openldap_helm_day-2.robot
robot-systest/testsuite/k8s_13-two_helm_kdu.robot
robot-systest/testsuite/lcmop_01-cancel_operation_basic.robot
robot-systest/testsuite/quotas_01-quota_enforcement.robot
robot-systest/testsuite/sa_01-vnf_with_vim_metrics.robot
robot-systest/testsuite/sa_02-vnf_with_vim_metrics_and_autoscaling.robot
robot-systest/testsuite/sa_07-alarms_from_sa-related_vnfs.robot
robot-systest/testsuite/sa_08-vnf_with_vnf_indicators_snmp.robot
robot-systest/testsuite/slice_01-network_slicing.robot
robot-systest/testsuite/slice_02-shared_network_slicing.robot
robot-systest/testsuite/sol003_01-vnf-lifecycle-management.robot
robot-systest/testsuite/sol003_02-dualstack_ip_vnfm.robot
tox.ini

index 4be5aaa..335f9de 100755 (executable)
@@ -12,6 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+# python3 -m rflint testsuites
+
 check_tabs () {
     folder="$1"
     tabs="y"
diff --git a/robot-systest/lib/connectivity_lib.resource b/robot-systest/lib/connectivity_lib.resource
deleted file mode 100644 (file)
index e91aedd..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-*** Comments ***
-#   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   Library providing keywords for testing connectivity to hosts via ping.
-Library   OperatingSystem
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-${CONNECTIVITY_POL_TIME}   5sec
-${CONNECTIVITY_MAX_WAIT_TIME}   30sec
-
-
-*** Keywords ***
-Test Ping Host
-    [Documentation]   Run Ping
-    ...               Parameters:
-    ...                  host: IP or name of the host
-    ...               Execution example:
-    ...                  Ping Test   \${host}
-    [Arguments]   ${host}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   ping -c 2 -W 1 ${host}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Test Connectivity
-    [Documentation]   Ping a host several times during ${CONNECTIVITY_MAX_WAIT_TIME} until it succeeds or raises a timeout.
-    [Arguments]   ${host}
-    Wait Until Keyword Succeeds   ${CONNECTIVITY_MAX_WAIT_TIME}   ${CONNECTIVITY_POL_TIME}   Test Ping Host   ${host}
diff --git a/robot-systest/lib/connectivity_lib.robot b/robot-systest/lib/connectivity_lib.robot
new file mode 100644 (file)
index 0000000..79381e4
--- /dev/null
@@ -0,0 +1,35 @@
+#   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.
+
+*** Variables ***
+${success_return_code}   0
+${connectivity_pol_time}   5sec
+${connectivity_max_wait_time}   30sec
+
+*** Keywords ***
+Test Ping Host
+    [Documentation]   Run Ping
+    ...               Parameters:
+    ...                  host: IP or name of the host
+    ...               Execution example:
+    ...                  Ping Test   \${host}
+
+    [Arguments]   ${host}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   ping -c 2 -W 1 ${host}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+Test Connectivity
+    [Arguments]   ${host}
+
+    WAIT UNTIL KEYWORD SUCCEEDS   ${connectivity_max_wait_time}   ${connectivity_pol_time}   Test Ping Host   ${host}
diff --git a/robot-systest/lib/juju_lib.resource b/robot-systest/lib/juju_lib.resource
deleted file mode 100644 (file)
index 3d02901..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-*** Comments ***
-#   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   Library providing keywords to read objects from Juju using juju client.
-Library   String
-Resource   ssh_lib.resource
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-
-
-*** Keywords ***
-Get Scale Number
-    [Documentation]   Get from Juju the number of units (scale) of a juju application and return it.
-    [Arguments]   ${endpoint}   ${username}   ${password}   ${privatekey}   ${application_name}   ${model_name}
-    Should Not Be Empty   ${application_name}   ${model_name}
-    ${host}=   Remove String Using Regexp   ${endpoint}   :([0-9]+)$
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${host}   ${username}   ${password}   ${privatekey}   juju show-status ${application_name} --format yaml -m ${model_name} | grep scale | awk -F ': ' '{print $2}'
-    Log   ${stdout}
-    RETURN   ${stdout}
-
-Get Model Name
-    [Documentation]   Get from Juju the model from a KDU name and a NS id.
-    [Arguments]   ${endpoint}   ${username}   ${password}   ${privatekey}   ${ns_id}   ${kdu_name}
-    Should Not Be Empty   ${ns_id}   ${kdu_name}
-    ${host}=   Remove String Using Regexp   ${endpoint}   :([0-9]+)$
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${host}   ${username}   ${password}   ${privatekey}   juju models | grep -i ${kdu_name} | grep -i ${ns_id} | cut -f1 -d " "
-    Log   ${stdout}
-    ${model_name}=   Set Variable   ${kdu_name}-${ns_id}
-    Should Be Equal As Strings   ${model_name}   ${stdout}
-    RETURN   ${stdout}
-
-Get Application Name VDU Level Charm
-    [Documentation]   Get from Juju the application name matching a model and a VDU profile id passed as arguments. The application name must contain the EE passed as argument.
-    [Arguments]   ${endpoint}   ${username}   ${password}   ${privatekey}   ${model_name}   ${vdu_profile_id}   ${ee_name}
-    Should Not Be Empty   ${model_name}
-    ${host}=   Remove String Using Regexp   ${endpoint}   :([0-9]+)$
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${host}   ${username}   ${password}   ${privatekey}   juju status -m ${model_name} | grep "\\-vdu" | grep -v "*" | grep -i ${vdu_profile_id} | cut -f1 -d " "
-    Log   ${stdout}
-    Should Not Be Empty   ${stdout}
-    Should Contain   ${stdout}   ${ee_name}
-    RETURN   ${stdout}
-
-Get Application Name NS Level Charm
-    [Documentation]   Get from Juju the application name matching a model and a NS charm passed as arguments.
-    [Arguments]   ${endpoint}   ${username}   ${password}   ${privatekey}   ${model_name}   ${charm_name}
-    Should Not Be Empty   ${model_name}
-    ${host}=   Remove String Using Regexp   ${endpoint}   :([0-9]+)$
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${host}   ${username}   ${password}   ${privatekey}   juju status -m ${model_name} | grep "\\-ns" | grep -v "*" | grep -i ${charm_name} | cut -f1 -d " "
-    Log   ${stdout}
-    Should Not Be Empty   ${stdout}
-    RETURN   ${stdout}
-
-Get Application Name VNF Level Charm
-    [Documentation]   Get from Juju the application name matching a model and a VNF profile id passed as arguments. The application name must contain the EE passed as argument.
-    [Arguments]   ${endpoint}   ${username}   ${password}   ${privatekey}   ${model_name}   ${vnf_profile_id}   ${ee_name}
-    Should Not Be Empty   ${model_name}
-    ${host}=   Remove String Using Regexp   ${endpoint}   :([0-9]+)$
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${host}   ${username}   ${password}   ${privatekey}   juju status -m ${model_name} | grep "\\-vnf" | grep -v "*" | grep -i ${vnf_profile_id} | cut -f1 -d " "
-    Log   ${stdout}
-    Should Not Be Empty   ${stdout}
-    Should Contain   ${stdout}   ${ee_name}
-    RETURN   ${stdout}
diff --git a/robot-systest/lib/juju_lib.robot b/robot-systest/lib/juju_lib.robot
new file mode 100644 (file)
index 0000000..45208a8
--- /dev/null
@@ -0,0 +1,68 @@
+#   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.
+
+*** Variables ***
+${success_return_code}   0
+
+
+*** Keywords ***
+Get Scale Number
+    [Arguments]   ${endpoint}   ${username}   ${password}   ${privatekey}   ${application_name}   ${model_name}
+
+    Should Not Be Empty   ${application_name}   ${model_name}
+    ${host}=   Remove String Using Regexp   ${endpoint}   :([0-9]+)$
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${host}   ${username}   ${password}   ${privatekey}   juju show-status ${application_name} --format yaml -m ${model_name} | grep scale | awk -F ': ' '{print $2}'
+    Log   ${stdout}
+    [Return]   ${stdout}
+
+Get Model Name
+    [Arguments]   ${endpoint}   ${username}   ${password}   ${privatekey}   ${ns_id}   ${kdu_name}
+
+    Should Not Be Empty   ${ns_id}   ${kdu_name}
+    ${host}=   Remove String Using Regexp   ${endpoint}   :([0-9]+)$
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${host}   ${username}   ${password}   ${privatekey}   juju models | grep -i ${kdu_name} | grep -i ${ns_id} | cut -f1 -d " "
+    Log   ${stdout}
+    ${model_name}=   Set Variable   ${kdu_name}-${ns_id}
+    Should Be Equal As Strings   ${model_name}   ${stdout}
+    [Return]   ${stdout}
+
+Get Application Name VDU Level Charm
+    [Arguments]   ${endpoint}   ${username}   ${password}   ${privatekey}   ${model_name}   ${vdu_profile_id}   ${ee_name}
+
+    Should Not Be Empty   ${model_name}
+    ${host}=   Remove String Using Regexp   ${endpoint}   :([0-9]+)$
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${host}   ${username}   ${password}   ${privatekey}   juju status -m ${model_name} | grep "\\-vdu" | grep -v "*" | grep -i ${vdu_profile_id} | cut -f1 -d " "
+    Log   ${stdout}
+    Should Not Be Empty   ${stdout}
+    Should Contain   ${stdout}   ${ee_name}
+    [Return]   ${stdout}
+
+Get Application Name NS Level Charm
+    [Arguments]   ${endpoint}   ${username}   ${password}   ${privatekey}   ${model_name}   ${charm_name}
+
+    Should Not Be Empty   ${model_name}
+    ${host}=   Remove String Using Regexp   ${endpoint}   :([0-9]+)$
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${host}   ${username}   ${password}   ${privatekey}   juju status -m ${model_name} | grep "\\-ns" | grep -v "*" | grep -i ${charm_name} | cut -f1 -d " "
+    Log   ${stdout}
+    Should Not Be Empty   ${stdout}
+    [Return]   ${stdout}
+
+Get Application Name VNF Level Charm
+    [Arguments]   ${endpoint}   ${username}   ${password}   ${privatekey}   ${model_name}   ${vnf_profile_id}   ${ee_name}
+
+    Should Not Be Empty   ${model_name}
+    ${host}=   Remove String Using Regexp   ${endpoint}   :([0-9]+)$
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${host}   ${username}   ${password}   ${privatekey}   juju status -m ${model_name} | grep "\\-vnf" | grep -v "*" | grep -i ${vnf_profile_id} | cut -f1 -d " "
+    Log   ${stdout}
+    Should Not Be Empty   ${stdout}
+    Should Contain   ${stdout}   ${ee_name}
+    [Return]   ${stdout}
\ No newline at end of file
diff --git a/robot-systest/lib/k8scluster_lib.resource b/robot-systest/lib/k8scluster_lib.resource
deleted file mode 100644 (file)
index 0895da7..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-*** Comments ***
-# Copyright 2020 Canonical Ltd.
-#
-#   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   Library providing keywords for CRUD operations over Kubernetes clusters with OSM client.
-Library   OperatingSystem
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-${K8SCLUSTER_LAUNCH_MAX_WAIT_TIME}   6min
-${K8SCLUSTER_LAUNCH_POL_TIME}   30sec
-${K8SCLUSTER_DELETE_MAX_WAIT_TIME}   2min
-${K8SCLUSTER_DELETE_POL_TIME}   15sec
-
-
-*** Keywords ***
-Create K8s Cluster
-    [Documentation]   Register a Kubernetes cluster in OSM using the name, version and credentials passed as arguments.
-    [Arguments]   ${k8scluster_creds}   ${k8scluster_version}   ${k8scluster_vim}   ${k8scluster_net}   ${k8scluster_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm k8scluster-add --creds ${k8scluster_creds} --version ${k8scluster_version} --vim ${k8scluster_vim} --k8s-nets '{"net1": "${k8scluster_net}"}' ${k8scluster_name} --description "Robot cluster"
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Wait Until Keyword Succeeds   ${K8SCLUSTER_LAUNCH_MAX_WAIT_TIME}   ${K8SCLUSTER_LAUNCH_POL_TIME}   Check For K8s Cluster To Be Ready   ${k8scluster_name}
-    Check For K8s Cluster To Be Enabled   ${k8scluster_name}
-    RETURN   ${stdout}
-
-Delete K8s Cluster
-    [Documentation]   Unregister/delete a Kubernetes cluster from OSM.
-    [Arguments]   ${k8scluster_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm k8scluster-delete ${k8scluster_name}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Wait Until Keyword Succeeds   ${K8SCLUSTER_DELETE_MAX_WAIT_TIME}   ${K8SCLUSTER_DELETE_POL_TIME}   Check For K8s Cluster To Be Deleted   ${k8scluster_name}
-
-Get K8s Cluster
-    [Documentation]   Get the list of Kubernetes clusters in OSM, and return it.
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm k8scluster-list
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Log   ${stdout}
-    RETURN   ${stdout}
-
-Check For K8s Cluster
-    [Documentation]   Check if a Kubernetes cluster identified by name exists in OSM, and return it.
-    [Arguments]   ${k8scluster_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm k8scluster-list --filter name="${k8scluster_name}"
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Check For K8s Cluster To Be Deleted
-    [Documentation]   Check if a Kubernetes cluster identified by name is not present in OSM.
-    [Arguments]   ${k8scluster_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm k8scluster-list --filter name="${k8scluster_name}" | awk '{print $2}' | grep ${k8scluster_name}
-    Log   ${rc},${stdout}
-    Should Be Empty   ${stdout}
-
-Check For K8s Cluster To Be Ready
-    [Documentation]   Check if a Kubernetes cluster registered in OSM is ready (the state must be ENABLED or DEGRADED).
-    [Arguments]   ${k8scluster_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm k8scluster-list --filter name="${k8scluster_name}" --filter _admin.operationalState="ENABLED,DEGRADED"
-    Log   ${rc},${stdout}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   echo "${stdout}" | awk '{print $2}' | grep ${k8scluster_name}
-    Log   ${rc},${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Be Equal As Strings   ${stdout}   ${k8scluster_name}
-
-Check For K8s Cluster To Be Enabled
-    [Documentation]   Check if the state of Kubernetes cluster registered in OSM is ENABLED.
-    [Arguments]   ${k8scluster_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm k8scluster-show ${k8scluster_name}
-    Log   ${rc},${stdout}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm k8scluster-list --filter name="${k8scluster_name}" --filter _admin.operationalState="ENABLED"
-    Log   ${rc},${stdout}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   echo "${stdout}" | awk '{print $2}' | grep ${k8scluster_name}
-    Log   ${rc},${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Be Equal As Strings   ${stdout}   ${k8scluster_name}
diff --git a/robot-systest/lib/k8scluster_lib.robot b/robot-systest/lib/k8scluster_lib.robot
new file mode 100644 (file)
index 0000000..8f642a3
--- /dev/null
@@ -0,0 +1,71 @@
+# Copyright 2020 Canonical Ltd.
+#
+#   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.
+
+*** Variables ***
+${success_return_code}   0
+${k8scluster_launch_max_wait_time}   6min
+${k8scluster_launch_pol_time}   30sec
+${k8scluster_delete_max_wait_time}   2min
+${k8scluster_delete_pol_time}   15sec
+
+*** Keywords ***
+Create K8s Cluster
+    [Arguments]   ${k8scluster_creds}   ${k8scluster_version}   ${k8scluster_vim}   ${k8scluster_net}   ${k8scluster_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm k8scluster-add --creds ${k8scluster_creds} --version ${k8scluster_version} --vim ${k8scluster_vim} --k8s-nets '{"net1": "${k8scluster_net}"}' ${k8scluster_name} --description "Robot cluster"
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    WAIT UNTIL KEYWORD SUCCEEDS   ${k8scluster_launch_max_wait_time}   ${k8scluster_launch_pol_time}   Check For K8s Cluster To Be Ready   ${k8scluster_name}
+    Check For K8s Cluster To Be Enabled   ${k8scluster_name}
+    [Return]   ${stdout}
+
+Delete K8s Cluster
+    [Arguments]   ${k8scluster_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm k8scluster-delete ${k8scluster_name}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    WAIT UNTIL KEYWORD SUCCEEDS   ${k8scluster_delete_max_wait_time}   ${k8scluster_delete_pol_time}   Check For K8s Cluster To Be Deleted   ${k8scluster_name}
+
+Get K8s Cluster
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm k8scluster-list
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Log   ${stdout}
+    [Return]   ${stdout}
+
+Check for K8s Cluster
+    [Arguments]   ${k8scluster_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm k8scluster-list --filter name="${k8scluster_name}"
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+Check For K8s Cluster To Be Deleted
+    [Arguments]   ${k8scluster_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm k8scluster-list --filter name="${k8scluster_name}" | awk '{print $2}' | grep ${k8scluster_name}
+    Should Be Empty   ${stdout}
+
+Check For K8s Cluster To Be Ready
+    [Arguments]   ${k8scluster_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm k8scluster-list --filter name="${k8scluster_name}" --filter _admin.operationalState="ENABLED,DEGRADED"
+    Log   ${stdout}
+    ${rc}   ${stdout}=   Run and Return RC and Output   echo "${stdout}" | awk '{print $2}' | grep ${k8scluster_name}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Be Equal As Strings   ${stdout}   ${k8scluster_name}
+
+Check For K8s Cluster To Be Enabled
+    [Arguments]   ${k8scluster_name}
+    ${rc2}   ${stdout2}=   Run and Return RC and Output   osm k8scluster-show ${k8scluster_name}
+    Log   ${stdout2}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm k8scluster-list --filter name="${k8scluster_name}" --filter _admin.operationalState="ENABLED"
+    Log   ${stdout}
+    ${rc}   ${stdout}=   Run and Return RC and Output   echo "${stdout}" | awk '{print $2}' | grep ${k8scluster_name}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Be Equal As Strings   ${stdout}   ${k8scluster_name}
diff --git a/robot-systest/lib/ns_lib.resource b/robot-systest/lib/ns_lib.resource
deleted file mode 100644 (file)
index 9d7276f..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-*** Comments ***
-#   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   Library to deploy and delete NS, and run operations on them.
-
-Library   Collections
-Library   DateTime
-Library   OperatingSystem
-Library   String
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-${NS_LAUNCH_POL_TIME}   30sec
-${NS_DELETE_POL_TIME}   15sec
-${VIM_TIMEOUT_MULTIPLIER}   %{OSM_VIM_MULTIPLIER_TIMEOUT=1.0}
-
-
-*** Keywords ***
-Create Network Service
-    [Documentation]   Launch the instantation of a NS and verify in a loop that the NS instance is successfully created in a given time, and return the NS instance id.
-    [Arguments]   ${nsd}   ${vim_name}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_launch_max_wait_time}=5min   ${config_file}=${EMPTY}
-    ${ns_launch_max_wait_time}=   Convert Time   ${ns_launch_max_wait_time}   result_format=number
-    ${ns_launch_max_wait_time}=   Evaluate   ${ns_launch_max_wait_time} * ${VIM_TIMEOUT_MULTIPLIER}
-    Log   ${ns_launch_max_wait_time}
-    ${config_attr}=   Set Variable If   "${ns_config}" != "${EMPTY}"   --config '${ns_config}'   ${EMPTY}
-    ${sshkeys_attr}=   Set Variable If   "${publickey}" != "${EMPTY}"   --ssh_keys ${publickey}   ${EMPTY}
-    ${config_file_attr}=   Set Variable If   "${config_file}" != "${EMPTY}"   --config_file '${config_file}'   ${EMPTY}
-    ${ns_id}=   Instantiate Network Service   ${ns_name}   ${nsd}   ${vim_name}   ${config_attr} ${sshkeys_attr} ${config_file_attr}
-    Log   ${ns_id}
-    Wait Until Keyword Succeeds   ${ns_launch_max_wait_time}   ${NS_LAUNCH_POL_TIME}   Check For NS Instance To Configured   ${ns_name}
-    Check For NS Instance For Failure   ${ns_name}
-    RETURN   ${ns_id}
-
-Instantiate Network Service
-    [Documentation]   Launch the instantation of a NS, and return the NS instance id.
-    [Arguments]   ${ns_name}   ${nsd}   ${vim_name}   ${ns_extra_args}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-create --ns_name ${ns_name} --nsd_name ${nsd} --vim_account ${vim_name} ${ns_extra_args}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Get Vnf Management Ip Address
-    [Documentation]   Get the mgmt IP address of a member VNF in a NS instance, and return it.
-    [Arguments]   ${ns_id}   ${vnf_member_index}
-    Should Not Be Empty   ${ns_id}
-    Should Not Be Empty   ${vnf_member_index}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnf-list --filter member-vnf-index-ref=${vnf_member_index} | grep ${ns_id} | awk '{print $14}' 2>&1
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Get Vnf Id
-    [Documentation]   Get the VNF instance ID of a member VNF in a NS instance, and return it.
-    [Arguments]   ${ns_id}   ${vnf_member_index}
-    Should Not Be Empty   ${ns_id}
-    Should Not Be Empty   ${vnf_member_index}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnf-list --filter member-vnf-index-ref=${vnf_member_index} | grep ${ns_id} | awk '{print $2}' 2>&1
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Get Ns Id
-    [Documentation]   Get the NS instance ID from a NS instance name passed as argument, and return it.
-    [Arguments]   ${ns_name}
-    Should Not Be Empty   ${ns_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-list | grep ${ns_name} | awk '{print $4}' 2>&1
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Not Be Empty   ${stdout}
-    RETURN   ${stdout}
-
-Get Ns List
-    [Documentation]   Get the list of NS instances and return it.
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-list 2>&1
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Get Ns Vnf List
-    [Documentation]   Get the list of VNF instances of a given NS instance id, and return it.
-    [Arguments]   ${ns_id}
-    Should Not Be Empty   ${ns_id}
-    @{vnf_list_string}=   Run And Return Rc And Output   osm vnf-list --ns ${ns_id} | grep ${ns_id} | awk '{print $2}' 2>&1
-    # Returns a String of vnf_id and needs to be converted into a list
-    @{vnf_list}=   Split String   ${vnf_list_string}[1]
-    Log List   ${vnf_list}
-    RETURN   @{vnf_list}
-
-Get Ns Ip List
-    [Documentation]   Obtain the list of IP addresses of all VM in a NS, and return it.
-    [Arguments]   @{vnf_list}
-    Should Not Be Empty   @{vnf_list}
-    @{temp_list}=   Create List
-    FOR   ${vnf_id}   IN   @{vnf_list}
-        Log   ${vnf_id}
-        @{vnf_ip_list}=   Get Vnf Ip List   ${vnf_id}
-        @{temp_list}=   Combine Lists   ${temp_list}   ${vnf_ip_list}
-    END
-    Should Not Be Empty   ${temp_list}
-    RETURN   @{temp_list}
-
-Get Vnf Ip List
-    [Documentation]   Obtain the list of IP addresses of all VM in a VNF, and return it.
-    [Arguments]   ${vnf_id}
-    Should Not Be Empty   ${vnf_id}
-    @{vnf_ip_list_string}=   Run And Return Rc And Output   osm vnf-list --filter id=${vnf_id} | grep -o '[0-9]\\{1,3\\}\\.[0-9]\\{1,3\\}\\.[0-9]\\{1,3\\}\\.[0-9]\\{1,3\\}' | sort -t: -u -k1,1 2>&1
-    # returns a string of ip addresses and needs to be converted into a list
-    Should Not Be Empty   ${vnf_ip_list_string}[1]
-    @{vnf_ip_list}=   Split String   ${vnf_ip_list_string}[1]
-    Log Many   ${vnf_ip_list}
-    Should Not Be Empty   ${vnf_ip_list}
-    RETURN   @{vnf_ip_list}
-
-Check For Ns Instance To Configured
-    [Documentation]   Check if a given NS instance has completed the instantiation, no matter if it succeeded (the status should be READY or BROKEN).
-    [Arguments]   ${ns_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack server list
-    Log   ${rc},${stdout}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-list --filter name="${ns_name}"
-    Log   ${rc},${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Contain Any   ${stdout}   READY   BROKEN
-
-Check For NS Instance For Failure
-    [Documentation]   Check if a given NS instance has not failed in the instantiation (the status should not be BROKEN).
-    [Arguments]   ${ns_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack server list
-    Log   ${rc},${stdout}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-list --filter name="${ns_name}"
-    Log   ${rc},${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Not Contain   ${stdout}   BROKEN
-
-Check For NS Instance To Be Deleted
-    [Documentation]   Check if a given NS instance is not present in OSM.
-    [Arguments]   ${ns}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack server list
-    Log   ${rc},${stdout}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-list | awk '{print $2}' | grep ${ns}
-    Log   ${rc},${stdout}
-    Should Not Be Equal As Strings   ${stdout}   ${ns}
-
-Delete NS
-    [Documentation]   Delete a NS instance.
-    [Arguments]   ${ns}   ${ns_delete_max_wait_time}=4min
-    ${ns_delete_max_wait_time}=   Convert Time   ${ns_delete_max_wait_time}   result_format=number
-    ${ns_delete_max_wait_time}=   Evaluate   ${ns_delete_max_wait_time} * ${VIM_TIMEOUT_MULTIPLIER}
-    Log   ${ns_delete_max_wait_time}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-delete ${ns}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Wait Until Keyword Succeeds   ${ns_delete_max_wait_time}   ${NS_DELETE_POL_TIME}   Check For NS Instance To Be Deleted   ${ns}
-
-Get Ns Vnfr Ids
-    [Documentation]   Return a list with the IDs of the VNF records of a NS instance.
-    [Arguments]   ${ns_id}
-    Should Not Be Empty   ${ns_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnf-list --ns ${ns_id} | grep ${ns_id} | awk '{print $2}' 2>&1
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    @{vdur}=   Split String   ${stdout}
-    RETURN   @{vdur}
-
-Get Vnf Vdur Names
-    [Documentation]   Return a list with the names of the VDU records of a VNF instance.
-    [Arguments]   ${vnf_id}
-    Should Not Be Empty   ${vnf_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnf-show ${vnf_id} --literal | yq -r .vdur[].name
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    @{vdur}=   Split String   ${stdout}
-    RETURN   @{vdur}
-
-Get Vnf Kdu Replica Count
-    [Documentation]   Return the number of KDU replicas (empty if none) of a VNF instance.
-    [Arguments]   ${vnf_id}   ${kdu_name}
-    Should Not Be Empty   ${vnf_id}
-    Should Not Be Empty   ${kdu_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnf-show ${vnf_id} --kdu ${kdu_name} | yq -r .config.replicaCount
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    ${return}=   Set Variable If   '${stdout}' == 'null'   ${EMPTY}   ${stdout}
-    RETURN   ${return}
-
-Get Application Names
-    [Documentation]   Return the list of the application of a VNF instance.
-    [Arguments]   ${ns_name}
-    Should Not Be Empty   ${ns_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-show ${ns_name} --literal | yq -r ._admin.deployed.VCA[].application
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    @{app_names}=   Split String   ${stdout}
-    RETURN   ${app_names}
-
-Get VDU Affinity Group Name
-    [Documentation]   Return the affinity group name for a NF
-    [Arguments]   ${ns_name}   ${vnf_id}   ${vdur_id}
-    ${rc}   ${affinity_group_id}=   Run And Return Rc And Output   osm vnf-show ${vnf_id} --literal | yq '.vdur[] | select(.id == "'${vdur_id}'")' | yq -r '."affinity-or-anti-affinity-group-id"[0]' 2>&1
-    Log   ${affinity_group_id}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${affinity_group_id}   values=False
-    ${rc}   ${affinity_group_name}=   Run And Return Rc And Output   osm ns-show ${ns_name} --literal | yq '."affinity-or-anti-affinity-group"[] | select(.id == "'${affinity_group_id}'")' | yq -r '.name' 2>&1
-    Log   ${affinity_group_name}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${affinity_group_name}   values=False
-    RETURN   ${affinity_group_name}
-
-GET Dual Ip
-    [Documentation]   Get dual ip from the ns list
-    [Arguments]   ${ns_id}
-    Should Not Be Empty   ${ns_id}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm ns-show ${ns_id} --literal | grep -A2 ip-address | awk '{print $2}' | paste -sd ',' | sed 's/^,//; s/,/, /g' | sed 's/^/[/; s/$/]/'
-    Log   ${rc},${stdout}
-    RETURN   ${stdout}
diff --git a/robot-systest/lib/ns_lib.robot b/robot-systest/lib/ns_lib.robot
new file mode 100644 (file)
index 0000000..c8da271
--- /dev/null
@@ -0,0 +1,427 @@
+#   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   Library to deploy and delete NS, and run operations on them.
+
+Library   DateTime
+
+
+*** Variables ***
+${success_return_code}   0
+${ns_launch_pol_time}   30sec
+${ns_delete_pol_time}   15sec
+${ns_action_max_wait_time}   1min
+${ns_action_pol_time}   15sec
+${vnf_scale_pol_time}   15sec
+${healing_pol_time}   15sec
+${vim_timeout_multiplier}   %{OSM_VIM_MULTIPLIER_TIMEOUT=1.0}
+
+
+*** Keywords ***
+Create Network Service
+    [Arguments]   ${nsd}   ${vim_name}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_launch_max_wait_time}=5min   ${config_file}=${EMPTY}
+
+    ${ns_launch_max_wait_time}=   Convert Time   ${ns_launch_max_wait_time}   result_format=number
+    ${ns_launch_max_wait_time}=   Evaluate   ${ns_launch_max_wait_time} * ${vim_timeout_multiplier}
+    Log   ${ns_launch_max_wait_time}
+    ${config_attr}   Set Variable If   '${ns_config}'!='${EMPTY}'   --config '${ns_config}'   \
+    ${sshkeys_attr}   Set Variable If   '${publickey}'!='${EMPTY}'   --ssh_keys ${publickey}   \
+    ${config_file_attr}   Set Variable If   '${config_file}'!='${EMPTY}'   --config_file '${config_file}'   \
+
+    ${ns_id}=   Instantiate Network Service   ${ns_name}   ${nsd}   ${vim_name}   ${config_attr} ${sshkeys_attr} ${config_file_attr}
+    Log   ${ns_id}
+
+    WAIT UNTIL KEYWORD SUCCEEDS   ${ns_launch_max_wait_time}   ${ns_launch_pol_time}   Check For NS Instance To Configured   ${ns_name}
+    Check For NS Instance For Failure   ${ns_name}
+    [Return]   ${ns_id}
+
+
+Instantiate Network Service
+    [Arguments]   ${ns_name}   ${nsd}   ${vim_name}   ${ns_extra_args}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-create --ns_name ${ns_name} --nsd_name ${nsd} --vim_account ${vim_name} ${ns_extra_args}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Update Network Service
+    [Arguments]   ${ns_id}   ${update_type}   ${ns_update_config}   ${ns_update_timeout}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-update ${ns_id} --updatetype ${update_type} --config ${ns_update_config} --timeout ${ns_update_timeout} --wait
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get Vnf Management Ip Address
+    [Arguments]   ${ns_id}   ${vnf_member_index}
+
+    Should Not Be Empty   ${ns_id}
+    Should Not Be Empty   ${vnf_member_index}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-list --filter member-vnf-index-ref=${vnf_member_index} | grep ${ns_id} | awk '{print $14}' 2>&1
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get Vnf Id
+    [Arguments]   ${ns_id}   ${vnf_member_index}
+
+    Should Not Be Empty   ${ns_id}
+    Should Not Be Empty   ${vnf_member_index}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-list --filter member-vnf-index-ref=${vnf_member_index} | grep ${ns_id} | awk '{print $2}' 2>&1
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get Ns Id
+    [Arguments]   ${ns_name}
+
+    Should Not Be Empty   ${ns_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-list | grep ${ns_name} | awk '{print $4}' 2>&1
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Not Be Empty   ${stdout}
+    [Return]   ${stdout}
+
+
+Get Ns List
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-list 2>&1
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get Ns Vnf List
+    [Arguments]   ${ns_id}
+
+    Should Not Be Empty   ${ns_id}
+    @{vnf_list_string}=   Run and Return RC and Output   osm vnf-list --ns ${ns_id} | grep ${ns_id} | awk '{print $2}' 2>&1
+    # Returns a String of vnf_id and needs to be converted into a list
+    @{vnf_list} =   Split String   ${vnf_list_string}[1]
+    Log List   ${vnf_list}
+    [Return]   @{vnf_list}
+
+
+Get Ns Ip List
+    [Arguments]   @{vnf_list}
+
+    should not be empty   @{vnf_list}
+    @{temp_list}=   Create List
+    FOR   ${vnf_id}   IN   @{vnf_list}
+        Log   ${vnf_id}
+        @{vnf_ip_list}   Get Vnf Ip List   ${vnf_id}
+        @{temp_list}=   Combine Lists   ${temp_list}   ${vnf_ip_list}
+    END
+    should not be empty   ${temp_list}
+    [return]   @{temp_list}
+
+
+Get Vnf Ip List
+    [arguments]   ${vnf_id}
+
+    should not be empty   ${vnf_id}
+    @{vnf_ip_list_string}=   run and return rc and output   osm vnf-list --filter id=${vnf_id} | grep -o '[0-9]\\{1,3\\}\\.[0-9]\\{1,3\\}\\.[0-9]\\{1,3\\}\\.[0-9]\\{1,3\\}' | sort -t: -u -k1,1 2>&1
+    # returns a string of ip addresses and needs to be converted into a list
+    should not be empty   ${vnf_ip_list_string}[1]
+    @{vnf_ip_list} =   split string   ${vnf_ip_list_string}[1]
+    Log Many   ${vnf_ip_list}
+    should not be empty   ${vnf_ip_list}
+    [return]   @{vnf_ip_list}
+
+
+Check For Ns Instance To Configured
+    [arguments]   ${ns_name}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server list
+    Log   ${stdout}
+    ${rc}   ${stdout}=   run and return rc and output   osm ns-list --filter name="${ns_name}"
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Contain Any   ${stdout}   READY   BROKEN
+
+Check For NS Instance For Failure
+    [Arguments]   ${ns_name}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server list
+    Log   ${stdout}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-list --filter name="${ns_name}"
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Not Contain   ${stdout}   BROKEN
+
+Check For NS Instance To Be Deleted
+    [Arguments]   ${ns}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server list
+    Log   ${stdout}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-list | awk '{print $2}' | grep ${ns}
+    Should Not Be Equal As Strings   ${stdout}   ${ns}
+
+Delete NS
+    [Documentation]   Delete ns
+    [Arguments]   ${ns}   ${ns_delete_max_wait_time}=4min
+
+    ${ns_delete_max_wait_time}=   Convert Time   ${ns_delete_max_wait_time}   result_format=number
+    ${ns_delete_max_wait_time}=   Evaluate   ${ns_delete_max_wait_time} * ${vim_timeout_multiplier}
+    Log   ${ns_delete_max_wait_time}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-delete ${ns}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+    WAIT UNTIL KEYWORD SUCCEEDS   ${ns_delete_max_wait_time}   ${ns_delete_pol_time}   Check For NS Instance To Be Deleted   ${ns}
+
+Execute NS Action
+    [Documentation]   Execute an action over the desired NS.
+    ...               Parameters are given to this function in key=value format (one argument per key/value pair).
+    ...               Return the ID of the operation associated to the executed action.
+    ...               Examples of execution:
+    ...                   \${ns_op_id}=   Execute NS Action   \${ns_name}   \${ns_action}   \${vnf_member_index}
+    ...                   \${ns_op_id}=   Execute NS Action   \${ns_name}   \${ns_action}   \${vnf_member_index}   \${param1}=\${value1}   \${param2}=\${value2}
+
+    [Arguments]   ${ns_name}   ${ns_action}   ${vnf_member_index}   @{action_params}
+
+    ${params}=   Set Variable   ${EMPTY}
+    FOR   ${param}   IN   @{action_params}
+        ${match}   ${param_name}   ${param_value} =   Should Match Regexp   ${param}   (.+)=(.+)   msg=Syntax error in parameters
+        ${params}=   Catenate   SEPARATOR=   ${params}   "${param_name}":"${param_value}",
+    END
+    ${osm_ns_action_command}=   Set Variable   osm ns-action --action_name ${ns_action} --vnf_name ${vnf_member_index}
+    ${osm_ns_action_command}=   Run Keyword If   '${params}'!='${EMPTY}'   Catenate   ${osm_ns_action_command}   --params '{${params}}'
+    ...   ELSE   Set Variable   ${osm_ns_action_command}
+    ${osm_ns_action_command}=   Catenate   ${osm_ns_action_command}   ${ns_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   ${osm_ns_action_command}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Wait Until Keyword Succeeds   ${ns_action_max_wait_time}   ${ns_action_pol_time}   Check For NS Operation Ended   ${stdout}
+    Check For NS Operation Completed   ${stdout}
+    [Return]   ${stdout}
+
+
+Execute NS K8s Action
+    [Documentation]   Execute an action over the desired K8s NS.
+    ...               Parameters are given to this function in key=value format (one argument per key/value pair).
+    ...               Return the ID of the operation associated to the executed action.
+    ...               Examples of execution:
+    ...                   \${ns_op_id}=   Execute NS Action   \${ns_name}   \${ns_action}   \${vnf_member_index}
+    ...                   \${ns_op_id}=   Execute NS Action   \${ns_name}   \${ns_action}   \${vnf_member_index}   \${param1}=\${value1}   \${param2}=\${value2}
+
+    [Arguments]   ${ns_name}   ${ns_action}   ${vnf_member_index}   ${kdu_name}   @{action_params}
+
+    ${params}=   Set Variable   ${EMPTY}
+    FOR   ${param}   IN   @{action_params}
+        ${match}   ${param_name}   ${param_value} =   Should Match Regexp   ${param}   (.+)=(.+)   msg=Syntax error in parameters
+        ${params}=   Catenate   SEPARATOR=   ${params}   "${param_name}":"${param_value}",
+    END
+    ${osm_ns_action_command}=   Set Variable   osm ns-action --action_name ${ns_action} --vnf_name ${vnf_member_index} --kdu_name ${kdu_name}
+    ${osm_ns_action_command}=   Run Keyword If   '${params}'!='${EMPTY}'   Catenate   ${osm_ns_action_command}   --params '{${params}}'
+    ...   ELSE   Set Variable   ${osm_ns_action_command}
+    ${osm_ns_action_command}=   Catenate   ${osm_ns_action_command}   ${ns_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   ${osm_ns_action_command}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Wait Until Keyword Succeeds   ${ns_action_max_wait_time}   ${ns_action_pol_time}   Check For NS Operation Ended   ${stdout}
+    Check For NS Operation Completed   ${stdout}
+    [Return]   ${stdout}
+
+
+Execute Manual VNF Scale
+    [Documentation]   Execute a manual VNF Scale action.
+    ...               The parameter 'scale_type' must be SCALE_IN or SCALE_OUT.
+    ...               Return the ID of the operation associated to the executed scale action.
+
+    [Arguments]   ${ns_name}   ${vnf_member_index}   ${scaling_group}   ${scale_type}   ${vnf_scale_max_wait_time}=2min
+
+    ${vnf_scale_max_wait_time}=   Convert Time   ${vnf_scale_max_wait_time}   result_format=number
+    ${vnf_scale_max_wait_time}=   Evaluate   ${vnf_scale_max_wait_time} * ${vim_timeout_multiplier}
+    Should Contain Any   ${scale_type}   SCALE_IN   SCALE_OUT   msg=Unknown scale type: ${scale_type}   values=False
+    ${osm_vnf_scale_command}=   Set Variable   osm vnf-scale --scaling-group ${scaling_group}
+    ${osm_vnf_scale_command}=   Run Keyword If   '${scale_type}'=='SCALE_IN'   Catenate   ${osm_vnf_scale_command}   --scale-in
+    ...   ELSE   Catenate   ${osm_vnf_scale_command}   --scale-out
+    ${osm_vnf_scale_command}=   Catenate   ${osm_vnf_scale_command}   ${ns_name}   ${vnf_member_index}
+    ${rc}   ${stdout}=   Run and Return RC and Output   ${osm_vnf_scale_command}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Wait Until Keyword Succeeds   ${vnf_scale_max_wait_time}   ${vnf_scale_pol_time}   Check For NS Operation Ended   ${stdout}
+    Check For NS Operation Completed   ${stdout}
+    [Return]   ${stdout}
+
+
+Heal Network Service
+    [Documentation]   Execute healing operation over one NS.
+    ...               Return the ID of the operation associated to the executed healing action.
+
+    [Arguments]   ${ns_name}   ${params}   ${healing_max_wait_time}=10m
+
+    Should Not Be Empty   ${ns_name}
+    Should Not Be Empty   ${params}
+    ${healing_max_wait_time}=   Convert Time   ${healing_max_wait_time}   result_format=number
+    ${healing_max_wait_time}=   Evaluate   ${healing_max_wait_time} * ${vim_timeout_multiplier}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-heal ${ns_name} ${params}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Wait Until Keyword Succeeds   ${healing_max_wait_time}   ${healing_pol_time}   Check For NS Operation Ended   ${stdout}
+    Check For NS Operation Completed   ${stdout}
+    [Return]   ${stdout}
+
+
+Get Operations List
+    [Arguments]   ${ns_name}
+
+    Should Not Be Empty   ${ns_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-op-list ${ns_name}
+    Log   ${stdout}
+    Log   ${rc}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Check For NS Operation Completed
+    [Documentation]   Check whether the status of the desired operation is "COMPLETED" or not.
+
+    [Arguments]   ${ns_operation_id}
+
+    Should Not Be Empty   ${ns_operation_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-op-show ${ns_operation_id} --literal | yq -r .operationState
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Contain   ${stdout}   COMPLETED   msg=The ns-action with id ${ns_operation_id} was not completed   values=False
+
+
+Check For NS Operation Failed
+    [Documentation]   Check whether the status of the desired operation is "FAILED" or not.
+
+    [Arguments]   ${ns_operation_id}
+
+    Should Not Be Empty   ${ns_operation_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-op-show ${ns_operation_id} --literal | yq -r .operationState
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Contain   ${stdout}   FAILED   msg=Timeout waiting for ns-action with id ${ns_operation_id}   values=False
+
+
+Check For NS Operation Ended
+    [Documentation]   Check whether the status of the desired operation is "FAILED" or "COMPLETED".
+
+    [Arguments]   ${ns_operation_id}
+
+    Should Not Be Empty   ${ns_operation_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-op-show ${ns_operation_id} --literal | yq -r .operationState
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Contain Any   ${stdout}   FAILED   COMPLETED   msg=Timeout waiting for ns-action with id ${ns_operation_id}   values=False
+
+
+Check For NS Operation Cancelled
+    [Documentation]   Check whether the operation was cancelled or not.
+
+    [Arguments]   ${ns_operation_id}
+
+    Should Not Be Empty   ${ns_operation_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-op-show ${ns_operation_id} --literal | yq -r '.operationState, .isCancelPending'
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Contain   ${stdout}   FAILED_TEMP\nfalse   msg=Timeout waiting for ns-action with id ${ns_operation_id}   values=False
+
+
+Get Ns Vnfr Ids
+    [Documentation]   Return a list with the IDs of the VNF records of a NS instance.
+
+    [Arguments]   ${ns_id}
+
+    Should Not Be Empty   ${ns_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-list --ns ${ns_id} | grep ${ns_id} | awk '{print $2}' 2>&1
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    @{vdur} =   Split String   ${stdout}
+    [Return]   @{vdur}
+
+
+Get Vnf Vdur Names
+    [Documentation]   Return a list with the names of the VDU records of a VNF instance.
+
+    [Arguments]   ${vnf_id}
+
+    Should Not Be Empty   ${vnf_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id} --literal | yq -r .vdur[].name
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    @{vdur} =   Split String   ${stdout}
+    [Return]   @{vdur}
+
+
+Get Vnf Kdu Replica Count
+    [Documentation]   Return the number of KDU replicas (empty if none) of a VNF instance.
+
+    [Arguments]   ${vnf_id}   ${kdu_name}
+
+    Should Not Be Empty   ${vnf_id}
+    Should Not Be Empty   ${kdu_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id} --kdu ${kdu_name} | yq -r .config.replicaCount
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    ${return} =   Set Variable If   '${stdout}' == 'null'   ${EMPTY}   ${stdout}
+    [Return]   ${return}
+
+
+Get Application Names
+    [Documentation]   Return the list of the application of a VNF instance.
+
+    [Arguments]   ${ns_name}
+
+    Should Not Be Empty   ${ns_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-show ${ns_name} --literal | yq -r ._admin.deployed.VCA[].application
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    @{app_names} =   Split String   ${stdout}
+    [Return]   ${app_names}
+
+
+Get VDU Affinity Group Name
+    [Documentation]   Return the affinity group name for a NF
+
+    [Arguments]   ${ns_name}   ${vnf_id}   ${vdur_id}
+
+    ${rc}   ${affinity_group_id}=   Run and Return RC and Output   osm vnf-show ${vnf_id} --literal | yq '.vdur[] | select(.id == "'${vdur_id}'")' | yq -r '."affinity-or-anti-affinity-group-id"[0]' 2>&1
+    Log   ${affinity_group_id}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${affinity_group_id}   values=False
+    ${rc}   ${affinity_group_name}=   Run and Return RC and Output   osm ns-show ${ns_name} --literal | yq '."affinity-or-anti-affinity-group"[] | select(.id == "'${affinity_group_id}'")' | yq -r '.name' 2>&1
+    Log   ${affinity_group_name}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${affinity_group_name}   values=False
+    [Return]   ${affinity_group_name}
+
+Get Operations By Type
+    [Documentation]   Keyword to get the operation by type
+
+    [Arguments]   ${ns_id}   ${type}
+
+    Should Not Be Empty   ${ns_id}
+    Should Not Be Empty   ${type}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-op-list ${ns_id} | grep ${type} | awk '{print $2}' 2>&1
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Not Be Empty   ${stdout}
+    [Return]   ${stdout}
+
+Cancel operation By Id
+    [Documentation]   Cancels an ongoing operation by operation ID
+
+    [Arguments]   ${op_id}   ${cancel_mode}=GRACEFUL
+
+    Should Not Be Empty   ${op_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-op-cancel ${op_id} --cancel_mode ${cancel_mode} --wait
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+GET Dual Ip
+    [Documentation]   Get dual ip from the ns list
+    [Arguments]   ${ns_id}
+    Should Not Be Empty   ${ns_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-show ${ns_id} --literal | grep -A2 ip-address | awk '{print $2}' | paste -sd ',' | sed 's/^,//; s/,/, /g' | sed 's/^/[/; s/$/]/'
+    Log   ${stdout}
+    [Return]   ${stdout}
+
diff --git a/robot-systest/lib/ns_operation_lib.resource b/robot-systest/lib/ns_operation_lib.resource
deleted file mode 100644 (file)
index 968fdd9..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-*** Comments ***
-#   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   Library to deploy and delete NS, and run operations on them.
-
-Library   Collections
-Library   DateTime
-Library   OperatingSystem
-Library   String
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-${NS_ACTION_MAX_WAIT_TIME}   1min
-${NS_ACTION_POL_TIME}   15sec
-${VNF_SCALE_POL_TIME}   15sec
-${HEALING_POL_TIME}   15sec
-${VIM_TIMEOUT_MULTIPLIER}   %{OSM_VIM_MULTIPLIER_TIMEOUT=1.0}
-
-
-*** Keywords ***
-Update Network Service
-    [Documentation]   Run an update operation over a NS instance, and return the operation id.
-    [Arguments]   ${ns_id}   ${update_type}   ${ns_update_config}   ${ns_update_timeout}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-update ${ns_id} --updatetype ${update_type} --config ${ns_update_config} --timeout ${ns_update_timeout} --wait
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Execute NS Action
-    [Documentation]   Execute an action over the desired NS.
-    ...               Parameters are given to this function in key=value format (one argument per key/value pair).
-    ...               Return the ID of the operation associated to the executed action.
-    ...               Examples of execution:
-    ...                   \${ns_op_id}=   Execute NS Action   \${ns_name}   \${ns_action}   \${vnf_member_index}
-    ...                   \${ns_op_id}=   Execute NS Action   \${ns_name}   \${ns_action}   \${vnf_member_index}   \${param1}=\${value1}   \${param2}=\${value2}
-
-    [Arguments]   ${ns_name}   ${ns_action}   ${vnf_member_index}   @{action_params}
-    ${params}=   Set Variable   ${EMPTY}
-    FOR   ${param}   IN   @{action_params}
-        ${match}   ${param_name}   ${param_value}=   Should Match Regexp   ${param}   (.+)=(.+)   msg=Syntax error in parameters
-        Log   ${match},${param_name},${param_value}
-        ${params}=   Catenate   SEPARATOR=   ${params}   "${param_name}":"${param_value}",
-    END
-    ${osm_ns_action_command}=   Set Variable   osm ns-action --action_name ${ns_action} --vnf_name ${vnf_member_index}
-    IF   '${params}' != '${EMPTY}'
-        ${osm_ns_action_command}=   Catenate   ${osm_ns_action_command}   --params '{${params}}'
-    ELSE
-        ${osm_ns_action_command}=   Set Variable   ${osm_ns_action_command}
-    END
-    ${osm_ns_action_command}=   Catenate   ${osm_ns_action_command}   ${ns_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   ${osm_ns_action_command}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Wait Until Keyword Succeeds   ${NS_ACTION_MAX_WAIT_TIME}   ${NS_ACTION_POL_TIME}   Check For NS Operation Ended   ${stdout}
-    Check For NS Operation Completed   ${stdout}
-    RETURN   ${stdout}
-
-Execute NS K8s Action
-    [Documentation]   Execute an action over the desired K8s NS.
-    ...               Parameters are given to this function in key=value format (one argument per key/value pair).
-    ...               Return the ID of the operation associated to the executed action.
-    ...               Examples of execution:
-    ...                   \${ns_op_id}=   Execute NS Action   \${ns_name}   \${ns_action}   \${vnf_member_index}
-    ...                   \${ns_op_id}=   Execute NS Action   \${ns_name}   \${ns_action}   \${vnf_member_index}   \${param1}=\${value1}   \${param2}=\${value2}
-
-    [Arguments]   ${ns_name}   ${ns_action}   ${vnf_member_index}   ${kdu_name}   @{action_params}
-
-    ${params}=   Set Variable   ${EMPTY}
-    FOR   ${param}   IN   @{action_params}
-        ${match}   ${param_name}   ${param_value}=   Should Match Regexp   ${param}   (.+)=(.+)   msg=Syntax error in parameters
-        Log   ${match},${param_name},${param_value}
-        ${params}=   Catenate   SEPARATOR=   ${params}   "${param_name}":"${param_value}",
-    END
-    ${osm_ns_action_command}=   Set Variable   osm ns-action --action_name ${ns_action} --vnf_name ${vnf_member_index} --kdu_name ${kdu_name}
-    IF   '${params}' != '${EMPTY}'
-        ${osm_ns_action_command}=   Catenate   ${osm_ns_action_command}   --params '{${params}}'
-    ELSE
-        ${osm_ns_action_command}=   Set Variable   ${osm_ns_action_command}
-    END
-    ${osm_ns_action_command}=   Catenate   ${osm_ns_action_command}   ${ns_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   ${osm_ns_action_command}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Wait Until Keyword Succeeds   ${NS_ACTION_MAX_WAIT_TIME}   ${NS_ACTION_POL_TIME}   Check For NS Operation Ended   ${stdout}
-    Check For NS Operation Completed   ${stdout}
-    RETURN   ${stdout}
-
-Execute Manual VNF Scale
-    [Documentation]   Execute a manual VNF Scale action.
-    ...               The parameter 'scale_type' must be SCALE_IN or SCALE_OUT.
-    ...               Return the ID of the operation associated to the executed scale action.
-    [Arguments]   ${ns_name}   ${vnf_member_index}   ${scaling_group}   ${scale_type}   ${vnf_scale_max_wait_time}=2min
-    ${vnf_scale_max_wait_time}=   Convert Time   ${vnf_scale_max_wait_time}   result_format=number
-    ${vnf_scale_max_wait_time}=   Evaluate   ${vnf_scale_max_wait_time} * ${VIM_TIMEOUT_MULTIPLIER}
-    Should Contain Any   ${scale_type}   SCALE_IN   SCALE_OUT   msg=Unknown scale type: ${scale_type}   values=False
-    ${osm_vnf_scale_command}=   Set Variable   osm vnf-scale --scaling-group ${scaling_group}
-    IF   ${scale_type}=='SCALE_IN'
-        ${osm_vnf_scale_command}=   Catenate   ${osm_vnf_scale_command}   --scale-in
-    ELSE
-        ${osm_vnf_scale_command}=   Catenate   ${osm_vnf_scale_command}   --scale-out
-    END
-    ${osm_vnf_scale_command}=   Catenate   ${osm_vnf_scale_command}   ${ns_name}   ${vnf_member_index}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   ${osm_vnf_scale_command}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Wait Until Keyword Succeeds   ${vnf_scale_max_wait_time}   ${VNF_SCALE_POL_TIME}   Check For NS Operation Ended   ${stdout}
-    Check For NS Operation Completed   ${stdout}
-    RETURN   ${stdout}
-
-Heal Network Service
-    [Documentation]   Execute healing operation over one NS.
-    ...               Return the ID of the operation associated to the executed healing action.
-    [Arguments]   ${ns_name}   ${params}   ${healing_max_wait_time}=10m
-    Should Not Be Empty   ${ns_name}
-    Should Not Be Empty   ${params}
-    ${healing_max_wait_time}=   Convert Time   ${healing_max_wait_time}   result_format=number
-    ${healing_max_wait_time}=   Evaluate   ${healing_max_wait_time} * ${VIM_TIMEOUT_MULTIPLIER}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-heal ${ns_name} ${params}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Wait Until Keyword Succeeds   ${healing_max_wait_time}   ${HEALING_POL_TIME}   Check For NS Operation Ended   ${stdout}
-    Check For NS Operation Completed   ${stdout}
-    RETURN   ${stdout}
-
-Get Operations List
-    [Documentation]   Get the list of operations of a given NS instance.
-    [Arguments]   ${ns_name}
-    Should Not Be Empty   ${ns_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-op-list ${ns_name}
-    Log   ${stdout}
-    Log   ${rc}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Check For NS Operation Completed
-    [Documentation]   Check wheter the status of the desired operation is "COMPLETED" or not.
-    [Arguments]   ${ns_operation_id}
-    Should Not Be Empty   ${ns_operation_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-op-show ${ns_operation_id} --literal | yq -r .operationState
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Contain   ${stdout}   COMPLETED   msg=The ns-action with id ${ns_operation_id} was not completed   values=False
-
-Check For NS Operation Failed
-    [Documentation]   Check wheter the status of the desired operation is "FAILED" or not.
-    [Arguments]   ${ns_operation_id}
-    Should Not Be Empty   ${ns_operation_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-op-show ${ns_operation_id} --literal | yq -r .operationState
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Contain   ${stdout}   FAILED   msg=Timeout waiting for ns-action with id ${ns_operation_id}   values=False
-
-Check For NS Operation Ended
-    [Documentation]   Check wheter the status of the desired operation is "FAILED" or "COMPLETED".
-    [Arguments]   ${ns_operation_id}
-    Should Not Be Empty   ${ns_operation_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-op-show ${ns_operation_id} --literal | yq -r .operationState
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Contain Any   ${stdout}   FAILED   COMPLETED   msg=Timeout waiting for ns-action with id ${ns_operation_id}   values=False
-
-Get Operations By Type
-    [Documentation]   Keyword to get the operation by type
-    [Arguments]   ${ns_id}   ${type}
-    Should Not Be Empty   ${ns_id}
-    Should Not Be Empty   ${type}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-op-list ${ns_id} | grep ${type} | awk '{print $2}' 2>&1
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Not Be Empty   ${stdout}
-    RETURN   ${stdout}
-
-Cancel Operation By Id
-    [Documentation]   Cancels an ongoing operation by operation ID
-    [Arguments]   ${op_id}   ${cancel_mode}=GRACEFUL
-
-    Should Not Be Empty   ${op_id}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm ns-op-cancel ${op_id} --cancel_mode ${cancel_mode} --wait
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${success_return_code}
-    RETURN   ${stdout}
diff --git a/robot-systest/lib/nsd_lib.resource b/robot-systest/lib/nsd_lib.resource
deleted file mode 100644 (file)
index 175322b..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-*** Comments ***
-# Copyright 2019 Tech Mahindra Limited
-#
-# 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. 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   Library providing keywords for CRUD operations over NSD/NSpkg with OSM client.
-
-Library   OperatingSystem
-Library   String
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-${NSD_DELETE_MAX_WAIT_TIME}   1min
-${NSD_DELETE_POL_TIME}   15sec
-
-
-*** Keywords ***
-Get NSDs List
-    [Documentation]   Get the list of NS packages and log it.
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm nspkg-list
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Create NSD
-    [Documentation]   Upload a NS package to OSM and return the id.
-    [Arguments]   ${nsd_pkg}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm nspkg-create ${nsd_pkg}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    ${lines}=   Get Line Count   ${stdout}
-    ${last}=   Evaluate   ${lines} - 1
-    ${id}=   Get Line   ${stdout}   ${last}
-    RETURN   ${id}
-
-Delete NSD
-    [Documentation]   Delete a NS package from OSM.
-    [Arguments]   ${nsd_id}
-    ${rc}   ${stdout}=   Run Keyword And Continue On Failure   Run And Return Rc And Output   osm nspkg-delete ${nsd_id}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Log   ${stdout}
-    Wait Until Keyword Succeeds   ${NSD_DELETE_MAX_WAIT_TIME}   ${NSD_DELETE_POL_TIME}   Check For NSD   ${nsd_id}
-
-Check For NSD
-    [Documentation]   Check that a NS package exists in OSM.
-    [Arguments]   ${nsd_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm nspkg-list | awk '{print $2}' | grep ${nsd_id}
-    Log   ${rc},${stdout}
-    Should Not Be Equal As Strings   ${stdout}   ${nsd_id}
diff --git a/robot-systest/lib/nsd_lib.robot b/robot-systest/lib/nsd_lib.robot
new file mode 100644 (file)
index 0000000..40132d7
--- /dev/null
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# 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. 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-sep-2019
+##
+
+*** Settings ***
+Library   String
+
+
+*** Variables ***
+${success_return_code}   0
+${delete_max_wait_time}   1min
+${delete_pol_time}   15sec
+
+
+*** Keywords ***
+Get NSDs List
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm nspkg-list
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Create NSD
+    [Arguments]   ${nsd_pkg}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm nspkg-create ${nsd_pkg}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    ${lines}=   Get Line Count   ${stdout}
+    ${last}=   Evaluate   ${lines} - 1
+    ${id}=   Get Line   ${stdout}   ${last}
+    [Return]   ${id}
+
+
+Delete NSD
+    [Arguments]   ${nsd_id}
+
+    ${rc}   ${stdout}=   Run Keyword And Continue On Failure   Run and Return RC and Output   osm nspkg-delete ${nsd_id}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Log   ${stdout}
+    WAIT UNTIL KEYWORD SUCCEEDS   ${delete_max_wait_time}   ${delete_pol_time}   Check For NSD   ${nsd_id}
+
+
+Check For NSD
+    [Arguments]   ${nsd_id}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm nspkg-list | awk '{print $2}' | grep ${nsd_id}
+    Should Not Be Equal As Strings   ${stdout}   ${nsd_id}
diff --git a/robot-systest/lib/nsi_lib.resource b/robot-systest/lib/nsi_lib.resource
deleted file mode 100644 (file)
index 74c67a6..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-*** Comments ***
-#   Copyright 2020 Atos
-#
-#   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   Library providing keywords for CRUD operations over Network Slice Instances with OSM client.
-
-Library   Collections
-Library   OperatingSystem
-Library   DateTime
-Library   String
-
-Resource   ns_lib.resource
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-${SLICE_LAUNCH_POL_TIME}   30sec
-${SLICE_DELETE_POL_TIME}   15sec
-${VIM_TIMEOUT_MULTIPLIER}   %{OSM_VIM_MULTIPLIER_TIMEOUT=1.0}
-
-
-*** Keywords ***
-Create Network Slice
-    [Documentation]   Instantiates a NST and returns an instantiation id (nsi), verifying the slice is successfully instantiated
-    ...               Parameters:
-    ...                  nst: Name of the slice template
-    ...                  vim_name: Name of the VIM entry already in OSM
-    ...                  slice_name: Name of the slice instance
-    ...                  slice_config: Extra parameters that might require the slice instantiation i.e. configuration attributes
-    ...                  publickey: SSH public key of the local machine
-    ...               Execution example:
-    ...                  \${nsi}=   Create Network Slice   \${nst}   \${vim_name}   \${slice_name}   \${slice_config}   \${publickey}
-    [Arguments]   ${nst}   ${vim_name}   ${slice_name}   ${slice_config}   ${publickey}   ${slice_launch_max_wait_time}=6min   ${config_file}=${EMPTY}
-    ${slice_launch_max_wait_time}=   Convert Time   ${slice_launch_max_wait_time}   result_format=number
-    ${slice_launch_max_wait_time}=   Evaluate   ${slice_launch_max_wait_time} * ${VIM_TIMEOUT_MULTIPLIER}
-    ${config_attr}=   Set Variable If   "${slice_config}" != "${EMPTY}"   --config '${slice_config}'   ${EMPTY}
-    ${sshkeys_attr}=   Set Variable If   "${publickey}" != "${EMPTY}"   --ssh_keys ${publickey}   ${EMPTY}
-    ${config_file_attr}=   Set Variable If   "${config_file}" != "${EMPTY}"   --config_file '${config_file}'   ${EMPTY}
-    ${nsi_id}=   Instantiate Network Slice   ${slice_name}   ${nst}   ${vim_name}   ${config_attr} ${config_file_attr}   ${sshkeys_attr}
-    Log   ${nsi_id}
-    Wait Until Keyword Succeeds   ${slice_launch_max_wait_time}   ${SLICE_LAUNCH_POL_TIME}   Check For Network Slice Instance To Configured   ${slice_name}
-    Check For Network Slice Instance For Failure   ${slice_name}
-    RETURN   ${nsi_id}
-
-Instantiate Network Slice
-    [Documentation]   Instantiates a NST and returns an instantiation id (nsi)
-    ...               Parameters:
-    ...                  slice_name: Name of the slice instance
-    ...                  nst: Name of the slice template
-    ...                  vim_name: Name of the VIM entry already in OSM
-    ...                  slice_extra_args: Extra parameters that might require the slice instantiation i.e. configuration attributes
-    ...               Execution example:
-    ...                  \${nsi}=   Instantiate Network Slice   \${slice_name}   \${nst}   \${vim_name}   \${config_attr}
-    [Arguments]   ${slice_name}   ${nst}   ${vim_name}   ${slice_extra_args}   ${sshkeys_attr}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm nsi-create --nsi_name ${slice_name} --nst_name ${nst} --vim_account ${vim_name} ${sshkeys_attr} ${slice_extra_args}
-    Log   ${rc},${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Get Slice Ns List
-    [Documentation]   Retrieves the list of NS in a slice
-    ...               Parameters:
-    ...                  slice_name: Name of the slice instance
-    ...               Execution example:
-    ...                  \@{slice_ns_list}=   Get Slice Ns List   \${slice_name}
-    [Arguments]   ${slice_name}
-    Should Not Be Empty   ${slice_name}
-    @{ns_list_string}=   Run And Return Rc And Output   osm ns-list | grep ${slice_name} | awk '{print $4}' 2>&1
-    # Returns a String of ns_id and needs to be converted into a list
-    @{ns_list}=   Split String   ${ns_list_string}[1]
-    Log List   ${ns_list}
-    RETURN   @{ns_list}
-
-Get Slice Ns List Except One
-    [Documentation]   Retrieves the list of NS in a slice removing one from the list. This is done to save time in the tests, avoiding one VNF to ping itself.
-    ...               Parameters:
-    ...                  slice_name: Name of the slice instance
-    ...                  exception_ns: Name of the ns that will not appear in the final list
-    ...               Execution example:
-    ...                  \@{slice_ns_list}=   Get Slice Ns List Except One   \${slice_name}   \${exception_ns}
-    [Arguments]   ${slice_name}   ${exception_ns}
-    Should Not Be Empty   ${slice_name}
-    Should Not Be Empty   ${exception_ns}
-    @{ns_list_string}=   Run And Return Rc And Output   osm ns-list | grep ${slice_name} | awk '!/${exception_ns}/' | awk '{print $4}' 2>&1
-    # Returns a String of ns_id and needs to be converted into a list
-    @{ns_list}=   Split String   ${ns_list_string}[1]
-    Log List   ${ns_list}
-    RETURN   @{ns_list}
-
-Get Slice Ns Count
-    [Documentation]   Returns the count of all the NS in a slice
-    ...               Parameters:
-    ...                  slice_name: Name of the slice instance
-    ...               Execution example:
-    ...                  \${slice_ns_count}=   Get Slice Ns Count   \${slice_name}
-    [Arguments]   ${slice_name}
-    Should Not Be Empty   ${slice_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-list | grep ${slice_name} | wc -l 2>&1
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Get Slice Vnf Ip Addresses
-    [Documentation]   Retrieves the list of IP addresses that belong to each of the VNFs in the slice
-    ...               Parameters:
-    ...                  slice_name: Name of the slice instance
-    ...               Execution example:
-    ...                  \@{slice_ip_address_list}=   Get Slice Vnf Ip Addresses   \${slice_name}
-    [Arguments]   ${slice_name}
-    # Get all the ns_id in the slice
-    @{slice_ns_list}=   Get Slice Ns List   ${slice_name}
-    Log Many   @{slice_ns_list}
-    @{temp_list}=   Create List
-    # For each ns_id in the list, get all the vnf_id and their IP addresses
-    FOR   ${ns_id}   IN   @{slice_ns_list}
-        Log   ${ns_id}
-        @{vnf_id_list}=   Get Ns Vnf List   ${ns_id}
-        # For each vnf_id in the list, get all its IP addresses
-        @{ns_ip_list}=   Get Ns Ip List   @{vnf_id_list}
-        @{temp_list}=   Combine Lists   ${temp_list}   ${ns_ip_list}
-    END
-    Log List   ${temp_list}
-    RETURN   @{temp_list}
-
-Check For Network Slice Instance To Configured
-    [Documentation]   Verify the slice has been instantiated
-    ...               Parameters:
-    ...                  slice_name: Name of the slice instance
-    ...               Execution example:
-    ...                  Check For Network Slice Instance To Configured   \${slice_name}
-    [Arguments]   ${slice_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm nsi-list --filter name="${slice_name}"
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Contain Any   ${stdout}   READY   BROKEN   configured
-
-Check For Network Slice Instance For Failure
-    [Documentation]   Verify the slice instance is not in failure
-    ...               Parameters:
-    ...                  slice_name: Name of the slice instance
-    ...               Execution example:
-    ...                  Check For Network Slice Instance For Failure   \${slice_name}
-    [Arguments]   ${slice_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm nsi-list --filter name="${slice_name}"
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Not Contain   ${stdout}   failed
-
-Delete NSI
-    [Documentation]   Delete Network Slice Instance (NSI)
-    ...               Parameters:
-    ...                  slice_name: Name of the slice instance
-    ...                  slice_delete_max_wait_time: Delete operation timeout
-    ...               Execution example:
-    ...                  Delete NST   \${slice_name}
-    [Arguments]   ${slice_name}   ${slice_delete_max_wait_time}=4min
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm nsi-delete ${slice_name}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    ${slice_delete_max_wait_time}=   Convert Time   ${slice_delete_max_wait_time}   result_format=number
-    ${slice_delete_max_wait_time}=   Evaluate   ${slice_delete_max_wait_time} * ${VIM_TIMEOUT_MULTIPLIER}
-    Wait Until Keyword Succeeds   ${slice_delete_max_wait_time}   ${SLICE_DELETE_POL_TIME}   Check For Network Slice Instance To Be Deleted   ${slice_name}
-
-Check For Network Slice Instance To Be Deleted
-    [Documentation]   Verify the slice instance is not present
-    ...               Parameters:
-    ...                  slice_name: Name of the slice instance
-    ...               Execution example:
-    ...                  Check For Network Slice Instance   \${slice_name}
-    [Arguments]   ${slice_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm nsi-list | awk '{print $2}' | grep ${slice_name}
-    Log   ${rc},${stdout}
-    Should Not Be Equal As Strings   ${stdout}   ${slice_name}
diff --git a/robot-systest/lib/nsi_lib.robot b/robot-systest/lib/nsi_lib.robot
new file mode 100644 (file)
index 0000000..1b88396
--- /dev/null
@@ -0,0 +1,212 @@
+#   Copyright 2020 Atos
+#
+#   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 ***
+Library   Collections
+
+
+*** Variables ***
+${success_return_code}   0
+${slice_launch_pol_time}   30sec
+${slice_delete_pol_time}   15sec
+${vim_timeout_multiplier}   %{OSM_VIM_MULTIPLIER_TIMEOUT=1.0}
+
+
+*** Keywords ***
+
+Create Network Slice
+    [Documentation]   Instantiates a NST and returns an instantiation id (nsi), verifying the slice is successfully instantiated
+    ...               Parameters:
+    ...                  nst: Name of the slice template
+    ...                  vim_name: Name of the VIM entry already in OSM
+    ...                  slice_name: Name of the slice instance
+    ...                  slice_config: Extra parameters that might require the slice instantiation i.e. configuration attributes
+    ...                  publickey: SSH public key of the local machine
+    ...               Execution example:
+    ...                  \${nsi}=   Create Network Slice   \${nst}   \${vim_name}   \${slice_name}   \${slice_config}   \${publickey}
+
+    [Arguments]   ${nst}   ${vim_name}   ${slice_name}   ${slice_config}   ${publickey}   ${slice_launch_max_wait_time}=6min   ${config_file}=${EMPTY}
+
+    ${slice_launch_max_wait_time}=   Convert Time   ${slice_launch_max_wait_time}   result_format=number
+    ${slice_launch_max_wait_time}=   Evaluate   ${slice_launch_max_wait_time} * ${vim_timeout_multiplier}
+    ${config_attr}   Set Variable If   '${slice_config}'!='${EMPTY}'   --config '${slice_config}'   \
+    ${sshkeys_attr}   Set Variable If   '${publickey}'!='${EMPTY}'   --ssh_keys ${publickey}   \
+    ${config_file_attr}   Set Variable If   '${config_file}'!='${EMPTY}'   --config_file '${config_file}'   \
+
+    ${nsi_id}=   Instantiate Network Slice   ${slice_name}   ${nst}   ${vim_name}   ${config_attr} ${config_file_attr}   ${sshkeys_attr}
+    Log   ${nsi_id}
+
+    WAIT UNTIL KEYWORD SUCCEEDS   ${slice_launch_max_wait_time}   ${slice_launch_pol_time}   Check For Network Slice Instance To Configured   ${slice_name}
+    Check For Network Slice Instance For Failure   ${slice_name}
+    [Return]   ${nsi_id}
+
+
+Instantiate Network Slice
+    [Documentation]   Instantiates a NST and returns an instantiation id (nsi)
+    ...               Parameters:
+    ...                  slice_name: Name of the slice instance
+    ...                  nst: Name of the slice template
+    ...                  vim_name: Name of the VIM entry already in OSM
+    ...                  slice_extra_args: Extra parameters that might require the slice instantiation i.e. configuration attributes
+    ...               Execution example:
+    ...                  \${nsi}=   Instantiate Network Slice   \${slice_name}   \${nst}   \${vim_name}   \${config_attr}
+
+    [Arguments]   ${slice_name}   ${nst}   ${vim_name}   ${slice_extra_args}   ${sshkeys_attr}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm nsi-create --nsi_name ${slice_name} --nst_name ${nst} --vim_account ${vim_name} ${sshkeys_attr} ${slice_extra_args}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get Slice Ns List
+    [Documentation]   Retrieves the list of NS in a slice
+    ...               Parameters:
+    ...                  slice_name: Name of the slice instance
+    ...               Execution example:
+    ...                  \@{slice_ns_list}=   Get Slice Ns List   \${slice_name}
+
+    [Arguments]   ${slice_name}
+
+    Should Not Be Empty   ${slice_name}
+    @{ns_list_string}=   Run and Return RC and Output   osm ns-list | grep ${slice_name} | awk '{print $4}' 2>&1
+    # Returns a String of ns_id and needs to be converted into a list
+    @{ns_list} =   Split String   ${ns_list_string}[1]
+    Log List   ${ns_list}
+    [Return]   @{ns_list}
+
+
+Get Slice Ns List Except One
+    [Documentation]   Retrieves the list of NS in a slice removing one from the list. This is done to save time in the tests, avoiding one VNF to ping itself.
+    ...               Parameters:
+    ...                  slice_name: Name of the slice instance
+    ...                  exception_ns: Name of the ns that will not appear in the final list
+    ...               Execution example:
+    ...                  \@{slice_ns_list}=   Get Slice Ns List Except One   \${slice_name}   \${exception_ns}
+
+    [Arguments]   ${slice_name}   ${exception_ns}
+
+    Should Not Be Empty   ${slice_name}
+    Should Not Be Empty   ${exception_ns}
+
+    @{ns_list_string}=   Run and Return RC and Output   osm ns-list | grep ${slice_name} | awk '!/${exception_ns}/' | awk '{print $4}' 2>&1
+    # Returns a String of ns_id and needs to be converted into a list
+    @{ns_list} =   Split String   ${ns_list_string}[1]
+    Log List   ${ns_list}
+    [Return]   @{ns_list}
+
+
+Get Slice Ns Count
+    [Documentation]   Returns the count of all the NS in a slice
+    ...               Parameters:
+    ...                  slice_name: Name of the slice instance
+    ...               Execution example:
+    ...                  \${slice_ns_count}=   Get Slice Ns Count   \${slice_name}
+
+    [Arguments]   ${slice_name}
+
+    Should Not Be Empty   ${slice_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm ns-list | grep ${slice_name} | wc -l 2>&1
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get Slice Vnf Ip Addresses
+    [Documentation]   Retrieves the list of IP addresses that belong to each of the VNFs in the slice
+    ...               Parameters:
+    ...                  slice_name: Name of the slice instance
+    ...               Execution example:
+    ...                  \@{slice_ip_address_list}=   Get Slice Vnf Ip Addresses   \${slice_name}
+
+    [Arguments]   ${slice_name}
+
+    # Get all the ns_id in the slice
+    @{slice_ns_list}   Get Slice Ns List   ${slice_name}
+    Log Many   @{slice_ns_list}
+    @{temp_list}=   Create List
+    # For each ns_id in the list, get all the vnf_id and their IP addresses
+    FOR   ${ns_id}   IN   @{slice_ns_list}
+        Log   ${ns_id}
+        @{vnf_id_list}   Get Ns Vnf List   ${ns_id}
+        # For each vnf_id in the list, get all its IP addresses
+        @{ns_ip_list}   Get Ns Ip List   @{vnf_id_list}
+        @{temp_list}=   Combine Lists   ${temp_list}   ${ns_ip_list}
+    END
+    Log List   ${temp_list}
+    [Return]   @{temp_list}
+
+
+Check For Network Slice Instance To Configured
+    [Documentation]   Verify the slice has been instantiated
+    ...               Parameters:
+    ...                  slice_name: Name of the slice instance
+    ...               Execution example:
+    ...                  Check For Network Slice Instance To Configured   \${slice_name}
+
+    [Arguments]   ${slice_name}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm nsi-list --filter name="${slice_name}"
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Contain Any   ${stdout}   READY   BROKEN   configured
+
+
+Check For Network Slice Instance For Failure
+    [Documentation]   Verify the slice instance is not in failure
+    ...               Parameters:
+    ...                  slice_name: Name of the slice instance
+    ...               Execution example:
+    ...                  Check For Network Slice Instance For Failure   \${slice_name}
+
+    [Arguments]   ${slice_name}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm nsi-list --filter name="${slice_name}"
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Not Contain   ${stdout}   failed
+
+
+Delete NSI
+    [Documentation]   Delete Network Slice Instance (NSI)
+    ...               Parameters:
+    ...                  slice_name: Name of the slice instance
+    ...                  slice_delete_max_wait_time: Delete operation timeout
+    ...               Execution example:
+    ...                  Delete NST   \${slice_name}
+
+    [Arguments]   ${slice_name}   ${slice_delete_max_wait_time}=4min
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm nsi-delete ${slice_name}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+    ${slice_delete_max_wait_time}=   Convert Time   ${slice_delete_max_wait_time}   result_format=number
+    ${slice_delete_max_wait_time}=   Evaluate   ${slice_delete_max_wait_time} * ${vim_timeout_multiplier}
+    WAIT UNTIL KEYWORD SUCCEEDS   ${slice_delete_max_wait_time}   ${slice_delete_pol_time}   Check For Network Slice Instance To Be Deleted   ${slice_name}
+
+
+Check For Network Slice Instance To Be Deleted
+    [Documentation]   Verify the slice instance is not present
+    ...               Parameters:
+    ...                  slice_name: Name of the slice instance
+    ...               Execution example:
+    ...                  Check For Network Slice Instance   \${slice_name}
+
+    [Arguments]   ${slice_name}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm nsi-list | awk '{print $2}' | grep ${slice_name}
+    Should Not Be Equal As Strings   ${stdout}   ${slice_name}
+
+
diff --git a/robot-systest/lib/nst_lib.resource b/robot-systest/lib/nst_lib.resource
deleted file mode 100644 (file)
index 0bb2e1b..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-*** Comments ***
-#   Copyright 2020 Atos
-#
-#   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   Library providing keywords for CRUD operations over Network Slice Templates with OSM client.
-Library   OperatingSystem
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-${NST_DELETE_MAX_WAIT_TIME}   1min
-${NST_DELETE_POL_TIME}   15sec
-
-
-*** Keywords ***
-Get NST List
-    [Documentation]   Get the list of Network Slice Templates (NST) and log it.
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm netslice-template-list
-    Log   ${stdout}
-    Log   ${rc}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Create NST
-    [Documentation]   Upload a Network Slice Template (NST) to OSM and return the id.
-    [Arguments]   ${nst}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm netslice-template-create ${nst}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Delete NST
-    [Documentation]   Delete a Network Slice Template (NST) from OSM.
-    [Arguments]   ${nst_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm netslice-template-delete ${nst_id}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Wait Until Keyword Succeeds   ${NST_DELETE_MAX_WAIT_TIME}   ${NST_DELETE_POL_TIME}   Check For NST   ${nst_id}
-
-Check For NST
-    [Documentation]   Check that a Network Slice Template (NST) exists in OSM.
-    [Arguments]   ${nst_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm netslice-template-list | awk '{print $2}' | grep ${nst_id}
-    Log   ${rc},${stdout}
-    Should Not Be Equal As Strings   ${stdout}   ${nst_id}
diff --git a/robot-systest/lib/nst_lib.robot b/robot-systest/lib/nst_lib.robot
new file mode 100644 (file)
index 0000000..6fac729
--- /dev/null
@@ -0,0 +1,53 @@
+#   Copyright 2020 Atos
+#
+#   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.
+
+*** Variables ***
+${success_return_code}   0
+${ns_launch_max_wait_time}   5min
+${ns_launch_pol_time}   30sec
+${ns_delete_max_wait_time}   1min
+${ns_delete_pol_time}   15sec
+
+*** Keywords ***
+Get NST List
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm netslice-template-list
+    Log   ${stdout}
+    Log   ${rc}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Create NST
+    [Arguments]   ${nst}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm netslice-template-create ${nst}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Delete NST
+    [Arguments]   ${nst_id}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm netslice-template-delete ${nst_id}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    WAIT UNTIL KEYWORD SUCCEEDS   ${delete_max_wait_time}   ${delete_pol_time}   Check For NST   ${nst_id}
+
+
+Check For NST
+    [Arguments]   ${nst_id}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm netslice-template-list | awk '{print $2}' | grep ${nst_id}
+    Should Not Be Equal As Strings   ${stdout}   ${nst_id}
+
diff --git a/robot-systest/lib/openstack_lib.resource b/robot-systest/lib/openstack_lib.resource
deleted file mode 100644 (file)
index 385362b..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-*** Comments ***
-#   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   Library providing keywords to interact with Openstack with openstack client.
-
-Library   OperatingSystem
-Library   String
-
-Resource   ns_lib.resource
-Resource   vnf_lib.resource
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-
-
-*** Keywords ***
-Get Server Flavor ID
-    [Documentation]   Get from Openstack the flavor id of a server/VM passed as argument.
-    [Arguments]   ${server_id}
-    Should Not Be Empty   ${server_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack server show ${server_id} | grep flavor | awk 'NR>1{print $1}' RS='(' FS=')'
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Get Flavor Properties
-    [Documentation]   Get from Openstack the properties of a flavor passed as argument.
-    [Arguments]   ${flavor_id}
-    Should Not Be Empty   ${flavor_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack flavor show ${flavor_id} | grep properties | awk -F '|' '{print $3}'
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Check NS Servers In VIM
-    [Documentation]   Check if the number of servers in Openstack by filtering by NS name is as expected.
-    [Arguments]   ${ns_name}   ${number}
-    Should Not Be Empty   ${ns_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack server list | grep ${ns_name} | awk '{print $4}'
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    @{servers}=   Split String   ${stdout}
-    ${n_servers}=   Get Length   ${servers}
-    Should Be Equal As Integers   ${number}   ${n_servers}
-
-Check If Volume Bootable
-    [Documentation]   Check the volume properties and return whether it is bootable or not.
-    [Arguments]   ${volume_id}
-    Should Not Be Empty   ${volume_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack volume show ${volume_id} | grep bootable | awk '{print $4}'
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Get Project Quota
-    [Documentation]   Get a field (ram, cores, ports, etc.) from quota in current project.
-    [Arguments]   ${field}
-    Should Not Be Empty   ${field}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack quota show -f yaml | yq '.[] | select(.Resource=="${field}") | .Limit'
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Get Server Property
-    [Documentation]   Get a field (flavor, image, volumes_attached, etc.) from a server.
-    [Arguments]   ${server_id}   ${field}
-    Should Not Be Empty   ${server_id}
-    Should Not Be Empty   ${field}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack server show ${server_id} -c ${field} -f value
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Check VM In Server Group
-    [Documentation]   Check if a given server is included in an Openstack server group
-    [Arguments]   ${server_id}   ${server_group_name}
-    Should Not Be Empty   ${server_group_name}
-    Should Not Be Empty   ${server_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack server group show ${server_group_name} -c members -f value
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Contain   ${stdout}   ${server_id}
-
-Set Volume Id
-    [Documentation]   Sets the root volume ID and ordinary volume ID by checking bootable property of volumes
-    [Arguments]   ${volume_match}   ${index}
-    Should Not Be Empty   ${volume_match}   ${index}
-    ${bootable}=   Check If Volume Bootable   ${volume_match}[${index}]
-    IF   ${bootable}=='true'
-        Set Suite Variable   ${ROOT_VOL_ID}   ${volume_match}[${index}]
-        IF   not ${index}
-            Set Suite Variable   ${ORDINARY_VOL_ID}   ${volume_match}[1]
-        ELSE
-            Set Suite Variable   ${ORDINARY_VOL_ID}   ${volume_match}[0]
-        END
-    END
-
-Get Persistent Volumes Attached To Vm
-    [Documentation]   Sets the root volume ID and ordinary volume ID by checking bootable property of volumes
-    [Arguments]   ${ns_id}
-    Variable Should Exist   ${ns_id}   msg=NS is not available
-    ${vnfs_list}=   Get Ns Vnf List   ${ns_id}
-    ${vim_id}=   Get VNF VIM ID   ${vnfs_list}[0]
-    ${volumes_attached}=   Get Server Property   ${vim_id}   volumes_attached
-    Log   ${volumes_attached}
-    ${stdout}=   Get Regexp Matches   ${volumes_attached}   '([0-9a-f\-]+)'   1
-    Log   ${stdout}
-    RETURN   ${stdout}
-
-Check If Volume Exists
-    [Documentation]   Checks if a volume id exists
-    [Arguments]   ${volume_id}
-    Should Not Be Empty   ${volume_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack volume list | grep ${volume_id} | wc -l
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Delete Volume
-    [Documentation]   Delete a volume by its identifier
-    [Arguments]   ${volume_id}
-    Should Not Be Empty   ${volume_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack volume delete ${volume_id}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Get Subnet
-    [Documentation]   Get subnet information in JSON format
-    [Arguments]   ${subnet_id}
-    Should Not Be Empty   ${subnet_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack subnet show ${subnet_id} -f json
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Stop Server
-    [Documentation]   Stop a server
-    [Arguments]   ${server_id}
-    Should Not Be Empty   ${server_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack server stop ${server_id}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Halt Server
-    [Documentation]   Reset a server
-    [Arguments]   ${server_id}
-    Should Not Be Empty   ${server_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack server set --state error ${server_id}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Delete Server
-    [Documentation]   Delete a server
-    [Arguments]   ${server_id}
-    Should Not Be Empty   ${server_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack server delete ${server_id}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Create Flavor
-    [Documentation]   Create a Flavor
-    [Arguments]   ${flavor_name}   ${cpu}=1   ${ram}=1024   ${disk}=10
-    Should Not Be Empty   ${flavor_name}
-    ${rc}   ${flavor_id}=   Run And Return Rc And Output   openstack flavor create ${flavor_name} --ram ${ram} --disk ${disk} --vcpus ${cpu} -c id -f value
-    Log   ${flavor_id}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${flavor_id}
-
-Delete Flavor
-    [Documentation]   Delete a Flavor
-    [Arguments]   ${flavor_id}
-    Should Not Be Empty   ${flavor_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   openstack flavor delete ${flavor_id}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
diff --git a/robot-systest/lib/openstack_lib.robot b/robot-systest/lib/openstack_lib.robot
new file mode 100644 (file)
index 0000000..b654cfd
--- /dev/null
@@ -0,0 +1,213 @@
+#   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.
+
+*** Variables ***
+${success_return_code}   0
+
+
+*** Keywords ***
+Get Server Flavor ID
+    [Arguments]   ${server_id}
+
+    Should Not Be Empty   ${server_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server show ${server_id} | grep flavor | awk 'NR>1{print $1}' RS='(' FS=')'
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get Flavor Properties
+    [Arguments]   ${flavor_id}
+
+    Should Not Be Empty   ${flavor_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack flavor show ${flavor_id} | grep properties | awk -F '|' '{print $3}'
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Check NS Servers In VIM
+    [Documentation]   Check if the number of servers in Openstack by filtering by NS name is as expected.
+    [Arguments]   ${ns_name}   ${number}
+
+    Should Not Be Empty   ${ns_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server list | grep ${ns_name} | awk '{print $4}'
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    @{servers} =   Split String   ${stdout}
+    ${n_servers}=   Get Length   ${servers}
+    Should Be Equal As Integers   ${number}   ${n_servers}
+
+
+Check If Volume Bootable
+    [Documentation]   Check the volume properties and return whether it is bootable or not.
+    [Arguments]   ${volume_id}
+
+    Should Not Be Empty   ${volume_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack volume show ${volume_id} | grep bootable | awk '{print $4}'
+    log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get Project Quota
+    [Documentation]   Get a field (ram, cores, ports, etc.) from quota in current project.
+    [Arguments]   ${field}
+
+    Should Not Be Empty   ${field}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack quota show -f yaml | yq '.[] | select(.Resource=="${field}") | .Limit'
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get Server Property
+    [Documentation]   Get a field (flavor, image, volumes_attached, etc.) from a server.
+    [Arguments]   ${server_id}   ${field}
+
+    Should Not Be Empty   ${server_id}
+    Should Not Be Empty   ${field}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server show ${server_id} -c ${field} -f value
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Check VM In Server Group
+    [Documentation]   Check if a given server is included in an Openstack server group
+    [Arguments]   ${server_id}   ${server_group_name}
+
+    Should Not Be Empty   ${server_group_name}
+    Should Not Be Empty   ${server_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server group show ${server_group_name} -c members -f value
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Contain   ${stdout}   ${server_id}
+
+
+Set Volume Id
+    [Documentation]   Sets the root volume ID and ordinary volume ID by checking bootable property of volumes
+    [Arguments]   ${volume_match}   ${index}
+
+    Should Not Be Empty   ${volume_match}   ${index}
+    ${bootable}=   Check If Volume Bootable   ${volume_match}[${index}]
+    Set Suite Variable   ${bootable}
+    IF   '${bootable}'=='true'
+        Set Suite Variable   ${root_vol_id}   ${volume_match}[${index}]
+        IF   ${index}==0
+            Set Suite Variable   ${ordinary_vol_id}   ${volume_match}[1]
+        ELSE
+            Set Suite Variable   ${ordinary_vol_id}   ${volume_match}[0]
+        END
+    END
+
+
+Get Persistent Volumes Attached To Vm
+    [Documentation]   Sets the root volume ID and ordinary volume ID by checking bootable property of volumes
+    [Arguments]   ${ns_id}
+
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    ${vnfs_list}=   Get Ns Vnf List   ${ns_id}
+    ${vim_id}=   Get VNF VIM ID   ${vnfs_list}[0]
+    ${volumes_attached}=   Get Server Property   ${vim_id}   volumes_attached
+    log   ${volumes_attached}
+    ${stdout}=   Get Regexp Matches   ${volumes_attached}   '([0-9a-f\-]+)'   1
+    log   ${stdout}
+    [Return]   ${stdout}
+
+
+Check If Volume Exists
+    [Documentation]   Checks if a volume id exists
+    [Arguments]   ${volume_id}
+
+    Should Not Be Empty   ${volume_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack volume list | grep ${volume_id} | wc -l
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Delete Volume
+    [Documentation]   Delete a volume by its identifier
+    [Arguments]   ${volume_id}
+
+    Should Not Be Empty   ${volume_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack volume delete ${volume_id}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get Subnet
+    [Documentation]   Get subnet information in JSON format
+    [Arguments]   ${subnet_id}
+
+    Should Not Be Empty   ${subnet_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack subnet show ${subnet_id} -f json
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Stop Server
+    [Documentation]   Stop a server
+    [Arguments]   ${server_id}
+
+    Should Not Be Empty   ${server_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server stop ${server_id}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Halt Server
+    [Documentation]   Reset a server
+    [Arguments]   ${server_id}
+
+    Should Not Be Empty   ${server_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server set --state error ${server_id}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Delete Server
+    [Documentation]   Delete a server
+    [Arguments]   ${server_id}
+
+    Should Not Be Empty   ${server_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack server delete ${server_id}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Create Flavor
+    [Documentation]   Create a Flavor
+    [Arguments]   ${flavor_name}   ${cpu}=1   ${ram}=1024   ${disk}=10
+
+    Should Not Be Empty   ${flavor_name}
+    ${rc}   ${flavor_id}=   Run and Return RC and Output   openstack flavor create ${flavor_name} --ram ${ram} --disk ${disk} --vcpus ${cpu} -c id -f value
+    Log   ${flavor_id}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${flavor_id}
+
+
+Delete Flavor
+    [Documentation]   Delete a Flavor
+    [Arguments]   ${flavor_id}
+
+    Should Not Be Empty   ${flavor_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   openstack flavor delete ${flavor_id}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
diff --git a/robot-systest/lib/package_lib.resource b/robot-systest/lib/package_lib.resource
deleted file mode 100644 (file)
index b563463..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-*** Comments ***
-# Copyright ETSI Contributors and Others.
-#
-# 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. 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   Library providing keywords for building, validating and uploading tar.gz NS and VNF package files with OSM client.
-Library   String
-Library   OperatingSystem
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-
-
-*** Keywords ***
-Upload Package
-    [Documentation]   Onboards ("creates") a NF Package into OSM.
-    ...               - Parameters:
-    ...                 - pkg: Name (and location) of the NF Package
-    [Arguments]   ${pkg}
-    # Proceeds with the onboarding with the appropriate arguments
-    ${rc}   ${stdout}=   Run And Return Rc And Output   tar -czf ${pkg}.tar.gz -C ${pkg} .
-    Log   ${rc},${stdout}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm upload-package ${pkg}.tar.gz
-    Log   ${rc},${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Delete Package
-    [Documentation]   Delete a tar.gz package passed as argument from the filesystem.
-    [Arguments]   ${pkg}
-    # Proceeds with the onboarding with the appropriate arguments
-    ${rc}   ${stdout}=   Run And Return Rc And Output   rm ${pkg}.tar.gz
-    Log   ${rc},${stdout}
-
-Package Build
-    [Documentation]   Build the package NS, VNF given the package_folder
-    [Arguments]   ${pkg_folder}   ${skip_charm_build}=${EMPTY}
-    ${skip_charm}=   Set Variable If   "${skip_charm_build}" != "${EMPTY}"   "--skip-charm-build"   ${EMPTY}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm package-build ${pkg_folder} ${skip_charm}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Contain   ${stdout}   Package created
-    ${package}=   Get Line   ${stdout}   -1
-    RETURN   ${package}
-
-Package Validate
-    [Documentation]   Validate descriptors given a base directory
-    [Arguments]   ${pkg_folder}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm package-validate ${pkg_folder} | awk -F\| '$2 !~ /-/ && $4 ~ /OK|ERROR/ {print $4}'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Contain   ${stdout}   'OK'
-    ${package}=   Get Line   ${stdout}   -1
-    RETURN   ${package}
diff --git a/robot-systest/lib/package_lib.robot b/robot-systest/lib/package_lib.robot
new file mode 100644 (file)
index 0000000..a9d3804
--- /dev/null
@@ -0,0 +1,79 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright ETSI Contributors and Others.
+#
+# 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. 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 ***
+Library   String
+Library   OperatingSystem
+
+
+*** Variables ***
+${success_return_code}   0
+${delete_max_wait_time}   1min
+${delete_pol_time}   15sec
+
+
+*** Keywords ***
+Upload Package
+    [Documentation]   Onboards ("creates") a NF Package into OSM.
+    ...               - Parameters:
+    ...                 - pkg: Name (and location) of the NF Package
+
+    [Arguments]   ${pkg}
+
+    # Proceedes with the onboarding with the appropriate arguments
+    ${rc}   ${stdout}=   Run and Return RC and Output   tar -czf ${pkg}.tar.gz -C ${pkg} .
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm upload-package ${pkg}.tar.gz
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Delete Package
+    [Arguments]   ${pkg}
+
+    # Proceedes with the onboarding with the appropriate arguments
+    ${rc}   ${stdout}=   Run and Return RC and Output   rm ${pkg}.tar.gz
+
+
+Package Build
+    [Documentation]   Build the package NS, VNF given the package_folder
+
+    [Arguments]   ${pkg_folder}   ${skip_charm_build}=${EMPTY}
+
+    ${skip_charm}   Set Variable If   '${skip_charm_build}'!='${EMPTY}'   --skip-charm-build   \
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm package-build ${pkg_folder} ${skip_charm}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Contain   ${stdout}   Package created
+    ${package}=   Get Line   ${stdout}   -1
+
+    [Return]   ${package}
+
+
+Package Validate
+    [Documentation]   Validate descriptors given a base directory
+
+    [Arguments]   ${pkg_folder}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm package-validate ${pkg_folder} | awk -F\| '$2 !~ /-/ && $4 ~ /OK|ERROR/ {print $4}'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Contain   ${stdout}   'OK'
+    ${package}=   Get Line   ${stdout}   -1
+
+    [Return]   ${package}
+
diff --git a/robot-systest/lib/project_lib.resource b/robot-systest/lib/project_lib.resource
deleted file mode 100644 (file)
index a46ee61..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-*** Comments ***
-#   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   Library providing keywords for CRUD operations over projects with OSM client.
-Library   OperatingSystem
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-
-
-*** Keywords ***
-Create Project
-    [Documentation]   Create a project in OSM with the name passed as argument, and return the project id.
-    [Arguments]   ${project_name}
-    Should Not Be Empty   ${project_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm project-create ${project_name}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Create Project With Quotas
-    [Documentation]   Create a project in OSM with the name and quotas passed as arguments, and return the project id.
-    [Arguments]   ${project_name}   ${project_quotas}
-    Should Not Be Empty   ${project_name}
-    Should Not Be Empty   ${project_quotas}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm project-create ${project_name} --quotas ${project_quotas}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Get Project Quotas
-    [Documentation]   Get from OSM a specific quota parameter from the project passed as argument.
-    [Arguments]   ${project_name}   ${quotas_name}
-    Should Not Be Empty   ${project_name}
-    Should Not Be Empty   ${quotas_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm project-show ${project_name} | grep '${quotas_name}' | awk -F ',|: ' '{print $2}' | awk '{print $1}'
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Update Project Quotas
-    [Documentation]   Update in OSM the quotas of a project with the new quotas passed as arguments.
-    [Arguments]   ${project_name}   ${project_quotas}
-    Should Not Be Empty   ${project_name}
-    Should Not Be Empty   ${project_quotas}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm project-update ${project_name} --quotas ${project_quotas}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Update Project Name
-    [Documentation]   Update in OSM the name of a project with the new name passed as argument.
-    [Arguments]   ${project_name}   ${new_name}
-    Should Not Be Empty   ${project_name}
-    Should Not Be Empty   ${new_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm project-update ${project_name} --name ${new_name}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Check If User Is Assigned To Project
-    [Documentation]   Check in OSM if a user exists in a project passed as argument.
-    [Arguments]   ${user_name}   ${project_name}
-    Should Not Be Empty   ${user_name}
-    Should Not Be Empty   ${project_name}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm user-show ${user_name} | grep "project_name" | grep "${project_name}"
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Create VNFD In Project
-    [Documentation]   Onboards a VNF package into an OSM project.
-    ...                 Extra parameters (such as 'override') are given to this function in name=value format. These parameters will be appended to the 'osm vnfpkg-create' command with the next syntax: --param_name=param_value
-    [Arguments]   ${project_name}   ${vnfd_pkg}   ${project_user}   ${user_password}   @{optional_parameters}
-    Should Not Be Empty   ${project_name}
-    Should Not Be Empty   ${vnfd_pkg}
-    Should Not Be Empty   ${project_user}
-    Should Not Be Empty   ${user_password}
-    ${osm_pkg_create_command}=   Set Variable   osm --project ${project_name} --user ${project_user} --password ${user_password} vnfpkg-create ${vnfd_pkg}
-    FOR   ${param}   IN   @{optional_parameters}
-        ${match}   ${param_name}   ${param_value}=   Should Match Regexp   ${param}   (.+)=(.+)   msg=Syntax error in optional parameters
-        Log   ${match},${param_name},${param_value}
-        ${osm_pkg_create_command}=   Catenate   ${osm_pkg_create_command}   --${param_name}=${param_value}
-    END
-    ${rc}   ${stdout}=   Run And Return Rc And Output   ${osm_pkg_create_command}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Delete VNFD In Project
-    [Documentation]   Deletes a VNF package from an OSM project.
-    [Arguments]   ${project_name}   ${vnfd_pkg}   ${project_user}   ${user_password}
-    Should Not Be Empty   ${project_name}
-    Should Not Be Empty   ${vnfd_pkg}
-    Should Not Be Empty   ${project_user}
-    Should Not Be Empty   ${user_password}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm --project ${project_name} --user ${project_user} --password ${user_password} vnfpkg-delete ${vnfd_pkg}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Remove User From Project
-    [Documentation]   Remove a specific user from a specific project in OSM.
-    [Arguments]   ${user_name}   ${project_name}
-    Should Not Be Empty   ${user_name}
-    Should Not Be Empty   ${project_name}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm user-update ${user_name} --remove-project ${project_name}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Delete Project
-    [Documentation]   Delete from OSM the project passed as argument.
-    [Arguments]   ${project_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm project-delete ${project_name}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
diff --git a/robot-systest/lib/project_lib.robot b/robot-systest/lib/project_lib.robot
new file mode 100644 (file)
index 0000000..35366e2
--- /dev/null
@@ -0,0 +1,130 @@
+#   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.
+
+*** Variables ***
+${success_return_code}   0
+
+
+*** Keywords ***
+Create Project
+    [Arguments]   ${project_name}
+
+    Should Not Be Empty   ${project_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm project-create ${project_name}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Create Project With Quotas
+    [Arguments]   ${project_name}   ${project_quotas}
+
+    Should Not Be Empty   ${project_name}
+    Should Not Be Empty   ${project_quotas}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm project-create ${project_name} --quotas ${project_quotas}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get Project Quotas
+    [Arguments]   ${project_name}   ${quotas_name}
+
+    Should Not Be Empty   ${project_name}
+    Should Not Be Empty   ${quotas_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm project-show ${project_name} | grep '${quotas_name}' | awk -F ',|: ' '{print $2}' | awk '{print $1}'
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Update Project Quotas
+    [Arguments]   ${project_name}   ${project_quotas}
+
+    Should Not Be Empty   ${project_name}
+    Should Not Be Empty   ${project_quotas}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm project-update ${project_name} --quotas ${project_quotas}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Update Project Name
+    [Arguments]   ${project_name}   ${new_name}
+
+    Should Not Be Empty   ${project_name}
+    Should Not Be Empty   ${new_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm project-update ${project_name} --name ${new_name}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Check If User Is Assigned To Project
+    [Arguments]   ${user_name}   ${project_name}
+
+    Should Not Be Empty   ${user_name}
+    Should Not Be Empty   ${project_name}
+    ${rc}   ${stdout}=   Run And Return RC And Output   osm user-show ${user_name} | grep "project_name" | grep "${project_name}"
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Create VNFD In Project
+    [Documentation]   Onboards a VNFD package into an OSM project.
+    ...                 Extra parameters (such as 'override') are given to this function in name=value format. These parameters will be appended to the 'osm vnfpkg-create' command with the next syntax: --param_name=param_value
+
+    [Arguments]   ${project_name}   ${vnfd_pkg}   ${project_user}   ${user_password}   @{optional_parameters}
+
+    Should Not Be Empty   ${project_name}
+    Should Not Be Empty   ${vnfd_pkg}
+    Should Not Be Empty   ${project_user}
+    Should Not Be Empty   ${user_password}
+
+    ${osm_pkg_create_command}=   Set Variable   osm --project ${project_name} --user ${project_user} --password ${user_password} vnfpkg-create ${vnfd_pkg}
+    FOR   ${param}   IN   @{optional_parameters}
+        ${match}   ${param_name}   ${param_value} =   Should Match Regexp   ${param}   (.+)=(.+)   msg=Syntax error in optional parameters
+        ${osm_pkg_create_command}=   Catenate   ${osm_pkg_create_command}   --${param_name}=${param_value}
+    END
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   ${osm_pkg_create_command}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Delete VNFD In Project
+    [Arguments]   ${project_name}   ${vnfd_pkg}   ${project_user}   ${user_password}
+
+    Should Not Be Empty   ${project_name}
+    Should Not Be Empty   ${vnfd_pkg}
+    Should Not Be Empty   ${project_user}
+    Should Not Be Empty   ${user_password}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm --project ${project_name} --user ${project_user} --password ${user_password} vnfpkg-delete ${vnfd_pkg}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Remove User From Project
+    [Arguments]   ${user_name}   ${project_name}
+
+    Should Not Be Empty   ${user_name}
+    Should Not Be Empty   ${project_name}
+    ${rc}   ${stdout}=   Run And Return RC And Output   osm user-update ${user_name} --remove-project ${project_name}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Delete Project
+    [Arguments]   ${project_name}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm project-delete ${project_name}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
diff --git a/robot-systest/lib/prometheus_lib.resource b/robot-systest/lib/prometheus_lib.resource
deleted file mode 100644 (file)
index be3c120..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-*** Comments ***
-#   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   Library to obtain metrics from Prometheus.
-
-Library   String
-Library   Collections
-Library   OperatingSystem
-Library   RequestsLibrary
-
-
-*** Variables ***
-${TIMEOUT}   30
-${MAX_RETRIES}   1
-${PROMETHEUS_HOST}   %{PROMETHEUS_HOSTNAME=UNKNOWN}
-${PROMETHEUS_PORT}   %{PROMETHEUS_PORT=9090}
-${PROMETHEUS_USER}   %{PROMETHEUS_USER=""}
-${PROMETHEUS_PASSWORD}   %{PROMETHEUS_PASSWORD=""}
-
-
-*** Keywords ***
-Set Testsuite Prometheus Variables
-    [Documentation]   Set Testsuite Prometheus Variables to be used in subsequent test cases
-
-    IF   ${PROMETHEUS_HOST} == 'UNKNOWN'
-        ${local_prometheus_host}=   Get Environment Variable   OSM_HOSTNAME
-        Set Suite Variable   ${PROMETHEUS_HOST}   ${local_prometheus_host}
-        Set Suite Variable   ${PROMETHEUS_HOST}   9091
-    END
-    Log   ${PROMETHEUS_PORT}
-    Log   ${PROMETHEUS_HOST}
-    Log   ${PROMETHEUS_USER}
-    Log   ${PROMETHEUS_PASSWORD}
-
-Get Metric
-    [Documentation]   Get the instant value of a metric from Prometheus using multiple filter parameters.
-    ...                 The filter parameters are given to this function in key=value format (one argument per key/value pair).
-    ...                 Fails if the metric is not found or has multiple values.
-    ...                 Examples of execution:
-    ...                     \${metric}=   Get Metric   \${prometheus_ip}   \${prometheus_port}   ${prometheus_password}   \${metric}
-    ...                     \${metric}=   Get Metric   \${prometheus_ip}   \${prometheus_port}   ${prometheus_password}   \${metric}   \${param1}=\${value1}   \${param2}=\${value2}
-    [Arguments]   ${prometheus_ip}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   ${metric}   @{filter_parameters}
-    ${filter}=   Set Variable   ${EMPTY}
-    FOR   ${param}   IN   @{filter_parameters}
-        ${match}   ${param_name}   ${param_value}=   Should Match Regexp   ${param}   (.+)=(.+)   msg=Syntax error in filter parameters
-        Log   ${match},${param_name},${param_value}
-        ${filter}=   Catenate   SEPARATOR=   ${filter}   ${param_name}="${param_value}",
-    END
-    ${resp}=   Execute Prometheus Instant Query   ${prometheus_ip}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   query=${metric}{${filter}}
-    ${result_list}=   Convert To List   ${resp["data"]["result"]}
-    ${results}=   Get Length   ${result_list}
-    Should Not Be Equal As Numbers   0   ${results}   msg=Metric ${metric} not found   values=false
-    Should Be Equal As Integers   1   ${results}   msg=Metric ${metric} with multiple values   values=false
-    RETURN   ${result_list[0]["value"][1]}
-
-Execute Prometheus Instant Query
-    [Documentation]   Execute a Prometheus Instant Query using HTTP API.
-    ...                 Return an inline json with the result of the query.
-    ...                 The requested URL is the next: http://\${prometheus_ip}:\${prometheus_port}/api/v1/query?\${querystring}
-    [Arguments]   ${prometheus_ip}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   ${querystring}
-    ${auth}=   IF   '${prometheus_password}' != '${EMPTY}'   Create List   ${prometheus_user}   ${prometheus_password}   ELSE   Set Variable   None
-    Create Session   prometheus   http://${prometheus_ip}:${prometheus_port}   timeout=${TIMEOUT}   max_retries=${MAX_RETRIES}   verify=false   auth=${auth}
-    ${resp}=   GET On Session   prometheus   /api/v1/query?${querystring}   timeout=${TIMEOUT}
-    Status Should Be   200   ${resp}
-    RETURN   ${resp.json()}
diff --git a/robot-systest/lib/prometheus_lib.robot b/robot-systest/lib/prometheus_lib.robot
new file mode 100644 (file)
index 0000000..0f4f07c
--- /dev/null
@@ -0,0 +1,79 @@
+#   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   Library to obtain metrics from Prometheus.
+
+Library   String
+Library   Collections
+Library   OperatingSystem
+Library   RequestsLibrary
+
+
+*** Variables ***
+${timeout}   30
+${max_retries}   1
+${prometheus_host}   %{PROMETHEUS_HOSTNAME=UNKNOWN}
+${prometheus_port}   %{PROMETHEUS_PORT=9090}
+${prometheus_user}   %{PROMETHEUS_USER=""}
+${prometheus_password}   %{PROMETHEUS_PASSWORD=""}
+
+
+*** Keywords ***
+Set Testsuite Prometheus Variables
+    [Documentation]   Set Testsuite Prometheus Variables to be used in subsequent test cases
+
+    IF   '${prometheus_host}' == 'UNKNOWN'
+        ${local_prometheus_host}=   Get Environment Variable   OSM_HOSTNAME
+        Set Suite Variable   ${prometheus_host}   ${local_prometheus_host}
+        Set Suite Variable   ${prometheus_port}   9091
+    END
+    Log   ${prometheus_port}
+    Log   ${prometheus_host}
+    Log   ${prometheus_user}
+    Log   ${prometheus_password}
+
+
+Get Metric
+    [Documentation]   Get the instant value of a metric from Prometheus using multiple filter parameters.
+    ...                 The filter parameters are given to this function in key=value format (one argument per key/value pair).
+    ...                 Fails if the metric is not found or has multiple values.
+    ...                 Examples of execution:
+    ...                     \${metric}=   Get Metric   \${prometheus_ip}   \${prometheus_port}   ${prometheus_password}   \${metric}
+    ...                     \${metric}=   Get Metric   \${prometheus_ip}   \${prometheus_port}   ${prometheus_password}   \${metric}   \${param1}=\${value1}   \${param2}=\${value2}
+
+    [Arguments]   ${prometheus_ip}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   ${metric}   @{filter_parameters}
+
+    ${filter}=   Set Variable   ${EMPTY}
+    FOR   ${param}   IN   @{filter_parameters}
+        ${match}   ${param_name}   ${param_value} =   Should Match Regexp   ${param}   (.+)=(.+)   msg=Syntax error in filter parameters
+        ${filter}=   Catenate   SEPARATOR=   ${filter}   ${param_name}="${param_value}",
+    END
+    ${resp}=   Execute Prometheus Instant Query   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   query=${metric}{${filter}}
+    ${result_list}=   Convert To List   ${resp["data"]["result"]}
+    ${results}=   Get Length   ${result_list}
+    Should Not Be Equal As Numbers   0   ${results}   msg=Metric ${metric} not found   values=false
+    Should Be Equal As Integers   1   ${results}   msg=Metric ${metric} with multiple values   values=false
+    [Return]   ${result_list[0]["value"][1]}
+
+
+Execute Prometheus Instant Query
+    [Documentation]   Execute a Prometheus Instant Query using HTTP API.
+    ...                 Return an inline json with the result of the query.
+    ...                 The requested URL is the next: http://\${prometheus_ip}:\${prometheus_port}/api/v1/query?\${querystring}
+
+    [Arguments]   ${prometheus_ip}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   ${querystring}
+    ${auth}=   IF   '${prometheus_password}'!='${EMPTY}'   Create List   ${prometheus_user}   ${prometheus_password}   ELSE   Set Variable   None
+    Create Session   prometheus   http://${prometheus_ip}:${prometheus_port}   timeout=${timeout}   max_retries=${max_retries}   verify=false   auth=${auth}
+    ${resp}=   GET On Session   prometheus   /api/v1/query?${querystring}   timeout=${timeout}
+    Status Should Be   200   ${resp}
+    [Return]   ${resp.json()}
diff --git a/robot-systest/lib/repo_lib.resource b/robot-systest/lib/repo_lib.resource
deleted file mode 100644 (file)
index a339255..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-*** Comments ***
-#   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   Library to deploy and delete OSM repos.
-
-Library   OperatingSystem
-
-Resource   ../lib/nsd_lib.resource
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-${REPO_DELETE_MAX_WAIT_TIME}   1min
-${REPO_DELETE_POL_TIME}   15sec
-
-
-*** Keywords ***
-Get Repos List
-    [Documentation]   Get the list of repos and log it.
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm repo-list
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Create Repo
-    [Documentation]   Create a repository in OSM with the name and options passed as arguments, and return the repo id.
-    [Arguments]   ${repo_name}   ${repo_uri}   ${repo_type}   ${user}   ${password}   ${additional_options}=""
-    ${user_attr}=   Set Variable If   '${user}'!='${EMPTY}'   --user ${user}   \
-    ${password_attr}=   Set Variable If   '${password}'!='${EMPTY}'   --password ${password}   \
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm repo-add --type ${repo_type} ${user_attr} ${password_attr} ${additional_options} ${repo_name} ${repo_uri}
-    Log   ${rc},${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Delete Repo
-    [Documentation]   Delete from OSM the repo passed as argument.
-    [Arguments]   ${repo_id}
-    ${rc}   ${stdout}=   Run Keyword And Continue On Failure   Run And Return RC And Output   osm repo-delete ${repo_id}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Log   ${stdout}
-    WAIT UNTIL KEYWORD SUCCEEDS   ${REPO_DELETE_MAX_WAIT_TIME}   ${REPO_DELETE_POL_TIME}   Check For NSD   ${repo_id}
-
-Check For Repo
-    [Documentation]   Check that a repository exists in OSM.
-    [Arguments]   ${repo_id}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm repo-list | awk '{print $2}' | grep ${repo_id}
-    Log   ${rc},${stdout}
-    Should Not Be Equal As Strings   ${stdout}   ${repo_id}
diff --git a/robot-systest/lib/repo_lib.robot b/robot-systest/lib/repo_lib.robot
new file mode 100644 (file)
index 0000000..8237b18
--- /dev/null
@@ -0,0 +1,52 @@
+#   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   Library to deploy and delete OSM repos.
+
+
+*** Variables ***
+${success_return_code}   0
+
+*** Keywords ***
+Get Repos List
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm repo-list
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Create Repo
+    [Arguments]   ${repo_name}   ${repo_uri}   ${repo_type}   ${user}   ${password}   ${additional_options}=""
+
+    ${user_attr}   Set Variable If   '${user}'!='${EMPTY}'   --user ${user}   \
+    ${password_attr}   Set Variable If   '${password}'!='${EMPTY}'   --password ${password}   \
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm repo-add --type ${repo_type} ${user_attr} ${password_attr} ${additional_options} ${repo_name} ${repo_uri}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Delete Repo
+    [Arguments]   ${repo_id}
+
+    ${rc}   ${stdout}=   Run Keyword And Continue On Failure   Run and Return RC and Output   osm repo-delete ${repo_id}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Log   ${stdout}
+    WAIT UNTIL KEYWORD SUCCEEDS   ${delete_max_wait_time}   ${delete_pol_time}   Check For NSD   ${repo_id}
+
+
+Check For Repo
+    [Arguments]   ${repo_id}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm repo-list | awk '{print $2}' | grep ${repo_id}
+    Should Not Be Equal As Strings   ${stdout}   ${repo_id}
diff --git a/robot-systest/lib/rest_lib.resource b/robot-systest/lib/rest_lib.resource
deleted file mode 100644 (file)
index 74e97e9..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-*** Comments ***
-#   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   Library with sol003 keywords and variables .
-
-Library   String
-Library   OperatingSystem
-Library   RequestsLibrary
-Library   JsonValidator
-Library   yaml
-Library   JSONLibrary
-
-Resource   ../lib/vim_lib.resource
-
-
-*** Variables ***
-@{SUCCESS_STATUS_CODE_LIST}   200   201   202   204
-${AUTH_TOKEN_URI}   /osm/admin/v1/tokens
-${REST_API_HOST}   ${EMPTY}
-${OSM_USER}   %{OSM_USER=admin}
-${OSM_PASSWORD}   %{OSM_PASSWORD=admin}
-${OSM_PROJECT}   %{OSM_PROJECT=admin}
-
-
-*** Keywords ***
-Get Auth Token
-    [Documentation]   Send a REST POST message to OSM to get an authentication token,
-    ...               and store the authentication token in a suite variable to be used later on.
-    Set REST API Host
-    Create Session   osmhit   ${REST_API_HOST}   disable_warnings=1
-    &{headers}=   Create Dictionary   Content-Type=application/json   Accept=application/json
-    &{data}=   Create Dictionary   username=${OSM_USER}   password=${OSM_PASSWORD}   project-id=${OSM_PROJECT}
-    ${resp}=   Post On Session   osmhit   ${AUTH_TOKEN_URI}   json=${data}   headers=${headers}
-    Log   ${resp}
-    Pass Execution If   ${resp.status_code} in ${SUCCESS_STATUS_CODE_LIST}   Get Auth Token completed
-    Set Suite Variable   ${TOKEN_STATUS_CODE}   ${resp.status_code}
-    ${access_token}=   Get Value From Json   ${resp.json()}   $..id
-    Set Test Variable   ${ACCESS_TOKEN}   ${access_token[0]}
-    Set Test Variable   ${TOKEN_RESPONSE}   ${resp}
-    Sleep   2s
-
-Set Dockerized Host
-    [Documentation]   Set the suite variable REST_API_HOST to be used in this library and the testsuites using it.
-    ...               This method must be used if the tests are run from a container in the same K8s cluster where OSM is running.
-    [Arguments]   ${env_host}
-    Set Suite Variable   ${REST_API_HOST}   https://${env_host}
-
-Set Standalone Host
-    [Documentation]   Set a suite variable REST_API_HOST to be used in this library and the testsuites using it.
-    ...               This method must be used if the tests are run from any place outside the K8s cluster where OSM is running.
-    [Arguments]   ${env_host}
-    Set Suite Variable   ${REST_API_HOST}   https://${env_host}:9999
-
-Read Directory
-    [Documentation]   Read Current Directory and return it
-    ${Directory}=   Replace String   ${CURDIR}   lib   resources/
-    ${json_path}=   Set Variable   ${Directory}
-    RETURN   ${json_path}
-
-Post Api Request
-    [Documentation]   Send to OSM a POST API message to OSM to the given uri with the given json data,
-    ...               and save response and status code in suite variables to be used later on.
-    [Arguments]   ${PostApi}   ${json_data}
-    Create Session   APISession   ${REST_API_HOST}
-    &{headers}=   Create Dictionary   Content-Type=application/json   Accept=application/json   Authorization=Bearer ${ACCESS_TOKEN}
-    ${request_response}=   Post On Session   APISession   ${PostApi}   json=${json_data}   headers=${headers}
-    Set Suite Variable   ${REQUEST_RESPONSE}   ${request_response}
-    ${response_statuscode}=   Convert To String   ${request_response.status_code}
-    Set Suite Variable   ${RESPONSE_STATUSCODE}   ${response_statuscode}
-
-Set REST API Host
-    [Documentation]   Set the REST_API_HOST suite variable from OSM_HOSTNAME env variable
-    ${nbi_host}=   Get Environment Variable   OSM_HOSTNAME
-    ${passed}=   Run Keyword And Return Status   Should Contain   ${nbi_host}   :
-    IF   ${passed}
-        Set Dockerized Host   ${nbi_host}
-    ELSE
-        Set Standalone Host   ${nbi_host}
-    END
-
-Get ID
-    [Documentation]   Examine a REQUEST_RESPONSE dictionary as JSON and return the requested key passed as argument.
-    [Arguments]   ${Key}
-    Pass Execution If   ${REQUEST_RESPONSE.status_code} in ${SUCCESS_STATUS_CODE_LIST}   Get Auth Token completed
-    ${id}=   Get Value From Json   ${REQUEST_RESPONSE.json()}   $..${Key}
-    RETURN   ${id[0]}
-
-Get Api Request
-    [Documentation]   Send to OSM a GET API message to OSM to the given uri,
-    ...               and save response and status code in suite variables to be used later on.
-    [Arguments]   ${uri}
-    Create Session   Session   ${REST_API_HOST}
-    &{headers}=   Create Dictionary   Content-Type=application/json   Accept=application/json   Authorization=Bearer ${ACCESS_TOKEN}
-    ${request_response}=   Get On Session   Session   ${uri}   headers=${headers}
-    Set Suite Variable   ${REQUEST_RESPONSE}   ${request_response}
-    ${response_statuscode}=   Convert To String   ${request_response.status_code}
-    Set Suite Variable   ${RESPONSE_STATUSCODE}   ${response_statuscode}
diff --git a/robot-systest/lib/rest_lib.robot b/robot-systest/lib/rest_lib.robot
new file mode 100644 (file)
index 0000000..ced8a21
--- /dev/null
@@ -0,0 +1,95 @@
+#   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   Library with sol003 keywords and variables .
+
+Library   RequestsLibrary
+Library   JsonValidator
+Library   yaml
+Library   JSONLibrary
+Library   String
+Library   OperatingSystem
+
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vim_lib.robot
+
+*** Variables ***
+@{success_status_code_list}   200   201   202   204
+${auth_token_uri}   /osm/admin/v1/tokens
+${HOST}   ${EMPTY}
+${osm_user}   %{OSM_USER=admin}
+${osm_password}   %{OSM_PASSWORD=admin}
+${osm_project}   %{OSM_PROJECT=admin}
+
+*** Keywords ***
+Get Auth Token
+    [Tags]   auth_token
+    Get Hostname
+    Create Session   osmhit   ${HOST}   disable_warnings=1
+    &{headers}   Create Dictionary   Content-Type=application/json   Accept=application/json
+    &{data}   Create Dictionary   username=${osm_user}   password=${osm_password}   project-id=${osm_project}
+    ${resp}=   Post On Session   osmhit   ${auth_token_uri}   json=${data}   headers=${headers}
+    Log   ${resp}
+    Pass Execution If   ${resp.status_code} in ${success_status_code_list}   Get Auth Token completed
+    Set Suite Variable   ${token_status_code}   ${resp.status_code}
+    ${access_token}=   Get Value From Json   ${resp.json()}   $..id
+    Set Test Variable   ${access_token}   ${access_token[0]}
+    Set Test Variable   ${token_response}   ${resp}
+    sleep   2s
+
+Set Dockerized Host
+    [Arguments]   ${env_host}
+    Set Suite Variable   ${HOST}   https://${env_host}
+
+Set Standalone Host
+    [Arguments]   ${env_host}
+    Set Suite Variable   ${HOST}   https://${env_host}:9999
+
+Read Directory
+    [Documentation]   To Read Current Direct ory
+    ${Directory}=   Replace String   ${CURDIR}   lib   resources/
+    ${json_path}=   Set Variable   ${Directory}
+    [Return]   ${JsonPath}
+
+Post Api Request
+    [Arguments]   ${PostApi}
+    [Documentation]   Keword to Post API Request
+    Create Session   APISession   ${HOST}
+    &{headers}   Create Dictionary   Content-Type=application/json   Accept=application/json   Authorization=Bearer ${access_token}
+    ${request_response}=   Post On Session   APISession   ${PostApi}   json=${updated_json_obj}   headers=${headers}
+    Set Suite Variable   ${request_response}
+    ${response_statuscode}   Convert To String   ${request_response.status_code}
+    Set Suite Variable   ${response_statuscode}
+
+Get Hostname
+    [Documentation]   Keyword to get the default osm Hostname
+    ${nbi_host}=   Get Environment Variable   OSM_HOSTNAME
+    ${passed}=   Run Keyword And Return Status   Should Contain   ${nbi_host}   :
+    Run Keyword If   ${passed}   Set Dockerized Host   ${nbi_host}
+    ...    ELSE   Set Standalone Host   ${nbi_host}
+
+Get ID
+    [Arguments]   ${Key}
+    Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Get Auth Token completed
+    ${id}=   Get Value From Json   ${request_response.json()}   $..${Key}
+    Set Suite Variable   ${value}   ${id[0]}
+    [Return]   ${value}
+
+Get Api Request
+    [Arguments]   ${uri}
+    [Documentation]   Keyword to Get API Request
+    Create Session   Session   ${HOST}
+    &{headers}   Create Dictionary   Content-Type=application/json   Accept=application/json   Authorization=Bearer ${access_token}
+    ${request_response}=   Get On Session   Session   ${uri}   headers=${Headers}
+    Set Suite Variable   ${request_response}
+    ${response_statuscode}   Convert To String   ${request_response.status_code}
+    Set Suite Variable   ${response_statuscode}
diff --git a/robot-systest/lib/role_lib.resource b/robot-systest/lib/role_lib.resource
deleted file mode 100644 (file)
index 1ba3a2d..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-*** Comments ***
-#   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   Library providing keywords for CRUD operations over roles with OSM client.
-Library   OperatingSystem
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-
-
-*** Keywords ***
-Create Role
-    [Documentation]   Create a role in OSM with the name passed as argument, and return the role id.
-    [Arguments]   ${role_name}
-    Should Not Be Empty   ${role_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm role-create ${role_name}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Update Role
-    [Documentation]   Update a role in OSM.
-    ...                 The extra parameters (like '--add') are given to this function in name=value format. These parameters will be appended to the 'osm role-update' command with the next syntax: --param_name=param_value
-    ...                 Example of execution:
-    ...                     Update Role   \${role_name}   add='vims: true'
-    [Arguments]   ${role_name}   @{optional_parameters}
-    ${osm_update_command}=   Set Variable   osm role-update ${role_name}
-    FOR   ${param}   IN   @{optional_parameters}
-        ${match}   ${param_name}   ${param_value}=   Should Match Regexp   ${param}   (.+)=(.+)   msg=Syntax error in optional parameters
-        Log   ${match},${param_name},${param_value}
-        ${osm_update_command}=   Catenate   ${osm_update_command}   --${param_name}=${param_value}
-    END
-    ${rc}   ${stdout}=   Run And Return Rc And Output   ${osm_update_command}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Check If Role Exists
-    [Documentation]   Check if a role exists in OSM.
-    [Arguments]   ${role_name}
-    Should Not Be Empty   ${role_name}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm role-list | awk 'NR>3 {print $2}' | grep "${role_name}"
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Check If User Has Role
-    [Documentation]   Check if a user has a role in a specific project in OSM.
-    [Arguments]   ${user_name}   ${role_name}   ${project_name}
-    Should Not Be Empty   ${user_name}
-    Should Not Be Empty   ${role_name}
-    Should Not Be Empty   ${project_name}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm user-show ${user_name} | grep -B1 "role_name" | grep -B1 "${role_name}" | grep "project_name" | grep "${project_name}"
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Delete Role
-    [Documentation]   Delete from OSM the role passed as argument.
-    [Arguments]   ${role_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm role-delete ${role_name}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
diff --git a/robot-systest/lib/role_lib.robot b/robot-systest/lib/role_lib.robot
new file mode 100644 (file)
index 0000000..984b69a
--- /dev/null
@@ -0,0 +1,71 @@
+#   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.
+
+*** Variables ***
+${success_return_code}   0
+
+
+*** Keywords ***
+Create Role
+    [Arguments]   ${role_name}
+
+    Should Not Be Empty   ${role_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm role-create ${role_name}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Update Role
+    [Documentation]   Updates a role in OSM.
+    ...                 The extra parameters (like '--add') are given to this function in name=value format. These parameters will be appended to the 'osm role-update' command with the next syntax: --param_name=param_value
+    ...                 Example of execution:
+    ...                     Update Role   \${role_name}   add='vims: true'
+
+    [Arguments]   ${role_name}   @{optional_parameters}
+
+    ${osm_update_command}=   Set Variable   osm role-update ${role_name}
+    FOR   ${param}   IN   @{optional_parameters}
+        ${match}   ${param_name}   ${param_value} =   Should Match Regexp   ${param}   (.+)=(.+)   msg=Syntax error in optional parameters
+        ${osm_update_command}=   Catenate   ${osm_update_command}   --${param_name}=${param_value}
+    END
+    ${rc}   ${stdout}=   Run and Return RC and Output   ${osm_update_command}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Check If Role Exists
+    [Arguments]   ${role_name}
+
+    Should Not Be Empty   ${role_name}
+    ${rc}   ${stdout}=   Run And Return RC And Output   osm role-list | awk 'NR>3 {print $2}' | grep "${role_name}"
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Check If User Has Role
+    [Arguments]   ${user_name}   ${role_name}   ${project_name}
+
+    Should Not Be Empty   ${user_name}
+    Should Not Be Empty   ${role_name}
+    Should Not Be Empty   ${project_name}
+    ${rc}   ${stdout}=   Run And Return RC And Output   osm user-show ${user_name} | grep -B1 "role_name" | grep -B1 "${role_name}" | grep "project_name" | grep "${project_name}"
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Delete Role
+    [Arguments]   ${role_name}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm role-delete ${role_name}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
diff --git a/robot-systest/lib/sdnc_lib.resource b/robot-systest/lib/sdnc_lib.resource
deleted file mode 100644 (file)
index c9cd8c7..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-*** Comments ***
-#   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   Library to manage SDNCs.
-
-Library   String
-Library   Collections
-Library   OperatingSystem
-
-Resource   ../lib/prometheus_lib.resource
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-${SDNC_DELETE_MAX_WAIT_TIME}   1min
-${SDNC_DELETE_POL_TIME}   15sec
-${SDNC_STATUS_MAX_WAIT_TIME}   6min
-${SDNC_STATUS_POL_TIME}   1min
-
-
-*** Keywords ***
-Create SDNC
-    [Documentation]   Register an SDN Controller in OSM.
-    ...                 The optional parameters (such as 'switch_dpid' or 'ip-address') are given to this function in name=value format. These parameters will be appended to the 'osm sdnc-create' command with the next syntax: --param_name=param_value
-    ...                 Returns the ID of the created SDNC Target.
-    ...                 Example of execution:
-    ...                     \${sdnc_id}=   Create SDNC   \${sdnc_name}   \${sdnc_user}   \${sdnc_password}   \${sdnc_url}   \${sdnc_type}   switch_dpid='{...}'
-    [Arguments]   ${sdnc_name}   ${sdnc_user}   ${sdnc_password}   ${sdnc_url}   ${sdnc_type}   @{optional_parameters}
-    ${osm_sdnc_create_command}=   Set Variable   osm sdnc-create --name ${sdnc_name} --user ${sdnc_user} --password ${sdnc_password} --url ${sdnc_url} --type ${sdnc_type}
-    FOR   ${param}   IN   @{optional_parameters}
-        ${match}   ${param_name}   ${param_value}=   Should Match Regexp   ${param}   (.+)=(.+)   msg=Syntax error in optional parameters
-        Log   ${match},${param_name},${param_value}
-        ${osm_sdnc_create_command}=   Catenate   ${osm_sdnc_create_command}   --${param_name}=${param_value}
-    END
-    ${rc}   ${stdout}=   Run And Return Rc And Output   ${osm_sdnc_create_command}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Check For SDNC To Be Deleted
-    [Documentation]   Check if an SDN controller identified by name is not present in OSM.
-    [Arguments]   ${sdnc_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm sdnc-list | awk '{print $2}' | grep ${sdnc_name}
-    Log   ${rc},${stdout}
-    Should Not Be Equal As Strings   ${stdout}   ${sdnc_name}
-
-Delete SDNC
-    [Documentation]   Unregister/delete from OSM an SDN controller identified by name.
-    [Arguments]   ${sdnc_name}
-    ${rc}   ${stdout}=   Run Keyword And Continue On Failure   Run And Return Rc And Output   osm sdnc-delete ${sdnc_name}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Wait Until Keyword Succeeds   ${SDNC_DELETE_MAX_WAIT_TIME}   ${SDNC_DELETE_POL_TIME}   Check For SDNC To Be Deleted   ${sdnc_name}
-
-Get SDNC List
-    [Documentation]   Get the list of SDN controllers from OSM and log it.
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm sdnc-list
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Check For SDNC
-    [Documentation]   Check if an SDN Controller identified by name or id exists in OSM and is enabled.
-    [Arguments]   ${sdnc_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm sdnc-show ${sdnc_id} | grep -io ENABLED
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Check For SDNC Status
-    [Documentation]   Check in a loop if the value of the metric osm_sdnc_status in Prometheus for the SDN controller is 1 (reachable).
-    [Arguments]   ${sdnc_id}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
-    Wait Until Keyword Succeeds   ${SDNC_STATUS_MAX_WAIT_TIME}   ${SDNC_STATUS_POL_TIME}   Check If SDNC Is Available   ${sdnc_id}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
-
-Get SDNC ID
-    [Documentation]   Check if an SDN controller identified by name exists in OSM, and return the id.
-    [Arguments]   ${sdnc_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm sdnc-list | grep " ${sdnc_name} " | awk '{print $4}'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Not Be Equal As Strings   ${stdout}   ${EMPTY}   msg=SDNC '${sdnc_name}' not found   values=false
-    RETURN   ${stdout}
-
-Check If SDNC Is Available
-    [Documentation]   Check if the value of the metric osm_sdnc_status in Prometheus for the SDN controller is 1 (reachable).
-    [Arguments]   ${sdnc_id}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
-    ${metric}=   Get Metric   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   osm_sdnc_status   sdnc_id=${sdnc_id}
-    Should Be Equal As Integers   ${metric}   1   msg=SDNC '${sdnc_id}' is not active   values=false
diff --git a/robot-systest/lib/sdnc_lib.robot b/robot-systest/lib/sdnc_lib.robot
new file mode 100644 (file)
index 0000000..a897675
--- /dev/null
@@ -0,0 +1,101 @@
+#   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   Library to manage SDNCs.
+
+Library   String
+Library   Collections
+Library   OperatingSystem
+
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/prometheus_lib.robot
+
+
+*** Variables ***
+${success_return_code}   0
+${delete_max_wait_time}   1min
+${delete_pol_time}   15sec
+${sdnc_status_max_wait_time}   6min
+${sdnc_status_pol_time}   1min
+
+
+*** Keywords ***
+Create SDNC
+    [Documentation]   Creates an SDNC in OSM.
+    ...                 The optional parameters (such as 'switch_dpid' or 'ip-address') are given to this function in name=value format. These parameters will be appended to the 'osm sdnc-create' command with the next syntax: --param_name=param_value
+    ...                 Returns the ID of the created SDNC Target.
+    ...                 Example of execution:
+    ...                     \${sdnc_id}=   Create SDNC   \${sdnc_name}   \${sdnc_user}   \${sdnc_password}   \${sdnc_url}   \${sdnc_type}   switch_dpid='{...}'
+
+    [Arguments]   ${sdnc_name}   ${sdnc_user}   ${sdnc_password}   ${sdnc_url}   ${sdnc_type}   @{optional_parameters}
+
+    ${osm_sdnc_create_command}=   Set Variable   osm sdnc-create --name ${sdnc_name} --user ${sdnc_user} --password ${sdnc_password} --url ${sdnc_url} --type ${sdnc_type}
+    FOR   ${param}   IN   @{optional_parameters}
+        ${match}   ${param_name}   ${param_value} =   Should Match Regexp   ${param}   (.+)=(.+)   msg=Syntax error in optional parameters
+        ${osm_sdnc_create_command}=   Catenate   ${osm_sdnc_create_command}   --${param_name}=${param_value}
+    END
+    ${rc}   ${stdout}=   Run and Return RC and Output   ${osm_sdnc_create_command}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Check for SDNC To Be Deleted
+    [Arguments]   ${sdnc_name}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm sdnc-list | awk '{print $2}' | grep ${sdnc_name}
+    Should Not Be Equal As Strings   ${stdout}   ${sdnc_name}
+
+
+Delete SDNC
+    [Arguments]   ${sdnc_name}
+
+    ${rc}   ${stdout}=   Run Keyword And Continue On Failure   Run and Return RC and Output   osm sdnc-delete ${sdnc_name}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Wait Until Keyword Succeeds   ${delete_max_wait_time}   ${delete_pol_time}   Check for SDNC To Be Deleted   ${sdnc_name}
+
+
+Get SDNC List
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm sdnc-list
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Check for SDNC
+    [Arguments]   ${sdnc_id}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm sdnc-show ${sdnc_id} | grep -io ENABLED
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Check for SDNC Status
+    [Arguments]   ${sdnc_id}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
+
+    Wait Until Keyword Succeeds   ${sdnc_status_max_wait_time}   ${sdnc_status_pol_time}   Check If SDNC Is Available   ${sdnc_id}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
+
+
+Get SDNC ID
+    [Arguments]   ${sdnc_name}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm sdnc-list | grep " ${sdnc_name} " | awk '{print $4}'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Not Be Equal As Strings   ${stdout}   ${EMPTY}   msg=SDNC '${sdnc_name}' not found   values=false
+    [Return]   ${stdout}
+
+
+Check If SDNC Is Available
+    [Arguments]   ${sdnc_id}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
+
+    ${metric}=   Get Metric   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   osm_sdnc_status   sdnc_id=${sdnc_id}
+    Should Be Equal As Integers   ${metric}   1   msg=SDNC '${sdnc_id}' is not active   values=false
diff --git a/robot-systest/lib/ssh_lib.resource b/robot-systest/lib/ssh_lib.resource
deleted file mode 100644 (file)
index 15d48a6..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-*** Comments ***
-#   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   Library providing keywords to interact with NF via SSH.
-Library   SSHLibrary
-
-
-*** Keywords ***
-Test SSH Connection
-    [Documentation]   Test the SSH connection to the host with the user and credentials passed as arguments.
-    [Arguments]   ${host}   ${username}   ${password}   ${privatekey}
-    Open Connection   ${host}
-    IF   "${password}" != "${EMPTY}"
-        Login   ${username}   ${password}
-    ELSE
-        Login With Public Key   ${username}   ${privatekey}
-    END
-    Execute Command   hostname
-    Close All Connections
-
-Check If Remote File Exists
-    [Documentation]   Check via SSH if a file exists in in the remote host, using the user and credentials passed as arguments.
-    [Arguments]   ${host}   ${username}   ${password}   ${privatekey}   ${file}
-    Open Connection   ${host}
-    IF   "${password}" != "${EMPTY}"
-        Login   ${username}   ${password}
-    ELSE
-        Login With Public Key   ${username}   ${privatekey}
-    END
-    ${rc}=   Execute Command   ls ${file} >& /dev/null   return_stdout=False   return_rc=True
-    Close All Connections
-    Should Be Equal As Integers   ${rc}   0
-
-Check If Remote Folder Exists
-    [Documentation]   Check via SSH if a folder exists in in the remote host, using the user and credentials passed as arguments.
-    [Arguments]   ${host}   ${username}   ${password}   ${privatekey}   ${folder}
-    Open Connection   ${host}
-    IF   "${password}" != "${EMPTY}"
-        Login   ${username}   ${password}
-    ELSE
-        Login With Public Key   ${username}   ${privatekey}
-    END
-    ${output}=   Execute Command   ls -d ${folder}
-    Close All Connections
-    Should Be Equal As Strings   ${output}   ${folder}
-
-Get Remote File Content
-    [Documentation]   Get via SSH the content of a remote file and return it.
-    [Arguments]   ${host}   ${username}   ${password}   ${privatekey}   ${file}
-    Open Connection   ${host}
-    IF   "${password}" != "${EMPTY}"
-        Login   ${username}   ${password}
-    ELSE
-        Login With Public Key   ${username}   ${privatekey}
-    END
-    ${output}=   Execute Command   cat ${file}
-    Close All Connections
-    RETURN   ${output}
-
-Ping Many
-    [Documentation]   Connect via SSH to a remote host and test ping to a list of IP addresses, passed as argument.
-    [Arguments]   ${host}   ${username}   ${password}   ${privatekey}   @{ip_list}
-    Open Connection   ${host}
-    IF   "${password}" != "${EMPTY}"
-        Login   ${username}   ${password}
-    ELSE
-        Login With Public Key   ${username}   ${privatekey}
-    END
-    FOR   ${ip}   IN   @{ip_list}
-        ${result}=   Execute Command   ping -c 5 -W 1 ${ip} > /dev/null && echo OK   shell=True
-        Log   ${result}
-        Should Contain   ${result}   OK
-    END
-    Close All Connections
-
-Execute Remote Command Check Rc Return Output
-    [Documentation]   Execute via SSH a command in a remote host and, if the command succeeds, return the output.
-    [Arguments]   ${host}   ${username}   ${password}   ${privatekey}   ${command}
-    Open Connection   ${host}
-    IF   "${password}" != "${EMPTY}"
-        Login   ${username}   ${password}
-    ELSE
-        Login With Public Key   ${username}   ${privatekey}
-    END
-    ${stdout}   ${rc}=   Execute Command   ${command}   return_rc=True   return_stdout=True
-    Log   ${rc}
-    Log   ${stdout}
-    Close All Connections
-    Should Be Equal As Integers   ${rc}   0
-    RETURN   ${stdout}
diff --git a/robot-systest/lib/ssh_lib.robot b/robot-systest/lib/ssh_lib.robot
new file mode 100644 (file)
index 0000000..3e3c00b
--- /dev/null
@@ -0,0 +1,79 @@
+#   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.
+
+*** Keywords ***
+Test SSH Connection
+    [Arguments]   ${host}   ${username}   ${password}   ${privatekey}
+
+    Open Connection   ${host}
+    Run Keyword If   '${password}'!='${EMPTY}'   Login   ${username}   ${password}
+    ...   ELSE   Login With Public Key   ${username}   ${privatekey}
+    Execute Command   hostname
+    Close All Connections
+
+Check If remote File Exists
+    [Arguments]   ${host}   ${username}   ${password}   ${privatekey}   ${file}
+
+    Open Connection   ${host}
+    Run Keyword If   '${password}'!='${EMPTY}'   Login   ${username}   ${password}
+    ...   ELSE   Login With Public Key   ${username}   ${privatekey}
+    ${rc}=   Execute Command   ls ${file} >& /dev/null   return_stdout=False   return_rc=True
+    Close All Connections
+    Should Be Equal As Integers   ${rc}   0
+
+Check If Remote Folder Exists
+    [Arguments]   ${host}   ${username}   ${password}   ${privatekey}   ${folder}
+
+    Open Connection   ${host}
+    Run Keyword If   '${password}'!='${EMPTY}'   Login   ${username}   ${password}
+    ...   ELSE   Login With Public Key   ${username}   ${privatekey}
+    ${output}=   Execute Command   ls -d ${folder}
+    Close All Connections
+    Should Be Equal As Strings   ${output}   ${folder}
+
+Get Remote File Content
+    [Arguments]   ${host}   ${username}   ${password}   ${privatekey}   ${file}
+
+    Open Connection   ${host}
+    Run Keyword If   '${password}'!='${EMPTY}'   Login   ${username}   ${password}
+    ...   ELSE   Login With Public Key   ${username}   ${privatekey}
+    ${output}=   Execute Command   cat ${file}
+    Close All Connections
+    [Return]   ${output}
+
+Ping Many
+    [Arguments]   ${host}   ${username}   ${password}   ${privatekey}   @{ip_list}
+
+    Open Connection   ${host}
+    Run Keyword If   '${password}'!='${EMPTY}'   Login   ${username}   ${password}
+    ...   ELSE   Login With Public Key   ${username}   ${privatekey}
+    FOR   ${ip}   IN   @{ip_list}
+        ${result}=   Execute Command   ping -c 5 -W 1 ${ip} > /dev/null && echo OK   shell=True
+        Log   ${result}
+        Should Contain   ${result}   OK
+    END
+    Close All Connections
+
+
+Execute Remote Command Check Rc Return Output
+    [Arguments]   ${host}   ${username}   ${password}   ${privatekey}   ${command}
+
+    Open Connection   ${host}
+    Run Keyword If   '${password}'!='${EMPTY}'   Login   ${username}   ${password}
+    ...   ELSE   Login With Public Key   ${username}   ${privatekey}
+    ${stdout}   ${rc}=   Execute Command   ${command}   return_rc=True   return_stdout=True
+    Log   ${rc}
+    Log   ${stdout}
+    Close All Connections
+    Should Be Equal As Integers   ${rc}   0
+    [Return]   ${stdout}
+
diff --git a/robot-systest/lib/user_lib.resource b/robot-systest/lib/user_lib.resource
deleted file mode 100644 (file)
index 8dd7601..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-*** Comments ***
-#   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   Library providing keywords for CRUD operations over Network Slice Templates with OSM client.
-Library   OperatingSystem
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-
-
-*** Keywords ***
-Create User
-    [Documentation]   Create a user in OSM with the name and password passed as arguments, and return the user id.
-    [Arguments]   ${user_name}   ${user_password}
-    Should Not Be Empty   ${user_name}
-    Should Not Be Empty   ${user_password}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm user-create ${user_name} --password ${user_password}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Update User Password
-    [Documentation]   Update the password of a user in OSM.
-    [Arguments]   ${user_name}   ${user_password}   ${user_new_password}
-    Should Not Be Empty   ${user_name}
-    Should Not Be Empty   ${user_password}
-    Should Not Be Empty   ${user_new_password}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm user-update ${user_name} --current-password ${user_password} --new-password ${user_new_password}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Update User Role
-    [Documentation]   Update the role of a user in a project in OSM.
-    [Arguments]   ${user_name}   ${project_name}   ${role_name}
-    Should Not Be Empty   ${user_name}
-    Should Not Be Empty   ${project_name}
-    Should Not Be Empty   ${role_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm user-update --add-project-role '${project_name},${role_name}' ${user_name}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Check If User Exists
-    [Documentation]   Check if a user exists in OSM.
-    [Arguments]   ${user_name}
-    Should Not Be Empty   ${user_name}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm user-list | awk 'NR>3 {print $2}' | grep "${user_name}"
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Delete User
-    [Documentation]   Delete from OSM the user passed as argument.
-    [Arguments]   ${user_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm user-delete ${user_name}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
diff --git a/robot-systest/lib/user_lib.robot b/robot-systest/lib/user_lib.robot
new file mode 100644 (file)
index 0000000..4e5893c
--- /dev/null
@@ -0,0 +1,65 @@
+#   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.
+
+*** Variables ***
+${success_return_code}   0
+
+
+*** Keywords ***
+Create User
+    [Arguments]   ${user_name}   ${user_password}
+
+    Should Not Be Empty   ${user_name}
+    Should Not Be Empty   ${user_password}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm user-create ${user_name} --password ${user_password}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Update User Password
+    [Arguments]   ${user_name}   ${user_password}   ${user_new_password}
+
+    Should Not Be Empty   ${user_name}
+    Should Not Be Empty   ${user_password}
+    Should Not Be Empty   ${user_new_password}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm user-update ${user_name} --current-password ${user_password} --new-password ${user_new_password}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Update User Role
+    [Arguments]   ${user_name}   ${project_name}   ${role_name}
+
+    Should Not Be Empty   ${user_name}
+    Should Not Be Empty   ${project_name}
+    Should Not Be Empty   ${role_name}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm user-update --add-project-role '${project_name},${role_name}' ${user_name}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Check If User Exists
+    [Arguments]   ${user_name}
+
+    Should Not Be Empty   ${user_name}
+    ${rc}   ${stdout}=   Run And Return RC And Output   osm user-list | awk 'NR>3 {print $2}' | grep "${user_name}"
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Delete User
+    [Arguments]   ${user_name}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm user-delete ${user_name}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
diff --git a/robot-systest/lib/vim_lib.resource b/robot-systest/lib/vim_lib.resource
deleted file mode 100644 (file)
index e46f632..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-*** Comments ***
-#   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   Library to manage VIM Targets.
-
-Library   String
-Library   Collections
-Library   OperatingSystem
-
-Resource   ../lib/prometheus_lib.resource
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-${VIM_DELETE_MAX_WAIT_TIME}   1min
-${VIM_DELETE_POL_TIME}   15sec
-${VIM_STATUS_MAX_WAIT_TIME}   3min
-${VIM_STATUS_POL_TIME}   15sec
-${VIM_OPSTATE_MAX_WAIT_TIME}   40sec
-${VIM_OPSTATE_POL_TIME}   10sec
-
-
-*** Keywords ***
-Create VIM Target
-    [Documentation]   Register a VIM account in OSM and return the id.
-    ...                 The optional parameters (such as 'config' or 'sdn_controller') are given to this function in name=value format. These parameters will be appended to the 'osm vim-create' command with the next syntax: --param_name=param_value
-    ...                 Return the ID of the created VIM Target.
-    ...                 Example of execution:
-    ...                     \${vim_account_id}=   Create VIM Target   \${vim_name}   \${vim_user}   \${vim_password}   \${vim_auth_url}   \${vim_tenant}   \${vim_account_type}   config='{...}'
-    [Arguments]   ${vim_name}   ${vim_user}   ${vim_password}   ${vim_auth_url}   ${vim_tenant}   ${vim_account_type}   @{optional_parameters}
-    ${osm_vim_create_command}=   Set Variable   osm vim-create --name ${vim_name} --user ${vim_user} --password ${vim_password} --auth_url ${vim_auth_url} --tenant ${vim_tenant} --account_type ${vim_account_type}
-    FOR   ${param}   IN   @{optional_parameters}
-        ${match}   ${param_name}   ${param_value}=   Should Match Regexp   ${param}   (.+)=(.+)   msg=Syntax error in optional parameters
-        Log   ${match},${param_name},${param_value}
-        ${osm_vim_create_command}=   Catenate   ${osm_vim_create_command}   --${param_name}=${param_value}
-    END
-    ${rc}   ${stdout}=   Run And Return Rc And Output   ${osm_vim_create_command}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Delete VIM Target
-    [Documentation]   Unregister/delete a VIM account from OSM.
-    [Arguments]   ${vim_name}
-    ${rc}   ${stdout}=   Run Keyword And Continue On Failure   Run And Return Rc And Output   osm vim-delete ${vim_name}
-    Log   ${rc},${stdout}
-    Wait Until Keyword Succeeds   ${VIM_DELETE_MAX_WAIT_TIME}   ${VIM_DELETE_POL_TIME}   Check For VIM Target   ${vim_name}
-
-Get VIM Targets
-    [Documentation]   Get the list of VIM accounts in OSM.
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vim-list
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Check For VIM Target
-    [Documentation]   Check if a VIM account has been registered in OSM.
-    [Arguments]   ${vim_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vim-list | awk '{print $2}' | grep ${vim_name}
-    Log   ${rc},${stdout}
-    Should Not Be Equal As Strings   ${stdout}   ${vim_name}
-
-Check For VIM Target Metric
-    [Documentation]   Check in a loop if the metric of osm_vim_status is present in Prometheus for the VIM account in OSM.
-    [Arguments]   ${vim_name}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
-    ${vim_account_id}=   Get VIM Target ID   ${vim_name}
-    Wait Until Keyword Succeeds   ${VIM_STATUS_MAX_WAIT_TIME}   ${VIM_STATUS_POL_TIME}   Check If VIM Target Has Metric   ${vim_account_id}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
-
-Check For VIM Target Status
-    [Documentation]   Check in a loop if the value of the metric osm_vim_status in Prometheus for the VIM account is 1 (reachable).
-    [Arguments]   ${vim_name}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
-    ${vim_account_id}=   Get VIM Target ID   ${vim_name}
-    Wait Until Keyword Succeeds   ${VIM_STATUS_MAX_WAIT_TIME}   ${VIM_STATUS_POL_TIME}   Check If VIM Target Is Available   ${vim_account_id}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
-
-Get VIM Target ID
-    [Documentation]   Get from OSM the VIM account id associated to the VIM account name passed as parameter.
-    [Arguments]   ${vim_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vim-list | grep " ${vim_name} " | awk '{print $4}'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Not Be Equal As Strings   ${stdout}   ${EMPTY}   msg=VIM Target '${vim_name}' not found   values=false
-    RETURN   ${stdout}
-
-Check VIM Target Operational State
-    [Documentation]   Check if the VIM account in OSM is enabled.
-    [Arguments]   ${vim_name}
-    Wait Until Keyword Succeeds   ${VIM_OPSTATE_MAX_WAIT_TIME}   ${VIM_OPSTATE_POL_TIME}   Check If VIM Target Is Enabled   ${vim_name}
-
-Check If VIM Target Is Enabled
-    [Documentation]   Check if the VIM account passed as argument is enabled in OSM (meaning that the RO could reach the VIM account).
-    [Arguments]   ${vim_name}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vim-list | grep " ${vim_name} " | awk '{print $6}'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Should Be Equal As Strings   ${stdout}   ENABLED   msg=VIM Target '${vim_name}' is not enabled   values=false
-
-Check If VIM Target Is Available
-    [Documentation]   Check if the value of the metric osm_vim_status in Prometheus for the VIM account is 1 (reachable).
-    [Arguments]   ${vim_account_id}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
-    ${metric}=   Get Metric   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   osm_vim_status   vim_account_id=${vim_account_id}
-    Should Be Equal As Integers   ${metric}   1   msg=VIM Target '${vim_account_id}' is not active   values=false
-
-Check If VIM Target Has Metric
-    [Documentation]   Check if the metric of osm_vim_status is present in Prometheus for the VIM account in OSM.
-    [Arguments]   ${vim_account_id}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
-    ${metric}=   Get Metric   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   osm_vim_status   vim_account_id=${vim_account_id}
-    Should Be True   ${metric} <2   msg=VIM Target '${vim_account_id}' has no metric
diff --git a/robot-systest/lib/vim_lib.robot b/robot-systest/lib/vim_lib.robot
new file mode 100644 (file)
index 0000000..2c96802
--- /dev/null
@@ -0,0 +1,124 @@
+#   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   Library to manage VIM Targets.
+
+Library   String
+Library   Collections
+Library   OperatingSystem
+
+# Gerardo
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/prometheus_lib.robot
+
+
+*** Variables ***
+${success_return_code}   0
+${delete_max_wait_time}   1min
+${delete_pol_time}   15sec
+${vim_status_max_wait_time}   3min
+${vim_status_pol_time}   15sec
+${vim_opstate_max_wait_time}   40sec
+${vim_opstate_pol_time}   10sec
+
+
+*** Keywords ***
+Create VIM Target
+    [Documentation]   Create a VIM Target in OSM.
+    ...                 The optional parameters (such as 'config' or 'sdn_controller') are given to this function in name=value format. These parameters will be appended to the 'osm vim-create' command with the next syntax: --param_name=param_value
+    ...                 Return the ID of the created VIM Target.
+    ...                 Example of execution:
+    ...                     \${vim_account_id}=   Create VIM Target   \${vim_name}   \${vim_user}   \${vim_password}   \${vim_auth_url}   \${vim_tenant}   \${vim_account_type}   config='{...}'
+
+    [Arguments]   ${vim_name}   ${vim_user}   ${vim_password}   ${vim_auth_url}   ${vim_tenant}   ${vim_account_type}   @{optional_parameters}
+
+    ${osm_vim_create_command}=   Set Variable   osm vim-create --name ${vim_name} --user ${vim_user} --password ${vim_password} --auth_url ${vim_auth_url} --tenant ${vim_tenant} --account_type ${vim_account_type}
+    FOR   ${param}   IN   @{optional_parameters}
+        ${match}   ${param_name}   ${param_value} =   Should Match Regexp   ${param}   (.+)=(.+)   msg=Syntax error in optional parameters
+        ${osm_vim_create_command}=   Catenate   ${osm_vim_create_command}   --${param_name}=${param_value}
+    END
+    ${rc}   ${stdout}=   Run and Return RC and Output   ${osm_vim_create_command}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Delete VIM Target
+    [Arguments]   ${vim_name}
+
+    ${rc}   ${stdout}=   Run Keyword And Continue On Failure   Run and Return RC and Output   osm vim-delete ${vim_name}
+    Log   ${stdout}
+    Wait Until Keyword Succeeds   ${delete_max_wait_time}   ${delete_pol_time}   Check for VIM Target   ${vim_name}
+
+
+Get VIM Targets
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vim-list
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Check for VIM Target
+    [Arguments]   ${vim_name}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vim-list | awk '{print $2}' | grep ${vim_name}
+    Should Not Be Equal As Strings   ${stdout}   ${vim_name}
+
+
+Check for VIM Target Metric
+    [Arguments]   ${vim_name}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
+
+    ${vim_account_id}=   Get VIM Target ID   ${vim_name}
+    Wait Until Keyword Succeeds   ${vim_status_max_wait_time}   ${vim_status_pol_time}   Check If VIM Target Has Metric   ${vim_account_id}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
+
+
+Check for VIM Target Status
+    [Arguments]   ${vim_name}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
+
+    ${vim_account_id}=   Get VIM Target ID   ${vim_name}
+    Wait Until Keyword Succeeds   ${vim_status_max_wait_time}   ${vim_status_pol_time}   Check If VIM Target Is Available   ${vim_account_id}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
+
+
+Get VIM Target ID
+    [Arguments]   ${vim_name}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vim-list | grep " ${vim_name} " | awk '{print $4}'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Not Be Equal As Strings   ${stdout}   ${EMPTY}   msg=VIM Target '${vim_name}' not found   values=false
+    [Return]   ${stdout}
+
+
+Check VIM Target Operational State
+    [Arguments]   ${vim_name}
+
+    Wait Until Keyword Succeeds   ${vim_opstate_max_wait_time}   ${vim_opstate_pol_time}   Check If VIM Target Is Enabled   ${vim_name}
+
+
+Check If VIM Target Is Enabled
+    [Arguments]   ${vim_name}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vim-list | grep " ${vim_name} " | awk '{print $6}'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Should Be Equal As Strings   ${stdout}   ENABLED   msg=VIM Target '${vim_name}' is not enabled   values=false
+
+
+Check If VIM Target Is Available
+    [Arguments]   ${vim_account_id}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
+
+    ${metric}=   Get Metric   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   osm_vim_status   vim_account_id=${vim_account_id}
+    Should Be Equal As Integers   ${metric}   1   msg=VIM Target '${vim_account_id}' is not active   values=false
+
+
+Check If VIM Target Has Metric
+    [Arguments]   ${vim_account_id}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
+
+    ${metric}=   Get Metric   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   osm_vim_status   vim_account_id=${vim_account_id}
+    Should Be True   ${metric} <2   msg=VIM Target '${vim_account_id}' has no metric
diff --git a/robot-systest/lib/vnf_lib.resource b/robot-systest/lib/vnf_lib.resource
deleted file mode 100644 (file)
index 2700135..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-*** Comments ***
-#   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   Library providing keywords for CRUD operations over VNF instances with OSM client.
-Library   OperatingSystem
-Library   String
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-
-
-*** Keywords ***
-Get Vnf List
-    [Documentation]   Get the list of VNF instances and return it.
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnf-list 2>&1
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Get VNF VIM ID
-    [Documentation]   Get the identifier of the first VDU of a VNF instance. Useful to get the id when a VNF has a single VDU.
-    [Arguments]   ${vnf_id}
-    Should Not Be Empty   ${vnf_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnf-show ${vnf_id} --literal | yq -r '.vdur[]."vim-id"'
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    RETURN   ${stdout}
-
-Get VDU List From VNF
-    [Documentation]   Return a list of the VDU instance ids of a VNF instance
-    [Arguments]   ${vnf_id}
-    Should Not Be Empty   ${vnf_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnf-show ${vnf_id} --literal | yq '.vdur[].id'
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    @{vdur_ids}=   Split String   ${stdout}
-    RETURN   @{vdur_ids}
-
-Get VDU VIM Id
-    [Documentation]   Return the VIM VM ID for a VDU
-    [Arguments]   ${vnf_id}   ${vdur_id}
-    Should Not Be Empty   ${vnf_id}
-    ${rc}   ${vm_vim_id}=   Run And Return Rc And Output   osm vnf-show ${vnf_id} --literal | yq '.vdur[] | select(.id == "'${vdur_id}'")' | yq -r '."vim-id"'
-    Log   ${vm_vim_id}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${vm_vim_id}   values=False
-    RETURN   ${vm_vim_id}
-
-Get Vnf Vdur IPs
-    [Documentation]   Return a list with the IP addresses of the VDU records of a VNF instance.
-    [Arguments]   ${vnf_id}
-    Should Not Be Empty   ${vnf_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnf-show ${vnf_id} --literal | yq -r '.vdur[].interfaces[]."ip-address"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    @{ip}=   Split String   ${stdout}
-    RETURN   @{ip}
-
-Get Vdu Attribute
-    [Documentation]   Return an attribute from VDU records selected by count_index of a VNF instance.
-    [Arguments]   ${vnf_id}   ${attribute}   ${count_index}=0
-    Should Not Be Empty   ${vnf_id}
-    Should Not Be Empty   ${attribute}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnf-show ${vnf_id} --literal | yq '.vdur[] | select(."count-index" == ${count_index})' | yq -r '."${attribute}"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    RETURN   ${stdout}
diff --git a/robot-systest/lib/vnf_lib.robot b/robot-systest/lib/vnf_lib.robot
new file mode 100644 (file)
index 0000000..b7d6cc3
--- /dev/null
@@ -0,0 +1,81 @@
+#   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.
+
+*** Variables ***
+${success_return_code}   0
+
+
+*** Keywords ***
+Get Vnf List
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-list 2>&1
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get VNF VIM ID
+    [Arguments]   ${vnf_id}
+
+    Should Not Be Empty   ${vnf_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id} --literal | yq -r '.vdur[]."vim-id"'
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]   ${stdout}
+
+
+Get VDU list from VNF
+    [Documentation]   Return a list of the VDUr ids for a VNF
+
+    [Arguments]   ${vnf_id}
+
+    Should Not Be Empty   ${vnf_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id} --literal | yq '.vdur[].id'
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    @{vdur_ids}=   Split String   ${stdout}
+    [Return]   @{vdur_ids}
+
+
+Get VDU VIM Id
+    [Documentation]   Return the VIM VM ID for a VDU
+
+    [Arguments]   ${vnf_id}   ${vdur_id}
+
+    Should Not Be Empty   ${vnf_id}
+    ${rc}   ${vm_vim_id}=   Run and Return RC and Output   osm vnf-show ${vnf_id} --literal | yq '.vdur[] | select(.id == "'${vdur_id}'")' | yq -r '."vim-id"'
+    Log   ${vm_vim_id}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${vm_vim_id}   values=False
+    [Return]   ${vm_vim_id}
+
+
+Get Vnf Vdur IPs
+    [Documentation]   Return a list with the IP addresses of the VDU records of a VNF instance.
+
+    [Arguments]   ${vnf_id}
+
+    Should Not Be Empty   ${vnf_id}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id} --literal | yq -r '.vdur[].interfaces[]."ip-address"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    @{ip} =   Split String   ${stdout}
+    [Return]   @{ip}
+
+
+Get Vdu Attribute
+    [Documentation]   Return an attribute from VDU records selected by count_index of a VNF instance.
+
+    [Arguments]   ${vnf_id}   ${attribute}   ${count_index}=0
+
+    Should Not Be Empty   ${vnf_id}
+    Should Not Be Empty   ${attribute}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id} --literal | yq '.vdur[] | select(."count-index" == ${count_index})' | yq -r '."${attribute}"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    [Return]   ${stdout}
diff --git a/robot-systest/lib/vnfd_lib.resource b/robot-systest/lib/vnfd_lib.resource
deleted file mode 100644 (file)
index 2e4e2a6..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-*** Comments ***
-# Copyright 2019 Tech Mahindra Limited
-#
-# 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. 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   Library providing keywords for CRUD operations over VNFD / VNF packages with OSM client.
-Library   OperatingSystem
-Library   String
-
-
-*** Variables ***
-${SUCCESS_RETURN_CODE}   0
-${FAILURE_RETURN_CODE}   1
-${VNFD_DELETE_MAX_WAIT_TIME}   1min
-${VNFD_DELETE_POL_TIME}   15sec
-
-
-*** Keywords ***
-Get VNFDs List
-    [Documentation]   Get the list of VNF packages and log it.
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnfpkg-list
-    Log   ${stdout}
-    Log   ${rc}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-
-Create VNFD
-    [Documentation]   Onboards ("creates") a NF Package into OSM.
-    ...               - Parameters:
-    ...                 - vnfd_pkg: Name (and location) of the NF Package
-    ...                 - overrides (optional): String with options to override the EPA and/or interface properties of the Package.
-    ...                                        This is very useful to allow to deploy e.g. non-EPA packages in EPA VIMs (or vice-versa).
-    ...                                        Valid strings are the same as in the command. E.g.:
-    ...                                        - `--override-epa`: adds EPA attributes to all VDUs.
-    ...                                        - `--override-nonepa`: removes all EPA attributes from all VDUs.
-    ...                                        - `--override-paravirt`: converts all interfaces to `PARAVIRT`. This one can be combined with
-    ...                                           the others above (e.g. '--override-nonepa --override-paravirt').
-    ...               - Relevant environment variables:
-    ...                  - OVERRIDES: If the environment variable "OVERRIDES" exists, it prevails over the value in the argument.
-    ...                               This is often more convenient to enforce the same behaviour for every test run in a given VIM.
-    [Arguments]   ${vnfd_pkg}   ${overrides}=${EMPTY}
-    # If env variable "OVERRIDES" exists, it prevails over the value in the argument
-    ${overrides}=   Get Environment Variable   OVERRIDES   default=${overrides}
-    # Proceeds with the onboarding with the appropriate arguments
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnfpkg-create ${overrides} ${vnfd_pkg}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    ${lines}=   Get Line Count   ${stdout}
-    ${last}=   Evaluate   ${lines} - 1
-    ${id}=   Get Line   ${stdout}   ${last}
-    RETURN   ${id}
-
-Update VNFD
-    [Documentation]   Onboard ("Update") a NF Package into OSM.
-    ...               - Parameters:
-    ...                 - vnfd_pkg: Name (and location) of the NF Package
-    ...                 - vnfd_name: Name of the existing NF Package
-    [Arguments]   ${vnfd_pkg}   ${vnfd_name}
-    # Proceeds with the onboarding with the appropriate arguments
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnfpkg-update --content ${vnfd_pkg} ${vnfd_name}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    ${lines}=   Get Line Count   ${stdout}
-    ${last}=   Evaluate   ${lines} - 1
-    ${id}=   Get Line   ${stdout}   ${last}
-    RETURN   ${id}
-
-Create VNFD Overriding Fields
-    [Documentation]   Onboards ("creates") a NF Package into OSM.
-    ...               - Parameters:
-    ...                 - vnfd_pkg: Name (and location) of the NF Package
-    ...                 - override_fields: String with options to override fields in descriptor, format: "key1.key2...=value[;key3...=value;...]"
-    ...                 - overrides (optional): String with options to override the EPA and/or interface properties of the Package.
-    ...                                        This is very useful to allow to deploy e.g. non-EPA packages in EPA VIMs (or vice-versa).
-    ...                                        Valid strings are the same as in the command. E.g.:
-    ...                                        - `--override-epa`: adds EPA attributes to all VDUs.
-    ...                                        - `--override-nonepa`: removes all EPA attributes from all VDUs.
-    ...                                        - `--override-paravirt`: converts all interfaces to `PARAVIRT`. This one can be combined with
-    ...                                           the others above (e.g. '--override-nonepa --override-paravirt').
-    ...               - Relevant environment variables:
-    ...                  - OVERRIDES: If the environment variable "OVERRIDES" exists, it prevails over the value in the argument.
-    ...                               This is often more convenient to enforce the same behaviour for every test run in a given VIM.
-    [Arguments]   ${vnfd_pkg}   ${override_fields}   ${overrides}=${EMPTY}
-    # If env variable "OVERRIDES" exists, it prevails over the value in the argument
-    ${overrides}=   Get Environment Variable   OVERRIDES   default=${overrides}
-    # Proceeds with the onboarding with the appropriate arguments
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnfpkg-create ${overrides} ${vnfd_pkg} --override '${override_fields}'
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    ${lines}=   Get Line Count   ${stdout}
-    ${last}=   Evaluate   ${lines} - 1
-    ${id}=   Get Line   ${stdout}   ${last}
-    RETURN   ${id}
-
-Delete VNFD
-    [Documentation]   Delete a VNF package from OSM.
-    [Arguments]   ${vnfd_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnfpkg-delete ${vnfd_id}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Wait Until Keyword Succeeds   ${VNFD_DELETE_MAX_WAIT_TIME}   ${VNFD_DELETE_POL_TIME}   Check For VNFD   ${vnfd_id}
-
-Assert Failure Delete VNFD
-    [Documentation]   Deletes a NF Package that cannot be deleted and asserts the failure
-    [Arguments]   ${vnfd_id}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnfpkg-delete ${vnfd_id}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${FAILURE_RETURN_CODE}
-    Should Contain   ${stdout}   409   msg=Expected Conflict   values=False
-    Wait Until Keyword Succeeds   ${VNFD_DELETE_MAX_WAIT_TIME}   ${VNFD_DELETE_POL_TIME}   Check For VNFD   ${vnfd_id}   True
-
-Check For VNFD
-    [Documentation]   Check that a VNF package exists in OSM.
-    [Arguments]   ${vnfd_id}   ${exists}=False
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm vnfpkg-list | awk '{print $2}' | grep ${vnfd_id}
-    Log   ${rc},${stdout}
-    IF   ${exists}
-        Should Be Equal As Strings   ${stdout}   ${vnfd_id}
-    ELSE
-        Should Not Be Equal As Strings   ${stdout}   ${vnfd_id}
-    END
diff --git a/robot-systest/lib/vnfd_lib.robot b/robot-systest/lib/vnfd_lib.robot
new file mode 100644 (file)
index 0000000..4433a48
--- /dev/null
@@ -0,0 +1,149 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# 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. 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-sep-2019
+##
+
+*** Settings ***
+Library   String
+
+
+*** Variables ***
+${success_return_code}   0
+${failure_return_code}   1
+${delete_max_wait_time}   1min
+${delete_pol_time}   15sec
+
+
+*** Keywords ***
+Get VNFDs List
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnfpkg-list
+    Log   ${stdout}
+    Log   ${rc}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
+
+Create VNFD
+    [Documentation]   Onboards ("creates") a NF Package into OSM.
+    ...               - Parameters:
+    ...                 - vnfd_pkg: Name (and location) of the NF Package
+    ...                 - overrides (optional): String with options to override the EPA and/or interface properties of the Package.
+    ...                                        This is very useful to allow to deploy e.g. non-EPA packages in EPA VIMs (or vice-versa).
+    ...                                        Valid strings are the same as in the command. E.g.:
+    ...                                        - `--override-epa`: adds EPA attributes to all VDUs.
+    ...                                        - `--override-nonepa`: removes all EPA attributes from all VDUs.
+    ...                                        - `--override-paravirt`: converts all interfaces to `PARAVIRT`. This one can be combined with
+    ...                                           the others above (e.g. '--override-nonepa --override-paravirt').
+    ...               - Relevant environment variables:
+    ...                  - OVERRIDES: If the environment variable "OVERRIDES" exists, it prevails over the value in the argument.
+    ...                               This is often more convenient to enforce the same behaviour for every test run in a given VIM.
+
+    [Arguments]   ${vnfd_pkg}   ${overrides}=${EMPTY}
+
+    # If env variable "OVERRIDES" exists, it prevails over the value in the argument
+    ${overrides}=   Get Environment Variable   OVERRIDES   default=${overrides}
+
+    # Proceedes with the onboarding with the appropriate arguments
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnfpkg-create ${overrides} ${vnfd_pkg}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    ${lines}=   Get Line Count   ${stdout}
+    ${last}=   Evaluate   ${lines} - 1
+    ${id}=   Get Line   ${stdout}   ${last}
+    [Return]   ${id}
+
+
+Update VNFD
+    [Documentation]   Onboards ("Updates") a NF Package into OSM.
+    ...               - Parameters:
+    ...                 - vnfd_pkg: Name (and location) of the NF Package
+    ...                 - vnfd_name: Name of the existing NF Package
+
+    [Arguments]   ${vnfd_pkg}   ${vnfd_name}
+
+    # Proceedes with the onboarding with the appropriate arguments
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnfpkg-update --content ${vnfd_pkg} ${vnfd_name}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    ${lines}=   Get Line Count   ${stdout}
+    ${last}=   Evaluate   ${lines} - 1
+    ${id}=   Get Line   ${stdout}   ${last}
+    [Return]   ${id}
+
+
+Create VNFD Overriding Fields
+    [Documentation]   Onboards ("creates") a NF Package into OSM.
+    ...               - Parameters:
+    ...                 - vnfd_pkg: Name (and location) of the NF Package
+    ...                 - override_fields: String with options to override fields in descriptor, format: "key1.key2...=value[;key3...=value;...]"
+    ...                 - overrides (optional): String with options to override the EPA and/or interface properties of the Package.
+    ...                                        This is very useful to allow to deploy e.g. non-EPA packages in EPA VIMs (or vice-versa).
+    ...                                        Valid strings are the same as in the command. E.g.:
+    ...                                        - `--override-epa`: adds EPA attributes to all VDUs.
+    ...                                        - `--override-nonepa`: removes all EPA attributes from all VDUs.
+    ...                                        - `--override-paravirt`: converts all interfaces to `PARAVIRT`. This one can be combined with
+    ...                                           the others above (e.g. '--override-nonepa --override-paravirt').
+    ...               - Relevant environment variables:
+    ...                  - OVERRIDES: If the environment variable "OVERRIDES" exists, it prevails over the value in the argument.
+    ...                               This is often more convenient to enforce the same behaviour for every test run in a given VIM.
+
+    [Arguments]   ${vnfd_pkg}   ${override_fields}   ${overrides}=${EMPTY}
+
+    # If env variable "OVERRIDES" exists, it prevails over the value in the argument
+    ${overrides}=   Get Environment Variable   OVERRIDES   default=${overrides}
+
+    # Proceedes with the onboarding with the appropriate arguments
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnfpkg-create ${overrides} ${vnfd_pkg} --override '${override_fields}'
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    ${lines}=   Get Line Count   ${stdout}
+    ${last}=   Evaluate   ${lines} - 1
+    ${id}=   Get Line   ${stdout}   ${last}
+    [Return]   ${id}
+
+
+Delete VNFD
+    [Arguments]   ${vnfd_id}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnfpkg-delete ${vnfd_id}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    WAIT UNTIL KEYWORD SUCCEEDS   ${delete_max_wait_time}   ${delete_pol_time}   Check For VNFD   ${vnfd_id}
+
+
+Assert Failure Delete VNFD
+    [Documentation]   Deletes a NF Package that cannot be deleted and asserts the failure
+    [Arguments]   ${vnfd_id}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnfpkg-delete ${vnfd_id}
+    Log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${failure_return_code}
+    Should Contain   ${stdout}   409   msg=Expected Conflict   values=False
+    WAIT UNTIL KEYWORD SUCCEEDS   ${delete_max_wait_time}   ${delete_pol_time}   Check For VNFD   ${vnfd_id}   True
+
+
+Check For VNFD
+    [Arguments]   ${vnfd_id}   ${exists}=False
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnfpkg-list | awk '{print $2}' | grep ${vnfd_id}
+    Run Keyword If   ${exists}   Should Be Equal As Strings   ${stdout}   ${vnfd_id}
+    ...   ELSE   Should Not Be Equal As Strings   ${stdout}   ${vnfd_id}
+
index 0a2e1e2..ea31ace 100644 (file)
 
 import os
 import yaml
-from .get_clouds_yaml_info import get_values_from_cloud, get_vim_values
+from get_clouds_yaml_info import get_values_from_cloud, get_vim_values
 
 
-# Variables to be used by the testsuite
-vim_account_type = ""
-vim_name_prefix = ""
-vim_user = ""
-vim_password = ""
-vim_auth_url = ""
-vim_tenant = ""
-vim_config = ""
-
 # VIM configuration
 cloud_type = os.environ.get("CLOUD_TYPE", "openstack")
 if cloud_type == "openstack":
index 97d3112..7fd16ba 100644 (file)
 import os
 from pathlib import Path
 import yaml
-from .get_clouds_yaml_info import get_values_from_cloud, get_vim_values
+from get_clouds_yaml_info import get_values_from_cloud, get_vim_values
 
 
-# Variables to be used by the testsuite
+# VIM Configuration
 vim_account_type = "openstack"
 vim_name = "basic_08_vim_test"
-vim_user = ""
-vim_password = ""
-vim_auth_url = ""
-vim_tenant = ""
-vim_config = ""
 
 # Get credentials from Openstack clouds file
 cloud, os_cloud = get_values_from_cloud()
index ee2ba6a..2a78e11 100644 (file)
@@ -12,7 +12,7 @@
 
 import os
 import yaml
-from .get_clouds_yaml_info import get_values_from_cloud, get_vim_values
+from get_clouds_yaml_info import get_values_from_cloud, get_vim_values
 
 
 # VIM configuration
index e96e17a..1ebe21f 100755 (executable)
@@ -228,7 +228,7 @@ if [ "$RUN_CONFORMANCE_TESTS" = true ] ; then
 fi
 
 if [[ -n "${TEST}" ]]; then
-    robot -d ${ROBOT_DEVOPS_FOLDER}/reports --tagstatinclude "cluster_*" -i ${TEST} ${ROBOT_DEVOPS_FOLDER}/testsuite/
+    robot -d ${ROBOT_DEVOPS_FOLDER}/reports --tagstatinclude "cluster-*" -i ${TEST} ${ROBOT_DEVOPS_FOLDER}/testsuite/
 else
     echo "No test was provided. Exiting..."
 fi
index 542292a..cdfe0bd 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-01] CRUD operations on VIM targets.
 ...             All tests will be performed over an Openstack VIM, and the credentials will be loaded from clouds.yaml file.
 
-Resource   ../lib/vim_lib.resource
-Resource   ../lib/prometheus_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vim_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/prometheus_lib.robot
 
-Variables   ../resources/basic_01-crud_operations_on_vim_targets_data.py
+Variables   %{ROBOT_DEVOPS_FOLDER}/resources/basic_01-crud_operations_on_vim_targets_data.py
 
-Test Tags   basic_01   cluster_main   daily   regression
+Force Tags   basic_01   cluster_main   daily   regression
 
 Suite Setup   Run Keyword And Ignore Error   Suite Preparation
 
@@ -30,46 +28,53 @@ Suite Setup   Run Keyword And Ignore Error   Suite Preparation
 Create VIM Target Basic
     [Documentation]   Create a VIM Target only with the mandatory parameters.
     ...               Checks the status of the VIM in Prometheus after it creation.
-    Pass Execution If   ${VIM_ACCOUNT_TYPE} != 'openstack'   Not applicable for ${VIM_ACCOUNT_TYPE} VIM
+
+    Pass Execution If   '${vim_account_type}' != 'openstack'   Not applicable for ${vim_account_type} VIM
     ${rand}=   Generate Random String   6   [NUMBERS]
-    ${VIM_NAME}=   Catenate   SEPARATOR=_   ${vim_name_prefix}   ${rand}
-    Set Suite Variable   ${VIM_NAME}
-    ${CREATED_VIM_ACCOUNT_ID}=   Create VIM Target   ${VIM_NAME}   ${VIM_USER}   ${VIM_PASSWORD}   ${VIM_AUTH_URL}   ${VIM_TENANT}   ${VIM_ACCOUNT_TYPE}
-    Set Suite Variable   ${CREATED_VIM_ACCOUNT_ID}
-    Check VIM Target Operational State   ${VIM_NAME}
-    ${stdout}=   Check For VIM Target Metric   ${VIM_NAME}   ${PROMETHEUS_HOST}   ${PROMETHEUS_PORT}   ${PROMETHEUS_USER}   ${PROMETHEUS_PASSWORD}
-    Log   ${stdout}
+    ${vim_name}=   Catenate   SEPARATOR=_   ${vim_name_prefix}   ${rand}
+    Set Suite Variable   ${vim_name}
+    ${created_vim_account_id}=   Create VIM Target   ${vim_name}   ${vim_user}   ${vim_password}   ${vim_auth_url}   ${vim_tenant}   ${vim_account_type}
+    Set Suite Variable   ${created_vim_account_id}
+    Check VIM Target Operational State   ${vim_name}
+    ${stdout}=   Check for VIM Target Metric   ${vim_name}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
+
 
 Delete VIM Target By Name
     [Documentation]   Delete the VIM Target created in previous test-case by its name.
     ...               Checks whether the VIM Target was created or not before perform the deletion.
     [Tags]   cleanup
-    Pass Execution If   ${VIM_ACCOUNT_TYPE} != 'openstack'   Not applicable for ${VIM_ACCOUNT_TYPE} VIM
-    ${vim_account_id}=   Get VIM Target ID   ${VIM_NAME}
-    Should Be Equal As Strings   ${vim_account_id}   ${CREATED_VIM_ACCOUNT_ID}
-    Delete VIM Target   ${VIM_NAME}
+
+    Pass Execution If   '${vim_account_type}' != 'openstack'   Not applicable for ${vim_account_type} VIM
+    ${vim_account_id}=   Get VIM Target ID   ${vim_name}
+    Should Be Equal As Strings   ${vim_account_id}   ${created_vim_account_id}
+    Delete VIM Target   ${vim_name}
+
 
 Create VIM Target With Extra Config
     [Documentation]   Create a VIM Target using the extra parameter 'config'.
     ...               Checks the status of the VIM in Prometheus after it creation.
+
     ${rand}=   Generate Random String   6   [NUMBERS]
-    ${VIM_NAME}=   Catenate   SEPARATOR=_   ${vim_name_prefix}   ${rand}
-    Set Suite Variable   ${VIM_NAME}
-    ${CREATED_VIM_ACCOUNT_ID}=   Create VIM Target   ${VIM_NAME}   ${VIM_USER}   ${VIM_PASSWORD}   ${VIM_AUTH_URL}   ${VIM_TENANT}   ${VIM_ACCOUNT_TYPE}   config=${vim_config}
-    Set Suite Variable   ${CREATED_VIM_ACCOUNT_ID}
-    Check VIM Target Operational State   ${VIM_NAME}
-    Check For VIM Target Status   ${VIM_NAME}   ${PROMETHEUS_HOST}   ${PROMETHEUS_PORT}   ${PROMETHEUS_USER}   ${PROMETHEUS_PASSWORD}
+    ${vim_name}=   Catenate   SEPARATOR=_   ${vim_name_prefix}   ${rand}
+    Set Suite Variable   ${vim_name}
+    ${created_vim_account_id}=   Create VIM Target   ${vim_name}   ${vim_user}   ${vim_password}   ${vim_auth_url}   ${vim_tenant}   ${vim_account_type}   config=${vim_config}
+    Set Suite Variable   ${created_vim_account_id}
+    Check VIM Target Operational State   ${vim_name}
+    Check for VIM Target Status   ${vim_name}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
+
 
 Delete VIM Target By ID
     [Documentation]   Delete the VIM Target created in previous test-case by its ID.
     ...               Checks whether the VIM Target was created or not before perform the deletion.
     [Tags]   cleanup
-    ${vim_account_id}=   Get VIM Target ID   ${VIM_NAME}
-    Should Be Equal As Strings   ${vim_account_id}   ${CREATED_VIM_ACCOUNT_ID}
+
+    ${vim_account_id}=   Get VIM Target ID   ${vim_name}
+    Should Be Equal As Strings   ${vim_account_id}   ${created_vim_account_id}
     Delete VIM Target   ${vim_account_id}
 
 
 *** Keywords ***
 Suite Preparation
     [Documentation]   Test Suite Preparation: Setting Prometheus Testsuite Variables
+
     Set Testsuite Prometheus Variables
index da8bfb7..82b3ba0 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-05] Instantiation parameters in cloud-init.
 
 Library   OperatingSystem
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   basic_05   cluster_main   daily   regression   azure
+Force Tags   basic_05   cluster_main   daily   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   ubuntu_cloudinit_vnf
-${VNFD_NAME}   ubuntu_cloudinit-vnf
-${NSD_PKG}   ubuntu_cloudinit_ns
-${NSD_NAME}   ubuntu_cloudinit-ns
+${vnfd_pkg}   ubuntu_cloudinit_vnf
+${vnfd_name}   ubuntu_cloudinit-vnf
+${nsd_pkg}   ubuntu_cloudinit_ns
+${nsd_name}   ubuntu_cloudinit-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_05_instantiation_params_cloud_init
-${VNF_MEMBER_INDEX}   vnf
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ], additionalParamsForVnf: [ { member-vnf-index: "${VNF_MEMBER_INDEX}", additionalParams: { password: "${NEW_PASSWORD}" } } ] }
+${ns_name}   basic_05_instantiation_params_cloud_init
+${vnf_member_index}   vnf
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ], additionalParamsForVnf: [ { member-vnf-index: "${vnf_member_index}", additionalParams: { password: "${new_password}" } } ] }
 
 # SSH user and password
-${USERNAME}   ubuntu
-${NEW_PASSWORD}   newpassword
+${username}   ubuntu
+${new_password}   newpassword
 
 
 *** Test Cases ***
 Create Cloudinit VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create Cloudinit NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Cloudinit Network Service Using Instantiation Parameters
     [Documentation]   Instantiates the NS using the instantiation parameter 'additionalParamsForVnf' to change the password of the default user.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${EMPTY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${EMPTY}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Management Ip Addresses
-    [Documentation]   Retrieve VNF mgmt IP address from OSM.
-    ${ip_addr}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX}
+
+    ${ip_addr}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index}
     Log   ${ip_addr}
-    Set Suite Variable   ${VNF_IP_ADDR}   ${ip_addr}
+    Set Suite Variable   ${vnf_ip_addr}   ${ip_addr}
+
 
 Test SSH Access With The New Password
     [Documentation]   Test SSH access with the new password configured via cloud-init.
-    Variable Should Exist   ${VNF_IP_ADDR}   msg=IP address of the management VNF is not available
+
+    Variable Should Exist   ${vnf_ip_addr}   msg=IP address of the management VNF is not available
     Sleep   30s   Waiting ssh daemon to be up
-    Test SSH Connection   ${VNF_IP_ADDR}   ${USERNAME}   ${NEW_PASSWORD}   ${EMPTY}
+    Test SSH Connection   ${vnf_ip_addr}   ${username}   ${new_password}   ${EMPTY}
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index 109046e..024fb1b 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-06] VNF with Charm.
 
 Library   OperatingSystem
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/juju_lib.resource
+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/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/juju_lib.robot
 
-Test Tags   basic_06   cluster_ee_config   regression   azure
+Force Tags   basic_06   cluster_ee_config   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   charm-packages/ha_proxy_charm_vnf
-${VNFD_NAME}   ha_proxy_charm-vnf
-${NSD_PKG}   charm-packages/ha_proxy_charm_ns
-${NSD_NAME}   ha_proxy_charm-ns
+${vnfd_pkg}   charm-packages/ha_proxy_charm_vnf
+${vnfd_name}   ha_proxy_charm-vnf
+${nsd_pkg}   charm-packages/ha_proxy_charm_ns
+${nsd_name}   ha_proxy_charm-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_06_charm_test
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   basic_06_charm_test
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
-
-${ACTION_NAME}   touch
-${VNF_MEMBER_INDEX_1}   vnf1
-${VNF_MEMBER_INDEX_2}   vnf2
-${DAY_1_FILE_NAME}   /home/ubuntu/first-touch
-${DAY_2_FILE_NAME_1}   /home/ubuntu/mytouch1
-${DAY_2_FILE_NAME_2}   /home/ubuntu/mytouch2
-${NS_TIMEOUT}   15min
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
+
+${action_name}   touch
+${vnf_member_index_1}   vnf1
+${vnf_member_index_2}   vnf2
+${day_1_file_name}   /home/ubuntu/first-touch
+${day_2_file_name_1}   /home/ubuntu/mytouch1
+${day_2_file_name_2}   /home/ubuntu/mytouch2
+${ns_timeout}   15min
 
 # VNF profile id, execution environment name to check VNF level charm naming
-${VNF_PROFILE_ID}   vnf1
-${EE_NAME}   simple-ee
+${vnf_profile_id}   vnf1
+${ee_name}   simple-ee
 
 
 *** Test Cases ***
 Create Charm VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create Charm NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Charm Network Service
-    [Documentation]   Instantiates the NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}   ${NS_TIMEOUT}
-    Set Suite Variable   ${NS_ID}   ${id}
-    Set Suite Variable   ${MODEL_NAME}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_timeout}
+    Set Suite Variable   ${ns_id}   ${id}
+    Set Suite Variable   ${model_name}   ${id}
+
 
 Check VNF Charm Application Name
-    [Documentation]   Checks that the charm application name meets the expected length
-    ${vnf_charm_app_name}=   Get Application Name VNF Level Charm   %{OSM_HOSTNAME}   ${USERNAME}   ${PASSWORD}   %{OSM_RSA_FILE}   ${MODEL_NAME}   ${VNF_PROFILE_ID}   ${EE_NAME}
+
+    ${vnf_charm_app_name}=   Get Application Name VNF Level Charm   %{OSM_HOSTNAME}   ${username}   ${password}   %{OSM_RSA_FILE}   ${model_name}   ${vnf_profile_id}   ${ee_name}
     ${length}=   Get Length   ${vnf_charm_app_name}
     Should Be True   ${length} <50
 
+
 Get Management Ip Addresses
-    [Documentation]   Get the mgmt IP addresses of both VNF of the NS.
-    ${ip_addr_1}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_1}
+
+    ${ip_addr_1}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_1}
     Log   ${ip_addr_1}
-    Set Suite Variable   ${VNF_1_IP_ADDR}   ${ip_addr_1}
-    ${ip_addr_2}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_2}
+    Set Suite Variable   ${vnf_1_ip_addr}   ${ip_addr_1}
+    ${ip_addr_2}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_2}
     Log   ${ip_addr_2}
-    Set Suite Variable   ${VNF_2_IP_ADDR}   ${ip_addr_2}
+    Set Suite Variable   ${vnf_2_ip_addr}   ${ip_addr_2}
+
 
 Test SSH Access
-    [Documentation]   Check that both VNF are accessible via SSH in their mgmt IP addresses.
-    Variable Should Exist   ${VNF_1_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX_1}' is not available
-    Variable Should Exist   ${VNF_2_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX_2}' is not available
+
+    Variable Should Exist   ${vnf_1_ip_addr}   msg=IP address of the management VNF '${vnf_member_index_1}' is not available
+    Variable Should Exist   ${vnf_2_ip_addr}   msg=IP address of the management VNF '${vnf_member_index_2}' is not available
     Sleep   30s   Waiting ssh daemon to be up
-    Test SSH Connection   ${VNF_1_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
-    Test SSH Connection   ${VNF_2_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
+    Test SSH Connection   ${vnf_1_ip_addr}   ${username}   ${password}   ${privatekey}
+    Test SSH Connection   ${vnf_2_ip_addr}   ${username}   ${password}   ${privatekey}
+
 
 Check Remote Files Created Via Day 1 Operations
     [Documentation]   The Charm VNF has a Day 1 operation that creates a file named ${day_1_file_name}.
     ...               This test checks whether that files have been created or not.
-    Check If Remote File Exists   ${VNF_1_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_1_FILE_NAME}
-    Check If Remote File Exists   ${VNF_2_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_1_FILE_NAME}
+
+    Check If remote File Exists   ${vnf_1_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_1_file_name}
+    Check If remote File Exists   ${vnf_2_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_1_file_name}
+
 
 Execute Day 2 Operations
     [Documentation]   Performs one Day 2 operation per VNF that creates a new file.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id_1}=   Execute NS Action   ${NS_NAME}   ${ACTION_NAME}   ${VNF_MEMBER_INDEX_1}   filename=${DAY_2_FILE_NAME_1}
-    Log   ${ns_op_id_1}
-    ${ns_op_id_2}=   Execute NS Action   ${NS_NAME}   ${ACTION_NAME}   ${VNF_MEMBER_INDEX_2}   filename=${DAY_2_FILE_NAME_2}
-    Log   ${ns_op_id_2}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id_1}=   Execute NS Action   ${ns_name}   ${action_name}   ${vnf_member_index_1}   filename=${day_2_file_name_1}
+    ${ns_op_id_2}=   Execute NS Action   ${ns_name}   ${action_name}   ${vnf_member_index_2}   filename=${day_2_file_name_2}
+
 
 Check Remote Files Created Via Day 2 Operations
     [Documentation]   Check whether the files created in the previous test via Day 2 operations exist or not.
-    Check If Remote File Exists   ${VNF_1_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_2_FILE_NAME_1}
-    Check If Remote File Exists   ${VNF_2_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_2_FILE_NAME_2}
+
+    Check If remote File Exists   ${vnf_1_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_2_file_name_1}
+    Check If remote File Exists   ${vnf_2_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_2_file_name_2}
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index 506e2a3..de65d38 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-07] Secure key management.
 
 Library   OperatingSystem
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   basic_07   cluster_ee_config   regression   azure
+Force Tags   basic_07   cluster_ee_config   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   charm-packages/nopasswd_proxy_charm_vnf
-${VNFD_NAME}   nopasswd_proxy_charm-vnf
-${NSD_PKG}   charm-packages/nopasswd_proxy_charm_ns
-${NSD_NAME}   nopasswd_proxy_charm-ns
+${vnfd_pkg}   charm-packages/nopasswd_proxy_charm_vnf
+${vnfd_name}   nopasswd_proxy_charm-vnf
+${nsd_pkg}   charm-packages/nopasswd_proxy_charm_ns
+${nsd_name}   nopasswd_proxy_charm-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_07_secure_key_management
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${NS_TIMEOUT}   15min
+${ns_name}   basic_07_secure_key_management
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_timeout}   15min
 
 # SSH username and passwod
-${USERNAME}   ubuntu
-${PASSWORD}   osm4u
+${username}   ubuntu
+${password}   osm4u
 
-${ACTION_NAME}   touch
-${VNF_MEMBER_INDEX}   vnf1
-${DAY_1_FILE_NAME}   /home/ubuntu/first-touch
-${DAY_2_FILE_NAME}   /home/ubuntu/mytouch1
+${action_name}   touch
+${vnf_member_index}   vnf1
+${day_1_file_name}   /home/ubuntu/first-touch
+${day_2_file_name}   /home/ubuntu/mytouch1
 
 
 *** Test Cases ***
 Create Nopasswd Charm VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
     [Tags]   prepare
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create Nopasswd Charm NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
     [Tags]   prepare
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Nopasswd Charm Network Service
-    [Documentation]   Instantiate NS for the testsuite.
     [Tags]   prepare
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${EMPTY}   ${NS_TIMEOUT}
-    Log   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${EMPTY}   ${ns_timeout}
 
 Get Ns Id
-    [Documentation]   Get NS instance id.
     [Tags]   verify
-    ${id}=   Get Ns Id   ${NS_NAME}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Get Ns Id   ${ns_name}
+    Set Suite Variable   ${ns_id}   ${id}
 
 Get Management Ip Addresses
-    [Documentation]   Get the mgmt IP address of the VNF of the NS.
     [Tags]   verify
-    ${ip_addr}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX}
+    ${ip_addr}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index}
     Log   ${ip_addr}
-    Set Suite Variable   ${VNF_IP_ADDR}   ${ip_addr}
+    Set Suite Variable   ${vnf_ip_addr}   ${ip_addr}
+
 
 Test SSH Access
-    [Documentation]   Check that the VNF is accessible via SSH in its mgmt IP address.
     [Tags]   verify
-    Variable Should Exist   ${VNF_IP_ADDR}   msg=IP address of the management VNF is not available
+    Variable Should Exist   ${vnf_ip_addr}   msg=IP address of the management VNF is not available
     Sleep   30s   Waiting ssh daemon to be up
-    Test SSH Connection   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${EMPTY}
+    Test SSH Connection   ${vnf_ip_addr}   ${username}   ${password}   ${EMPTY}
+
 
 Check Remote Files Created Via Day 1 Operations
+    [Tags]   verify
     [Documentation]   The Nopasswd VNF has a Day 1 operation that creates a file named ${day_1_file_name} and performs it without password.
     ...               This test checks whether that files have been created or not.
-    [Tags]   verify
-    Check If Remote File Exists   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${EMPTY}   ${DAY_1_FILE_NAME}
+
+    Check If remote File Exists   ${vnf_ip_addr}   ${username}   ${password}   ${EMPTY}   ${day_1_file_name}
+
 
 Execute Day 2 Operations
-    [Documentation]   Performs one Day 2 operation that creates a new file, this action is executed without password too.
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute NS Action   ${NS_NAME}   ${ACTION_NAME}   ${VNF_MEMBER_INDEX}   filename=${DAY_2_FILE_NAME}
-    Log   ${ns_op_id}
+    [Documentation]   Performs one Day 2 operation that creates a new file, this action is executed without password too.
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute NS Action   ${ns_name}   ${action_name}   ${vnf_member_index}   filename=${day_2_file_name}
+
 
 Check Remote Files Created Via Day 2 Operations
-    [Documentation]   Check whether the file created in the previous test via Day 2 operation exists or not.
     [Tags]   verify
-    Check If Remote File Exists   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${EMPTY}   ${DAY_2_FILE_NAME}
+    [Documentation]   Check whether the file created in the previous test via Day 2 operation exists or not.
+
+    Check If remote File Exists   ${vnf_ip_addr}   ${username}   ${password}   ${EMPTY}   ${day_2_file_name}
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index 371ddde..11effd9 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-08] Disable port security at network level.
 
@@ -19,81 +17,87 @@ Library   OperatingSystem
 Library   String
 Library   Collections
 
-Resource   ../lib/vim_lib.resource
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/prometheus_lib.resource
+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   ../resources/basic_08-disable_port_security_network_level_data.py
+Variables   %{ROBOT_DEVOPS_FOLDER}/resources/basic_08-disable_port_security_network_level_data.py
 
-Test Tags   basic_08   cluster_main   daily   regression
+Force Tags   basic_08   cluster_main   daily   regression
 
 Suite Setup   Run Keyword And Ignore Error   Suite Preparation
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${PORT_DISABLED_MSG}   port_security_enabled: false
-
+${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
-    [Documentation]   Register an Opentack VIM with port security disabled, so that all ports created from OSM have port security disabled
-    ...               (no firewall).
+
     ${created_vim_account_id}=   Create VIM Target   ${vim_name}   ${vim_user}   ${vim_password}   ${vim_auth_url}   ${vim_tenant}   ${vim_account_type}   config=${vim_config}
-    Log   ${created_vim_account_id}
-    Check For VIM Target Status   ${VIM_NAME}   ${PROMETHEUS_HOST}   ${PROMETHEUS_PORT}   ${PROMETHEUS_USER}   ${PROMETHEUS_PASSWORD}
+    Check for VIM Target Status   ${vim_name}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
 
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   ${VIM_NAME}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   ${vim_name}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Check Port Security Is Disabled
-    [Documentation]   Check that there are ports/interfaces in the VDU of the VNF of the NS whose port security was disabled.
-    ${rc}   ${disabled_ports}=   Run And Return RC And Output   osm ns-show ${NS_NAME} --literal | grep -c '${PORT_DISABLED_MSG}'
-    Log   ${rc},${disabled_ports}
-    IF   ${disabled_ports} <= 0   Fail   msg=Found '${disabled_ports}' matches for '${PORT_DISABLED_MSG}'
+
+    ${rc}   ${disabled_ports}=   Run and Return RC and Output   osm ns-show ${ns_name} --literal | grep -c '${port_disabled_msg}'
+    Run Keyword If   ${disabled_ports} <= 0   Fail   msg=Found '${disabled_ports}' matches for '${port_disabled_msg}'
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
+
 
 Delete VIM
-    [Documentation]   Delete VIM from OSM.
     [Tags]   cleanup
-    Delete VIM Target   ${VIM_NAME}
+
+    Delete VIM Target   ${vim_name}
 
 
 *** Keywords ***
 Suite Preparation
     [Documentation]   Test Suite Preparation: Setting Prometheus Testsuite Variables
+
     Set Testsuite Prometheus Variables
 
+
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
-    Run Keyword If Any Tests Failed   Delete VIM Target   ${VIM_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+    Run Keyword If Any Tests Failed   Delete VIM Target   ${vim_name}
index 1f76c71..06b5924 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-09] Manual VNF/VDU Scaling.
 
@@ -19,124 +17,130 @@ Library   OperatingSystem
 Library   String
 Library   Collections
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   basic_09   cluster_main   daily   regression   azure
+Force Tags   basic_09   cluster_main   daily   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   hackfest_basic_metrics_vnf
-${VNFD_NAME}   hackfest_basic_metrics-vnf
-${NSD_PKG}   hackfest_basic_metrics_ns
-${NSD_NAME}   hackfest_basic-ns-metrics
+${vnfd_pkg}   hackfest_basic_metrics_vnf
+${vnfd_name}   hackfest_basic_metrics-vnf
+${nsd_pkg}   hackfest_basic_metrics_ns
+${nsd_name}   hackfest_basic-ns-metrics
 
 # NS instance name and configuration
-${NS_NAME}   basic_09_manual_scaling_test
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${SCALING_GROUP}   vdu_autoscale
-${VNF_MEMBER_INDEX}   vnf
+${ns_name}   basic_09_manual_scaling_test
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${scaling_group}   vdu_autoscale
+${vnf_member_index}   vnf
 
 # SSH public key file
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
+${publickey}   %{HOME}/.ssh/id_rsa.pub
 
 
 *** Test Cases ***
 Create Scaling VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
     [Tags]   prepare
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create Scaling NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
     [Tags]   prepare
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Scaling Network Service
-    [Documentation]   Instantiate NS for the testsuite.
     [Tags]   prepare
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Log   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
 
 Get Ns Id
-    [Documentation]   Retrieve NS instance id to be used later on.
     [Tags]   verify
-    ${id}=   Get Ns Id   ${NS_NAME}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Get Ns Id   ${ns_name}
+    Set Suite Variable   ${ns_id}   ${id}
 
 Get Vnf Id
-    [Documentation]   Retrieve VNF instance id to be used later on.
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vnfr_list}=   Get Ns Vnfr Ids   ${NS_ID}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vnfr_list}=   Get Ns Vnfr Ids   ${ns_id}
     Log List   ${vnfr_list}
-    Set Suite Variable   ${VNF_ID}   ${vnfr_list}[0]
+    Set Suite Variable   ${vnf_id}   ${vnfr_list}[0]
+
 
 Get Vdus Before Scale Out
-    [Documentation]   Check the number of VDUs instances before the manual scaling.
     [Tags]   verify
-    @{vdur_list}=   Get Vnf Vdur Names   ${VNF_ID}
+    [Documentation]   Get the number of VDU records before the manual scaling.
+
+    @{vdur_list}=   Get Vnf Vdur Names   ${vnf_id}
     Log List   ${vdur_list}
     ${vdurs}=   Get Length   ${vdur_list}
-    Set Suite Variable   ${INITIAL_VDUR_COUNT}   ${vdurs}
+    Set Suite Variable   ${initial_vdur_count}   ${vdurs}
+
 
 Perform Manual Vdu Scale Out
-    [Documentation]   Perform a manual scale-out operation of the VNF.
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute Manual VNF Scale   ${NS_NAME}   ${VNF_MEMBER_INDEX}   ${SCALING_GROUP}   SCALE_OUT
-    Log   ${ns_op_id}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute Manual VNF Scale   ${ns_name}   ${vnf_member_index}   ${scaling_group}   SCALE_OUT
+
 
 Check Vdus After Scale Out
-    [Documentation]   Check whether there is one more VDU after scaling out.
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vdur_list}=   Get Vnf Vdur Names   ${VNF_ID}
+    [Documentation]   Check whether there is one more VDU after scaling or not.
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vdur_list}=   Get Vnf Vdur Names   ${vnf_id}
     Log List   ${vdur_list}
     ${vdurs}=   Get Length   ${vdur_list}
-    IF   ${vdurs} != ${INITIAL_VDUR_COUNT} + 1   Fail   msg=There is no new VDU records in the VNF after Scale Out
+    Run Keyword If   ${vdurs} != ${initial_vdur_count} + 1   Fail   msg=There is no new VDU records in the VNF after Scale Out
+
 
 Perform Manual Vdu Scale In
-    [Documentation]   Perform a manual scale-in operation of the VNF.
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute Manual VNF Scale   ${NS_NAME}   ${VNF_MEMBER_INDEX}   ${SCALING_GROUP}   SCALE_IN
-    Log   ${ns_op_id}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute Manual VNF Scale   ${ns_name}   ${vnf_member_index}   ${scaling_group}   SCALE_IN
+
 
 Check Vdus After Scaling In
-    [Documentation]   Check whether there is one less VDU after scaling in.
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vdur_list}=   Get Vnf Vdur Names   ${VNF_ID}
+    [Documentation]   Check whether there is one less VDU after scaling or not.
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vdur_list}=   Get Vnf Vdur Names   ${vnf_id}
     Log List   ${vdur_list}
     ${vdurs}=   Get Length   ${vdur_list}
-    IF   ${vdurs} != ${INITIAL_VDUR_COUNT}   Fail   msg=There is the same number of VDU records in the VNF after Scale In
+    Run Keyword If   ${vdurs} != ${initial_vdur_count}   Fail   msg=There is the same number of VDU records in the VNF after Scale In
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index 0704323..fe8d3be 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-11] Native Charms
 
 Library   OperatingSystem
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   basic_11   cluster_ee_config   cluster_relations   regression   azure
+Force Tags   basic_11   cluster_ee_config   cluster_relations   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   charm-packages/native_charm_vnf
-${VNFD_NAME}   native_charm-vnf
-${NSD_PKG}   charm-packages/native_charm_ns
-${NSD_NAME}   native_charm-ns
+${vnfd_pkg}   charm-packages/native_charm_vnf
+${vnfd_name}   native_charm-vnf
+${nsd_pkg}   charm-packages/native_charm_ns
+${nsd_name}   native_charm-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_11_native_charms
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${NS_TIMEOUT}   15min
+${ns_name}   basic_11_native_charms
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_timeout}   15min
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
-${ACTION_NAME}   touch
-${VNF_MEMBER_INDEX_1}   vnf1
-${VNF_MEMBER_INDEX_2}   vnf2
-${DAY_1_FILE_NAME}   /home/ubuntu/first-touch
-${DAY_2_FILE_NAME_1}   /home/ubuntu/mytouch1
-${DAY_2_FILE_NAME_2}   /home/ubuntu/mytouch2
+${action_name}   touch
+${vnf_member_index_1}   vnf1
+${vnf_member_index_2}   vnf2
+${day_1_file_name}   /home/ubuntu/first-touch
+${day_2_file_name_1}   /home/ubuntu/mytouch1
+${day_2_file_name_2}   /home/ubuntu/mytouch2
 
 
 *** Test Cases ***
 Create Charm VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create Charm NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Charm Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}   ${NS_TIMEOUT}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_timeout}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Management Ip Addresses
-    [Documentation]   Get the mgmt IP address of the two VNF of the NS.
-    ${ip_addr_1}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_1}
+
+    ${ip_addr_1}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_1}
     Log   ${ip_addr_1}
-    Set Suite Variable   ${VNF_1_IP_ADDR}   ${ip_addr_1}
-    ${ip_addr_2}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_2}
+    Set Suite Variable   ${vnf_1_ip_addr}   ${ip_addr_1}
+    ${ip_addr_2}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_2}
     Log   ${ip_addr_2}
-    Set Suite Variable   ${VNF_2_IP_ADDR}   ${ip_addr_2}
+    Set Suite Variable   ${vnf_2_ip_addr}   ${ip_addr_2}
+
 
 Test SSH Access
-    [Documentation]   Check that both VNF are accessible via SSH in their respective mgmt IP address.
-    Variable Should Exist   ${VNF_1_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX_1}' is not available
-    Variable Should Exist   ${VNF_2_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX_2}' is not available
+
+    Variable Should Exist   ${vnf_1_ip_addr}   msg=IP address of the management VNF '${vnf_member_index_1}' is not available
+    Variable Should Exist   ${vnf_2_ip_addr}   msg=IP address of the management VNF '${vnf_member_index_2}' is not available
     Sleep   30s   Waiting ssh daemon to be up
-    Test SSH Connection   ${VNF_1_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
-    Test SSH Connection   ${VNF_2_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
+    Test SSH Connection   ${vnf_1_ip_addr}   ${username}   ${password}   ${privatekey}
+    Test SSH Connection   ${vnf_2_ip_addr}   ${username}   ${password}   ${privatekey}
+
 
 Check Remote Files Created Via Day 1 Operations
     [Documentation]   The Charm VNF has a Day 1 operation that creates a file named ${day_1_file_name}.
     ...               This test checks whether that files have been created or not.
-    Check If Remote File Exists   ${VNF_1_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_1_FILE_NAME}
-    Check If Remote File Exists   ${VNF_2_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_1_FILE_NAME}
+
+    Check If remote File Exists   ${vnf_1_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_1_file_name}
+    Check If remote File Exists   ${vnf_2_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_1_file_name}
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index ee1cb31..c4b4a37 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   Copyright 2020 Canonical Ltd.
 #   Licensed under the Apache License, Version 2.0 (the "License");
 #   you may not use this file except in compliance with the License.
@@ -12,7 +11,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-12] NS Primitives
 
@@ -22,119 +20,131 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/package_lib.resource
-Resource   ../lib/juju_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/package_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/juju_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
 
-Test Tags   basic_12   cluster_ee_config   regression   azure
+Force Tags   basic_12   cluster_ee_config   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG1}   nscharm_policy_vnf
-${VNFD_PKG2}   nscharm_user_vnf
-${VNFD_NAME1}   nscharm-policy-vnf
-${VNFD_NAME2}   nscharm-user-vnf
-${NSD_PKG}   nscharm_ns
-${NEW_NSD_PKG}   new_nscharm_ns
-${NSD_NAME}   nscharm-ns
-${NSD_FILE}   nscharm_nsd.yaml
+${vnfd_pkg1}   nscharm_policy_vnf
+${vnfd_pkg2}   nscharm_user_vnf
+${vnfd_name1}   nscharm-policy-vnf
+${vnfd_name2}   nscharm-user-vnf
+${nsd_pkg}   nscharm_ns
+${new_nsd_pkg}   new_nscharm_ns
+${nsd_name}   nscharm-ns
+${nsd_file}   nscharm_nsd.yaml
 
 # NS instance name and configuration
-${NS_NAME}   test_nscharm
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${NS_TIMEOUT}   15min
+${ns_name}   test_nscharm
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_timeout}   15min
 
-${OLD_JUJU_PASSWORD}   a5611fc6452349cc6e45705d34c501d4
-${PUBLICKEY}   ${EMPTY}
-${SUCCESS_RETURN_CODE}   0
+${old_juju_password}   a5611fc6452349cc6e45705d34c501d4
+${publickey}   ${EMPTY}
+${success_return_code}   0
 
 # VDU profile id, execution environment name to check vdu level charm naming structure
-${VDU_PROFILE_ID}   PolicyVM
-${EE_NAME}   vnf-policy
+${vdu_profile_id}   PolicyVM
+${ee_name}   vnf-policy
 
 # # Username and SSH private key for accessing OSM host
-${PRIVATEKEY}   %{OSM_RSA_FILE}
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${privatekey}   %{OSM_RSA_FILE}
+${username}   ubuntu
+${password}   ${EMPTY}
 
 # Charm name to check ns level charm naming structure
-${CHARM_NAME}   ns
+${charm_name}   ns
 
 
 *** Test Cases ***
 Change Juju Password
     [Documentation]   NS package needs to be updated with the Juju credentials for your OSM installation
-    ${rc}   ${stdout}=   Run And Return RC And Output   cp -r '%{PACKAGES_FOLDER}/${NSD_PKG}' '%{PACKAGES_FOLDER}/${NEW_NSD_PKG}'
-    Log   ${rc},${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    ${nsd_yaml}=   OperatingSystem.Get File   %{PACKAGES_FOLDER}/${NEW_NSD_PKG}/${NSD_FILE}
-    ${changed_nsd_yaml}=   Replace String   ${nsd_yaml}   ${OLD_JUJU_PASSWORD}   %{JUJU_PASSWORD}
-    Create File   %{PACKAGES_FOLDER}/${NEW_NSD_PKG}/${NSD_FILE}   ${changed_nsd_yaml}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   cp -r '%{PACKAGES_FOLDER}/${nsd_pkg}' '%{PACKAGES_FOLDER}/${new_nsd_pkg}'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    ${nsd_yaml}=   OperatingSystem.Get File   %{PACKAGES_FOLDER}/${new_nsd_pkg}/${nsd_file}
+    ${changed_nsd_yaml}=   Replace String   ${nsd_yaml}   ${old_juju_password}   %{JUJU_PASSWORD}
+    Create File   %{PACKAGES_FOLDER}/${new_nsd_pkg}/${nsd_file}   ${changed_nsd_yaml}
+
 
 Upload Vnfds
-    [Documentation]   Upload VNF packages for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG1}'
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG2}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg1}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg2}'
+
 
 Upload Nsd
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   %{PACKAGES_FOLDER}/${NEW_NSD_PKG}
+
+    Create NSD   %{PACKAGES_FOLDER}/${new_nsd_pkg}/
+
 
 Instantiate NS
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}   ns_launch_max_wait_time=${NS_TIMEOUT}
-    Set Suite Variable   ${NS_ID}   ${id}
-    Set Suite Variable   ${MODEL_NAME}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}   ns_launch_max_wait_time=${ns_timeout}
+    Set Suite Variable   ${ns_id}   ${id}
+    Set Suite Variable   ${model_name}   ${id}
+
 
 Check NS Charm Application Name
-    [Documentation]   Check that the NS charm has the right length.
-    ${ns_charm_app_name}=   Get Application Name NS Level Charm   %{OSM_HOSTNAME}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${MODEL_NAME}   ${CHARM_NAME}
+
+    ${ns_charm_app_name}=   Get Application Name NS Level Charm   %{OSM_HOSTNAME}   ${username}   ${password}   ${privatekey}   ${model_name}   ${charm_name}
     ${length}=   Get Length   ${ns_charm_app_name}
     Should Be True   ${length} <50
 
+
 Check VDU Charm Application Name
-    [Documentation]   Check that the VDU charm has the right length.
-    ${vdu_charm_app_name}=   Get Application Name VDU Level Charm   %{OSM_HOSTNAME}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${MODEL_NAME}   ${VDU_PROFILE_ID}   ${EE_NAME}
+
+    ${vdu_charm_app_name}=   Get Application Name VDU Level Charm   %{OSM_HOSTNAME}   ${username}   ${password}   ${privatekey}   ${model_name}   ${vdu_profile_id}   ${ee_name}
     ${length}=   Get Length   ${vdu_charm_app_name}
     Should Be True   ${length} <50
 
 # TODO: Check Initial Config Primitives Status
 
 Delete NS
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
-    Delete Temporary Descriptor Folder   '%{PACKAGES_FOLDER}/${NEW_NSD_PKG}'
+
+    Delete NSD   ${nsd_name}
+    Delete Temporary Descriptor Folder   '%{PACKAGES_FOLDER}/${new_nsd_pkg}'
+
 
 Delete VNF Descriptors
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME1}
-    Delete VNFD   ${VNFD_NAME2}
+
+    Delete VNFD   ${vnfd_name1}
+    Delete VNFD   ${vnfd_name2}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor and instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME1}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME2}
-    Delete Temporary Descriptor Folder   '%{PACKAGES_FOLDER}/${NEW_NSD_PKG}'
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name1}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name2}
+    Delete Temporary Descriptor Folder   '%{PACKAGES_FOLDER}/${new_nsd_pkg}'
+
 
 Delete Temporary Descriptor Folder
     [Documentation]   Removes the temporary package folder created for the test
     [Arguments]   ${folder_name}
-    ${rc}   ${stdout}=   Run And Return RC And Output   rm -rf '${folder_name}'
-    Log   ${rc},${stdout}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   rm -rf '${folder_name}'
+    Log   ${stdout}
+
+
index a405c64..e339446 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-13] NS Relations
 
 Library   OperatingSystem
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   basic_13   cluster_ee_config   cluster_relations   regression   azure
+Force Tags   basic_13   cluster_ee_config   cluster_relations   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG1}   charm-packages/ns_relations_provides_vnf
-${VNFD_PKG2}   charm-packages/ns_relations_requires_vnf
-${VNFD_NAME1}   ns_relations_provides-vnf
-${VNFD_NAME2}   ns_relations_requires-vnf
-${NSD_PKG}   charm-packages/ns_relations_ns
-${NSD_NAME}   ns_relations-ns
+${vnfd_pkg1}   charm-packages/ns_relations_provides_vnf
+${vnfd_pkg2}   charm-packages/ns_relations_requires_vnf
+${vnfd_name1}   ns_relations_provides-vnf
+${vnfd_name2}   ns_relations_requires-vnf
+${nsd_pkg}   charm-packages/ns_relations_ns
+${nsd_name}   ns_relations-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_13_ns_relations_test
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${NS_TIMEOUT}   15min
+${ns_name}   basic_13_ns_relations_test
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_timeout}   15min
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
-${ACTION_NAME}   touch
-${VNF_MEMBER_INDEX_1}   vnf1
-${VNF_MEMBER_INDEX_2}   vnf2
-${DAY_1_FILE_NAME}   /home/ubuntu/first-touch
-${DAY_2_FILE_NAME_1}   /home/ubuntu/mytouch1
-${DAY_2_FILE_NAME_2}   /home/ubuntu/mytouch2
+${action_name}   touch
+${vnf_member_index_1}   vnf1
+${vnf_member_index_2}   vnf2
+${day_1_file_name}   /home/ubuntu/first-touch
+${day_2_file_name_1}   /home/ubuntu/mytouch1
+${day_2_file_name_2}   /home/ubuntu/mytouch2
 
 
 *** Test Cases ***
 Create Charm VNF Descriptor Provides
-    [Documentation]   Upload VNF package for the testsuite with a charm providing a relation.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG1}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg1}'
+
 
 Create Charm VNF Descriptor Requires
-    [Documentation]   Upload VNF package for the testsuite with a charm requiring a relation.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG2}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg2}'
+
 
 Create Charm NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Charm Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}   ${NS_TIMEOUT}
-    Set Suite Variable   ${NS_ID}   ${id}
 
-# TODO: Check juju status for relations
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_timeout}
+    Set Suite Variable   ${ns_id}   ${id}
+
+
+# TODO Check juju status for relations
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor Provides
-    [Documentation]   Delete first VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME1}
+
+    Delete VNFD   ${vnfd_name1}
+
 
 Delete VNF Descriptor Requires
-    [Documentation]   Delete second VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME2}
+
+    Delete VNFD   ${vnfd_name2}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME1}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME2}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index ed4b167..dbe232d 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-14] VNF Relations
 
 Library   OperatingSystem
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   basic_14   cluster_ee_config   cluster_relations   regression   azure
+Force Tags   basic_14   cluster_ee_config   cluster_relations   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   charm-packages/vnf_relations_vnf
-${VNFD_NAME}   vnf_relations-vnf
-${NSD_PKG}   charm-packages/vnf_relations_ns
-${NSD_NAME}   vnf_relations-ns
+${vnfd_pkg}   charm-packages/vnf_relations_vnf
+${vnfd_name}   vnf_relations-vnf
+${nsd_pkg}   charm-packages/vnf_relations_ns
+${nsd_name}   vnf_relations-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_14_vnf_relations_test
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${NS_TIMEOUT}   15min
+${ns_name}   basic_14_vnf_relations_test
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_timeout}   15min
 
 # SSH public keys file
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
+${publickey}   %{HOME}/.ssh/id_rsa.pub
 
 
 *** Test Cases ***
 Create Charm VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create Charm NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Charm Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}   ${NS_TIMEOUT}
-    Set Suite Variable   ${NS_ID}   ${id}
 
-# TODO: Check juju status for relations
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_timeout}
+    Set Suite Variable   ${ns_id}   ${id}
+
+
+# TODO Check juju status for relations
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
 
-Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
+    Delete NSD   ${nsd_name}
+
+
+Delete VNF Descriptor Provides
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index 4d45c77..c57b11c 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-15] RBAC Configurations.
 
@@ -19,75 +17,78 @@ Library   OperatingSystem
 Library   String
 Library   Collections
 
-Resource   ../lib/user_lib.resource
-Resource   ../lib/project_lib.resource
-Resource   ../lib/role_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/user_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/project_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/role_lib.robot
 
-Test Tags   basic_15   cluster_main   daily   regression   azure
+Force Tags   basic_15   cluster_main   daily   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # User, project and roles to use
-${USERNAME}   basic_15_test_user
-${USER_PASSWORD}   Basic_15_user_pass
-${USER_NEW_PASSWORD}   Basic_15_new_pass
-${USER_ROLE}   project_user
-${USER_PROJECT}   admin
-${PROJECT_NAME}   basic_15_test_project
-${NEW_PROJECT_NAME}   basic_15_project_test
-${ROLE_NAME}   test_role
-${SUCCESS_RETURN_CODE}   0
+${user_name}   basic_15_test_user
+${user_password}   Basic_15_user_pass
+${user_new_password}   Basic_15_new_pass
+${user_role}   project_user
+${user_project}   admin
+${project_name}   basic_15_test_project
+${new_project_name}   basic_15_project_test
+${role_name}   test_role
+${success_return_code}   0
 
 
 *** Test Cases ***
 Create And Validate User
-    [Documentation]   Create a user in OSM.
-    Create User   ${USERNAME}   ${USER_PASSWORD}
-    Check If User Exists   ${USERNAME}
+
+    Create User   ${user_name}   ${user_password}
+    Check If User Exists   ${user_name}
+
 
 Assign Role To User
-    [Documentation]   Assign a user to a project with a role
-    Update User Role   ${USERNAME}   ${USER_PROJECT}   ${USER_ROLE}
-    Check If User Is Assigned To Project   ${USERNAME}   ${USER_PROJECT}
-    Check If User Has Role   ${USERNAME}   ${USER_ROLE}   ${USER_PROJECT}
+
+    Update User Role   ${user_name}   ${user_project}   ${user_role}
+    Check If User Is Assigned To Project   ${user_name}   ${user_project}
+    Check If User Has Role   ${user_name}   ${user_role}   ${user_project}
+
 
 Run Action As User
-    [Documentation]   Update the password of the user.
-    Update User Password   ${USERNAME}   ${USER_PASSWORD}   ${USER_NEW_PASSWORD}
-    ${rc}   ${stdout}=   Run And Return RC And Output   OSM_USER=${USERNAME} OSM_PROJECT=${USER_PROJECT} OSM_PASSWORD=${USER_NEW_PASSWORD} osm ns-list
-    Log   ${rc}
-    Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
+
+    Update User Password   ${user_name}   ${user_password}   ${user_new_password}
+    ${rc}   ${stdout}=   Run And Return RC And Output   OSM_USER=${user_name} OSM_PROJECT=${user_project} OSM_PASSWORD=${user_new_password} osm ns-list
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
 
 Create And Update Project
-    [Documentation]   Create a project and update its name.
-    Create Project   ${PROJECT_NAME}
-    Update Project Name   ${PROJECT_NAME}   ${NEW_PROJECT_NAME}
+
+    Create Project   ${project_name}
+    Update Project Name   ${project_name}   ${new_project_name}
+
 
 Create And Validate Role
-    [Documentation]   Create a role and check that exists in OSM.
-    Create Role   ${ROLE_NAME}
-    Check If Role Exists   ${ROLE_NAME}
+
+    Create Role   ${role_name}
+    Check If Role Exists   ${role_name}
+
 
 Update Role Information
-    [Documentation]   Update a role with a capability.
-    Update Role   ${ROLE_NAME}   add='vims: true'
-    Check If Role Exists   ${ROLE_NAME}
+
+    Update Role   ${role_name}   add='vims: true'
+    Check If Role Exists   ${role_name}
+
 
 Delete Allocated Resources
-    [Documentation]   Delete user, project and role.
     [Tags]   cleanup
-    Delete User   ${USERNAME}
-    Delete Project   ${NEW_PROJECT_NAME}
-    Delete Role   ${ROLE_NAME}
+
+    Delete User   ${user_name}
+    Delete Project   ${new_project_name}
+    Delete Role   ${role_name}
 
 
 *** Keywords ***
 Suite Cleanup
-    [Documentation]   Test Suite Cleanup: Deleting users, roles and projects.
-    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete User   ${USERNAME}
-    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete Role   ${ROLE_NAME}
-    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete Project   ${PROJECT_NAME}
-    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete Project   ${NEW_PROJECT_NAME}
+    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete User   ${user_name}
+    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete Role   ${role_name}
+    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete Project   ${project_name}
+    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete Project   ${new_project_name}
index 7cd462e..0263552 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-16] Advanced onboarding with override and complex scaling (3 initial instances, scaled by two).
 
@@ -19,116 +17,129 @@ Library   OperatingSystem
 Library   String
 Library   Collections
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   basic_16   cluster_main   daily   regression   azure
+Force Tags   basic_16   cluster_main   daily   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   hackfest_basic_metrics_vnf
-${VNFD_NAME}   hackfest_basic_metrics-vnf
-${NSD_PKG}   hackfest_basic_metrics_ns
-${NSD_NAME}   hackfest_basic-ns-metrics
+${vnfd_pkg}   hackfest_basic_metrics_vnf
+${vnfd_name}   hackfest_basic_metrics-vnf
+${nsd_pkg}   hackfest_basic_metrics_ns
+${nsd_name}   hackfest_basic-ns-metrics
 
 # NS instance name and configuration
-${NS_NAME}   basic_16
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   basic_16
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH public keys file
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
+${publickey}   %{HOME}/.ssh/id_rsa.pub
 
 # Initial, delta, min and max number of VDU instances
-${INIT_INSTANCES}   3
-${MIN_INSTANCES}   3
-${MAX_INSTANCES}   5
-${DELTA_INSTANCES}   2
-${SCALING_GROUP}   vdu_autoscale
-${VNF_MEMBER_INDEX}   vnf
+${init_instances}   3
+${min_instances}   3
+${max_instances}   5
+${delta_instances}   2
+${scaling_group}   vdu_autoscale
+${vnf_member_index}   vnf
 
 
 *** Test Cases ***
 Create Scaling VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD Overriding Fields   '%{PACKAGES_FOLDER}/${VNFD_PKG}'   df.0.instantiation-level.0.vdu-level.0.number-of-instances=${INIT_INSTANCES};df.0.vdu-profile.0.min-number-of-instances=${MIN_INSTANCES};df.0.vdu-profile.0.max-number-of-instances=${MAX_INSTANCES};df.0.scaling-aspect.0.aspect-delta-details.deltas.0.vdu-delta.0.number-of-instances=${DELTA_INSTANCES}
+
+    Create VNFD Overriding Fields   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   df.0.instantiation-level.0.vdu-level.0.number-of-instances=${init_instances};df.0.vdu-profile.0.min-number-of-instances=${min_instances};df.0.vdu-profile.0.max-number-of-instances=${max_instances};df.0.scaling-aspect.0.aspect-delta-details.deltas.0.vdu-delta.0.number-of-instances=${delta_instances}
+
 
 Create Scaling NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Scaling Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Vnf Id
-    [Documentation]   Retrieve VNF instance id to be used later on.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vnfr_list}=   Get Ns Vnfr Ids   ${NS_ID}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vnfr_list}=   Get Ns Vnfr Ids   ${ns_id}
     Log List   ${vnfr_list}
-    Set Suite Variable   ${VNF_ID}   ${vnfr_list}[0]
+    Set Suite Variable   ${vnf_id}   ${vnfr_list}[0]
+
 
 Check Vdus Before Scale Out
     [Documentation]   Check the number of VDUs instances before the manual scaling.
-    @{vdur_list}=   Get Vnf Vdur Names   ${VNF_ID}
+
+    @{vdur_list}=   Get Vnf Vdur Names   ${vnf_id}
     Log List   ${vdur_list}
     ${vdurs}=   Get Length   ${vdur_list}
-    Set Suite Variable   ${INITIAL_VDUR_COUNT}   ${vdurs}
-    IF   ${INIT_INSTANCES} != ${INITIAL_VDUR_COUNT}   Fail   msg=Instantiated VDUs (${INITIAL_VDUR_COUNT}) don't match specified number in descriptor (${INIT_INSTANCES})
+    Set Suite Variable   ${initial_vdur_count}   ${vdurs}
+    Run Keyword If   ${init_instances} != ${initial_vdur_count}   Fail   msg=Instantiated VDUs (${initial_vdur_count}) don't match specified number in descriptor (${init_instances})
+
 
 Perform Manual Vdu Scale Out
-    [Documentation]   Perform a manual scale-out operation of the VNF.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute Manual VNF Scale   ${NS_NAME}   ${VNF_MEMBER_INDEX}   ${SCALING_GROUP}   SCALE_OUT
-    Log   ${ns_op_id}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute Manual VNF Scale   ${ns_name}   ${vnf_member_index}   ${scaling_group}   SCALE_OUT
+
 
 Check Vdus After Scale Out
-    [Documentation]   Check whether there is one extra VDU after scaling out.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vdur_list}=   Get Vnf Vdur Names   ${VNF_ID}
+    [Documentation]   Check whether there is one more VDU after scaling or not.
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vdur_list}=   Get Vnf Vdur Names   ${vnf_id}
     Log List   ${vdur_list}
     ${vdurs}=   Get Length   ${vdur_list}
-    IF   ${vdurs} != ${INITIAL_VDUR_COUNT} + ${DELTA_INSTANCES}   Fail   msg=VDU instances in the VNF (${vdurs}) don't match after Scale Out (${INITIAL_VDUR_COUNT} + ${DELTA_INSTANCES})
+    Run Keyword If   ${vdurs} != ${initial_vdur_count} + ${delta_instances}   Fail   msg=VDU instances in the VNF (${vdurs}) don't match after Scale Out (${initial_vdur_count} + ${delta_instances})
+
 
 Perform Manual Vdu Scale In
-    [Documentation]   Perform a manual scale-in operation of the VNF.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute Manual VNF Scale   ${NS_NAME}   ${VNF_MEMBER_INDEX}   ${SCALING_GROUP}   SCALE_IN
-    Log   ${ns_op_id}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute Manual VNF Scale   ${ns_name}   ${vnf_member_index}   ${scaling_group}   SCALE_IN
+
 
 Check Vdus After Scaling In
-    [Documentation]   Check whether there is one less VDU after scaling in.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vdur_list}=   Get Vnf Vdur Names   ${VNF_ID}
+    [Documentation]   Check whether there is one less VDU after scaling or not.
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vdur_list}=   Get Vnf Vdur Names   ${vnf_id}
     Log List   ${vdur_list}
     ${vdurs}=   Get Length   ${vdur_list}
-    IF   ${vdurs} != ${INITIAL_VDUR_COUNT}   Fail   msg=There is the same number of VDU records in the VNF after Scale In
+    Run Keyword If   ${vdurs} != ${initial_vdur_count}   Fail   msg=There is the same number of VDU records in the VNF after Scale In
+
 
 Delete NS Instance
-    [Documentation]   Delete NS intance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index 253665c..b162bcd 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-17] Delete VNF Package Before NS Package.
 
@@ -21,48 +19,55 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
 
-Test Tags   basic_17   cluster_main   daily   regression   azure
+Force Tags   basic_17   cluster_main   daily   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   hackfest_basic_vnf
-${VNFD_NAME}   hackfest_basic-vnf
-${NSD_PKG}   hackfest_basic_ns
-${NSD_NAME}   hackfest_basic-ns
+${vnfd_pkg}   hackfest_basic_vnf
+${vnfd_name}   hackfest_basic-vnf
+${nsd_pkg}   hackfest_basic_ns
+${nsd_name}   hackfest_basic-ns
 
 
 *** Test Cases ***
 Create VNF Package
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Package
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Cannot Delete VNF Package
-    [Documentation]   Assert that the VNF package cannot be deleted without deleting the corresponding NS package using it.
-    Assert Failure Delete VNFD   ${VNFD_NAME}
+
+    Assert Failure Delete VNFD   ${vnfd_name}
+
 
 Delete NS Package
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Package
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting NS and VNF packages
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
+
index 41be581..96d7a4d 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-18] NS with a VLD with a virtual link profile.
 
@@ -20,173 +18,187 @@ Library   String
 Library   Collections
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   basic_18   cluster_main   daily   regression
+Force Tags   basic_18   cluster_main   daily   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   ubuntu_4ifaces_vnf
-${VNFD_NAME}   ubuntu_4ifaces-vnf
-${NSD_PKG}   ubuntu_4ifaces_ns
-${NSD_NAME}   ubuntu_4ifaces-ns
+${vnfd_pkg}   ubuntu_4ifaces_vnf
+${vnfd_name}   ubuntu_4ifaces-vnf
+${nsd_pkg}   ubuntu_4ifaces_ns
+${nsd_name}   ubuntu_4ifaces-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_18
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   basic_18
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
 
 # VNFs data
-${VNF_MEMBER_INDEX_1}   vnf1
-${VNF_MEMBER_INDEX_2}   vnf2
-${IFACE1_NAME}   eth1
-${IFACE2_NAME}   eth2
-${IFACE3_NAME}   eth3
-${DATANET1_PREFIX}   ^192.168.10.*
-${DATANET2_PREFIX}   ^192.168.20.*
-${DATANET3_PREFIX}   ^192.168.30.*
+${vnf_member_index_1}   vnf1
+${vnf_member_index_2}   vnf2
+${iface1_name}   eth1
+${iface2_name}   eth2
+${iface3_name}   eth3
+${datanet1_prefix}   ^192.168.10.*
+${datanet2_prefix}   ^192.168.20.*
+${datanet3_prefix}   ^192.168.30.*
 
-${SUCCESS_RETURN_CODE}   0
+${success_return_code}   0
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Vnfs Info
-    [Documentation]   Get information from the two VNF of the Ns, specifically the VNF instance id and the mgmt IP address.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vnfr_list}=   Get Ns Vnfr Ids   ${NS_ID}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vnfr_list}=   Get Ns Vnfr Ids   ${ns_id}
     Log List   ${vnfr_list}
-    Set Suite Variable   ${VNF_ID1}   ${vnfr_list}[0]
-    Set Suite Variable   ${VNF_ID2}   ${vnfr_list}[1]
-    ${ip}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_1}
-    Set Suite Variable   ${VNF1_IPMGMT}   ${ip}
-    Log   ${VNF1_IPMGMT}
-    ${ip}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_2}
-    Set Suite Variable   ${VNF2_IPMGMT}   ${ip}
-    Log   ${VNF2_IPMGMT}
+    Set Suite Variable   ${vnf_id1}   ${vnfr_list}[0]
+    Set Suite Variable   ${vnf_id2}   ${vnfr_list}[1]
+    ${ip}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_1}
+    Set Suite Variable   ${vnf1_ipmgmt}   ${ip}
+    Log   ${vnf1_ipmgmt}
+    ${ip}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_2}
+    Set Suite Variable   ${vnf2_ipmgmt}   ${ip}
+    Log   ${vnf2_ipmgmt}
+
 
 Check Vnf1 IPs
-    [Documentation]   Check whether IP addresses of the first VNF in the VNF record meet the expected CIDR.
-    Variable Should Exist   ${VNF_ID1}   msg=VNF1 is not available
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnf-show ${VNF_ID1} --literal | yq '.vdur[0].interfaces[] | select(.name == "${IFACE1_NAME}")' | yq -r '."ip-address"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Should Match Regexp   ${stdout}   ${DATANET1_PREFIX}   msg=${stdout} doesn't match subnet's regexp ${DATANET1_PREFIX}
-    Set Suite Variable   ${VNF1_IP1}   ${stdout}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnf-show ${VNF_ID1} --literal | yq '.vdur[0].interfaces[] | select(.name == "${IFACE2_NAME}")' | yq -r '."ip-address"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Should Match Regexp   ${stdout}   ${DATANET2_PREFIX}   msg=${stdout} doesn't match subnet's regexp ${DATANET2_PREFIX}
-    Set Suite Variable   ${VNF1_IP2}   ${stdout}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnf-show ${VNF_ID1} --literal | yq '.vdur[0].interfaces[] | select(.name == "${IFACE3_NAME}")' | yq -r '."ip-address"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Should Match Regexp   ${stdout}   ${DATANET3_PREFIX}   msg=${stdout} doesn't match subnet's regexp ${DATANET3_PREFIX}
-    Set Suite Variable   ${VNF1_IP3}   ${stdout}
+
+    Variable Should Exist   ${vnf_id1}   msg=VNF1 is not available
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id1} --literal | yq '.vdur[0].interfaces[] | select(.name == "${iface1_name}")' | yq -r '."ip-address"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Should Match Regexp   ${stdout}   ${datanet1_prefix}   msg=${stdout} doesn't match subnet's regexp ${datanet1_prefix}
+    Set Suite Variable   ${vnf1_ip1}   ${stdout}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id1} --literal | yq '.vdur[0].interfaces[] | select(.name == "${iface2_name}")' | yq -r '."ip-address"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Should Match Regexp   ${stdout}   ${datanet2_prefix}   msg=${stdout} doesn't match subnet's regexp ${datanet2_prefix}
+    Set Suite Variable   ${vnf1_ip2}   ${stdout}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id1} --literal | yq '.vdur[0].interfaces[] | select(.name == "${iface3_name}")' | yq -r '."ip-address"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Should Match Regexp   ${stdout}   ${datanet3_prefix}   msg=${stdout} doesn't match subnet's regexp ${datanet3_prefix}
+    Set Suite Variable   ${vnf1_ip3}   ${stdout}
+
+
 
 Check Vnf2 IPs
-    [Documentation]   Check whether IP addresses of the second VNF in the VNF record meet the expected CIDR.
-    Variable Should Exist   ${VNF_ID1}   msg=VNF2 is not available
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnf-show ${VNF_ID2} --literal | yq '.vdur[0].interfaces[] | select(.name == "${IFACE1_NAME}")' | yq -r '."ip-address"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Should Match Regexp   ${stdout}   ${DATANET1_PREFIX}   msg=${stdout} doesn't match subnet's regexp ${DATANET1_PREFIX}
-    Set Suite Variable   ${VNF2_IP1}   ${stdout}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnf-show ${VNF_ID2} --literal | yq '.vdur[0].interfaces[] | select(.name == "${IFACE2_NAME}")' | yq -r '."ip-address"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Should Match Regexp   ${stdout}   ${DATANET2_PREFIX}   msg=${stdout} doesn't match subnet's regexp ${DATANET2_PREFIX}
-    Set Suite Variable   ${VNF2_IP2}   ${stdout}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnf-show ${VNF_ID2} --literal | yq '.vdur[0].interfaces[] | select(.name == "${IFACE3_NAME}")' | yq -r '."ip-address"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Should Match Regexp   ${stdout}   ${DATANET3_PREFIX}   msg=${stdout} doesn't match subnet's regexp ${DATANET3_PREFIX}
-    Set Suite Variable   ${VNF2_IP3}   ${stdout}
+
+    Variable Should Exist   ${vnf_id1}   msg=VNF2 is not available
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id2} --literal | yq '.vdur[0].interfaces[] | select(.name == "${iface1_name}")' | yq -r '."ip-address"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Should Match Regexp   ${stdout}   ${datanet1_prefix}   msg=${stdout} doesn't match subnet's regexp ${datanet1_prefix}
+    Set Suite Variable   ${vnf2_ip1}   ${stdout}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id2} --literal | yq '.vdur[0].interfaces[] | select(.name == "${iface2_name}")' | yq -r '."ip-address"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Should Match Regexp   ${stdout}   ${datanet2_prefix}   msg=${stdout} doesn't match subnet's regexp ${datanet2_prefix}
+    Set Suite Variable   ${vnf2_ip2}   ${stdout}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id2} --literal | yq '.vdur[0].interfaces[] | select(.name == "${iface3_name}")' | yq -r '."ip-address"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Should Match Regexp   ${stdout}   ${datanet3_prefix}   msg=${stdout} doesn't match subnet's regexp ${datanet3_prefix}
+    Set Suite Variable   ${vnf2_ip3}   ${stdout}
+
 
 Verify Vnf1 Interfaces
-    [Documentation]   Check whether IP addresses of the first VNF configured inside the VM meet the expected CIDR.
-    Variable Should Exist   ${VNF1_IPMGMT}   msg=IP address of the data VNF '${VNF_MEMBER_INDEX_1}' is not available
-    Variable Should Exist   ${PRIVATEKEY}   msg=SSH private key not available
+
+    Variable Should Exist   ${vnf1_ipmgmt}   msg=IP address of the data VNF '${vnf_member_index_1}' is not available
+    Variable Should Exist   ${privatekey}   msg=SSH private key not available
     Sleep   10 seconds   Wait for SSH daemon to be up
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF1_IPMGMT}   ${USERNAME}   ${EMPTY}   ${PRIVATEKEY}   ip --brief addr show up | grep -v "^lo" | awk '{print $3}'
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf1_ipmgmt}   ${username}   ${EMPTY}   ${privatekey}   ip --brief addr show up | grep -v "^lo" | awk '{print $3}'
     Log   ${stdout}
-    @{ip}=   Split String   ${stdout}
-    Should Match Regexp   ${ip}[1]   ${DATANET1_PREFIX}   msg=${ip}[1] doesn't match subnet's regexp ${DATANET1_PREFIX}
-    Should Match Regexp   ${ip}[2]   ${DATANET2_PREFIX}   msg=${ip}[2] doesn't match subnet's regexp ${DATANET2_PREFIX}
-    Should Match Regexp   ${ip}[3]   ${DATANET3_PREFIX}   msg=${ip}[3] doesn't match subnet's regexp ${DATANET3_PREFIX}
+    @{ip} =   Split String   ${stdout}
+    Should Match Regexp   ${ip}[1]   ${datanet1_prefix}   msg=${ip}[1] doesn't match subnet's regexp ${datanet1_prefix}
+    Should Match Regexp   ${ip}[2]   ${datanet2_prefix}   msg=${ip}[2] doesn't match subnet's regexp ${datanet2_prefix}
+    Should Match Regexp   ${ip}[3]   ${datanet3_prefix}   msg=${ip}[3] doesn't match subnet's regexp ${datanet3_prefix}
+
 
 Verify Vnf2 Interfaces
-    [Documentation]   Check whether IP addresses of the second VNF configured inside the VM meet the expected CIDR.
-    Variable Should Exist   ${VNF2_IPMGMT}   msg=IP address of the data VNF '${VNF_MEMBER_INDEX_2}' is not available
-    Variable Should Exist   ${PRIVATEKEY}   msg=SSH private key not available
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF2_IPMGMT}   ${USERNAME}   ${EMPTY}   ${PRIVATEKEY}   ip --brief addr show up | grep -v "^lo" | awk '{print $3}'
+
+    Variable Should Exist   ${vnf2_ipmgmt}   msg=IP address of the data VNF '${vnf_member_index_2}' is not available
+    Variable Should Exist   ${privatekey}   msg=SSH private key not available
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf2_ipmgmt}   ${username}   ${EMPTY}   ${privatekey}   ip --brief addr show up | grep -v "^lo" | awk '{print $3}'
     Log   ${stdout}
-    @{ip}=   Split String   ${stdout}
-    Should Match Regexp   ${ip}[1]   ${DATANET1_PREFIX}   msg=${ip}[1] doesn't match subnet's regexp ${DATANET1_PREFIX}
-    Should Match Regexp   ${ip}[2]   ${DATANET2_PREFIX}   msg=${ip}[2] doesn't match subnet's regexp ${DATANET2_PREFIX}
-    Should Match Regexp   ${ip}[3]   ${DATANET3_PREFIX}   msg=${ip}[3] doesn't match subnet's regexp ${DATANET3_PREFIX}
+    @{ip} =   Split String   ${stdout}
+    Should Match Regexp   ${ip}[1]   ${datanet1_prefix}   msg=${ip}[1] doesn't match subnet's regexp ${datanet1_prefix}
+    Should Match Regexp   ${ip}[2]   ${datanet2_prefix}   msg=${ip}[2] doesn't match subnet's regexp ${datanet2_prefix}
+    Should Match Regexp   ${ip}[3]   ${datanet3_prefix}   msg=${ip}[3] doesn't match subnet's regexp ${datanet3_prefix}
+
 
 Ping from Vnf1 to Vnf2
-    [Documentation]   Check connectivity from the first VNF to the second VNF using ping.
-    Variable Should Exist   ${VNF1_IPMGMT}   msg=IP address of the data VNF '${VNF_MEMBER_INDEX_1}' is not available
-    Variable Should Exist   ${PRIVATEKEY}   msg=SSH private key not available
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF1_IPMGMT}   ${USERNAME}   ${EMPTY}   ${PRIVATEKEY}   ip addr ; ping -c 5 ${VNF2_IPMGMT}
+
+    Variable Should Exist   ${vnf1_ipmgmt}   msg=IP address of the data VNF '${vnf_member_index_1}' is not available
+    Variable Should Exist   ${privatekey}   msg=SSH private key not available
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf1_ipmgmt}   ${username}   ${EMPTY}   ${privatekey}   ip addr ; ping -c 5 ${vnf2_ipmgmt}
     Log   ${stdout}
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF1_IPMGMT}   ${USERNAME}   ${EMPTY}   ${PRIVATEKEY}   ping -c 5 ${VNF2_IP1}
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf1_ipmgmt}   ${username}   ${EMPTY}   ${privatekey}   ping -c 5 ${vnf2_ip1}
     Log   ${stdout}
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF1_IPMGMT}   ${USERNAME}   ${EMPTY}   ${PRIVATEKEY}   ping -c 5 ${VNF2_IP2}
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf1_ipmgmt}   ${username}   ${EMPTY}   ${privatekey}   ping -c 5 ${vnf2_ip2}
     Log   ${stdout}
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF1_IPMGMT}   ${USERNAME}   ${EMPTY}   ${PRIVATEKEY}   ping -c 5 ${VNF2_IP3}
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf1_ipmgmt}   ${username}   ${EMPTY}   ${privatekey}   ping -c 5 ${vnf2_ip3}
     Log   ${stdout}
 
+
 Ping from Vnf2 to Vnf1
-    [Documentation]   Check connectivity from the second VNF to the first VNF using ping.
-    Variable Should Exist   ${VNF1_IPMGMT}   msg=IP address of the data VNF '${VNF_MEMBER_INDEX_2}' is not available
-    Variable Should Exist   ${PRIVATEKEY}   msg=SSH private key not available
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF2_IPMGMT}   ${USERNAME}   ${EMPTY}   ${PRIVATEKEY}   ip addr ; ping -c 5 ${VNF1_IPMGMT}
+
+    Variable Should Exist   ${vnf1_ipmgmt}   msg=IP address of the data VNF '${vnf_member_index_2}' is not available
+    Variable Should Exist   ${privatekey}   msg=SSH private key not available
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf2_ipmgmt}   ${username}   ${EMPTY}   ${privatekey}   ip addr ; ping -c 5 ${vnf1_ipmgmt}
     Log   ${stdout}
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF2_IPMGMT}   ${USERNAME}   ${EMPTY}   ${PRIVATEKEY}   ip addr ; ping -c 5 ${VNF1_IP1}
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf2_ipmgmt}   ${username}   ${EMPTY}   ${privatekey}   ip addr ; ping -c 5 ${vnf1_ip1}
     Log   ${stdout}
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF2_IPMGMT}   ${USERNAME}   ${EMPTY}   ${PRIVATEKEY}   ip addr ; ping -c 5 ${VNF1_IP2}
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf2_ipmgmt}   ${username}   ${EMPTY}   ${privatekey}   ip addr ; ping -c 5 ${vnf1_ip2}
     Log   ${stdout}
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF2_IPMGMT}   ${USERNAME}   ${EMPTY}   ${PRIVATEKEY}   ip addr ; ping -c 5 ${VNF1_IP3}
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf2_ipmgmt}   ${username}   ${EMPTY}   ${privatekey}   ip addr ; ping -c 5 ${vnf1_ip3}
     Log   ${stdout}
 
+
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index 6d5a557..6701096 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-19] NS with a single VNF and two VDU linked by a VLD with ip-profile.
 
@@ -20,91 +18,99 @@ Library   String
 Library   Collections
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   basic_19   cluster_main   daily   regression
+Force Tags   basic_19   cluster_main   daily   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   ipprofile_2vm_vnf
-${VNFD_NAME}   ipprofile_2vm-vnf
-${NSD_PKG}   ipprofile_2vm_ns
-${NSD_NAME}   ipprofile_2vm-ns
+${vnfd_pkg}   ipprofile_2vm_vnf
+${vnfd_name}   ipprofile_2vm-vnf
+${nsd_pkg}   ipprofile_2vm_ns
+${nsd_name}   ipprofile_2vm-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_19
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   basic_19
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${USERNAME}   ubuntu
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${username}   ubuntu
 
 # VNFs data
-${VNF_MEMBER_INDEX_1}   vnf
-${INTERNAL_PREFIX}   ^192.168.200.*
+${vnf_member_index_1}   vnf
+${internal_prefix}   ^192.168.200.*
 
-${SUCCESS_RETURN_CODE}   0
+${success_return_code}   0
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Vnf Info
-    [Documentation]   Get VNF information, specifically the VNF instance id and the mgmt IP address.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vnfr_list}=   Get Ns Vnfr Ids   ${NS_ID}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vnfr_list}=   Get Ns Vnfr Ids   ${ns_id}
     Log List   ${vnfr_list}
-    Set Suite Variable   ${VNF_ID}   ${vnfr_list}[0]
-    ${ip}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_1}
-    Set Suite Variable   ${VNF_IPMGMT}   ${ip}
-    Log   ${VNF_IPMGMT}
+    Set Suite Variable   ${vnf_id}   ${vnfr_list}[0]
+    ${ip}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_1}
+    Set Suite Variable   ${vnf_ipmgmt}   ${ip}
+    Log   ${vnf_ipmgmt}
+
 
 Check Vnf IPs
-    [Documentation]   Check whether IP addresses are syntactically valid.
-    Variable Should Exist   ${VNF_ID}   msg=VNF is not available
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnf-show ${VNF_ID} --literal | yq '.vdur[0].interfaces[] | select(."vnf-vld-id" == "internal")' | yq -r '."ip-address"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Should Match Regexp   ${stdout}   ${INTERNAL_PREFIX}   msg=${stdout} doesn't match subnet's regexp ${INTERNAL_PREFIX}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnf-show ${VNF_ID} --literal | yq '.vdur[1].interfaces[] | select(."vnf-vld-id" == "internal")' | yq -r '."ip-address"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Should Match Regexp   ${stdout}   ${INTERNAL_PREFIX}   msg=${stdout} doesn't match subnet's regexp ${INTERNAL_PREFIX}
+
+    Variable Should Exist   ${vnf_id}   msg=VNF is not available
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id} --literal | yq '.vdur[0].interfaces[] | select(."vnf-vld-id" == "internal")' | yq -r '."ip-address"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Should Match Regexp   ${stdout}   ${internal_prefix}   msg=${stdout} doesn't match subnet's regexp ${internal_prefix}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id} --literal | yq '.vdur[1].interfaces[] | select(."vnf-vld-id" == "internal")' | yq -r '."ip-address"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Should Match Regexp   ${stdout}   ${internal_prefix}   msg=${stdout} doesn't match subnet's regexp ${internal_prefix}
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index a901d1e..48b8624 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-20] Manual VDU Scaling to test juju applications are scaling for native charms (testing Bug-1609).
 
@@ -19,146 +17,171 @@ Library   OperatingSystem
 Library   String
 Library   Collections
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   basic_20   cluster_main   daily   regression   azure
+Force Tags   basic_20   cluster_main   daily   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   charm-packages/native_manual_scale_charm_vnf
-${VNFD_NAME}   native_manual_scale_charm-vnf
-${NSD_PKG}   charm-packages/native_manual_scale_charm_ns
-${NSD_NAME}   native_manual_scale_charm-ns
+${vnfd_pkg}   charm-packages/native_manual_scale_charm_vnf
+${vnfd_name}   native_manual_scale_charm-vnf
+${nsd_pkg}   charm-packages/native_manual_scale_charm_ns
+${nsd_name}   native_manual_scale_charm-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_20_manual_vdu_scaling_test
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${VNF_MEMBER_INDEX}   vnf
+${ns_name}   basic_20_manual_vdu_scaling_test
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${vnf_member_index}   vnf
 
 # SSH public key file
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
+${publickey}   %{HOME}/.ssh/id_rsa.pub
 
 # Scaling group name of VDU instances
-${SCALING_GROUP}   manual-scaling_mgmtVM
-
-${SCALE_WAIT_TIME}   4min
+${scaling_group}   manual-scaling_mgmtVM
 
+${scale_wait_time}   4min
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Vnf Id
-    [Documentation]   Retrieve VNF instance id to be used later on
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vnfr_list}=   Get Ns Vnfr Ids   ${NS_ID}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vnfr_list}=   Get Ns Vnfr Ids   ${ns_id}
     Log List   ${vnfr_list}
-    Set Suite Variable   ${VNF_ID}   ${vnfr_list}[0]
+    Set Suite Variable   ${vnf_id}   ${vnfr_list}[0]
+
 
 Get Vdus Before Scale Out
     [Documentation]   Get the number of VDU records before the manual scaling.
-    @{vdur_list}=   Get Vnf Vdur Names   ${VNF_ID}
+
+    @{vdur_list}=   Get Vnf Vdur Names   ${vnf_id}
     Log List   ${vdur_list}
     ${vdurs}=   Get Length   ${vdur_list}
-    Set Suite Variable   ${INITIAL_VDUR_COUNT}   ${vdurs}
+    Set Suite Variable   ${initial_vdur_count}   ${vdurs}
+
 
 Get Application Name Before Scale Out
     [Documentation]   Get the application names.
-    @{name_list}=   Get Application Names   ${NS_NAME}
+
+    @{name_list}=   Get Application Names   ${ns_name}
     Log List   ${name_list}
-    Set Suite Variable   ${APPLICATION_LIST}   ${name_list}
+    Set Suite Variable   ${application_list}   ${name_list}
+
 
 Check Number of Duplicated Application Name Before Scale Out
     [Documentation]   Check the application names if there are 2 application name in the application list.
-    ${count_duplicated}=   Get Length   ${APPLICATION_LIST}
-    IF   ${count_duplicated} != 2   Fail   msg=There are not 2 application name in the application list before Scale Out
+
+    ${count_duplicated}=   Get Length   ${application_list}
+    Run Keyword If   ${count_duplicated} != 2   Fail   msg=There are not 2 application name in the application list before Scale Out
+
 
 Perform Manual Vdu Scale Out
-    [Documentation]   Perform a manual scale-out operation of the VNF.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute Manual VNF Scale   ${NS_NAME}   ${VNF_MEMBER_INDEX}   ${SCALING_GROUP}   SCALE_OUT   ${SCALE_WAIT_TIME}
-    Log   ${ns_op_id}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute Manual VNF Scale   ${ns_name}   ${vnf_member_index}   ${scaling_group}   SCALE_OUT   ${scale_wait_time}
+
 
 Check Vdus After Scale Out
-    [Documentation]   Check whether there is one more VDU after scaling out.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vdur_list}=   Get Vnf Vdur Names   ${VNF_ID}
+    [Documentation]   Check whether there is one more VDU after scaling or not.
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vdur_list}=   Get Vnf Vdur Names   ${vnf_id}
     Log List   ${vdur_list}
     ${vdurs}=   Get Length   ${vdur_list}
-    IF   ${vdurs} != ${INITIAL_VDUR_COUNT} + 1   Fail   msg=There is no new VDU records in the VNF after Scale Out
+    Run Keyword If   ${vdurs} != ${initial_vdur_count} + 1   Fail   msg=There is no new VDU records in the VNF after Scale Out
+
 
 Get Application Name After Scale Out
     [Documentation]   Get the application names.
-    @{name_list}=   Get Application Names   ${NS_NAME}
+
+    @{name_list}=   Get Application Names   ${ns_name}
     Log List   ${name_list}
-    Set Suite Variable   ${APPLICATION_LIST}   ${name_list}
+    Set Suite Variable   ${application_list}   ${name_list}
+
 
 Check Number of Duplicated Application Name After Scale Out
     [Documentation]   Check the application names if there are 3 application name in the application list.
-    ${count_duplicated}=   Get Length   ${APPLICATION_LIST}
-    IF   ${count_duplicated} != 3   Fail   msg=There are not 2 application name in the application list after Scale Out
+
+    ${count_duplicated}=   Get Length   ${application_list}
+    Run Keyword If   ${count_duplicated} != 3   Fail   msg=There are not 2 application name in the application list after Scale Out
+
 
 Perform Manual Vdu Scale In
-    [Documentation]   Perform a manual scale-in operation of the VNF.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute Manual VNF Scale   ${NS_NAME}   ${VNF_MEMBER_INDEX}   ${SCALING_GROUP}   SCALE_IN
-    Log   ${ns_op_id}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute Manual VNF Scale   ${ns_name}   ${vnf_member_index}   ${scaling_group}   SCALE_IN
+
 
 Check Vdus After Scaling In
-    [Documentation]   Check whether there is one less VDU after scaling in.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vdur_list}=   Get Vnf Vdur Names   ${VNF_ID}
+    [Documentation]   Check whether there is one less VDU after scaling or not.
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vdur_list}=   Get Vnf Vdur Names   ${vnf_id}
     Log List   ${vdur_list}
     ${vdurs}=   Get Length   ${vdur_list}
-    IF   ${vdurs} != ${INITIAL_VDUR_COUNT}   Fail   msg=There is the same number of VDU records in the VNF after Scale In
+    Run Keyword If   ${vdurs} != ${initial_vdur_count}   Fail   msg=There is the same number of VDU records in the VNF after Scale In
+
 
 Get Application Name After Scale In
     [Documentation]   Get the application names.
-    @{name_list}=   Get Application Names   ${NS_NAME}
+
+    @{name_list}=   Get Application Names   ${ns_name}
     Log List   ${name_list}
-    Set Suite Variable   ${APPLICATION_LIST}   ${name_list}
+    Set Suite Variable   ${application_list}   ${name_list}
+
 
 Check Number of Duplicated Application Name After Scale In
     [Documentation]   Check the application names if there are 2 application name in the application list.
-    ${count_duplicated}=   Get Length   ${APPLICATION_LIST}
-    IF   ${count_duplicated} != 2   Fail   msg=There are not 2 application name in the application list after Scale In
+
+    ${count_duplicated}=   Get Length   ${application_list}
+    Run Keyword If   ${count_duplicated} != 2   Fail   msg=There are not 2 application name in the application list after Scale In
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index c8918a6..4dbea4a 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-21] NS with only one VDU and several volumes
 
@@ -21,138 +19,140 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/vnf_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/openstack_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnf_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot
+
+Force Tags   basic_21   cluster_main   daily   regression
 
-Test Tags   basic_21   cluster_main   daily   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   several_volumes_vnf
-${VNFD_NAME}   several_volumes-vnf
-${NSD_PKG}   several_volumes_ns
-${NSD_NAME}   several_volumes-ns
+${vnfd_pkg}   several_volumes_vnf
+${vnfd_name}   several_volumes-vnf
+${nsd_pkg}   several_volumes_ns
+${nsd_name}   several_volumes-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_21
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   basic_21
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
-${VNF_MEMBER_INDEX}   vnf-several-volumes
-${SUCCESS_RETURN_CODE}   0
+${vnf_member_index}   vnf-several-volumes
+${success_return_code}   0
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
     [Tags]   prepare
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
     [Tags]   prepare
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Network Service Instance Test
-    [Documentation]   Instantiate NS for the testsuite.
     [Tags]   prepare
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
 
 Get NS Id
-    [Documentation]   Get NS identifier and stores as suite variable to be used later on.
     [Tags]   verify   cleanup
-    ${variables}=   Get Variables
-    IF   not "\${ns_id}" in ${variables}
-        ${id}=   Get Ns Id   ${NS_NAME}
-        Set Suite Variable   ${NS_ID}   ${id}
+    ${variables}   Get Variables
+    IF   not "\${ns_id}" in "${variables}"
+        ${id}=   Get Ns Id   ${ns_name}
+        Set Suite Variable   ${ns_id}   ${id}
     END
 
 Get Volumes From VNFD
-    [Documentation]   Get from VNF descriptor the expected number of volumes in the VNF.
     [Tags]   verify
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnfpkg-show ${VNFD_NAME} --literal | yq '.vdu[0]."virtual-storage-desc" | length'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnfpkg-show ${vnfd_name} --literal | yq '.vdu[0]."virtual-storage-desc" | length'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
     ${num_virtual_storage}=   Convert To Integer   ${stdout}
-    Set Suite Variable   ${VNF_NUM_VOLUMES}   ${num_virtual_storage}
-    Log   ${VNF_NUM_VOLUMES}
+    Set Suite Variable   ${vnf_num_volumes}   ${num_virtual_storage}
+    Log   ${vnf_num_volumes}
+
 
 Get VNF IP Address
-    [Documentation]   Get the mgmt IP address of the VNF.
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
-    ${ip_addr}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX}
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    ${ip_addr}=   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index}
     Log   ${ip_addr}
-    Set Suite Variable   ${VNF_IP_ADDR}   ${ip_addr}
-
-# Get Persistent Volume Id
-#     [Documentation]   Get VIM volume identifier of the persistent volume of the VNF.
-#     [Tags]   cleanup
-#     Variable Should Exist   ${ns_id}   msg=NS is not available
-#     ${vnfs_list}=   Get Ns Vnf List   ${ns_id}
-#     ${vim_id}=   Get VNF VIM ID   ${vnfs_list}[0]
-#     ${volumes_attached}=   Get Server Property   ${vim_id}   volumes_attached
-#     ${match}=   Get Regexp Matches   ${volumes_attached}   '([0-9a-f\-]+)'   1
-#     Set Suite Variable   ${PERSISTENT_VOLUME_ID}   ${match}[0]
+    Set Suite Variable   ${vnf_ip_addr}   ${ip_addr}
+
+
+#Get Persistent Volume Id
+#    [Tags]   cleanup
+#    Variable Should Exist   ${ns_id}   msg=NS is not available
+#    ${vnfs_list}=   Get Ns Vnf List   ${ns_id}
+#    ${vim_id}=   Get VNF VIM ID   ${vnfs_list}[0]
+#    ${volumes_attached}=   Get Server Property   ${vim_id}   volumes_attached
+#    ${match}=   Get Regexp Matches   ${volumes_attached}   '([0-9a-f\-]+)'   1
+#    Set Suite Variable   ${volume_id}   ${match}[0]
+
 
 Check VDU disks
-    [Documentation]   Check that the number of volumes is the expected one.
     [Tags]   verify
-    Variable Should Exist   ${VNF_IP_ADDR}   msg=VNF is not available
+    Variable Should Exist   ${vnf_ip_addr}   msg=VNF is not available
     Sleep   30 seconds   Wait for SSH daemon to be up
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   sudo lsblk -l
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf_ip_addr}   ${username}   ${password}   ${privatekey}   sudo lsblk -l
     Log   ${stdout}
     ${lines}=   Get Lines Containing String   ${stdout}   disk
     ${num_lines}=   Get Line Count   ${lines}
-    IF   ${num_lines} < ${VNF_NUM_VOLUMES}   Fail   msg=Number of disks (${num_lines}) is less than specified in VDU (${VNF_NUM_VOLUMES})
+    Run Keyword If   ${num_lines} < ${vnf_num_volumes}   Fail   msg=Number of disks (${num_lines}) is less than specified in VDU (${vnf_num_volumes})
+
 
 Delete NS Instance Test
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
-
-# Check Persistent Volume Was Deleted
-#     [Documentation]   Check that the persistent volume was deleted.
-#     [Tags]   cleanup
-#     Variable Should Exist   ${PERSISTENT_VOLUME_ID}   msg=Volume is not available
-#     ${exists}=   Check If Volume Exists   ${PERSISTENT_VOLUME_ID}
-#     Log   ${exists}
-#     IF   ${exists}==0
-#         Fail   msg=Persistent volume was deleted
-#         Set Suite Variable   ${PERSISTENT_VOLUME_ID}   ${EMPTY}}
-#     ELSE
-#         Log   Persistent volume still exists, deleting...
-#         Delete Volume   ${PERSISTENT_VOLUME_ID}
-#         Set Suite Variable   ${PERSISTENT_VOLUME_ID}   ${EMPTY}}
-#     END
+    Delete NS   ${ns_name}
+
+
+#Check Persistent Volume Was Deleted
+#    [Tags]   cleanup
+#    Variable Should Exist   ${volume_id}   msg=Volume is not available
+#    ${exists}=   Check If Volume Exists   ${volume_id}
+#    Log   ${exists}
+#    IF   ${exists}==0
+#        Fail   msg=Persistent volume was deleted
+#        Set Suite Variable   ${volume_id}   ${EMPTY}}
+#    ELSE
+#        Log   Persistent volume still exists, deleting...
+#        Delete Volume   ${volume_id}
+#        Set Suite Variable   ${volume_id}   ${EMPTY}}
+#    END
+
 
 Delete NS Descriptor Test
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
 #    Run Keyword If Any Tests Failed   Check Volume Was Deleted
index c19f16d..cd38e7d 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #    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
 #    See the License for the specific language governing permissions and
 #    limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-22] Cross-model relations
 
 Library   OperatingSystem
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/k8scluster_lib.resource
+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/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/k8scluster_lib.robot
 
-Test Tags   basic_22   cluster_ee_config   cluster_relations   regression
+Force Tags   basic_22   cluster_ee_config   cluster_relations   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # K8s cluster name and version
-${K8SCLUSTER_NAME}   k8sbasic_22
-${K8SCLUSTER_VERSION}   v1
+${k8scluster_name}   k8sbasic_22
+${k8scluster_version}   v1
 
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG1}   charm-packages/cmr_relation_vnf
-${VNFD_PKG2}   charm-packages/cmr_no_relation_vnf
-${NSD_PKG}   charm-packages/cmr_relation_ns
-${VNFD_NAME1}   cross_model_relation-vnf
-${VNFD_NAME2}   cross_model_no_relation-vnf
-${NSD_NAME}   cross_model_relation-ns
+${vnfd_pkg_1}   charm-packages/cmr_relation_vnf
+${vnfd_pkg_2}   charm-packages/cmr_no_relation_vnf
+${nsd_pkg}   charm-packages/cmr_relation_ns
+${vnfd_name_1}   cross_model_relation-vnf
+${vnfd_name_2}   cross_model_no_relation-vnf
+${nsd_name}   cross_model_relation-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_22
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${NS_TIMEOUT}   15min
+${ns_name}   basic_22
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_timeout}   15min
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
 
 *** Test Cases ***
 Create Charm VNF Descriptor 1
-    [Documentation]   Upload first VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG1}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg_1}'
 
 Create Charm VNF Descriptor 2
-    [Documentation]   Upload second VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG2}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg_2}'
 
 Create Charm NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
 
 Add K8s Cluster To OSM
-    [Documentation]   Register K8s cluster in OSM.
-    Create K8s Cluster   %{K8S_CREDENTIALS}   ${K8SCLUSTER_VERSION}   %{VIM_TARGET}   %{VIM_MGMT_NET}   ${K8SCLUSTER_NAME}
+    Create K8s Cluster   %{K8S_CREDENTIALS}   ${k8scluster_version}   %{VIM_TARGET}   %{VIM_MGMT_NET}   ${k8scluster_name}
 
 Instantiate Charm Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}   ${NS_TIMEOUT}
-    Set Suite Variable   ${NS_ID}   ${id}
 
-# TODO: Check juju status for relations
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_timeout}
+    Set Suite Variable   ${ns_id}   ${id}
+
+
+# TODO Check juju status for relations
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
 
 Remove K8s Cluster from OSM
-    [Documentation]   Unregister K8s cluster from OSM.
     [Tags]   cleanup
-    Delete K8s Cluster   ${K8SCLUSTER_NAME}
+    Delete K8s Cluster   ${k8scluster_name}
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor 1
-    [Documentation]   Delete first VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME1}
+
+    Delete VNFD   ${vnfd_name_1}
 
 Delete VNF Descriptor 2
-    [Documentation]   Delete second VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME2}
+
+    Delete VNFD   ${vnfd_name_2}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD 1   ${VNFD_NAME1}
-    Run Keyword If Any Tests Failed   Delete VNFD 2   ${VNFD_NAME2}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD 1   ${vnfd_name_1}
+
+    Run Keyword If Any Tests Failed   Delete VNFD 2   ${vnfd_name_2}
+
index a45159a..cb7ad65 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-23] Creation and deletion of SOL004 and SOL007 packages.
 
@@ -21,48 +19,55 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
 
-Test Tags   basic_23   cluster_main   daily   regression   azure
+Force Tags   basic_23   cluster_main   daily   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   sol004_hackfest_basic_vnf
-${VNFD_NAME}   sol004_hackfest_basic-vnf
-${NSD_PKG}   sol007_hackfest_basic_ns
-${NSD_NAME}   sol007_hackfest_basic-ns
+${vnfd_pkg}   sol004_hackfest_basic_vnf
+${vnfd_name}   sol004_hackfest_basic-vnf
+${nsd_pkg}   sol007_hackfest_basic_ns
+${nsd_name}   sol007_hackfest_basic-ns
 
 
 *** Test Cases ***
 Create VNF Package
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Package
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Cannot Delete VNF Package
-    [Documentation]   Assert that the VNF package cannot be deleted before the NS package is deleted.
-    Assert Failure Delete VNFD   ${VNFD_NAME}
+
+    Assert Failure Delete VNFD   ${vnfd_name}
+
 
 Delete NS Package
-    [Documentation]   Delete NS package.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Package
-    [Documentation]   Delete VNF package.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting NS and VNF packages
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
+
index 46860fb..b3b51eb 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-24] VNF with two VDUs belonging to an Openstack server group
 
@@ -20,83 +18,93 @@ Library   String
 Library   Collections
 Library   Process
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/vnf_lib.resource
-Resource   ../lib/openstack_lib.resource
+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/vnf_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot
+
+Force Tags   basic_24   cluster_main   daily   regression
 
-Test Tags   basic_24   cluster_main   daily   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   affinity_basic_vnf
-${VNFD_NAME}   affinity_basic-vnf
-${NSD_PKG}   affinity_basic_ns
-${NSD_NAME}   affinity_basic-ns
+${vnfd_pkg}   affinity_basic_vnf
+${vnfd_name}   affinity_basic-vnf
+${nsd_pkg}   affinity_basic_ns
+${nsd_name}   affinity_basic-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_24
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   basic_24
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
-
-${NS_ID}   ${EMPTY}
-${VNF_MEMBER_INDEX}   affinity-basic-1
-${SUCCESS_RETURN_CODE}   0
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
+${ns_id}   ${EMPTY}
+${vnf_member_index}   affinity-basic-1
+${success_return_code}   0
 
 *** Test Cases ***
 Create VNF Package
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Package
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Network Service Instance Test
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Check Vnf Affinity Groups
-    [Documentation]   Check that all VDUs of the VNF belong to the expected affinity group.
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
-    ${vnf_id}=   Get Vnf Id   ${NS_ID}   ${VNF_MEMBER_INDEX}
-    @{vdur_id_list}=   Get VDU List From VNF   ${vnf_id}
+
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    ${vnf_id}   Get Vnf Id   ${ns_id}   ${vnf_member_index}
+    @{vdur_id_list}   Get VDU list from VNF   ${vnf_id}
     FOR   ${vdur_id}   IN   @{vdur_id_list}
-        ${server_group_name}=   Get VDU Affinity Group Name   ${NS_NAME}   ${vnf_id}   ${vdur_id}
-        ${vm_vim_id}=   Get VDU VIM Id   ${vnf_id}   ${vdur_id}
+        ${server_group_name}   Get VDU Affinity Group Name   ${ns_name}   ${vnf_id}   ${vdur_id}
+        ${vm_vim_id}   Get VDU VIM Id   ${vnf_id}   ${vdur_id}
         Check VM In Server Group   ${vm_vim_id}   ${server_group_name}
     END
 
+
 Delete NS Instance Test
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor Test
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index 9ae13be..a0b368c 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-25] Update Charms in Running VNF Instance.
 
 Library   OperatingSystem
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   basic_25   cluster_ee_config   regression
+Force Tags   basic_25   cluster_ee_config   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   charm-packages/ha_proxy_charm_vnf
-${UPDATED_VNFD_PKG}   charm-packages/updated_vnfds/ha_proxy_charm_vnf
-${VNFD_NAME}   ha_proxy_charm-vnf
-${NSD_PKG}   charm-packages/ha_proxy_charm_ns
-${NSD_NAME}   ha_proxy_charm-ns
+${vnfd_pkg}   charm-packages/ha_proxy_charm_vnf
+${updated_vnfd_pkg}   charm-packages/updated_vnfds/ha_proxy_charm_vnf
+${vnfd_name}   ha_proxy_charm-vnf
+${nsd_pkg}   charm-packages/ha_proxy_charm_ns
+${nsd_name}   ha_proxy_charm-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_25_charm_update_test
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   basic_25_charm_update_test
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
-
-${ACTION_NAME}   touch
-${NEW_ACTION_NAME}   mkdir
-${VNF_MEMBER_INDEX}   vnf1
-${DAY_1_FILE_NAME}   /home/ubuntu/first-touch
-${DAY_2_FILE_NAME}   /home/ubuntu/mytouch1
-${DAY_2_FOLDER_NAME}   /home/ubuntu/myfolder1
-${NS_TIMEOUT}   15min
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
+
+${action_name}   touch
+${new_action_name}   mkdir
+${vnf_member_index}   vnf1
+${day_1_file_name}   /home/ubuntu/first-touch
+${day_2_file_name}   /home/ubuntu/mytouch1
+${day_2_folder_name}   /home/ubuntu/myfolder1
+${ns_timeout}   15min
 
 # NS update operation configuration
-${UPDATE_TYPE}   CHANGE_VNFPKG
-${NS_UPDATE_TIMEOUT}   500
+${update_type}   CHANGE_VNFPKG
+${ns_update_timeout}   500
 
 
 *** Test Cases ***
 Create Charm VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    ${id}=   Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
-    Set Suite Variable   ${VNFD_ID}   ${id}
+
+    ${id}=   Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+    Set Suite Variable   ${vnfd_id}   ${id}
+
 
 Create Charm NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Charm Network Service
-    [Documentation]   Instantiates the NS for the test suite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}   ${NS_TIMEOUT}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_timeout}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Set NS Update Config
-    [Documentation]   Prepare data for NS Update
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
-    ${id}=   Get Vnf Id   ${NS_ID}   ${VNF_MEMBER_INDEX}
+
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    ${id}   Get Vnf Id   ${ns_id}   ${vnf_member_index}
     Log   ${id}
-    Set Suite Variable   ${VNF_ID}   ${id}
-    Set Suite Variable   ${NS_UPDATE_CONFIG}   '{changeVnfPackageData: [{vnfInstanceId: "${VNF_ID}", vnfdId: "${VNFD_ID}"}]}'
+    Set Suite Variable   ${vnf_id}   ${id}
+    Set Suite Variable   ${ns_update_config}   '{changeVnfPackageData: [{vnfInstanceId: "${vnf_id}", vnfdId: "${vnfd_id}"}]}'
+
 
 Get Management Ip Address
-    [Documentation]   Get the mgmt IP address of the VNF.
-    ${ip_addr}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX}
+
+    ${ip_addr}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index}
     Log   ${ip_addr}
-    Set Suite Variable   ${VNF_IP_ADDR}   ${ip_addr}
+    Set Suite Variable   ${vnf_ip_addr}   ${ip_addr}
+
 
 Test SSH Access
-    [Documentation]   Check that the VNF is accessible via SSH in its mgmt IP address.
-    Variable Should Exist   ${VNF_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX}' is not available
+
+    Variable Should Exist   ${vnf_ip_addr}   msg=IP address of the management VNF '${vnf_member_index}' is not available
     Sleep   30s   Waiting ssh daemon to be up
-    Test SSH Connection   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
+    Test SSH Connection   ${vnf_ip_addr}   ${username}   ${password}   ${privatekey}
+
 
 Check Remote Files Created Via Day 1 Operation
     [Documentation]   The Charm VNF has a Day 1 operation that creates a file named ${day_1_file_name}.
     ...               This test checks whether that files have been created or not.
-    Check If Remote File Exists   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_1_FILE_NAME}
+
+    Check If remote File Exists   ${vnf_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_1_file_name}
+
 
 Execute Day 2 Operation
     [Documentation]   Performs one Day 2 operation on the VNF that creates a new file.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id_1}=   Execute NS Action   ${NS_NAME}   ${ACTION_NAME}   ${VNF_MEMBER_INDEX}   filename=${DAY_2_FILE_NAME}
-    Log   ${ns_op_id_1}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id_1}=   Execute NS Action   ${ns_name}   ${action_name}   ${vnf_member_index}   filename=${day_2_file_name}
+
 
 Check Remote File Created Via Day 2 Operation
     [Documentation]   Check whether the file created in the previous test via Day 2 operations exist or not.
-    Check If Remote File Exists   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_2_FILE_NAME}
+
+    Check If remote File Exists   ${vnf_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_2_file_name}
+
 
 Update VNFD Package
     [Documentation]   Updates the VNFD by using new VNFD package which includes the Charm
     ...               which has new day2 operation.
-    Update VNFD   '%{PACKAGES_FOLDER}/${UPDATED_VNFD_PKG}'   ${VNFD_NAME}
+
+    Update VNFD   '%{PACKAGES_FOLDER}/${updated_vnfd_pkg}'   ${vnfd_name}
+
 
 Update Running VNF Instance
     [Documentation]   Updates the running VNF instance by using new VNFD package.
     ...               As the VNFD has an updated charm, this operation will trigger the upgrade of existing charm
     ...               for the specific VNF.
-    Update Network Service   ${NS_ID}   ${UPDATE_TYPE}   ${NS_UPDATE_CONFIG}   ${NS_UPDATE_TIMEOUT}
+
+    Update Network Service   ${ns_id}   ${update_type}   ${ns_update_config}   ${ns_update_timeout}
+
 
 Execute Day 2 Operation on Upgraded Charm
     [Documentation]   Performs one Day 2 operation on the updated VNF that creates a new folder.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id_2}=   Execute NS Action   ${NS_NAME}   ${NEW_ACTION_NAME}   ${VNF_MEMBER_INDEX}   foldername=${DAY_2_FOLDER_NAME}
-    Log   ${ns_op_id_2}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id_2}=   Execute NS Action   ${ns_name}   ${new_action_name}   ${vnf_member_index}   foldername=${day_2_folder_name}
+
 
 Check Remote Folder Created Via Day 2 Operation
     [Documentation]   Check whether the folder created in the previous test via Day 2 operations exist or not.
-    Check If Remote Folder Exists   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_2_FOLDER_NAME}
+
+    Check If remote Folder Exists   ${vnf_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_2_folder_name}
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index 1a6f94f..10b3f24 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-26] Secure connection to helm execution environments.
 
 Library   OperatingSystem
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   basic_26   cluster_ee_config   regression
+Force Tags   basic_26   cluster_ee_config   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   simple_ee_vnf
-${VNFD_NAME}   simple_ee-vnf
-${NSD_PKG}   simple_ee_ns
-${NSD_NAME}   simple_ee-ns
+${vnfd_pkg}   simple_ee_vnf
+${vnfd_name}   simple_ee-vnf
+${nsd_pkg}   simple_ee_ns
+${nsd_name}   simple_ee-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_26_secure_helm_ee_test
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${NS_TIMEOUT}   5min
+${ns_name}   basic_26_secure_helm_ee_test
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_timeout}   5min
 
 # SSH keys and username to be used to connect to the VNF
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
 
 # SSH keys and username to be used to connect to OSM VM
-${OSM_HOST}   %{OSM_HOSTNAME}
-${OSM_USERNAME}   ubuntu
-${OSM_PASSWORD}   ${EMPTY}
-${OSM_PRIVATEKEY}   %{OSM_RSA_FILE}
+${osm_host}   %{OSM_HOSTNAME}
+${osm_username}   ubuntu
+${osm_password}   ${EMPTY}
+${osm_privatekey}   %{OSM_RSA_FILE}
 
 # Variables related to day1 and day2
-${ACTION_NAME}   touch
-${NEW_ACTION_NAME}   mkdir
-${VNF_MEMBER_INDEX}   simple
-${DAY_1_FILE_NAME}   /home/ubuntu/first-touch
+${action_name}   touch
+${new_action_name}   mkdir
+${vnf_member_index}   simple
+${day_1_file_name}   /home/ubuntu/first-touch
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    ${id}=   Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
-    Set Suite Variable   ${VNFD_ID}   ${id}
+
+    ${id}=   Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+    Set Suite Variable   ${vnfd_id}   ${id}
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}   ${NS_TIMEOUT}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_timeout}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Management Ip Address
-    [Documentation]   Get the mgmt IP address of the VNF of the NS.
-    ${ip_addr}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX}
+
+    ${ip_addr}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index}
     Log   ${ip_addr}
-    Set Suite Variable   ${VNF_IP_ADDR}   ${ip_addr}
+    Set Suite Variable   ${vnf_ip_addr}   ${ip_addr}
+
 
 Test SSH Access
-    [Documentation]   Check that the VNF is accessible via SSH in its mgmt IP address.
-    Variable Should Exist   ${VNF_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX}' is not available
+
+    Variable Should Exist   ${vnf_ip_addr}   msg=IP address of the management VNF '${vnf_member_index}' is not available
     Sleep   30s   Waiting ssh daemon to be up
-    Test SSH Connection   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
+    Test SSH Connection   ${vnf_ip_addr}   ${username}   ${password}   ${privatekey}
+
 
 Check Remote File Created Via Day 1 Operation
     [Documentation]   Check whether the file created in the previous test via Day 1 operations exist or not.
-    Check If Remote File Exists   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_1_FILE_NAME}
+
+    Check If remote File Exists   ${vnf_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_1_file_name}
+
 
 Get data from EE pod
-    [Documentation]   Retrieve pod name and service IP address of the helm-based EE running in OSM cluster and store as suite variables to be used later on.
-    Open Connection   ${OSM_HOST}
-    Login With Public Key   ${OSM_USERNAME}   keyfile=${OSM_PRIVATEKEY}
-    ${pod}=   Execute Remote Command Check Rc Return Output   ${OSM_HOST}   ${OSM_USERNAME}   ${OSM_PASSWORD}   ${OSM_PRIVATEKEY}   kubectl get pod -n ${NS_ID} --no-headers -o custom-columns=":metadata.name"
-    ${svc}=   Execute Remote Command Check Rc Return Output   ${OSM_HOST}   ${OSM_USERNAME}   ${OSM_PASSWORD}   ${OSM_PRIVATEKEY}   kubectl get svc -n ${NS_ID} -l app.kubernetes.io/name=eechart -o jsonpath='{.items[0].spec.clusterIP}'
-    Set Suite Variable   ${POD_NAME}   ${pod}
-    Set Suite Variable   ${SVC_IP}   ${svc}
+
+    Open Connection   ${osm_host}
+    Login With Public Key   ${osm_username}   keyfile=${osm_privatekey}
+    ${pod}=   Execute Remote Command Check Rc Return Output   ${osm_host}   ${osm_username}   ${osm_password}   ${osm_privatekey}   kubectl get pod -n ${ns_id} --no-headers -o custom-columns=":metadata.name"
+    ${svc}=   Execute Remote Command Check Rc Return Output   ${osm_host}   ${osm_username}   ${osm_password}   ${osm_privatekey}   kubectl get svc -n ${ns_id} -l app.kubernetes.io/name=eechart -o jsonpath='{.items[0].spec.clusterIP}'
+    Set Suite Variable   ${pod_name}   ${pod}
+    Set Suite Variable   ${svc_ip}   ${svc}
+
 
 Fail when trying to access gRPC server without TLS
-    [Documentation]   Assert failure when accessing the EE without TLS.
-    ${command}=   Catenate   python3 osm_ee/frontend_client.py ${SVC_IP} 50050 sleep
-    ${result}=   Execute Remote Command Check Rc Return Output   ${OSM_HOST}   ${OSM_USERNAME}   ${OSM_PASSWORD}   ${OSM_PRIVATEKEY}   kubectl exec -it -n ${NS_ID} ${POD_NAME} -- ${command}
+
+    ${command} =   Catenate   python3 osm_ee/frontend_client.py ${svc_ip} 50050 sleep
+    ${result}=   Execute Remote Command Check Rc Return Output   ${osm_host}   ${osm_username}   ${osm_password}   ${osm_privatekey}   kubectl exec -it -n ${ns_id} ${pod_name} -- ${command}
     Should Contain   ${result}   Connection lost
 
+
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index 2acb2cb..ba0b5e2 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-27] Update Helm EE in Running VNF Instance.
 
 Library   OperatingSystem
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   basic_27   cluster_ee_config   daily   regression
+Force Tags   basic_27   cluster_ee_config   daily   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   simple_ee_vnf
-${UPDATED_VNFD_PKG}   updated_simple_ee_vnf
-${VNFD_NAME}   simple_ee-vnf
-${NSD_PKG}   simple_ee_ns
-${NSD_NAME}   simple_ee-ns
+${vnfd_pkg}   simple_ee_vnf
+${updated_vnfd_pkg}   updated_simple_ee_vnf
+${vnfd_name}   simple_ee-vnf
+${nsd_pkg}   simple_ee_ns
+${nsd_name}   simple_ee-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_27_helm_ee_update_test
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   basic_27_helm_ee_update_test
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
-
-${ACTION_NAME}   touch
-${NEW_ACTION_NAME}   mkdir
-${VNF_MEMBER_INDEX}   simple
-${DAY_1_FILE_NAME}   /home/ubuntu/first-touch
-${DAY_2_FILE_NAME}   /home/ubuntu/mytouch1
-${DAY_2_FOLDER_NAME}   /home/ubuntu/myfolder1
-${NS_TIMEOUT}   15min
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
+
+${action_name}   touch
+${new_action_name}   mkdir
+${vnf_member_index}   simple
+${day_1_file_name}   /home/ubuntu/first-touch
+${day_2_file_name}   /home/ubuntu/mytouch1
+${day_2_folder_name}   /home/ubuntu/myfolder1
+${ns_timeout}   15min
 
 # NS update operation configuration
-${UPDATE_TYPE}   CHANGE_VNFPKG
-${NS_UPDATE_TIMEOUT}   500
+${update_type}   CHANGE_VNFPKG
+${ns_update_timeout}   500
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    ${id}=   Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
-    Set Suite Variable   ${VNFD_ID}   ${id}
+
+    ${id}=   Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+    Set Suite Variable   ${vnfd_id}   ${id}
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}   ${NS_TIMEOUT}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_timeout}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Set NS Update Config
-    [Documentation]   Prepare NS update config dictionary to update the NS.
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
-    ${id}=   Get Vnf Id   ${NS_ID}   ${VNF_MEMBER_INDEX}
+
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    ${id}   Get Vnf Id   ${ns_id}   ${vnf_member_index}
     Log   ${id}
-    Set Suite Variable   ${VNF_ID}   ${id}
-    Set Suite Variable   ${NS_UPDATE_CONFIG}   '{changeVnfPackageData: [{vnfInstanceId: "${VNF_ID}", vnfdId: "${VNFD_ID}"}]}'
+    Set Suite Variable   ${vnf_id}   ${id}
+    Set Suite Variable   ${ns_update_config}   '{changeVnfPackageData: [{vnfInstanceId: "${vnf_id}", vnfdId: "${vnfd_id}"}]}'
+
 
 Get Management Ip Address
-    [Documentation]   Get VNF mgmt IP address from the NS.
-    ${ip_addr}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX}
+
+    ${ip_addr}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index}
     Log   ${ip_addr}
-    Set Suite Variable   ${VNF_IP_ADDR}   ${ip_addr}
+    Set Suite Variable   ${vnf_ip_addr}   ${ip_addr}
+
 
 Test SSH Access
-    [Documentation]   Test SSH access to the VNF mgmt IP address.
-    Variable Should Exist   ${VNF_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX}' is not available
+
+    Variable Should Exist   ${vnf_ip_addr}   msg=IP address of the management VNF '${vnf_member_index}' is not available
     Sleep   30s   Waiting ssh daemon to be up
-    Test SSH Connection   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
+    Test SSH Connection   ${vnf_ip_addr}   ${username}   ${password}   ${privatekey}
+
 
 Check Remote Files Created Via Day 1 Operation
     [Documentation]   The VNF has a Day 1 operation that creates a file named ${day_1_file_name}.
     ...               This test checks whether that files have been created or not.
-    Check If Remote File Exists   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_1_FILE_NAME}
+
+    Check If remote File Exists   ${vnf_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_1_file_name}
+
 
 Execute Day 2 Operation
     [Documentation]   Performs one Day 2 operation on the VNF that creates a new file.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id_1}=   Execute NS Action   ${NS_NAME}   ${ACTION_NAME}   ${VNF_MEMBER_INDEX}   file-path=${DAY_2_FILE_NAME}
-    Log   ${ns_op_id_1}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id_1}=   Execute NS Action   ${ns_name}   ${action_name}   ${vnf_member_index}   file-path=${day_2_file_name}
+
 
 Check Remote File Created Via Day 2 Operation
     [Documentation]   Check whether the file created in the previous test via Day 2 operations exist or not.
-    Check If Remote File Exists   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_2_FILE_NAME}
+
+    Check If remote File Exists   ${vnf_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_2_file_name}
+
 
 Update VNFD Package
     [Documentation]   Updates the VNFD by using new VNFD package which includes the EE
     ...               which has new day2 operation.
-    Update VNFD   '%{PACKAGES_FOLDER}/${UPDATED_VNFD_PKG}'   ${VNFD_NAME}
+
+    Update VNFD   '%{PACKAGES_FOLDER}/${updated_vnfd_pkg}'   ${vnfd_name}
+
 
 Update Running VNF Instance
     [Documentation]   Updates the running VNF instance by using new VNFD package.
     ...               As the VNFD has an updated Helm EE, this operation will trigger the upgrade of existing Helm EE
     ...               for the specific VNF.
-    Update Network Service   ${NS_ID}   ${UPDATE_TYPE}   ${NS_UPDATE_CONFIG}   ${NS_UPDATE_TIMEOUT}
+
+    Update Network Service   ${ns_id}   ${update_type}   ${ns_update_config}   ${ns_update_timeout}
+
 
 Execute Day 2 Operation on Upgraded Helm EE
     [Documentation]   Performs one Day 2 operation on the updated VNF that creates a new folder.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id_2}=   Execute NS Action   ${NS_NAME}   ${NEW_ACTION_NAME}   ${VNF_MEMBER_INDEX}   foldername=${DAY_2_FOLDER_NAME}
-    Log   ${ns_op_id_2}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id_2}=   Execute NS Action   ${ns_name}   ${new_action_name}   ${vnf_member_index}   foldername=${day_2_folder_name}
+
 
 Check Remote Folder Created Via Day 2 Operation
     [Documentation]   Check whether the folder created in the previous test via Day 2 operations exist or not.
-    Check If Remote Folder Exists   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_2_FOLDER_NAME}
+
+    Check If remote Folder Exists   ${vnf_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_2_folder_name}
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index dd92a49..0391ac7 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-28] NS with one VDU which has 2 persistent volumes with keep flag
 
@@ -21,160 +19,159 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/vnf_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/openstack_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnf_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot
+
+Force Tags   basic_28   cluster_main   daily
 
-Test Tags   basic_28   cluster_main   daily
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   keep_persistent_volume_vnf
-${VNFD_NAME}   keep_persistent-volumes-vnf
-${NSD_PKG}   keep_persistent_volume_ns
-${NSD_NAME}   persistent_volumes-ns
+${vnfd_pkg}   keep_persistent_volume_vnf
+${vnfd_name}   keep_persistent-volumes-vnf
+${nsd_pkg}   keep_persistent_volume_ns
+${nsd_name}   persistent_volumes-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_28
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   basic_28
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
-${VNF_MEMBER_INDEX}   vnf-persistent-volumes
-${VDU_ID}   keep-persistent-vol-VM
-${ROOT_DISK}   root-volume
-${ORDINARY_DISK}   persistent-volume
-${SUCCESS_RETURN_CODE}   0
+${vnf_member_index}   vnf-persistent-volumes
+${vdu_id}   keep-persistent-vol-VM
+${root_disk}   root-volume
+${ordinary_disk}   persistent-volume
+${success_return_code}   0
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Network Service Instance Test
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Check Persistent Volume Counts
-    [Documentation]   Check that the number of persistent volumes attached to VM in the NS meet the expected number (2).
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
-    ${VOLUME_MATCH}=   Get Persistent Volumes Attached To Vm   ${NS_ID}
-    Set Suite Variable   ${VOLUME_MATCH}
-    ${VOLUME_COUNTS}=   Get Length   ${VOLUME_MATCH}
-    Set Suite Variable   ${VOLUME_COUNTS}
-    IF   ${VOLUME_COUNTS} != 2   Fail   msg=There were not 2 volumes attached to VM
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    ${volume_match}=   Get Persistent Volumes Attached To Vm   ${ns_id}
+    Set Suite Variable   ${volume_match}
+    ${volume_counts}=   Get Length   ${volume_match}
+    Set Suite Variable   ${volume_counts}
+    Run Keyword If   ${volume_counts} != 2   Fail   msg=There were not 2 volumes attached to VM
+
 
 Set Persistent Volume Ids
-    [Documentation]   Get the identifiers of the persistent volumes attached to VM in the NS and store in suite variables ROOT_VOL_ID and ORDINARY_VOL_ID.
-    Variable Should Exist   ${VOLUME_MATCH}   msg=NS is not available
-    Set Volume Id   ${VOLUME_MATCH}   0
-    Set Volume Id   ${VOLUME_MATCH}   1
+    Variable Should Exist   ${volume_match}   msg=NS is not available
+    Set Volume Id   ${volume_match}   0
+    Set Volume Id   ${volume_match}   1
+
 
 Delete NS Instance Test
-    [Documentation]   Delete NS instance.
-    Delete NS   ${NS_NAME}
+    [Tags]   cleanup
+    Delete NS   ${ns_name}
+
 
 Check Persistent Root Volume in VIM after NS Deleted
-    [Documentation]   Check that the persistent root volume requested to be kept is present after deleting NS instance.
-    Variable Should Exist   ${ROOT_VOL_ID}   msg=Root volume is not available
-    ${root_vol_exists}=   Check If Volume Exists   ${ROOT_VOL_ID}
-    Log   ${root_vol_exists}
-    IF   ${root_vol_exists}
-        Log   Persistent root volume still exists
-    ELSE
+    Variable Should Exist   ${root_vol_id}   msg=Root volume is not available
+    ${root_vol_exists}=   Check If Volume Exists   ${root_vol_id}
+    log   ${root_vol_exists}
+    IF   ${root_vol_exists}==0
         Fail   msg=Persistent root volume was deleted
-        Set Suite Variable   ${ROOT_VOL_ID}   ${EMPTY}
+        Set Suite Variable   ${root_vol_id}   ${EMPTY}
+    ELSE
+        log   Persistent root volume still exists
     END
 
+
 Check Persistent Ordinary Volume in VIM after NS Deleted
-    [Documentation]   Check that the persistent ordinary volume requested to be kept is present after deleting NS instance.
-    Variable Should Exist   ${ORDINARY_VOL_ID}   msg=Ordinary persistent volume is not available
-    ${ordinary_vol_exists}=   Check If Volume Exists   ${ORDINARY_VOL_ID}
-    Log   ${ordinary_vol_exists}
-    IF   ${ordinary_vol_exists}
-        Log   Persistent ordinary volume still exists
-    ELSE
+    Variable Should Exist   ${ordinary_vol_id}   msg=Ordinary persistent volume is not available
+    ${ordinary_vol_exists}=   Check If Volume Exists   ${ordinary_vol_id}
+    log   ${ordinary_vol_exists}
+    IF   ${ordinary_vol_exists}==0
         Fail   msg=Persistent ordinary volume was deleted
-        Set Suite Variable   ${ORDINARY_VOL_ID}   ${EMPTY}
+        Set Suite Variable   ${ordinary_vol_id}   ${EMPTY}
+    ELSE
+        log   Persistent ordinary volume still exists
     END
 
+
 Prepare Ns Config With Volume Id
-    [Documentation]   Generate NS instantiation parameters to be used in next NS instance,
-    ...               using the persistent volumes that were kept previously.
-    Set Suite Variable   ${NS_CONFIG_WITH_VIM_ID}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ], vnf: [ {member-vnf-index: ${VNF_MEMBER_INDEX}, vdu: [ {id: ${VDU_ID}, volume: [{"name": ${ROOT_DISK}, vim-volume-id: ${ROOT_VOL_ID}}, {"name": ${ORDINARY_DISK}, vim-volume-id: ${ORDINARY_VOL_ID}}] } ] } ] }
+    Set Suite Variable   ${ns_config_with_vim_id}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ], vnf: [ {member-vnf-index: ${vnf_member_index}, vdu: [ {id: ${vdu_id}, volume: [{"name": ${root_disk}, vim-volume-id: ${root_vol_id}}, {"name": ${ordinary_disk}, vim-volume-id: ${ordinary_vol_id}}] } ] } ] }
+
 
 Network Service Instance With Existing Volumes Test
-    [Documentation]   Instantiate NS for the testsuite again. The persistent volumes passed as instantiation parameters should be used.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG_WITH_VIM_ID}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config_with_vim_id}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Verify the Attachment Of Existing Persistent Volumes
-    [Documentation]   Get the identifiers of the persistent volumes attached to VM in the second NS instance and verify that they are the same
-    ...               of the first NS instance.
-    Set Suite Variable   ${PREV_ROOT_VOL_ID}   ${ROOT_VOL_ID}
-    Set Suite Variable   ${PREV_ORDINARY_VOL_ID}   ${ORDINARY_VOL_ID}
-    ${volume_match}=   Get Persistent Volumes Attached To Vm   ${NS_ID}
-    Set Suite Variable   ${VOLUME_MATCH}
-    Set Volume Id   ${VOLUME_MATCH}   0
-    Set Volume Id   ${VOLUME_MATCH}   1
-    Should Be Equal As Strings   ${ROOT_VOL_ID}   ${PREV_ROOT_VOL_ID}   msg=Existing root volume is not attached to server
-    Should Be Equal As Strings   ${ORDINARY_VOL_ID}   ${PREV_ORDINARY_VOL_ID}   msg=Existing ordinary volume is not attached to server
+    Set Suite Variable   ${prev_root_vol_id}   ${root_vol_id}
+    Set Suite Variable   ${prev_ordinary_vol_id}   ${ordinary_vol_id}
+    ${volume_match}=   Get Persistent Volumes Attached To Vm   ${ns_id}
+    Set Suite Variable   ${volume_match}
+    Set Volume Id   ${volume_match}   0
+    Set Volume Id   ${volume_match}   1
+    Should Be Equal As Strings   ${root_vol_id}   ${prev_root_vol_id}   msg=Existing root volume is not attached to server
+    Should Be Equal As Strings   ${ordinary_vol_id}   ${prev_ordinary_vol_id}   msg=Existing ordinary volume is not attached to server
+
 
 Delete NS Instance With Existing Volumes Test
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+    Delete NS   ${ns_name}
+
 
 Check Existence of Persistent Volumes
-    [Documentation]   Check that the persistent volumes exist after deleting the NS.
-    Variable Should Exist   ${ROOT_VOL_ID}   msg=Volume is not available
-    Variable Should Exist   ${ORDINARY_VOL_ID}   msg=Volume is not available
-    ${root_vol_exists}=   Check If Volume Exists   ${ROOT_VOL_ID}
-    IF   not ${root_vol_exists}   Fail   msg=Existing root volume is deleted
-    ${ordinary_vol_exists}=   Check If Volume Exists   ${ORDINARY_VOL_ID}
-    IF   not ${ordinary_vol_exists}   Fail   msg=Existing ordinary volume is deleted
+    Variable Should Exist   ${root_vol_id}   msg=Volume is not available
+    Variable Should Exist   ${ordinary_vol_id}   msg=Volume is not available
+    ${root_vol_exists}=   Check If Volume Exists   ${root_vol_id}
+    Run Keyword If   ${root_vol_exists} == 0   Fail   msg=Existing root volume is deleted
+    ${ordinary_vol_exists}=   Check If Volume Exists   ${ordinary_vol_id}
+    Run Keyword If   ${ordinary_vol_exists} == 0   Fail   msg=Existing ordinary volume is deleted
+
 
 Delete Persistent Volumes
-    [Documentation]   Delete persistent volumes.
-    Clean Persistent Volumes
+    [Tags]   cleanup
+    Delete Volume   ${root_vol_id}
+    Delete Volume   ${ordinary_vol_id}
+
 
 Delete NS Descriptor Test
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
-    Run Keyword If Any Tests Failed   Clean Persistent Volumes
 
-Clean Persistent Volumes
-    [Documentation]   Delete root and ordinary volumes.
-    [Tags]   cleanup
-    Delete Volume   ${ROOT_VOL_ID}
-    Delete Volume   ${ORDINARY_VOL_ID}
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
+    Run Keyword If Any Tests Failed   Delete Persistent Volumes
index cf943ca..2d1ab31 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-29] NS with a single VNF and two VDU linked by a VLD with ipv6-profile.
 
@@ -21,105 +19,112 @@ Library   Collections
 Library   SSHLibrary
 Library   JSONLibrary
 
-Resource   ../lib/vnf_lib.resource
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/openstack_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnf_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/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot
 
-Test Tags   basic_29   cluster_main   daily
+Force Tags   basic_29   cluster_main   daily
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   ipv6profile_2vm_vnf
-${VNFD_NAME}   ipv6profile_2vm-vnf
-${NSD_PKG}   ipv6profile_2vm_ns
-${NSD_NAME}   ipv6profile_2vm-ns
+${vnfd_pkg}   ipv6profile_2vm_vnf
+${vnfd_name}   ipv6profile_2vm-vnf
+${nsd_pkg}   ipv6profile_2vm_ns
+${nsd_name}   ipv6profile_2vm-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_29
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   basic_29
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${USERNAME}   ubuntu
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${username}   ubuntu
 
 # VNFs data
-${VNF_MEMBER_INDEX_1}   vnf
-${INTERNAL_PREFIX}   ^2001:db8::*
+${vnf_member_index_1}   vnf
+${internal_prefix}   ^2001:db8::*
 
-${SUCCESS_RETURN_CODE}   0
+${success_return_code}   0
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Vnf Info
-    [Documentation]   Get VNF information, specifically VNF instance id and mgmt IP address.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vnfr_list}=   Get Ns Vnfr Ids   ${NS_ID}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vnfr_list}=   Get Ns Vnfr Ids   ${ns_id}
     Log List   ${vnfr_list}
-    Set Suite Variable   ${VNF_ID}   ${vnfr_list}[0]
-    ${ip}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_1}
-    Set Suite Variable   ${VNF_IPMGMT}   ${ip}
-    Log   ${VNF_IPMGMT}
+    Set Suite Variable   ${vnf_id}   ${vnfr_list}[0]
+    ${ip}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_1}
+    Set Suite Variable   ${vnf_ipmgmt}   ${ip}
+    Log   ${vnf_ipmgmt}
+
 
 Check Vnf IPs
-    [Documentation]   Check whether IP addresses are syntactically valid.
-    Variable Should Exist   ${VNF_ID}   msg=VNF is not available
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnf-show ${VNF_ID} --literal | yq '.vdur[0].interfaces[] | select(."vnf-vld-id" == "internal")' | yq -r '."ip-address"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Should Match Regexp   ${stdout}   ${INTERNAL_PREFIX}   msg=${stdout} doesn't match subnet's regexp ${INTERNAL_PREFIX}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnf-show ${VNF_ID} --literal | yq '.vdur[1].interfaces[] | select(."vnf-vld-id" == "internal")' | yq -r '."ip-address"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Should Match Regexp   ${stdout}   ${INTERNAL_PREFIX}   msg=${stdout} doesn't match subnet's regexp ${INTERNAL_PREFIX}
-
-Check That Ipv6 Address_mode And Ra_mode Are Set
-    [Documentation]   Check that IPv6 address mode and RA mode are set and equal to dhcpv6-stateful.
-    ${rc}   ${vim_info}=   Run And Return RC And Output   osm vnf-show ${VNF_ID} --literal | yq '.vdur[] | select(."count-index" == 0)' | yq -r '.vim_info[].interfaces[].vim_info'
-    Log   ${rc},${vim_info}
+
+    Variable Should Exist   ${vnf_id}   msg=VNF is not available
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id} --literal | yq '.vdur[0].interfaces[] | select(."vnf-vld-id" == "internal")' | yq -r '."ip-address"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Should Match Regexp   ${stdout}   ${internal_prefix}   msg=${stdout} doesn't match subnet's regexp ${internal_prefix}
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id} --literal | yq '.vdur[1].interfaces[] | select(."vnf-vld-id" == "internal")' | yq -r '."ip-address"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Should Match Regexp   ${stdout}   ${internal_prefix}   msg=${stdout} doesn't match subnet's regexp ${internal_prefix}
+
+Check that ipv6 address_mode and ra_mode are set
+
+    ${rc}   ${vim_info}=   Run and Return RC and Output   osm vnf-show ${vnf_id} --literal | yq '.vdur[] | select(."count-index" == 0)' | yq -r '.vim_info[].interfaces[].vim_info'
     ${subnet_id}=   Get Regexp Matches   ${vim_info}   {ip_address: '2001:db8::.*', subnet_id: ([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})}   1
     ${subnet_info}=   Get Subnet   ${subnet_id}[0]
-    ${json_object}=   Convert String To JSON   ${subnet_info}
+    ${json_object}=   Convert String to JSON   ${subnet_info}
     ${address_mode}=   Get From Dictionary   ${json_object}   ipv6_address_mode
     ${ra_mode}=   Get From Dictionary   ${json_object}   ipv6_ra_mode
     Should Be Equal   ${address_mode}   dhcpv6-stateful   msg=ipv6_address_mode does not equals to dhcpv6-stateful
     Should Be Equal   ${ra_mode}   dhcpv6-stateful   msg=ipv6_ra_mode does not equals to dhcpv6-stateful
 
+
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index ca1cbe7..1246ed5 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-30] NS with a single VNF and two VDU linked by a VLD with ipv6-profile.
 
@@ -21,138 +19,148 @@ Library   Collections
 Library   SSHLibrary
 Library   JSONLibrary
 
-Resource   ../lib/vnf_lib.resource
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/openstack_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnf_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/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot
 
-Test Tags   basic_30   cluster_main   daily
+Force Tags   basic_30   cluster_main   daily
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   ubuntu_4ifaces_vnf
-${VNFD_NAME}   ubuntu_4ifaces-vnf
-${NSD_PKG}   ubuntu_4ifaces_ipv6_ns
-${NSD_NAME}   ubuntu_4ifaces-ipv6-ns
+${vnfd_pkg}   ubuntu_4ifaces_vnf
+${vnfd_name}   ubuntu_4ifaces-vnf
+${nsd_pkg}   ubuntu_4ifaces_ipv6_ns
+${nsd_name}   ubuntu_4ifaces-ipv6-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_30
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   basic_30
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
 
 # VNFs data
-${VNF_MEMBER_INDEX_1}   vnf1
-${VNF_MEMBER_INDEX_2}   vnf2
-${IFACE1_NAME}   eth1
-${DATANET1_PREFIX}   ^2001:db8::*
+${vnf_member_index_1}   vnf1
+${vnf_member_index_2}   vnf2
+${iface1_name}   eth1
+${datanet1_prefix}   ^2001:db8::*
 
-${SUCCESS_RETURN_CODE}   0
+${success_return_code}   0
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Vnfs Info
-    [Documentation]   Get information from the two VNF of the NS, specifically VNF instance id and mgmt IP address.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vnfr_list}=   Get Ns Vnfr Ids   ${NS_ID}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vnfr_list}=   Get Ns Vnfr Ids   ${ns_id}
     Log List   ${vnfr_list}
-    Set Suite Variable   ${VNF_ID1}   ${vnfr_list}[0]
-    Set Suite Variable   ${VNF_ID2}   ${vnfr_list}[1]
-    ${ip}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_1}
-    Set Suite Variable   ${VNF1_IPMGMT}   ${ip}
-    Log   ${VNF1_IPMGMT}
-    ${ip}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_2}
-    Set Suite Variable   ${VNF2_IPMGMT}   ${ip}
-    Log   ${VNF2_IPMGMT}
+    Set Suite Variable   ${vnf_id1}   ${vnfr_list}[0]
+    Set Suite Variable   ${vnf_id2}   ${vnfr_list}[1]
+    ${ip}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_1}
+    Set Suite Variable   ${vnf1_ipmgmt}   ${ip}
+    Log   ${vnf1_ipmgmt}
+    ${ip}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_2}
+    Set Suite Variable   ${vnf2_ipmgmt}   ${ip}
+    Log   ${vnf2_ipmgmt}
+
 
 Check Vnf1 IPs
-    [Documentation]   Check whether IP addresses of the first VNF in the VNF record meet the expected CIDR.
-    Variable Should Exist   ${VNF_ID1}   msg=VNF1 is not available
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnf-show ${VNF_ID1} --literal | yq '.vdur[0].interfaces[] | select(.name == "${IFACE1_NAME}")' | yq -r '."ip-address"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Should Match Regexp   ${stdout}   ${DATANET1_PREFIX}   msg=${stdout} doesn't match subnet's regexp ${DATANET1_PREFIX}
-    Set Suite Variable   ${VNF1_IP1}   ${stdout}
+
+    Variable Should Exist   ${vnf_id1}   msg=VNF1 is not available
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id1} --literal | yq '.vdur[0].interfaces[] | select(.name == "${iface1_name}")' | yq -r '."ip-address"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Should Match Regexp   ${stdout}   ${datanet1_prefix}   msg=${stdout} doesn't match subnet's regexp ${datanet1_prefix}
+    Set Suite Variable   ${vnf1_ip1}   ${stdout}
+
 
 Check Vnf2 IPs
-    [Documentation]   Check whether IP addresses of the second VNF in the VNF record meet the expected CIDR.
-    Variable Should Exist   ${VNF_ID2}   msg=VNF2 is not available
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnf-show ${VNF_ID2} --literal | yq '.vdur[0].interfaces[] | select(.name == "${IFACE1_NAME}")' | yq -r '."ip-address"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
-    Should Match Regexp   ${stdout}   ${DATANET1_PREFIX}   msg=${stdout} doesn't match subnet's regexp ${DATANET1_PREFIX}
-    Set Suite Variable   ${VNF2_IP1}   ${stdout}
+
+    Variable Should Exist   ${vnf_id2}   msg=VNF2 is not available
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnf-show ${vnf_id2} --literal | yq '.vdur[0].interfaces[] | select(.name == "${iface1_name}")' | yq -r '."ip-address"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
+    Should Match Regexp   ${stdout}   ${datanet1_prefix}   msg=${stdout} doesn't match subnet's regexp ${datanet1_prefix}
+    Set Suite Variable   ${vnf2_ip1}   ${stdout}
+
 
 Verify Vnf1 Interfaces
-    [Documentation]   Check whether IP addresses of the first VNF configured inside the VM meet the expected CIDR.
-    Variable Should Exist   ${VNF1_IPMGMT}   msg=IP address of the data VNF '${VNF_MEMBER_INDEX_1}' is not available
-    Variable Should Exist   ${PRIVATEKEY}   msg=SSH private key not available
+
+    Variable Should Exist   ${vnf1_ipmgmt}   msg=IP address of the data VNF '${vnf_member_index_1}' is not available
+    Variable Should Exist   ${privatekey}   msg=SSH private key not available
     Sleep   120 seconds   Wait for SSH daemon to be up
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF1_IPMGMT}   ${USERNAME}   ${EMPTY}   ${PRIVATEKEY}   sudo dhclient -6 ens4 ; ip --brief addr show up | grep -v "^lo" | awk '{print $3}'
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf1_ipmgmt}   ${username}   ${EMPTY}   ${privatekey}   sudo dhclient -6 ens4 ; ip --brief addr show up | grep -v "^lo" | awk '{print $3}'
     Log   ${stdout}
-    @{ip}=   Split String   ${stdout}
-    Should Match Regexp   ${ip}[1]   ${DATANET1_PREFIX}   msg=${ip}[1] doesn't match subnet's regexp ${DATANET1_PREFIX}
+    @{ip} =   Split String   ${stdout}
+    Should Match Regexp   ${ip}[1]   ${datanet1_prefix}   msg=${ip}[1] doesn't match subnet's regexp ${datanet1_prefix}
+
 
 Verify Vnf2 Interfaces
-    [Documentation]   Check whether IP addresses of the second VNF configured inside the VM meet the expected CIDR.
-    Variable Should Exist   ${VNF2_IPMGMT}   msg=IP address of the data VNF '${VNF_MEMBER_INDEX_2}' is not available
-    Variable Should Exist   ${PRIVATEKEY}   msg=SSH private key not available
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF2_IPMGMT}   ${USERNAME}   ${EMPTY}   ${PRIVATEKEY}   sudo dhclient -6 ens4 ; ip --brief addr show up | grep -v "^lo" | awk '{print $3}'
+
+    Variable Should Exist   ${vnf2_ipmgmt}   msg=IP address of the data VNF '${vnf_member_index_2}' is not available
+    Variable Should Exist   ${privatekey}   msg=SSH private key not available
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf2_ipmgmt}   ${username}   ${EMPTY}   ${privatekey}   sudo dhclient -6 ens4 ; ip --brief addr show up | grep -v "^lo" | awk '{print $3}'
     Log   ${stdout}
-    @{ip}=   Split String   ${stdout}
-    Should Match Regexp   ${ip}[1]   ${DATANET1_PREFIX}   msg=${ip}[1] doesn't match subnet's regexp ${DATANET1_PREFIX}
+    @{ip} =   Split String   ${stdout}
+    Should Match Regexp   ${ip}[1]   ${datanet1_prefix}   msg=${ip}[1] doesn't match subnet's regexp ${datanet1_prefix}
+
 
 Check that ipv6 address_mode and ra_mode are set
-    [Documentation]   Check that IPv6 address mode and RA mode are set and equal to dhcpv6-stateful.
-    ${rc}   ${vim_info}=   Run And Return RC And Output   osm vnf-show ${VNF_ID1} --literal | yq '.vdur[] | select(."count-index" == 0)' | yq -r '.vim_info[].interfaces[].vim_info'
-    Log   ${rc},${vim_info}
+
+    ${rc}   ${vim_info}=   Run and Return RC and Output   osm vnf-show ${vnf_id1} --literal | yq '.vdur[] | select(."count-index" == 0)' | yq -r '.vim_info[].interfaces[].vim_info'
     ${subnet_id}=   Get Regexp Matches   ${vim_info}   {ip_address: '2001:db8::.*', subnet_id: ([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})}   1
     ${subnet_info}=   Get Subnet   ${subnet_id}[0]
-    ${json_object}=   Convert String To JSON   ${subnet_info}
+    ${json_object}=   Convert String to JSON   ${subnet_info}
     ${address_mode}=   Get From Dictionary   ${json_object}   ipv6_address_mode
     ${ra_mode}=   Get From Dictionary   ${json_object}   ipv6_ra_mode
     Should Be Equal   ${address_mode}   dhcpv6-stateful   msg=ipv6_address_mode does not equal dhcpv6-stateful
     Should Be Equal   ${ra_mode}   dhcpv6-stateful   msg=ipv6_ra_mode does not equal dhcpv6-stateful
 
+
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
 
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index 6e2e164..c610447 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-31] Basic NS with two multi-VDU VNF
 
@@ -21,106 +19,113 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/connectivity_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/connectivity_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
 
-Test Tags   basic_31   cluster_main   daily
+Force Tags   basic_31   cluster_main   daily
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   multivdu_multiattach_vnf
-${VNFD_NAME}   multivdu_multiattach-vnf
-${NSD_PKG}   multivdu_multiattach_ns
-${NSD_NAME}   multivdu_multiattach-ns
+${vnfd_pkg}   multivdu_multiattach_vnf
+${vnfd_name}   multivdu_multiattach-vnf
+${nsd_pkg}   multivdu_multiattach_ns
+${nsd_name}   multivdu_multiattach-ns
 
 # NS instance name and configuration
-${NS_NAME}   multivdu_multiattach
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   multivdu_multiattach
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys and username to be used
-${VDU0_USERNAME}   ubuntu
-${VDU0_PASSWORD}   ${EMPTY}
-${VDU0_PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${VDU0_PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${VDU1_USERNAME}   ubuntu
-${VDU1_PASSWORD}   osmpass
-${VDU1_PUBLICKEY}   ${EMPTY}
-${VDU1_PRIVATEKEY}   ${EMPTY}
+${vdu0_username}   ubuntu
+${vdu0_password}   ${EMPTY}
+${vdu0_publickey}   %{HOME}/.ssh/id_rsa.pub
+${vdu0_privatekey}   %{HOME}/.ssh/id_rsa
+${vdu1_username}   ubuntu
+${vdu1_password}   osmpass
+${vdu1_publickey}   ${EMPTY}
+${vdu1_privatekey}   ${EMPTY}
 
-${NS_ID}   ${EMPTY}
-${VNF_MEMBER_INDEX}   vnf
-${VNF_IP_ADDR}   ${EMPTY}
-${WAIT_GUARD_FOR_VM_BOOT}   50s
+${ns_id}   ${EMPTY}
+${vnf_member_index}   vnf
+${vnf_ip_addr}   ${EMPTY}
+${wait_guard_for_vm_boot}   50s
 
 
 *** Test Cases ***
 Create Multiattach VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create Multiattach NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Network Service Instance Test
-    [Documentation]   Instantiate NS for the testsuite.
-    ${status}   ${message}=   Run Keyword And Ignore Error   Variable Should Exist   ${VDU0_PUBLICKEY}
-    Log   ${status}
-    Log   ${message}
-    IF   ${status} == "FAIL"   Set Global Variable   ${VDU0_PUBLICKEY}   ${EMPTY}
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${VDU0_PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
-    Sleep   ${WAIT_GUARD_FOR_VM_BOOT}   Waiting for VM's daemons to be up and running
+
+    ${status}   ${message}=   Run Keyword And Ignore Error   Variable Should Exist   ${vdu0_publickey}
+        Run Keyword If   "${status}" == "FAIL"   Set Global Variable   ${vdu0_publickey}   ${EMPTY}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${vdu0_publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+    Sleep   ${wait_guard_for_vm_boot}   Waiting for VM's daemons to be up and running
+
 
 Get Vnf ID
-    [Documentation]   Get the VNF instance id from OSM.
-    ${vnf_id}=   Get Vnf Id   ${NS_ID}   ${VNF_MEMBER_INDEX}
-    Set Suite Variable   ${VNF_ID}   ${vnf_id}
+
+    ${_vnf_id}=   Get Vnf Id   ${ns_id}   ${vnf_member_index}
+    Set Suite Variable   ${vnf_id}   ${_vnf_id}
+
 
 Get Vnf Management Ip Addresses
-    [Documentation]   Get the IP addresses of the two VDU of the VNF.
-    ${rc}   ${vdu0_ip}=   Run And Return RC And Output   osm vnf-show ${VNF_ID} --literal | yq -r '.vdur[0].interfaces[]."ip-address"'
-    Log   ${rc},${vdu0_ip}
-    ${rc}   ${vdu1_ip}=   Run And Return RC And Output   osm vnf-show ${VNF_ID} --literal | yq -r '.vdur[1].interfaces[]."ip-address"'
-    Log   ${rc},${vdu1_ip}
-    Set Suite Variable   ${MGMT_IP_ADDR_0}   ${vdu0_ip}
-    Set Suite Variable   ${MGMT_IP_ADDR_1}   ${vdu1_ip}
+
+    ${rc}   ${vdu0_ip}=   Run and Return RC and Output   osm vnf-show ${vnf_id} --literal | yq -r '.vdur[0].interfaces[]."ip-address"'
+    ${rc}   ${vdu1_ip}=   Run and Return RC and Output   osm vnf-show ${vnf_id} --literal | yq -r '.vdur[1].interfaces[]."ip-address"'
+    Set Suite Variable   ${mgmnt_ip_addr_0}   ${vdu0_ip}
+    Set Suite Variable   ${mgmnt_ip_addr_1}   ${vdu1_ip}
+
 
 Ensure that VDUs can share data
-    [Documentation]   Connect via SSH to the two VDUs of the VNF and check that the volume is shared as expected.
-    Execute Remote Command Check Rc Return Output   ${MGMT_IP_ADDR_0}   ${VDU0_USERNAME}   ${VDU0_PASSWORD}   ${VDU0_PRIVATEKEY}   sudo mkfs.ext3 -F /dev/vdb && sudo mkdir /shared && sudo mount /dev/vdb /shared && sudo chown ubuntu:ubuntu /shared && echo "osmtest" > /shared/test_file
+
+    Execute Remote Command Check Rc Return Output   ${mgmnt_ip_addr_0}   ${vdu0_username}   ${vdu0_password}   ${vdu0_privatekey}   sudo mkfs.ext3 -F /dev/vdb && sudo mkdir /shared && sudo mount /dev/vdb /shared && sudo chown ubuntu:ubuntu /shared && echo "osmtest" > /shared/test_file
     Sleep   10s
-    Execute Remote Command Check Rc Return Output   ${MGMT_IP_ADDR_1}   ${VDU1_USERNAME}   ${VDU1_PASSWORD}   ${VDU1_PRIVATEKEY}   sudo mkdir /shared && sudo mount /dev/vdb /shared && ls /shared
-    Execute Remote Command Check Rc Return Output   ${MGMT_IP_ADDR_1}   ${VDU1_USERNAME}   ${VDU1_PASSWORD}   ${VDU1_PRIVATEKEY}   cat /shared/test_file
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${MGMT_IP_ADDR_0}   ${VDU0_USERNAME}   ${VDU0_PASSWORD}   ${VDU0_PRIVATEKEY}   cat /shared/test_file
+    Execute Remote Command Check Rc Return Output   ${mgmnt_ip_addr_1}   ${vdu1_username}   ${vdu1_password}   ${vdu1_privatekey}   sudo mkdir /shared && sudo mount /dev/vdb /shared && ls /shared
+    Execute Remote Command Check Rc Return Output   ${mgmnt_ip_addr_1}   ${vdu1_username}   ${vdu1_password}   ${vdu1_privatekey}   cat /shared/test_file
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${mgmnt_ip_addr_0}   ${vdu0_username}   ${vdu0_password}   ${vdu0_privatekey}   cat /shared/test_file
     Log   ${stdout}
     Should Be Equal   ${stdout}   osmtest   Shared data can't be read
 
+
 Delete NS Instance Test
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor Test
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index 6ea3e92..2b41c78 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [BASIC-32] Basic NS with a volume in different availability zone
 
@@ -21,32 +19,32 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vim_lib.resource
-Resource   ../lib/prometheus_lib.resource
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vim_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/prometheus_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
 
-Variables   ../resources/basic_32-volume_with_different_az.py
+Variables   %{ROBOT_DEVOPS_FOLDER}/resources/basic_32-volume_with_different_az.py
 
-Test Tags   basic_32
+Force Tags   basic_32
 
 Suite Setup   Run Keyword And Ignore Error   Suite Preparation
 
-
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   several_volumes_vnf
-${VNFD_NAME}   several_volumes-vnf
-${NSD_PKG}   several_volumes_ns
-${NSD_NAME}   several_volumes-ns
+${vnfd_pkg}   several_volumes_vnf
+${vnfd_name}   several_volumes-vnf
+${nsd_pkg}   several_volumes_ns
+${nsd_name}   several_volumes-ns
 
 # NS instance name and configuration
-${NS_NAME}   basic_32
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   basic_32
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
 
 
 *** Test Cases ***
@@ -54,60 +52,64 @@ Create VIM Target Basic
     [Documentation]   Create a VIM Target only with the az parameters.
     ...               Checks the status of the VIM in Prometheus after it creation.
 
-    Pass Execution If   '${VIM_ACCOUNT_TYPE}' != 'openstack'   Not applicable for ${VIM_ACCOUNT_TYPE} VIM
+    Pass Execution If   '${vim_account_type}' != 'openstack'   Not applicable for ${vim_account_type} VIM
     ${rand}=   Generate Random String   6   [NUMBERS]
-    ${VIM_NAME_AZ}=   Catenate   SEPARATOR=_   ${VIM_NAME_PREFIX}   ${rand}
-    Set Suite Variable   ${VIM_NAME_AZ}
-    ${CREATED_VIM_ACCOUNT_ID}=   Create VIM Target   ${VIM_NAME_AZ}   ${VIM_USER}   ${VIM_PASSWORD}   ${VIM_AUTH_URL}   ${VIM_TENANT}   ${VIM_ACCOUNT_TYPE}   config=${VIM_CONFIG}
-    Set Suite Variable   ${CREATED_VIM_ACCOUNT_ID}
+    ${vim_name_az}=   Catenate   SEPARATOR=_   ${vim_name_prefix}   ${rand}
+    Set Suite Variable   ${vim_name_az}
+    ${created_vim_account_id}=   Create VIM Target   ${vim_name_az}   ${vim_user}   ${vim_password}   ${vim_auth_url}   ${vim_tenant}   ${vim_account_type}   config=${vim_config}
+    Set Suite Variable   ${created_vim_account_id}
+
 
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Network Service Instance Test
-    [Documentation]   Instantiate NS for the testsuite.
     [Tags]   prepare
-    ${id}=   Create Network Service   ${NSD_NAME}   ${VIM_NAME_AZ}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   ${vim_name_az}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Delete NS Instance Test
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor Test
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
 
-    Delete VNFD   ${VNFD_NAME}
+    Delete VNFD   ${vnfd_name}
+
 
 Delete VIM Target By ID
     [Documentation]   Delete the VIM Target created in previous test-case by its ID.
     ...               Checks whether the VIM Target was created or not before perform the deletion.
     [Tags]   cleanup
 
-    ${vim_account_id}=   Get VIM Target ID   ${VIM_NAME_AZ}
-    Should Be Equal As Strings   ${vim_account_id}   ${CREATED_VIM_ACCOUNT_ID}
+    ${vim_account_id}=   Get VIM Target ID   ${vim_name_az}
+    Should Be Equal As Strings   ${vim_account_id}   ${created_vim_account_id}
     Delete VIM Target   ${vim_account_id}
 
 
 *** Keywords ***
-Suite Preparation
-    [Documentation]   Test Suite Preparation: Setting Prometheus Testsuite Variables
-    Set Testsuite Prometheus Variables
-
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
\ No newline at end of file
index 7b838bc..981ed58 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [EPA-01] EPA+SRIOV without underlay.
 
@@ -20,81 +18,92 @@ Library   String
 Library   Collections
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   epa_01   cluster_epa   daily   regression
+Force Tags   epa_01   cluster_epa   daily   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   hackfest_basic_sriov_vnf
-${VNFD_NAME}   hackfest_basic_sriov-vnf
-${NSD_PKG}   hackfest_basic_sriov_ns
-${NSD_NAME}   hackfest_basic_sriov-ns
+${vnfd_pkg}   hackfest_basic_sriov_vnf
+${vnfd_name}   hackfest_basic_sriov-vnf
+${nsd_pkg}   hackfest_basic_sriov_ns
+${nsd_name}   hackfest_basic_sriov-ns
 
 # NS instance name and configuration
-${NS_NAME}   epa_01-epa_sriov_test
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${NS_ID}   ${EMPTY}
+${ns_name}   epa_01-epa_sriov_test
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_id}   ${EMPTY}
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   osm4u
-${VNF_MEMBER_INDEX}   vnf
-${VNF_IP_ADDR}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   osm4u
+${vnf_member_index}   vnf
+${vnf_ip_addr}   ${EMPTY}
+
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get VNF IP Address
-    [Documentation]   Get the mgmt IP address of the VNF of the NS.
-    ${ip_addr}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX}
+
+    ${ip_addr}=   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index}
     Log   ${ip_addr}
-    Set Suite Variable   ${VNF_IP_ADDR}   ${ip_addr}
+    Set Suite Variable   ${vnf_ip_addr}   ${ip_addr}
+
 
 Check SR-IOV Interface
-    [Documentation]   Connect via SSH to the mgmt IP address of the VNF and check that the interface is not based in VirtIO.
+
     Sleep   30 seconds   Waiting for SSH daemon to be up
-    Execute Remote Command Check Rc Return Output   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   lspci | grep "Ethernet controller" | grep -v "Virtio"
+    Execute Remote Command Check Rc Return Output   ${vnf_ip_addr}   ${username}   ${password}   ${privatekey}   lspci | grep "Ethernet controller" | grep -v "Virtio"
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index d278e63..86b0e97 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [EPA-02] Support for additional EPA capabilities.
 
@@ -20,94 +18,106 @@ Library   String
 Library   Collections
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/vnf_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/openstack_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnf_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot
 
-Test Tags   epa_02   cluster_epa   daily   regression
+Force Tags   epa_02   cluster_epa   daily   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   epa_quota_vnf
-${VNFD_NAME}   epa_quota-vnf
-${NSD_PKG}   epa_quota_ns
-${NSD_NAME}   epa_quota-ns
+${vnfd_pkg}   epa_quota_vnf
+${vnfd_name}   epa_quota-vnf
+${nsd_pkg}   epa_quota_ns
+${nsd_name}   epa_quota-ns
 
 # NS instance name and configuration
-${NS_NAME}   epa_02-epa_quota_test
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   epa_02-epa_quota_test
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH public keys file
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
+${publickey}   %{HOME}/.ssh/id_rsa.pub
 
-${NS_ID}   ${EMPTY}
-${VNF_SERVER_ID}   ${EMPTY}
-${FLAVOR_PROPERTIES}   ${EMPTY}
-${SUCCESS_RETURN_CODE}   0
+${ns_id}   ${EMPTY}
+${vnf_server_id}   ${EMPTY}
+${flavor_properties}   ${EMPTY}
+${success_return_code}   0
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
+
     Remove Environment Variable   OVERRIDES
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate the NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get VNF Server ID
-    [Documentation]   Get the id of the VM at the VIM and store in VNF_SERVER_ID suite variable to be used later on.
-    ${vnfs_list}=   Get Ns Vnf List   ${NS_ID}
+
+    ${vnfs_list}=   Get Ns Vnf List   ${ns_id}
     ${vim_id}=   Get VNF VIM ID   ${vnfs_list}[0]
     Log   ${vim_id}
-    Set Suite Variable   ${VNF_SERVER_ID}   ${vim_id}
+    Set Suite Variable   ${vnf_server_id}   ${vim_id}
+
 
 Get Server Flavor Properties
-    [Documentation]   Get from the VIM the flavor properties of the VM with id VNF_SERVER_ID.
-    ${flavor_id}=   Get Server Flavor ID   ${VNF_SERVER_ID}
+
+    ${flavor_id}=   Get Server Flavor ID   ${vnf_server_id}
     ${properties}=   Get Flavor Properties   ${flavor_id}
     Log   ${properties}
-    Set Suite Variable   ${FLAVOR_PROPERTIES}   ${properties}
+    Set Suite Variable   ${flavor_properties}   ${properties}
+
 
 Check Flavor Quota Properties
-    [Documentation]   Assert that the flavor properties include the expected EPA parameters included in the descriptor.
-    ${rc}=   Run And Return Rc   echo ${FLAVOR_PROPERTIES} | grep "cpu_shares_level=custom"
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    ${rc}=   Run And Return Rc   echo ${FLAVOR_PROPERTIES} | grep "disk_io_shares_level=custom"
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    ${rc}=   Run And Return Rc   echo ${FLAVOR_PROPERTIES} | grep "memory_shares_level=custom"
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
+
+    ${rc}=   Run and Return RC   echo ${flavor_properties} | grep "cpu_shares_level=custom"
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    ${rc}=   Run and Return RC   echo ${flavor_properties} | grep "disk_io_shares_level=custom"
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    ${rc}=   Run and Return RC   echo ${flavor_properties} | grep "memory_shares_level=custom"
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index 1312328..48c9e90 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [EPA-03] CRUD operations on SDNC accounts.
 
-Resource   ../lib/prometheus_lib.resource
-Resource   ../lib/sdnc_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/sdnc_lib.robot
 
-Variables   ../resources/epa_03-crud_operations_on_sdnc_data.py
+Variables   %{ROBOT_DEVOPS_FOLDER}/resources/epa_03-crud_operations_on_sdnc_data.py
 
-Test Tags   epa_03   cluster_epa   daily   regression
+Force Tags   epa_03   cluster_epa   daily   regression
 
 Suite Setup   Run Keyword And Ignore Error   Suite Preparation
 Suite Teardown   Run Keyword And Ignore Error   Delete Basic SDNC
 
 
 *** Variables ***
-${SDNC_ENABLED_MAX_WAIT_TIME}   1min
-${SDNC_ENABLED_POL_TIME}   10
+${sdnc_enabled_max_wait_time}   1min
+${sdnc_enabled_pol_time}   10
 
 
 *** Test Cases ***
 Create Basic SDNC
-    [Documentation]   Register SDN controller in OSM.
+
     ${created_sdnc_id}=   Create SDNC   ${sdnc_name}   ${sdnc_user}   ${sdnc_password}   ${sdnc_url}   ${sdnc_type}
-    Set Suite Variable   ${SDNC_ID}   ${created_sdnc_id}
-    Wait Until Keyword Succeeds   ${SDNC_ENABLED_MAX_WAIT_TIME}   ${SDNC_ENABLED_POL_TIME}   Check For SDNC   ${SDNC_ID}
+    Set Suite Variable   ${sdnc_id}   ${created_sdnc_id}
+    Wait Until Keyword Succeeds   ${sdnc_enabled_max_wait_time}   ${sdnc_enabled_pol_time}   Check for SDNC   ${sdnc_id}
+
 
 Check SDNC Status Is Healthy
-    [Documentation]   Check in Prometheus that the SDN controller is in healthy state.
-    Check For SDNC Status   ${SDNC_ID}   ${PROMETHEUS_HOST}   ${PROMETHEUS_PORT}   ${PROMETHEUS_USER}   ${PROMETHEUS_PASSWORD}
+
+    Check for SDNC Status   ${sdnc_id}   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}
+
 
 Delete Basic SDNC
-    [Documentation]   Delete SDN controller from OSM.
     [Tags]   cleanup
+
     Delete SDNC   ${sdnc_name}
 
 
 *** Keywords ***
 Suite Preparation
-    [Documentation]   Test Suite Preparation: Setting Prometheus Testsuite Variables.
+    [Documentation]   Test Suite Preparation: Setting Prometheus Testsuite Variables
+
     Set Testsuite Prometheus Variables
index 437e138..38a7023 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [EPA-04] EPA underlay SR-IOV.
 
@@ -20,96 +18,110 @@ Library   String
 Library   Collections
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/vnf_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/openstack_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnf_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot
 
-Test Tags   epa_04   cluster_epa   daily   regression
+Force Tags   epa_04   cluster_epa   daily   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   epa_1vm_sriov_vnf
-${VNFD_NAME}   epa_1vm_sriov-vnf
-${NSD_PKG}   epa_1vm_sriov_ns
-${NSD_NAME}   epa_1vm_sriov-ns
-${NS_NAME}   epa_04
+${vnfd_pkg}   epa_1vm_sriov_vnf
+${vnfd_name}   epa_1vm_sriov-vnf
+${nsd_pkg}   epa_1vm_sriov_ns
+${nsd_name}   epa_1vm_sriov-ns
+${ns_name}   epa_04
 
 # Fixed IPs and subnet for datanet VL
-${DATANET_SUBNET}   192.168.100.0/24
-${DATANET_IP1}   192.168.100.11
-${DATANET_IP2}   192.168.100.22
+${datanet_subnet}   192.168.100.0/24
+${datanet_ip1}   192.168.100.11
+${datanet_ip2}   192.168.100.22
 
-${VNF_MEMBER_INDEX_1}   vnf1
-${VNF_MEMBER_INDEX_2}   vnf2
-${USERNAME}   ubuntu
-${PASSWORD}   osm4u
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} , {name: datanet, ip-profile: {ip-version: ipv4, subnet-address: "${DATANET_SUBNET}"}, vnfd-connection-point-ref: [ {member-vnf-index-ref: "${VNF_MEMBER_INDEX_1}", vnfd-connection-point-ref: vnf-data-ext, ip-address: "${DATANET_IP1}"}, {member-vnf-index-ref: "${VNF_MEMBER_INDEX_2}", vnfd-connection-point-ref: vnf-data-ext, ip-address: "${DATANET_IP2}"}]} ] }
-${SUCCESS_RETURN_CODE}   0
+${vnf_member_index_1}   vnf1
+${vnf_member_index_2}   vnf2
+${username}   ubuntu
+${password}   osm4u
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} , {name: datanet, ip-profile: {ip-version: ipv4, subnet-address: "${datanet_subnet}"}, vnfd-connection-point-ref: [ {member-vnf-index-ref: "${vnf_member_index_1}", vnfd-connection-point-ref: vnf-data-ext, ip-address: "${datanet_ip1}"}, {member-vnf-index-ref: "${vnf_member_index_2}", vnfd-connection-point-ref: vnf-data-ext, ip-address: "${datanet_ip2}"}]} ] }
+${success_return_code}   0
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
+
     Remove Environment Variable   OVERRIDES
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${EMPTY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${EMPTY}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Management Ip Addresses
-    [Documentation]   Get the mgmt IP addresses of both VNF of the NS.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ip}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_1}
-    Set Suite Variable   ${IP_MGMT_1}   ${ip}
-    Log   ${IP_MGMT_1}
-    ${ip}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_2}
-    Set Suite Variable   ${IP_MGMT_2}   ${ip}
-    Log   ${IP_MGMT_2}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ip}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_1}
+    Set Suite Variable   ${ip_mgmt_1}   ${ip}
+    Log   ${ip_mgmt_1}
+
+    ${ip}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_2}
+    Set Suite Variable   ${ip_mgmt_2}   ${ip}
+    Log   ${ip_mgmt_2}
+
 
 Ping from Vnf1 to Vnf2
-    [Documentation]   Check connectivity from the first VNF to the second VNF using ping.
-    Variable Should Exist   ${IP_MGMT_1}   msg=IP address of the data VNF '${VNF_MEMBER_INDEX_1}' is not available
+
+    Variable Should Exist   ${ip_mgmt_1}   msg=IP address of the data VNF '${vnf_member_index_1}' is not available
     Sleep   30 seconds   Wait for SSH daemon to be up
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${IP_MGMT_1}   ${USERNAME}   ${PASSWORD}   ${EMPTY}   ip addr ; ping -c 5 ${DATANET_IP2}
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${ip_mgmt_1}   ${username}   ${password}   ${EMPTY}   ip addr ; ping -c 5 ${datanet_ip2}
     Log   ${stdout}
 
+
 Ping from Vnf2 to Vnf1
-    [Documentation]   Check connectivity from the second VNF to the first VNF using ping.
-    Variable Should Exist   ${IP_MGMT_2}   msg=IP address of the data VNF '${VNF_MEMBER_INDEX_2}' is not available
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${IP_MGMT_2}   ${USERNAME}   ${PASSWORD}   ${EMPTY}   ip addr ; ping -c 5 ${DATANET_IP1}
+
+    Variable Should Exist   ${ip_mgmt_2}   msg=IP address of the data VNF '${vnf_member_index_2}' is not available
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${ip_mgmt_2}   ${username}   ${password}   ${EMPTY}   ip addr ; ping -c 5 ${datanet_ip1}
     Log   ${stdout}
 
+
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
+
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index a81de08..0e6dd50 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [EPA-05] EPA underlay PASSTHROUGH.
 
@@ -20,96 +18,111 @@ Library   String
 Library   Collections
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/vnf_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/openstack_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnf_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot
 
-Test Tags   epa_05   cluster_epa
+Force Tags   epa_05   cluster_epa
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   epa_1vm_passthrough_vnf
-${VNFD_NAME}   epa_1vm_passthrough-vnf
-${NSD_PKG}   epa_1vm_passthrough_ns
-${NSD_NAME}   epa_1vm_passthrough-ns
-${NS_NAME}   epa_05
+${vnfd_pkg}   epa_1vm_passthrough_vnf
+${vnfd_name}   epa_1vm_passthrough-vnf
+${nsd_pkg}   epa_1vm_passthrough_ns
+${nsd_name}   epa_1vm_passthrough-ns
+${ns_name}   epa_05
 
 # Fixed IPs and subnet for datanet VL
-${DATANET_SUBNET}   192.168.110.0/24
-${DATANET_IP1}   192.168.110.11
-${DATANET_IP2}   192.168.110.22
+${datanet_subnet}   192.168.110.0/24
+${datanet_ip1}   192.168.110.11
+${datanet_ip2}   192.168.110.22
 
-${VNF_MEMBER_INDEX_1}   vnf1
-${VNF_MEMBER_INDEX_2}   vnf2
-${USERNAME}   ubuntu
-${PASSWORD}   osm4u
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} , {name: datanet, ip-profile: {ip-version: ipv4, subnet-address: "${DATANET_SUBNET}"}, vnfd-connection-point-ref: [ {member-vnf-index-ref: "${VNF_MEMBER_INDEX_1}", vnfd-connection-point-ref: vnf-data-ext, ip-address: "${DATANET_IP1}"}, {member-vnf-index-ref: "${VNF_MEMBER_INDEX_2}", vnfd-connection-point-ref: vnf-data-ext, ip-address: "${DATANET_IP2}"}]} ] }
-${SUCCESS_RETURN_CODE}   0
+${vnf_member_index_1}   vnf1
+${vnf_member_index_2}   vnf2
+${username}   ubuntu
+${password}   osm4u
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} , {name: datanet, ip-profile: {ip-version: ipv4, subnet-address: "${datanet_subnet}"}, vnfd-connection-point-ref: [ {member-vnf-index-ref: "${vnf_member_index_1}", vnfd-connection-point-ref: vnf-data-ext, ip-address: "${datanet_ip1}"}, {member-vnf-index-ref: "${vnf_member_index_2}", vnfd-connection-point-ref: vnf-data-ext, ip-address: "${datanet_ip2}"}]} ] }
+${success_return_code}   0
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
+
     Remove Environment Variable   OVERRIDES
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${EMPTY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${EMPTY}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Management Ip Addresses
-    [Documentation]   Get the mgmt IP addresses of both VNF of the NS.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ip}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_1}
-    Set Suite Variable   ${IP_MGMT_1}   ${ip}
-    Log   ${IP_MGMT_1}
-    ${ip}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_2}
-    Set Suite Variable   ${IP_MGMT_2}   ${ip}
-    Log   ${IP_MGMT_2}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ip}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_1}
+    Set Suite Variable   ${ip_mgmt_1}   ${ip}
+    Log   ${ip_mgmt_1}
+
+    ${ip}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_2}
+    Set Suite Variable   ${ip_mgmt_2}   ${ip}
+    Log   ${ip_mgmt_2}
+
 
 Ping from Vnf1 to Vnf2
-    [Documentation]   Check connectivity from the first VNF to the second VNF using ping.
-    Variable Should Exist   ${IP_MGMT_1}   msg=IP address of the data VNF '${VNF_MEMBER_INDEX_1}' is not available
+
+    Variable Should Exist   ${ip_mgmt_1}   msg=IP address of the data VNF '${vnf_member_index_1}' is not available
     Sleep   30 seconds   Wait for SSH daemon to be up
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${IP_MGMT_1}   ${USERNAME}   ${PASSWORD}   ${EMPTY}   ip addr ; ping -c 5 ${DATANET_IP2}
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${ip_mgmt_1}   ${username}   ${password}   ${EMPTY}   ip addr ; ping -c 5 ${datanet_ip2}
     Log   ${stdout}
 
+
 Ping from Vnf2 to Vnf1
-    [Documentation]   Check connectivity from the second VNF to the first VNF using ping.
-    Variable Should Exist   ${IP_MGMT_2}   msg=IP address of the data VNF '${VNF_MEMBER_INDEX_2}' is not available
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${IP_MGMT_2}   ${USERNAME}   ${PASSWORD}   ${EMPTY}   ip addr ; ping -c 5 ${DATANET_IP1}
+
+    Variable Should Exist   ${ip_mgmt_2}   msg=IP address of the data VNF '${vnf_member_index_2}' is not available
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${ip_mgmt_2}   ${username}   ${password}   ${EMPTY}   ip addr ; ping -c 5 ${datanet_ip1}
     Log   ${stdout}
 
+
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
+
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
+
index 6c14e57..022ae5a 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [FAIL-01] A single VNF with 2 VDUs, one of them unallocatable because of resources.
 
@@ -20,96 +18,102 @@ Library   String
 Library   Collections
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/openstack_lib.resource
+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/openstack_lib.robot
 
-Test Tags   fail_01   cluster_main   daily   regression
+Force Tags   fail_01   cluster_main   daily   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   simple_2vm_vnf
-${VNFD_NAME}   simple_2vm-vnf
-${NSD_PKG}   simple_2vm_ns
-${NSD_NAME}   simple_2vm-ns
+${vnfd_pkg}   simple_2vm_vnf
+${vnfd_name}   simple_2vm-vnf
+${nsd_pkg}   simple_2vm_ns
+${nsd_name}   simple_2vm-ns
 
 # NS instance name and configuration
-${NS_NAME_PREFIX}   fail_01
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name_prefix}   fail_01
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
+${publickey}   %{HOME}/.ssh/id_rsa.pub
 
 # Default memory in GB for dataVM VDU (can be overwritten by VM_MEMORY_OVERRIDE environment variable)
 # Only used if no quota is defined in Openstack's project (VDU tries to allocate the full memory of the quota)
-${DEFAULT_MEMORY}   250
+${default_memory}   250
 
 # NS launch timeout and polling time
-${NS_LAUNCH_MAX_WAIT_TIME}   5min
-${NS_LAUNCH_POL_TIME}   15
+${ns_launch_max_wait_time}   5min
+${ns_launch_pol_time}   15
 
 # Openstack delete operation timeout and polling time
-${OS_DELETE_MAX_WAIT_TIME}   6min
-${OS_DELETE_POL_TIME}   20
+${os_delete_max_wait_time}   6min
+${os_delete_pol_time}   20
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
+
     ${ram_quota}=   Get Project Quota   ram
     IF   ${ram_quota} == -1
-        ${memory}=   Get Environment Variable   VM_MEMORY_OVERRIDE   default=${DEFAULT_MEMORY}
+        ${memory}=   Get Environment Variable   VM_MEMORY_OVERRIDE   default=${default_memory}
     ELSE
         ${memory}=   Evaluate   ${ram_quota} / 1000
     END
     Log   ${memory}
-    Create VNFD Overriding Fields   '%{PACKAGES_FOLDER}/${VNFD_PKG}'   virtual-compute-desc.1.virtual-memory.size=${memory}
+    Create VNFD Overriding Fields   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   virtual-compute-desc.1.virtual-memory.size=${memory}
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Cannot Instantiate Network Service
-    [Documentation]   Assert failure when trying to instantiate the NS instance and there are not enough resources in the VIM.
+
     ${rand}=   Generate Random String   4   [NUMBERS]
-    ${ns_name}=   Catenate   SEPARATOR=_   ${NS_NAME_PREFIX}   ${rand}
-    Set Suite Variable   ${NS_NAME}
-    Log   ${NS_NAME}
-    ${id}=   Instantiate Network Service   ${NS_NAME}   ${NSD_NAME}   %{VIM_TARGET}   --config '${NS_CONFIG}' --ssh_keys ${PUBLICKEY}
+    ${ns_name}=   Catenate   SEPARATOR=_   ${ns_name_prefix}   ${rand}
+    Set Suite Variable   ${ns_name}
+    Log   ${ns_name}
+    ${id}=   Instantiate Network Service   ${ns_name}   ${nsd_name}   %{VIM_TARGET}   --config '${ns_config}' --ssh_keys ${publickey}
     Log   ${id}
-    Set Suite Variable   ${NS_ID}   ${id}
-    WAIT UNTIL KEYWORD SUCCEEDS   ${NS_LAUNCH_MAX_WAIT_TIME}   ${NS_LAUNCH_POL_TIME}   Check For Ns Instance To Configured   ${NS_NAME}
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-list --filter id="${NS_ID}" | grep ${NS_ID} | awk '{print $8}'
-    Log   ${rc},${stdout}
+    Set Suite Variable   ${ns_id}   ${id}
+    WAIT UNTIL KEYWORD SUCCEEDS   ${ns_launch_max_wait_time}   ${ns_launch_pol_time}   Check For Ns Instance To Configured   ${ns_name}
+    ${rc}   ${stdout}=   run and return rc and output   osm ns-list --filter id="${ns_id}" | grep ${ns_id} | awk '{print $8}'
+    Log   ${stdout}
     Should Contain   ${stdout}   BROKEN
-    ${rc}   ${stdout}=   Run And Return Rc And Output   osm ns-show ${NS_ID} --literal | yq .errorDetail
-    Log   ${rc},${stdout}
+    ${rc}   ${stdout}=   run and return rc and output   osm ns-show ${ns_id} --literal | yq .errorDetail
+    Log   ${stdout}
     Should Contain   ${stdout}   Deploying at VIM: Error at create vdu
 
+
 Delete NS Instance And Check VIM
-    [Documentation]   Delete NS instance and check that the VMs have been deleted.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
-    WAIT UNTIL KEYWORD SUCCEEDS   ${OS_DELETE_MAX_WAIT_TIME}   ${OS_DELETE_POL_TIME}   Check NS Servers In VIM   ${NS_NAME}   0
+
+    Delete NS   ${ns_name}
+    WAIT UNTIL KEYWORD SUCCEEDS   ${os_delete_max_wait_time}   ${os_delete_pol_time}   Check NS Servers In VIM   ${ns_name}   0
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index 09d8aa5..1c9d7c9 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [HACKFEST-BASIC] Basic NS with a single-VDU VNF
 
@@ -21,87 +19,94 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/connectivity_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/connectivity_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
 
-Test Tags   hackfest_basic   cluster_main   daily   regression   sanity   azure
+Force Tags   hackfest_basic   cluster_main   daily   regression   sanity   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   hackfest_basic_vnf
-${VNFD_NAME}   hackfest_basic-vnf
-${NSD_PKG}   hackfest_basic_ns
-${NSD_NAME}   hackfest_basic-ns
+${vnfd_pkg}   hackfest_basic_vnf
+${vnfd_name}   hackfest_basic-vnf
+${nsd_pkg}   hackfest_basic_ns
+${nsd_name}   hackfest_basic-ns
 
 # NS instance name and configuration
-${NS_NAME}   hfbasic
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   hfbasic
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
-${NS_ID}   ${EMPTY}
-${VNF_MEMBER_INDEX}   vnf
-${VNF_IP_ADDR}   ${EMPTY}
+${ns_id}   ${EMPTY}
+${vnf_member_index}   vnf
+${vnf_ip_addr}   ${EMPTY}
 
 
 *** Test Cases ***
 Create Hackfest Basic VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create Hackfest Basic NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
 
 Network Service Instance Test
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Vnf Ip Address
-    [Documentation]   Get the mgmt IP address of the VNF of the NS.
-    ${ip_addr}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX}
+
+    ${ip_addr}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index}
     Log   ${ip_addr}
-    Set Suite Variable   ${VNF_IP_ADDR}   ${ip_addr}
+    Set Suite Variable   ${vnf_ip_addr}   ${ip_addr}
 
 Test Ping
-    [Documentation]   Test that the mgmt IP address of the VNF is reachable with ping.
-    Test Connectivity   ${VNF_IP_ADDR}
+    Test Connectivity   ${vnf_ip_addr}
 
 Test SSH Access
-    [Documentation]   Check that the VNF is accessible via SSH in its mgmt IP address.
     Sleep   30s   Waiting ssh daemon to be up
-    Test SSH Connection   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
+    Test SSH Connection   ${vnf_ip_addr}   ${username}   ${password}   ${privatekey}
 
 Delete NS Instance Test
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor Test
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
+
index 89aeb22..cd695ad 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [HACKFEST-CLOUDINIT] Basic NS with two multi-VDU VNF with cloudinit
 
@@ -21,86 +19,99 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/connectivity_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/connectivity_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
 
-Test Tags   hackfest_cloudinit   cluster_main   daily   regression   sanity   azure
+Force Tags   hackfest_cloudinit   cluster_main   daily   regression   sanity   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   hackfest_cloudinit_vnf
-${VNFD_NAME}   hackfest_cloudinit-vnf
-${NSD_PKG}   hackfest_cloudinit_ns
-${NSD_NAME}   hackfest_cloudinit-ns
+${vnfd_pkg}   hackfest_cloudinit_vnf
+${vnfd_name}   hackfest_cloudinit-vnf
+${nsd_pkg}   hackfest_cloudinit_ns
+${nsd_name}   hackfest_cloudinit-ns
 
 # NS instance name and configuration
-${NS_NAME}   hfcloudinit
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   hfcloudinit
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH user and password
-${USERNAME}   ubuntu
-${PASSWORD}   osm4u
+${username}   ubuntu
+${password}   osm4u
 
-${NS_ID}   ${EMPTY}
-${VNF_MEMBER_INDEX}   vnf1
-${VNF_IP_ADDR}   ${EMPTY}
+${ns_id}   ${EMPTY}
+${vnf_member_index}   vnf1
+${vnf_ip_addr}   ${EMPTY}
 
 
 *** Test Cases ***
 Create Hackfest Cloudinit VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create Hackfest Cloudinit NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Network Service Instance Test
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${EMPTY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${EMPTY}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Vnf Ip Address
-    [Documentation]   Get the mgmt IP address of the VNF of the NS.
-    ${ip_addr}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX}
+
+    ${ip_addr}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index}
     Log   ${ip_addr}
-    Set Suite Variable   ${VNF_IP_ADDR}   ${ip_addr}
+    Set Suite Variable   ${vnf_ip_addr}   ${ip_addr}
+
 
 Test SSH Access
-    [Documentation]   Check that the VNF is accessible via SSH in its mgmt IP address.
+
     Sleep   30s   Waiting ssh daemon to be up
-    Test SSH Connection   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${EMPTY}
+    Test SSH Connection   ${vnf_ip_addr}   ${username}   ${password}   ${EMPTY}
+
 
 Check Remote File Injected Via Cloud-init
-    [Documentation]   Check that the day-0 configuration via cloudinit worked as expected in the VNF. A file should exist in the VM.
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${EMPTY}   sudo cat /root/helloworld.txt
+
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf_ip_addr}   ${username}   ${password}   ${EMPTY}   sudo cat /root/helloworld.txt
     Log   ${stdout}
 
+
 Delete NS Instance Test
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor Test
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
+
index 325cd9d..14fe175 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [HACKFEST-MULTIVDU] Basic NS with two multi-VDU VNF
 
@@ -21,94 +19,96 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/connectivity_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/connectivity_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
 
-Test Tags   hackfest_multivdu   cluster_main   daily   regression   azure
+Force Tags   hackfest_multivdu   cluster_main   daily   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   hackfest_multivdu_vnf
-${VNFD_NAME}   hackfest_multivdu-vnf
-${NSD_PKG}   hackfest_multivdu_ns
-${NSD_NAME}   hackfest_multivdu-ns
+${vnfd_pkg}   hackfest_multivdu_vnf
+${vnfd_name}   hackfest_multivdu-vnf
+${nsd_pkg}   hackfest_multivdu_ns
+${nsd_name}   hackfest_multivdu-ns
 
 # NS instance name and configuration
-${NS_NAME}   hfmultivdu
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   hfmultivdu
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
-${NS_ID}   ${EMPTY}
-${VNF_MEMBER_INDEX}   vnf1
-${VNF_IP_ADDR}   ${EMPTY}
-${WAIT_GUARD_FOR_VM_BOOT}   50s
+${ns_id}   ${EMPTY}
+${vnf_member_index}   vnf1
+${vnf_ip_addr}   ${EMPTY}
+${wait_guard_for_vm_boot}   50s
 
 
 *** Test Cases ***
 Create Hackfest multivdu VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create Hackfest Multivdu NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
 
 Network Service Instance Test
-    [Documentation]   Instantiate NS for the testsuite.
-    ${status}   ${message}=   Run Keyword And Ignore Error   Variable Should Exist   ${PUBLICKEY}
-    Log   ${status},${message}
-    IF   ${status} == "FAIL"   Set Global Variable   ${PUBLICKEY}   ${EMPTY}
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
-    Sleep   ${WAIT_GUARD_FOR_VM_BOOT}   Waiting for VM's daemons to be up and running
+
+    ${status}   ${message}=   Run Keyword And Ignore Error   Variable Should Exist   ${publickey}
+        Run Keyword If   "${status}" == "FAIL"   Set Global Variable   ${publickey}   ${EMPTY}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+    Sleep   ${wait_guard_for_vm_boot}   Waiting for VM's daemons to be up and running
 
 Get Vnf Ip Address
-    [Documentation]   Get the mgmt IP address of the VNF of the NS.
-    ${ip_addr}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX}
+
+    ${ip_addr}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index}
     Log   ${ip_addr}
-    Set Suite Variable   ${VNF_IP_ADDR}   ${ip_addr}
+    Set Suite Variable   ${vnf_ip_addr}   ${ip_addr}
 
 Test Ping
-    [Documentation]   Test that the mgmt IP address of the VNF is reachable with ping.
-    Test Connectivity   ${VNF_IP_ADDR}
+    Test Connectivity   ${vnf_ip_addr}
 
 Test SSH Access
-    [Documentation]   Check that the VNF is accessible via SSH in its mgmt IP address.
-    ${status}   ${message}=   Run Keyword And Ignore Error   Variable Should Exist   ${PRIVATEKEY}
-    Log   ${status},${message}
-    IF   ${status} == "FAIL"   Set Global Variable   ${PRIVATEKEY}   ${EMPTY}
-    Test SSH Connection   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
+    ${status}   ${message}=   Run Keyword And Ignore Error   Variable Should Exist   ${privatekey}
+        Run Keyword If   "${status}" == "FAIL"   Set Global Variable   ${privatekey}   ${EMPTY}
+    Test SSH Connection   ${vnf_ip_addr}   ${username}   ${password}   ${privatekey}
 
 Delete NS Instance Test
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor Test
-    [Documentation]   Delete NS package.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete VNF package.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index de2467a..dfade05 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [HEAL-01] Healing of a multi-volume VDU
 
@@ -21,174 +19,177 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/vnf_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/openstack_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnf_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot
+
+Force Tags   heal_01   cluster_heal   daily
 
-Test Tags   heal_01   cluster_heal   daily
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_VOLUMES_PKG}   several_volumes_vnf
-${VNFD_VOLUMES_NAME}   several_volumes-vnf
-${VDU_VOLUMES_NAME}   several_volumes-VM
-${VNF_SEVERAL_INDEX}   several_volumes_vnf
-${VNFD_CHARM_PKG}   charm-packages/native_manual_scale_charm_vnf
-${VNFD_CHARM_NAME}   native_manual_scale_charm-vnf
-${NSD_PKG}   volumes_nativecharm_ns
-${NSD_NAME}   volumes_nativecharm-ns
+${vnfd_volumes_pkg}   several_volumes_vnf
+${vnfd_volumes_name}   several_volumes-vnf
+${vdu_volumes_name}   several_volumes-VM
+${vnf_several_index}   several_volumes_vnf
+${vnfd_charm_pkg}   charm-packages/native_manual_scale_charm_vnf
+${vnfd_charm_name}   native_manual_scale_charm-vnf
+${nsd_pkg}   volumes_nativecharm_ns
+${nsd_name}   volumes_nativecharm-ns
 
 # NS instance name and configuration
-${NS_NAME}   heal_01
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${NS_TIMEOUT}   6min
+${ns_name}   heal_01
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_timeout}   6min
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
-${SUCCESS_RETURN_CODE}   0
+${success_return_code}   0
 
-@{VIM_VDUS}   @{EMPTY}
-@{VIM_VOLUMES}   @{EMPTY}
+@{vim_vdus}   @{EMPTY}
+@{vim_volumes}   @{EMPTY}
 
 
 *** Test Cases ***
 Create VNF Descriptors
-    [Documentation]   Upload VNF packages for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_CHARM_PKG}'
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_VOLUMES_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_charm_pkg}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_volumes_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Network Service Instance Test
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}   ${NS_TIMEOUT}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_timeout}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get NS Id
-    [Documentation]   Get NS identifier.
     [Tags]   cleanup
-    ${variables}=   Get Variables
-    IF   not "\${ns_id}" in ${variables}
-        ${id}=   Get Ns Id   ${NS_NAME}
-        Set Suite Variable   ${NS_ID}   ${id}
+    ${variables}   Get Variables
+    IF   not "\${ns_id}" in "${variables}"
+        ${id}=   Get Ns Id   ${ns_name}
+        Set Suite Variable   ${ns_id}   ${id}
     END
 
+
 Get VIM Objects
-    [Documentation]   Retrieve all VMs and volumes from the NS and stores them in VIM_VDUS and VIM_VOLUMES lists.
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
-    @{vnf_id_list}=   Get Ns Vnf List   ${NS_ID}
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    @{vnf_id_list}=   Get Ns Vnf List   ${ns_id}
     Log   ${vnf_id_list}
     FOR   ${vnf_id}   IN   @{vnf_id_list}
         Log   ${vnf_id}
         ${id}=   Get VNF VIM ID   ${vnf_id}
         @{vdu_ids}=   Split String   ${id}
-        Append To List   ${VIM_VDUS}   @{vdu_ids}
+        Append To List   ${vim_vdus}   @{vdu_ids}
     END
-    FOR   ${vdu_id}   IN   @{VIM_VDUS}
+    FOR   ${vdu_id}   IN   @{vim_vdus}
         ${volumes_attached}=   Get Server Property   ${vdu_id}   volumes_attached
         ${match}=   Get Regexp Matches   ${volumes_attached}   '([0-9a-f\-]+)'   1
         IF   ${match} != @{EMPTY}
-            IF   not ${match}[0] in @{VIM_VOLUMES}
-                Append To List   ${VIM_VOLUMES}   ${match}[0]
+            IF   not "${match}[0]" in "@{vim_volumes}"
+                Append To List   ${vim_volumes}   ${match}[0]
             END
         END
     END
-    Log Many   @{VIM_VDUS}
-    Log Many   @{VIM_VOLUMES}
+    Log Many   @{vim_vdus}
+    Log Many   @{vim_volumes}
+
 
 Get Volume VNF Info
-    [Documentation]   Get VDU ID, IP addresses and volumes of the VNF and stores them in suite variables to be used later on.
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
-    ${ip_addr}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_SEVERAL_INDEX}
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    ${ip_addr}=   Get Vnf Management Ip Address   ${ns_id}   ${vnf_several_index}
     Log   ${ip_addr}
-    Set Suite Variable   ${VNF_VOLUMES_IP_ADDR}   ${ip_addr}
-    ${vnf_id}=   Get Vnf Id   ${NS_ID}   ${VNF_SEVERAL_INDEX}
-    Set Suite Variable   ${VNF_VOLUMES_ID}   ${vnf_id}
+    Set Suite Variable   ${vnf_volumes_ip_addr}   ${ip_addr}
+
+    ${vnf_id}=   Get Vnf Id   ${ns_id}   ${vnf_several_index}
+    Set Suite Variable   ${vnf_volumes_id}   ${vnf_id}
     ${id}=   Get VNF VIM ID   ${vnf_id}
-    Set Suite Variable   ${VDU_VOLUMES_ID}   ${id}
-    Log   ${VDU_VOLUMES_ID}
-    @{VOLUMES_IP_LIST}=   Get Vnf Vdur IPs   ${VNF_VOLUMES_ID}
-    Set Suite Variable   @{VOLUMES_IP_LIST}   @{VOLUMES_IP_LIST}
-    Log   @{VOLUMES_IP_LIST}
+    Set Suite Variable   ${vdu_volumes_id}   ${id}
+    Log   ${vdu_volumes_id}
+
+    @{volumes_ip_list}=   Get Vnf Vdur IPs   ${vnf_volumes_id}
+    Set Suite Variable   @{volumes_ip_list}   @{volumes_ip_list}
+    Log   @{volumes_ip_list}
+
 
 Get Volumes Info
-    [Documentation]   Get number of volumes from the VNF descriptor and get the attached volumes from the VDU instance.
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnfpkg-show ${VNFD_VOLUMES_NAME} --literal | yq '.vdu[0]."virtual-storage-desc" | length'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnfpkg-show ${vnfd_volumes_name} --literal | yq '.vdu[0]."virtual-storage-desc" | length'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
     ${num_virtual_storage}=   Convert To Integer   ${stdout}
-    Set Suite Variable   ${VNF_NUM_VOLUMES}   ${num_virtual_storage}
-    Log   ${VNF_NUM_VOLUMES}
-    ${volumes_attached}=   Get Server Property   ${VDU_VOLUMES_ID}   volumes_attached
+    Set Suite Variable   ${vnf_num_volumes}   ${num_virtual_storage}
+    Log   ${vnf_num_volumes}
+    ${volumes_attached}=   Get Server Property   ${vdu_volumes_id}   volumes_attached
     ${match}=   Get Regexp Matches   ${volumes_attached}   '([0-9a-f\-]+)'   1
-    Set Suite Variable   ${VOLUME_ID}   ${match}[0]
+    Set Suite Variable   ${volume_id}   ${match}[0]
+
 
 Check VDU Disks
-    [Documentation]   Check that the number of disks in the VDU meets the expected one.
-    Variable Should Exist   ${VNF_VOLUMES_IP_ADDR}   msg=VNF is not available
+    Variable Should Exist   ${vnf_volumes_ip_addr}   msg=VNF is not available
     Sleep   20 seconds   Wait for SSH daemon to be up
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF_VOLUMES_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   sudo lsblk -l
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf_volumes_ip_addr}   ${username}   ${password}   ${privatekey}   sudo lsblk -l
     Log   ${stdout}
     ${lines}=   Get Lines Containing String   ${stdout}   disk
     ${num_lines}=   Get Line Count   ${lines}
-    IF   ${num_lines} < ${VNF_NUM_VOLUMES}   Fail   msg=Number of disks (${num_lines}) is less than specified in VDU (${VNF_NUM_VOLUMES})
+    Run Keyword If   ${num_lines} < ${vnf_num_volumes}   Fail   msg=Number of disks (${num_lines}) is less than specified in VDU (${vnf_num_volumes})
+
 
 Delete Persistent Volume VDU
-    [Documentation]   Manually delete the VM in Openstack.
-    Variable Should Exist   ${VDU_VOLUMES_ID}   msg=VDU is not available
-    Delete Server   ${VDU_VOLUMES_ID}
+    Variable Should Exist   ${vdu_volumes_id}   msg=VDU is not available
+    Delete Server   ${vdu_volumes_id}
     Sleep   20
 
+
 Heal Persistent Volume VDU
-    [Documentation]   Manually heal the VNF in order to re-create the deleted VM.
-    Variable Should Exist   ${VNF_VOLUMES_ID}   msg=VNF is not available
-    Heal Network Service   ${NS_ID}   --vnf ${VNF_VOLUMES_ID} --cause "Heal VM of volumes_vnf" --vdu ${VDU_VOLUMES_NAME}
+    Variable Should Exist   ${vnf_volumes_id}   msg=VNF is not available
+    Heal Network Service   ${ns_id}   --vnf ${vnf_volumes_id} --cause "Heal VM of volumes_vnf" --vdu ${vdu_volumes_name}
+
 
 Check VNF After Healing
-    [Documentation]   Check that the IDs of the VM and volumes have not changed after healing.
-    Variable Should Exist   ${VNF_VOLUMES_ID}   msg=VNF is not available
-    @{ip_list}=   Get Vnf Vdur IPs   ${VNF_VOLUMES_ID}
+    Variable Should Exist   ${vnf_volumes_id}   msg=VNF is not available
+
+    @{ip_list}=   Get Vnf Vdur IPs   ${vnf_volumes_id}
     Log   @{ip_list}
-    Should Be Equal   ${ip_list}   ${VOLUMES_IP_LIST}   IP addresses have changed after healing
-    ${id}=   Get VNF VIM ID   ${VNF_VOLUMES_ID}
+    Should Be Equal   ${ip_list}   ${volumes_ip_list}   IP addresses have changed after healing
+
+    ${id}=   Get VNF VIM ID   ${vnf_volumes_id}
     Log   ${id}
-    Should Not Be Equal   ${id}   ${VDU_VOLUMES_ID}   VDU id has not changed after healing
+    Should Not Be Equal   ${id}   ${vdu_volumes_id}   VDU id has not changed after healing
+
     ${volumes_attached}=   Get Server Property   ${id}   volumes_attached
     ${match}=   Get Regexp Matches   ${volumes_attached}   '([0-9a-f\-]+)'   1
-    Should Be Equal   ${match}[0]   ${VOLUME_ID}   Volume id has changed after healing
+    Should Be Equal   ${match}[0]   ${volume_id}   Volume id has changed after healing
+
     Sleep   30 seconds   Wait for SSH daemon to be up
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${VNF_VOLUMES_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   sudo lsblk -l
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${vnf_volumes_ip_addr}   ${username}   ${password}   ${privatekey}   sudo lsblk -l
     Log   ${stdout}
     ${lines}=   Get Lines Containing String   ${stdout}   disk
     ${num_lines}=   Get Line Count   ${lines}
-    IF   ${num_lines} < ${VNF_NUM_VOLUMES}   Fail   msg=Number of disks (${num_lines}) is less than specified in VDU (${VNF_NUM_VOLUMES})
+    Run Keyword If   ${num_lines} < ${vnf_num_volumes}   Fail   msg=Number of disks (${num_lines}) is less than specified in VDU (${vnf_num_volumes})
+
 
 Update VIM Objects
-    [Documentation]   Retrieve all VMs and volumes from the NS and stores them in VIM_VDUS and VIM_VOLUMES lists.
-    ...               This is done again to guarantee that all objects are cleaned in the VIM in case the heal operation
-    ...               added new objects.
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
+    Variable Should Exist   ${ns_id}   msg=NS is not available
     @{vdu_updated}=   Create List
-    @{vnf_id_list}=   Get Ns Vnf List   ${NS_ID}
+    @{vnf_id_list}=   Get Ns Vnf List   ${ns_id}
     FOR   ${vnf_id}   IN   @{vnf_id_list}
         ${id}=   Get VNF VIM ID   ${vnf_id}
         @{vdu_ids}=   Split String   ${id}
         Append To List   ${vdu_updated}   @{vdu_ids}
         FOR   ${id}   IN   @{vdu_ids}
-            IF   not ${id} in @{VIM_VDUS}
-                Append To List   ${VIM_VDUS}   ${id}
+            IF   not "${id}" in "@{vim_vdus}"
+                Append To List   ${vim_vdus}   ${id}
             END
         END
     END
@@ -196,65 +197,64 @@ Update VIM Objects
         ${volumes_attached}=   Get Server Property   ${vdu_id}   volumes_attached
         ${match}=   Get Regexp Matches   ${volumes_attached}   '([0-9a-f\-]+)'   1
         IF   ${match} != @{EMPTY}
-            IF   not ${match}[0] in @{VIM_VOLUMES}
-                Append To List   ${VIM_VOLUMES}   ${match}[0]
+            IF   not "${match}[0]" in "@{vim_volumes}"
+                Append To List   ${vim_volumes}   ${match}[0]
             END
         END
     END
-    Log Many   @{VIM_VDUS}
-    Log Many   @{VIM_VOLUMES}
+    Log Many   @{vim_vdus}
+    Log Many   @{vim_volumes}
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+    Delete NSD   ${nsd_name}
 
-Delete VNF Descriptors
-    [Documentation]   Delete VNF packages from OSM.
-    [Tags]   cleanup
-    Delete VNFD   ${VNFD_VOLUMES_NAME}
-    Delete VNFD   ${VNFD_CHARM_NAME}
 
-Delete Remaining Objects in VIM
-    [Documentation]   Delete any remaining objects (volumes, VMs, etc.) in the VIM.
+Delete VNF Descriptors
     [Tags]   cleanup
-    Delete Objects In VIM
+    Delete VNFD   ${vnfd_volumes_name}
+    Delete VNFD   ${vnfd_charm_name}
 
 
-*** Keywords ***
-Suite Cleanup
-    [Documentation]   Test Suite Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_VOLUMES_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_CHARM_NAME}
-    Run Keyword If Any Tests Failed   Delete Objects In VIM
-
-Delete Objects In VIM
-    [Documentation]   Clean up remaining VMs and volumes directly from the VIM.
+Delete Objects in VIM
+    [Tags]   cleanup
     ${error}=   Set Variable   0
-    FOR   ${vol_id}   IN   @{VIM_VOLUMES}
+    FOR   ${vol_id}   IN   @{vim_volumes}
         Log   Checking if volume ${vol_id} is still in VIM
         ${exists}=   Check If Volume Exists   ${vol_id}
-        IF   ${exists}
+        IF   ${exists}!=0
             ${error}=   Set Variable   1
             Log   Deleting volume ${vol_id}
             Run Keyword And Ignore Error   Delete Volume   ${vol_id}
         END
     END
-    FOR   ${vdu_id}   IN   @{VIM_VDUS}
+    FOR   ${vdu_id}   IN   @{vim_vdus}
         Log   Checking if server ${vdu_id} is still in VIM
         ${status}=   Run Keyword And Ignore Error   Get Server Property   ${vdu_id}   id
         Log   ${status}[0]
-        IF   ${status}[0] == 'PASS'
+        IF   '${status}[0]' == 'PASS'
             ${error}=   Set Variable   1
             Log   Deleting server ${vdu_id}
             Run Keyword And Ignore Error   Delete Server   ${vdu_id}
         END
     END
-    IF   ${error}==1   Fail   Some objects created by test were not deleted in VIM
+    IF   ${error}==1
+        Fail   Some objects created by test were not deleted in VIM
+    END
+
+
+*** Keywords ***
+Suite Cleanup
+    [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_volumes_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_charm_name}
+    Run Keyword If Any Tests Failed   Delete Objects in VIM
index dec7572..86886ef 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [HEAL-02] Healing of scaled charm VDUs
 
@@ -21,177 +19,177 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/vnf_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/openstack_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnf_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot
+
+Force Tags   heal_02   cluster_heal   daily
 
-Test Tags   heal_02   cluster_heal   daily
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_VOLUMES_PKG}   several_volumes_vnf
-${VNFD_VOLUMES_NAME}   several_volumes-vnf
-${VDU_VOLUMES_NAME}   several_volumes-VM
-${VNF_SEVERAL_INDEX}   several_volumes_vnf
-${VNFD_CHARM_PKG}   charm-packages/native_manual_scale_charm_vnf
-${VNFD_CHARM_NAME}   native_manual_scale_charm-vnf
-${VDU_CHARM_NAME}   mgmtVM
-${VNF_CHARM_INDEX}   charm_vnf
-${VNF_CHARM_SCALING_GROUP}   manual-scaling_mgmtVM
-${VNF_CHARM_CLOUDINIT_FILE}   /root/helloworld.txt
-${VNF_CHARM_DAY1_FILE}   /home/ubuntu/first-touch
-${NSD_PKG}   volumes_nativecharm_ns
-${NSD_NAME}   volumes_nativecharm-ns
+${vnfd_volumes_pkg}   several_volumes_vnf
+${vnfd_volumes_name}   several_volumes-vnf
+${vdu_volumes_name}   several_volumes-VM
+${vnf_several_index}   several_volumes_vnf
+${vnfd_charm_pkg}   charm-packages/native_manual_scale_charm_vnf
+${vnfd_charm_name}   native_manual_scale_charm-vnf
+${vdu_charm_name}   mgmtVM
+${vnf_charm_index}   charm_vnf
+${vnf_charm_scaling_group}   manual-scaling_mgmtVM
+${vnf_charm_cloudinit_file}   /root/helloworld.txt
+${vnf_charm_day1_file}   /home/ubuntu/first-touch
+${nsd_pkg}   volumes_nativecharm_ns
+${nsd_name}   volumes_nativecharm-ns
 
 # NS instance name and configuration
-${FLAVOR_NAME_PREFIX}   osm.heal02
-${NS_NAME}   heal_02
-${NS_TIMEOUT}   6min
-${SCALE_WAIT_TIME}   5min
+${flavor_name_prefix}   osm.heal02
+${ns_name}   heal_02
+${ns_timeout}   6min
+${scale_wait_time}   5min
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
-${SUCCESS_RETURN_CODE}   0
+${success_return_code}   0
 
-@{VIM_VDUS}   @{EMPTY}
-@{VIM_VOLUMES}   @{EMPTY}
+@{vim_vdus}   @{EMPTY}
+@{vim_volumes}   @{EMPTY}
 
 
 *** Test Cases ***
 Create VNF Descriptors
-    [Documentation]   Upload VNF packages for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_CHARM_PKG}'
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_VOLUMES_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_charm_pkg}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_volumes_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Create Test Flavor
-    [Documentation]   Create a flavor that will be used at NS instantiation time and save it as FLAVOR_ID.
     ${rand}=   Generate Random String   6   [NUMBERS]
-    ${flavor_name}=   Catenate   SEPARATOR=_   ${FLAVOR_NAME_PREFIX}   ${rand}
+    ${flavor_name}=   Catenate   SEPARATOR=_   ${flavor_name_prefix}   ${rand}
     ${id}=   Create Flavor   ${flavor_name}   1   1024   10
-    Set Suite Variable   ${FLAVOR_ID}   ${id}
+    Set Suite Variable   ${flavor_id}   ${id}
+
 
 Network Service Instance Test
-    [Documentation]   Instantiate NS for the testsuite using the previously created flavor.
-    ${ns_config}=   Set Variable   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}}],vnf: [ {member-vnf-index: charm_vnf, vdu: [{ id: mgmtVM, vim-flavor-id: ${FLAVOR_ID}}]}] }
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${ns_config}   ${PUBLICKEY}   ${NS_TIMEOUT}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${ns_config}=   Set Variable   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}}],vnf: [ {member-vnf-index: charm_vnf, vdu: [{ id: mgmtVM, vim-flavor-id: ${flavor_id}}]}] }
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_timeout}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get NS Id
-    [Documentation]   Get NS identifier.
     [Tags]   cleanup
-    ${variables}=   Get Variables
-    IF   not "\${ns_id}" in ${variables}
-        ${id}=   Get Ns Id   ${NS_NAME}
-        Set Suite Variable   ${NS_ID}   ${id}
+    ${variables}   Get Variables
+    IF   not "\${ns_id}" in "${variables}"
+        ${id}=   Get Ns Id   ${ns_name}
+        Set Suite Variable   ${ns_id}   ${id}
     END
 
+
 Scale Out Charm VNF
-    [Documentation]   Perform a manual scale-out operation of the charm VNF.
-    ${vnf_id}=   Get Vnf Id   ${NS_ID}   ${VNF_CHARM_INDEX}
-    Set Suite Variable   ${VNF_CHARM_ID}   ${vnf_id}
-    @{vdur_list}=   Get Vnf Vdur Names   ${VNF_CHARM_ID}
+    ${vnf_id}=   Get Vnf Id   ${ns_id}   ${vnf_charm_index}
+    Set Suite Variable   ${vnf_charm_id}   ${vnf_id}
+    @{vdur_list}=   Get Vnf Vdur Names   ${vnf_charm_id}
     ${vdurs}=   Get Length   ${vdur_list}
-    Set Suite Variable   ${INITIAL_VDUR_COUNT}   ${vdurs}
-    Execute Manual VNF Scale   ${NS_NAME}   ${VNF_CHARM_INDEX}   ${VNF_CHARM_SCALING_GROUP}   SCALE_OUT   ${SCALE_WAIT_TIME}
-    @{vdur_list}=   Get Vnf Vdur Names   ${VNF_CHARM_ID}
+    Set Suite Variable   ${initial_vdur_count}   ${vdurs}
+    Execute Manual VNF Scale   ${ns_name}   ${vnf_charm_index}   ${vnf_charm_scaling_group}   SCALE_OUT   ${scale_wait_time}
+    @{vdur_list}=   Get Vnf Vdur Names   ${vnf_charm_id}
     ${vdurs}=   Get Length   ${vdur_list}
-    IF   ${vdurs} != ${INITIAL_VDUR_COUNT} + 1   Fail   msg=There is no new VDU records in the VNF after Scale Out
+    Run Keyword If   ${vdurs} != ${initial_vdur_count} + 1   Fail   msg=There is no new VDU records in the VNF after Scale Out
+
 
 Get VIM Objects
-    [Documentation]   Retrieve all VMs and volumes from the NS and stores them in VIM_VDUS and VIM_VOLUMES lists.
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
-    @{vnf_id_list}=   Get Ns Vnf List   ${NS_ID}
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    @{vnf_id_list}=   Get Ns Vnf List   ${ns_id}
     Log   ${vnf_id_list}
     FOR   ${vnf_id}   IN   @{vnf_id_list}
         Log   ${vnf_id}
         ${id}=   Get VNF VIM ID   ${vnf_id}
         @{vdu_ids}=   Split String   ${id}
-        Append To List   ${VIM_VDUS}   @{vdu_ids}
+        Append To List   ${vim_vdus}   @{vdu_ids}
     END
-    FOR   ${vdu_id}   IN   @{VIM_VDUS}
+    FOR   ${vdu_id}   IN   @{vim_vdus}
         ${volumes_attached}=   Get Server Property   ${vdu_id}   volumes_attached
         ${match}=   Get Regexp Matches   ${volumes_attached}   '([0-9a-f\-]+)'   1
         IF   ${match} != @{EMPTY}
-            IF   not ${match}[0] in @{VIM_VOLUMES}
-                Append To List   ${VIM_VOLUMES}   ${match}[0]
+            IF   not "${match}[0]" in "@{vim_volumes}"
+                Append To List   ${vim_volumes}   ${match}[0]
             END
         END
     END
-    Log Many   @{VIM_VDUS}
-    Log Many   @{VIM_VOLUMES}
+    Log Many   @{vim_vdus}
+    Log Many   @{vim_volumes}
+
 
 Get Charm VNF Info
-    [Documentation]   Get VDU ID and IP addresses of the charm VNF and stores them in VDU_CHARM_IDS and CHARM_IP_LIST.
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
-    ${variables}=   Get Variables
-    IF   not "\${vnf_charm_id}" in ${variables}
-        ${vnf_id}=   Get Vnf Id   ${NS_ID}   ${VNF_CHARM_INDEX}
-        Set Suite Variable   ${VNF_CHARM_ID}   ${vnf_id}
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    ${variables}   Get Variables
+    IF   not "\${vnf_charm_id}" in "${variables}"
+        ${vnf_id}=   Get Vnf Id   ${ns_id}   ${vnf_charm_index}
+        Set Suite Variable   ${vnf_charm_id}   ${vnf_id}
     END
-    ${id}=   Get VNF VIM ID   ${VNF_CHARM_ID}
-    @{VDU_CHARM_IDS}=   Split String   ${id}
-    Set Suite Variable   @{VDU_CHARM_IDS}   @{VDU_CHARM_IDS}
-    Log   ${VDU_CHARM_IDS}[1]
-    @{CHARM_IP_LIST}=   Get Vnf Vdur IPs   ${VNF_CHARM_ID}
-    Set Suite Variable   @{CHARM_IP_LIST}   @{CHARM_IP_LIST}
+    ${id}=   Get VNF VIM ID   ${vnf_charm_id}
+    @{vdu_charm_ids}=   Split String   ${id}
+    Set Suite Variable   @{vdu_charm_ids}   @{vdu_charm_ids}
+    Log   ${vdu_charm_ids}[1]
+    @{charm_ip_list}=   Get Vnf Vdur IPs   ${vnf_charm_id}
+    Set Suite Variable   @{charm_ip_list}   @{charm_ip_list}
+
 
 Halt Charm VDU
-    [Documentation]   Halt one of the VM of the charm VNF.
-    Variable Should Exist   @{VDU_CHARM_IDS}   msg=VDU is not available
-    Halt Server   ${VDU_CHARM_IDS}[1]
+    Variable Should Exist   @{vdu_charm_ids}   msg=VDU is not available
+    Halt Server   ${vdu_charm_ids}[1]
     Sleep   15
 
+
 Heal Charm VDU
-    [Documentation]   Heal manually via OSM commands all stopped VMs . They should be started again.
-    Variable Should Exist   ${VNF_CHARM_ID}   msg=VNF is not available
-    Heal Network Service   ${NS_ID}   --vnf ${VNF_CHARM_ID} --cause "Heal VM of charm_vnf" --vdu ${VDU_CHARM_NAME} --count-index 1 --run-day1
+    Variable Should Exist   ${vnf_charm_id}   msg=VNF is not available
+    Heal Network Service   ${ns_id}   --vnf ${vnf_charm_id} --cause "Heal VM of charm_vnf" --vdu ${vdu_charm_name} --count-index 1 --run-day1
+
 
 Check VNF After Healing
-    [Documentation]   Check that the IDs of the VM and volumes have not changed after healing.
-    Variable Should Exist   ${VNF_CHARM_ID}   msg=VNF is not available
-    @{ip_list}=   Get Vnf Vdur IPs   ${VNF_CHARM_ID}
-    Should Be Equal   ${ip_list}   ${CHARM_IP_LIST}   IP addresses have changed after healing
-    ${id}=   Get VNF VIM ID   ${VNF_CHARM_ID}
+    Variable Should Exist   ${vnf_charm_id}   msg=VNF is not available
+
+    @{ip_list}=   Get Vnf Vdur IPs   ${vnf_charm_id}
+    Should Be Equal   ${ip_list}   ${charm_ip_list}   IP addresses have changed after healing
+
+    ${id}=   Get VNF VIM ID   ${vnf_charm_id}
     @{ids}=   Split String   ${id}
-    Should Be Equal   ${VDU_CHARM_IDS}[0]   ${ids}[0]   VDU[0] id has changed after healing
-    Should Not Be Equal   ${VDU_CHARM_IDS}[1]   ${ids}[1]   VDU[1] id has not changed after healing
-    Should Be Equal   ${VDU_CHARM_IDS}[2]   ${ids}[2]   VDU[2] id has changed after healing
-    ${ip}=   Get Vdu Attribute   ${VNF_CHARM_ID}   ip-address   1
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${ip}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   sudo ls ${VNF_CHARM_CLOUDINIT_FILE}
+    Should Be Equal   ${vdu_charm_ids}[0]   ${ids}[0]   VDU[0] id has changed after healing
+    Should Not Be Equal   ${vdu_charm_ids}[1]   ${ids}[1]   VDU[1] id has not changed after healing
+    Should Be Equal   ${vdu_charm_ids}[2]   ${ids}[2]   VDU[2] id has changed after healing
+
+    ${ip}=   Get Vdu Attribute   ${vnf_charm_id}   ip-address   1
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${ip}   ${username}   ${password}   ${privatekey}   sudo ls ${vnf_charm_cloudinit_file}
     Log   ${stdout}
-    Check If Remote File Exists   ${ip}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${VNF_CHARM_DAY1_FILE}
-    ${vim_info}=   Get Vdu Attribute   ${VNF_CHARM_ID}   vim_info   1
-    Should Contain   ${vim_info}   id: ${FLAVOR_ID}   msg=Flavor ID is incorrect
+    Check If remote File Exists   ${ip}   ${username}   ${password}   ${privatekey}   ${vnf_charm_day1_file}
+    ${vim_info}=   Get Vdu Attribute   ${vnf_charm_id}   vim_info   1
+    Should Contain   ${vim_info}   id: ${flavor_id}   msg=Flavor ID is incorrect
+
 
 Update VIM Objects
-    [Documentation]   Retrieve all VMs and volumes from the NS and stores them in VIM_VDUS and VIM_VOLUMES lists.
-    ...               This is done again to guarantee that all objects are cleaned in the VIM in case the heal operation
-    ...               added new objects.
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
+    Variable Should Exist   ${ns_id}   msg=NS is not available
     @{vdu_updated}=   Create List
-    @{vnf_id_list}=   Get Ns Vnf List   ${NS_ID}
+    @{vnf_id_list}=   Get Ns Vnf List   ${ns_id}
     FOR   ${vnf_id}   IN   @{vnf_id_list}
         ${id}=   Get VNF VIM ID   ${vnf_id}
         @{vdu_ids}=   Split String   ${id}
         Append To List   ${vdu_updated}   @{vdu_ids}
         FOR   ${id}   IN   @{vdu_ids}
-            IF   not ${id} in @{VIM_VDUS}
-                Append To List   ${VIM_VDUS}   ${id}
+            IF   not "${id}" in "@{vim_vdus}"
+                Append To List   ${vim_vdus}   ${id}
             END
         END
     END
@@ -199,63 +197,49 @@ Update VIM Objects
         ${volumes_attached}=   Get Server Property   ${vdu_id}   volumes_attached
         ${match}=   Get Regexp Matches   ${volumes_attached}   '([0-9a-f\-]+)'   1
         IF   ${match} != @{EMPTY}
-            IF   not ${match}[0] in @{VIM_VOLUMES}
-                Append To List   ${VIM_VOLUMES}   ${match}[0]
+            IF   not "${match}[0]" in "@{vim_volumes}"
+                Append To List   ${vim_volumes}   ${match}[0]
             END
         END
     END
-    Log Many   @{VIM_VDUS}
-    Log Many   @{VIM_VOLUMES}
+    Log Many   @{vim_vdus}
+    Log Many   @{vim_volumes}
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+    Delete NSD   ${nsd_name}
 
-Delete VNF Descriptors
-    [Documentation]   Delete VNF packages from OSM.
-    [Tags]   cleanup
-    Delete VNFD   ${VNFD_VOLUMES_NAME}
-    Delete VNFD   ${VNFD_CHARM_NAME}
 
-Delete Remaining Objects In VIM
-    [Documentation]   Delete any remaining objects (volumes, VMs, etc.) in the VIM.
+Delete VNF Descriptors
     [Tags]   cleanup
-    Delete Objects In VIM
+    Delete VNFD   ${vnfd_volumes_name}
+    Delete VNFD   ${vnfd_charm_name}
 
 
-*** Keywords ***
-Suite Cleanup
-    [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_VOLUMES_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_CHARM_NAME}
-    Run Keyword If Any Tests Failed   Delete Objects In VIM
-
-Delete Objects In VIM
-    [Documentation]   Clean up remaining VMs and volumes directly from the VIM.
-    Delete Flavor   ${FLAVOR_ID}
+Delete Objects in VIM
+    [Tags]   cleanup
+    Delete Flavor   ${flavor_id}
     ${error}=   Set Variable   0
-    FOR   ${vol_id}   IN   @{VIM_VOLUMES}
+    FOR   ${vol_id}   IN   @{vim_volumes}
         Log   Checking if volume ${vol_id} is still in VIM
         ${exists}=   Check If Volume Exists   ${vol_id}
-        IF   ${exists}
+        IF   ${exists}!=0
             ${error}=   Set Variable   1
             Log   Deleting volume ${vol_id}
             Run Keyword And Ignore Error   Delete Volume   ${vol_id}
         END
     END
-    FOR   ${vdu_id}   IN   @{VIM_VDUS}
+    FOR   ${vdu_id}   IN   @{vim_vdus}
         Log   Checking if server ${vdu_id} is still in VIM
         ${status}=   Run Keyword And Ignore Error   Get Server Property   ${vdu_id}   id
         Log   ${status}[0]
-        IF   ${status}[0] == 'PASS'
+        IF   '${status}[0]' == 'PASS'
             ${error}=   Set Variable   1
             Log   Deleting server ${vdu_id}
             Run Keyword And Ignore Error   Delete Server   ${vdu_id}
@@ -264,3 +248,14 @@ Delete Objects In VIM
     IF   ${error}==1
         Fail   Some objects created by test were not deleted in VIM
     END
+
+
+*** Keywords ***
+Suite Cleanup
+    [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_volumes_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_charm_name}
+    Run Keyword If Any Tests Failed   Delete Objects in VIM
index 93b3851..f52bb95 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [HEAL-03] Healing of multiple VDUs
 
@@ -21,187 +19,188 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/vnf_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/openstack_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnf_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot
+
+Force Tags   heal_03   cluster_heal   daily
 
-Test Tags   heal_03   cluster_heal   daily
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_VOLUMES_PKG}   several_volumes_vnf
-${VNFD_VOLUMES_NAME}   several_volumes-vnf
-${VDU_VOLUMES_NAME}   several_volumes-VM
-${VNF_SEVERAL_INDEX}   several_volumes_vnf
-${VNFD_CHARM_PKG}   charm-packages/native_manual_scale_charm_vnf
-${VNFD_CHARM_NAME}   native_manual_scale_charm-vnf
-${VDU_CHARM_NAME}   mgmtVM
-${VNF_CHARM_INDEX}   charm_vnf
-${VNF_CHARM_SCALING_GROUP}   manual-scaling_mgmtVM
-${VNF_CHARM_CLOUDINIT_FILE}   /root/helloworld.txt
-${VNF_CHARM_DAY1_FILE}   /home/ubuntu/first-touch
-${NSD_PKG}   volumes_nativecharm_ns
-${NSD_NAME}   volumes_nativecharm-ns
+${vnfd_volumes_pkg}   several_volumes_vnf
+${vnfd_volumes_name}   several_volumes-vnf
+${vdu_volumes_name}   several_volumes-VM
+${vnf_several_index}   several_volumes_vnf
+${vnfd_charm_pkg}   charm-packages/native_manual_scale_charm_vnf
+${vnfd_charm_name}   native_manual_scale_charm-vnf
+${vdu_charm_name}   mgmtVM
+${vnf_charm_index}   charm_vnf
+${vnf_charm_scaling_group}   manual-scaling_mgmtVM
+${vnf_charm_cloudinit_file}   /root/helloworld.txt
+${vnf_charm_day1_file}   /home/ubuntu/first-touch
+${nsd_pkg}   volumes_nativecharm_ns
+${nsd_name}   volumes_nativecharm-ns
 
 # NS instance name and configuration
-${NS_NAME}   heal_03
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${NS_TIMEOUT}   6min
-${SCALE_WAIT_TIME}   5min
+${ns_name}   heal_03
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_timeout}   6min
+${scale_wait_time}   5min
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
-${SUCCESS_RETURN_CODE}   0
+${success_return_code}   0
 
-@{VIM_VDUS}   @{EMPTY}
-@{VIM_VOLUMES}   @{EMPTY}
+@{vim_vdus}   @{EMPTY}
+@{vim_volumes}   @{EMPTY}
 
 
 *** Test Cases ***
 Create VNF Descriptors
-    [Documentation]   Upload VNF packages for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_CHARM_PKG}'
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_VOLUMES_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_charm_pkg}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_volumes_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Network Service Instance Test
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}   ${NS_TIMEOUT}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_timeout}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get NS Id
-    [Documentation]   Get NS identifier and stores as suite variable to be used later on.
     [Tags]   cleanup
-    ${variables}=   Get Variables
-    IF   not "\${ns_id}" in ${variables}
-        ${id}=   Get Ns Id   ${NS_NAME}
-        Set Suite Variable   ${NS_ID}   ${id}
+    ${variables}   Get Variables
+    IF   not "\${ns_id}" in "${variables}"
+        ${id}=   Get Ns Id   ${ns_name}
+        Set Suite Variable   ${ns_id}   ${id}
     END
 
+
 Scale Out Charm VNF
-    [Documentation]   Perform a manual scale-out operation of the charm VNF.
-    ${vnf_id}=   Get Vnf Id   ${NS_ID}   ${VNF_CHARM_INDEX}
-    Set Suite Variable   ${VNF_CHARM_ID}   ${vnf_id}
-    @{vdur_list}=   Get Vnf Vdur Names   ${VNF_CHARM_ID}
+    ${vnf_id}=   Get Vnf Id   ${ns_id}   ${vnf_charm_index}
+    Set Suite Variable   ${vnf_charm_id}   ${vnf_id}
+    @{vdur_list}=   Get Vnf Vdur Names   ${vnf_charm_id}
     ${vdurs}=   Get Length   ${vdur_list}
-    Set Suite Variable   ${INITIAL_VDUR_COUNT}   ${vdurs}
-    Execute Manual VNF Scale   ${NS_NAME}   ${VNF_CHARM_INDEX}   ${VNF_CHARM_SCALING_GROUP}   SCALE_OUT   ${SCALE_WAIT_TIME}
-    @{vdur_list}=   Get Vnf Vdur Names   ${VNF_CHARM_ID}
+    Set Suite Variable   ${initial_vdur_count}   ${vdurs}
+    Execute Manual VNF Scale   ${ns_name}   ${vnf_charm_index}   ${vnf_charm_scaling_group}   SCALE_OUT   ${scale_wait_time}
+    @{vdur_list}=   Get Vnf Vdur Names   ${vnf_charm_id}
     ${vdurs}=   Get Length   ${vdur_list}
-    IF   ${vdurs} != ${INITIAL_VDUR_COUNT} + 1   Fail   msg=There is no new VDU records in the VNF after Scale Out
+    Run Keyword If   ${vdurs} != ${initial_vdur_count} + 1   Fail   msg=There is no new VDU records in the VNF after Scale Out
+
 
 Get VIM Objects
-    [Documentation]   Retrieve all VMs and volumes from the NS and stores them in VIM_VDUS and VIM_VOLUMES lists.
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
-    @{vnf_id_list}=   Get Ns Vnf List   ${NS_ID}
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    @{vnf_id_list}=   Get Ns Vnf List   ${ns_id}
     Log   ${vnf_id_list}
     FOR   ${vnf_id}   IN   @{vnf_id_list}
         Log   ${vnf_id}
         ${id}=   Get VNF VIM ID   ${vnf_id}
         @{vdu_ids}=   Split String   ${id}
-        Append To List   ${VIM_VDUS}   @{vdu_ids}
+        Append To List   ${vim_vdus}   @{vdu_ids}
     END
-    FOR   ${vdu_id}   IN   @{VIM_VDUS}
+    FOR   ${vdu_id}   IN   @{vim_vdus}
         ${volumes_attached}=   Get Server Property   ${vdu_id}   volumes_attached
         ${match}=   Get Regexp Matches   ${volumes_attached}   '([0-9a-f\-]+)'   1
         IF   ${match} != @{EMPTY}
-            IF   not ${match}[0] in @{VIM_VOLUMES}
-                Append To List   ${VIM_VOLUMES}   ${match}[0]
+            IF   not "${match}[0]" in "@{vim_volumes}"
+                Append To List   ${vim_volumes}   ${match}[0]
             END
         END
     END
-    Log Many   @{VIM_VDUS}
-    Log Many   @{VIM_VOLUMES}
+    Log Many   @{vim_vdus}
+    Log Many   @{vim_volumes}
+
 
 Get Charm VNF Info
-    [Documentation]   Get VDU ID and IP addresses of the charm VNF and stores them in VDU_CHARM_IDS and CHARM_IP_LIST.
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
-    ${variables}=   Get Variables
-    IF   not "\${vnf_charm_id}" in ${variables}
-        ${vnf_id}=   Get Vnf Id   ${NS_ID}   ${VNF_CHARM_INDEX}
-        Set Suite Variable   ${VNF_CHARM_ID}   ${vnf_id}
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    ${variables}   Get Variables
+    IF   not "\${vnf_charm_id}" in "${variables}"
+        ${vnf_id}=   Get Vnf Id   ${ns_id}   ${vnf_charm_index}
+        Set Suite Variable   ${vnf_charm_id}   ${vnf_id}
     END
-    ${id}=   Get VNF VIM ID   ${VNF_CHARM_ID}
+    ${id}=   Get VNF VIM ID   ${vnf_charm_id}
     @{vdu_charm_ids}=   Split String   ${id}
-    Set Suite Variable   @{VDU_CHARM_IDS}   @{vdu_charm_ids}
-    Log   ${VDU_CHARM_IDS}[1]
-    @{charm_ip_list}=   Get Vnf Vdur IPs   ${VNF_CHARM_ID}
-    Set Suite Variable   @{CHARM_IP_LIST}   @{charm_ip_list}
+    Set Suite Variable   @{vdu_charm_ids}   @{vdu_charm_ids}
+    Log   ${vdu_charm_ids}[1]
+    @{charm_ip_list}=   Get Vnf Vdur IPs   ${vnf_charm_id}
+    Set Suite Variable   @{charm_ip_list}   @{charm_ip_list}
+
 
 Get Volume VNF Info
-    [Documentation]   Get info about volumes and VM of the VNF with several volumes and stores them in suite variables.
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
-    ${ip_addr}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_SEVERAL_INDEX}
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    ${ip_addr}=   Get Vnf Management Ip Address   ${ns_id}   ${vnf_several_index}
     Log   ${ip_addr}
-    Set Suite Variable   ${VNF_VOLUMES_IP_ADDR}   ${ip_addr}
-    ${vnf_id}=   Get Vnf Id   ${NS_ID}   ${VNF_SEVERAL_INDEX}
-    Set Suite Variable   ${VNF_VOLUMES_ID}   ${vnf_id}
+    Set Suite Variable   ${vnf_volumes_ip_addr}   ${ip_addr}
+
+    ${vnf_id}=   Get Vnf Id   ${ns_id}   ${vnf_several_index}
+    Set Suite Variable   ${vnf_volumes_id}   ${vnf_id}
     ${id}=   Get VNF VIM ID   ${vnf_id}
-    Set Suite Variable   ${VDU_VOLUMES_ID}   ${id}
-    Log   ${VDU_VOLUMES_ID}
-    @{volumes_ip_list}=   Get Vnf Vdur IPs   ${VNF_VOLUMES_ID}
-    Set Suite Variable   @{VOLUMES_IP_LIST}   @{volumes_ip_list}
-    Log   @{VOLUMES_IP_LIST}
+    Set Suite Variable   ${vdu_volumes_id}   ${id}
+    Log   ${vdu_volumes_id}
+
+    @{volumes_ip_list}=   Get Vnf Vdur IPs   ${vnf_volumes_id}
+    Set Suite Variable   @{volumes_ip_list}   @{volumes_ip_list}
+    Log   @{volumes_ip_list}
+
 
 Stop VDUs
-    [Documentation]   Stop all VMs.
-    Variable Should Exist   @{VDU_CHARM_IDS}   msg=Charm VDUs are not available
-    Variable Should Exist   ${VDU_VOLUMES_ID}   msg=Volume VDU is not available
-    Stop Server   ${VDU_CHARM_IDS}[1]
-    Stop Server   ${VDU_CHARM_IDS}[2]
-    Stop Server   ${VDU_VOLUMES_ID}
+    Variable Should Exist   @{vdu_charm_ids}   msg=Charm VDUs are not available
+    Variable Should Exist   ${vdu_volumes_id}   msg=Volume VDU is not available
+    Stop Server   ${vdu_charm_ids}[1]
+    Stop Server   ${vdu_charm_ids}[2]
+    Stop Server   ${vdu_volumes_id}
     Sleep   30
 
+
 Heal VDUs
-    [Documentation]   Heal manually via OSM commands all stopped VMs . They should be started again.
-    Variable Should Exist   ${VNF_CHARM_ID}   msg=Charm VNF is not available
-    Variable Should Exist   ${VNF_VOLUMES_ID}   msg=Volume VNF is not available
-    Heal Network Service   ${NS_ID}   --vnf ${VNF_VOLUMES_ID} --cause "Heal myvdu1 of several_volumes_vnf" --vdu several_volumes-VM --vnf ${VNF_CHARM_ID} --cause "Heal two VMs of native_manual_scale_charm_vnf" --vdu mgmtVM --count-index 1 --run-day1 --vdu mgmtVM --count-index 2
+    Variable Should Exist   ${vnf_charm_id}   msg=Charm VNF is not available
+    Variable Should Exist   ${vnf_volumes_id}   msg=Volume VNF is not available
+    Heal Network Service   ${ns_id}   --vnf ${vnf_volumes_id} --cause "Heal myvdu1 of several_volumes_vnf" --vdu several_volumes-VM --vnf ${vnf_charm_id} --cause "Heal two VMs of native_manual_scale_charm_vnf" --vdu mgmtVM --count-index 1 --run-day1 --vdu mgmtVM --count-index 2
+
 
 Check VNFs After Healing
-    [Documentation]   Check that the IDs of the VM and volumes have not changed after healing.
-    Variable Should Exist   ${VNF_CHARM_ID}   msg=Charm VNF is not available
-    Variable Should Exist   ${VNF_VOLUMES_ID}   msg=Volume VNF is not available
-    ${id}=   Get VNF VIM ID   ${VNF_CHARM_ID}
+    Variable Should Exist   ${vnf_charm_id}   msg=Charm VNF is not available
+    Variable Should Exist   ${vnf_volumes_id}   msg=Volume VNF is not available
+    ${id}=   Get VNF VIM ID   ${vnf_charm_id}
     @{ids}=   Split String   ${id}
-    Should Be Equal   ${VDU_CHARM_IDS}[0]   ${ids}[0]   VDU[0] id has changed after healing
-    Should Not Be Equal   ${VDU_CHARM_IDS}[1]   ${ids}[1]   VDU[1] id has not changed after healing
-    Should Not Be Equal   ${VDU_CHARM_IDS}[2]   ${ids}[2]   VDU[2] id has not changed after healing
-    ${id}=   Get VNF VIM ID   ${VNF_VOLUMES_ID}
-    Should Not Be Equal   ${id}   ${VDU_VOLUMES_ID}   VDU id has not changed after healing
-    ${ip}=   Get Vdu Attribute   ${VNF_CHARM_ID}   ip-address   1
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${ip}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   sudo ls ${VNF_CHARM_CLOUDINIT_FILE}
+    Should Be Equal   ${vdu_charm_ids}[0]   ${ids}[0]   VDU[0] id has changed after healing
+    Should Not Be Equal   ${vdu_charm_ids}[1]   ${ids}[1]   VDU[1] id has not changed after healing
+    Should Not Be Equal   ${vdu_charm_ids}[2]   ${ids}[2]   VDU[2] id has not changed after healing
+
+    ${id}=   Get VNF VIM ID   ${vnf_volumes_id}
+    Should Not Be Equal   ${id}   ${vdu_volumes_id}   VDU id has not changed after healing
+
+    ${ip}=   Get Vdu Attribute   ${vnf_charm_id}   ip-address   1
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${ip}   ${username}   ${password}   ${privatekey}   sudo ls ${vnf_charm_cloudinit_file}
     Log   ${stdout}
-    Check If Remote File Exists   ${ip}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${VNF_CHARM_DAY1_FILE}
+    Check If remote File Exists   ${ip}   ${username}   ${password}   ${privatekey}   ${vnf_charm_day1_file}
+
 
 Update VIM Objects
-    [Documentation]   Retrieve all VMs and volumes from the NS and stores them in VIM_VDUS and VIM_VOLUMES lists.
-    ...               This is done again to guarantee that all objects are cleaned in the VIM in case the heal operation
-    ...               added new objects.
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
+    Variable Should Exist   ${ns_id}   msg=NS is not available
     @{vdu_updated}=   Create List
-    @{vnf_id_list}=   Get Ns Vnf List   ${NS_ID}
+    @{vnf_id_list}=   Get Ns Vnf List   ${ns_id}
     FOR   ${vnf_id}   IN   @{vnf_id_list}
         ${id}=   Get VNF VIM ID   ${vnf_id}
         @{vdu_ids}=   Split String   ${id}
         Append To List   ${vdu_updated}   @{vdu_ids}
         FOR   ${id}   IN   @{vdu_ids}
-            IF   not ${id} in @{VIM_VDUS}
-                Append To List   ${VIM_VDUS}   ${id}
+            IF   not "${id}" in "@{vim_vdus}"
+                Append To List   ${vim_vdus}   ${id}
             END
         END
     END
@@ -209,48 +208,48 @@ Update VIM Objects
         ${volumes_attached}=   Get Server Property   ${vdu_id}   volumes_attached
         ${match}=   Get Regexp Matches   ${volumes_attached}   '([0-9a-f\-]+)'   1
         IF   ${match} != @{EMPTY}
-            IF   not ${match}[0] in @{VIM_VOLUMES}
-                Append To List   ${VIM_VOLUMES}   ${match}[0]
+            IF   not "${match}[0]" in "@{vim_volumes}"
+                Append To List   ${vim_volumes}   ${match}[0]
             END
         END
     END
-    Log Many   @{VIM_VDUS}
-    Log Many   @{VIM_VOLUMES}
+    Log Many   @{vim_vdus}
+    Log Many   @{vim_volumes}
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptors
-    [Documentation]   Delete VNF packages from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_VOLUMES_NAME}
-    Delete VNFD   ${VNFD_CHARM_NAME}
+    Delete VNFD   ${vnfd_volumes_name}
+    Delete VNFD   ${vnfd_charm_name}
 
-Delete Objects In VIM
-    [Documentation]   Delete any remaining objects (volumes, VMs, etc.) in the VIM.
+
+Delete Objects in VIM
     [Tags]   cleanup
     ${error}=   Set Variable   0
-    FOR   ${vol_id}   IN   @{VIM_VOLUMES}
+    FOR   ${vol_id}   IN   @{vim_volumes}
         Log   Checking if volume ${vol_id} is still in VIM
         ${exists}=   Check If Volume Exists   ${vol_id}
-        IF   ${exists}
+        IF   ${exists}!=0
             ${error}=   Set Variable   1
             Log   Deleting volume ${vol_id}
             Run Keyword And Ignore Error   Delete Volume   ${vol_id}
         END
     END
-    FOR   ${vdu_id}   IN   @{VIM_VDUS}
+    FOR   ${vdu_id}   IN   @{vim_vdus}
         Log   Checking if server ${vdu_id} is still in VIM
         ${status}=   Run Keyword And Ignore Error   Get Server Property   ${vdu_id}   id
         Log   ${status}[0]
-        IF   ${status}[0] == 'PASS'
+        IF   '${status}[0]' == 'PASS'
             ${error}=   Set Variable   1
             Log   Deleting server ${vdu_id}
             Run Keyword And Ignore Error   Delete Server   ${vdu_id}
@@ -264,7 +263,8 @@ Delete Objects In VIM
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_VOLUMES_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_CHARM_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_volumes_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_charm_name}
index c560194..ada204a 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [HEAL-04] Autohealing of NS
 
@@ -21,163 +19,163 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/vnf_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/openstack_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnf_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot
 
-Test Tags   heal_04   cluster_heal   daily
+Force Tags   heal_04   cluster_heal   daily
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   autoheal_vnf
-${VNFD_NAME}   autoheal_vnfd
-${VDU_NAME}   autoheal_vnfd-VM
-${VNF_INDEX}   autoheal-basic-1
-${NSD_PKG}   autoheal_ns
-${NSD_NAME}   autoheal_nsd
+${vnfd_pkg}   autoheal_vnf
+${vnfd_name}   autoheal_vnfd
+${vdu_name}   autoheal_vnfd-VM
+${vnf_index}   autoheal-basic-1
+${nsd_pkg}   autoheal_ns
+${nsd_name}   autoheal_nsd
 # NS instance name and configuration
-${NS_NAME}   heal_04
-${NS_CONFIG}   {vld: [ {name: mgmt, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   heal_04
+${ns_config}   {vld: [ {name: mgmt, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
-${SUCCESS_RETURN_CODE}   0
+${success_return_code}   0
 
-# Healing wait time
-${HEALING_POL_TIME}   15sec
-${HEALING_MAX_WAIT_TIME}   10m
+#Healing wait time
+${healing_pol_time}   15sec
+${healing_max_wait_time}   10m
 
-@{VIM_VDUS}   @{EMPTY}
+@{vim_vdus}   @{EMPTY}
 
 
 *** Test Cases ***
 Create VNF Descriptors
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Network Service Instance Test
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get NS Id
-    [Documentation]   Get NS identifier and stores as suite variable to be used later on.
     [Tags]   cleanup
-    ${variables}=   Get Variables
-    IF   not "\${ns_id}" in ${variables}
-        ${id}=   Get Ns Id   ${NS_NAME}
-        Set Suite Variable   ${NS_ID}   ${id}
+    ${variables}   Get Variables
+    IF   not "\${ns_id}" in "${variables}"
+        ${id}=   Get Ns Id   ${ns_name}
+        Set Suite Variable   ${ns_id}   ${id}
     END
 
+
 Get VIM Objects
-    [Documentation]   Retrieve all VMs and volumes from the NS and stores them in VIM_VDUS and VIM_VOLUMES lists.
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
-    @{vnf_id_list}=   Get Ns Vnf List   ${NS_ID}
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    @{vnf_id_list}=   Get Ns Vnf List   ${ns_id}
     Log   ${vnf_id_list}
     FOR   ${vnf_id}   IN   @{vnf_id_list}
         Log   ${vnf_id}
         ${id}=   Get VNF VIM ID   ${vnf_id}
         @{vdu_ids}=   Split String   ${id}
-        Append To List   ${VIM_VDUS}   @{vdu_ids}
+        Append To List   ${vim_vdus}   @{vdu_ids}
     END
-    Log Many   @{VIM_VDUS}
+    Log Many   @{vim_vdus}
+
 
 Get VNF Info
-    [Documentation]   Get VDU ID and IP addresses of the VNF and stores them to be used later on.
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
-    ${ip_addr}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_INDEX}
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    ${ip_addr}=   Get Vnf Management Ip Address   ${ns_id}   ${vnf_index}
     Log   ${ip_addr}
-    Set Suite Variable   ${VNF_IP_ADDR}   ${ip_addr}
-    ${vnf_id}=   Get Vnf Id   ${NS_ID}   ${VNF_INDEX}
-    Set Suite Variable   ${VNF_AUTOHEAL_ID}   ${vnf_id}
+    Set Suite Variable   ${vnf_ip_addr}   ${ip_addr}
+
+    ${vnf_id}=   Get Vnf Id   ${ns_id}   ${vnf_index}
+    Set Suite Variable   ${vnf_autoheal_id}   ${vnf_id}
     ${id}=   Get VNF VIM ID   ${vnf_id}
-    Set Suite Variable   ${VDU_AUTOHEAL_ID}   ${id}
-    Log   ${VDU_AUTOHEAL_ID}
-    @{AUTOHEAL_IP_LIST}=   Get Vnf Vdur IPs   ${VNF_AUTOHEAL_ID}
-    Set Suite Variable   @{AUTOHEAL_IP_LIST}   @{AUTOHEAL_IP_LIST}
-    Log   @{AUTOHEAL_IP_LIST}
+    Set Suite Variable   ${vdu_autoheal_id}   ${id}
+    Log   ${vdu_autoheal_id}
+
+    @{autoheal_ip_list}=   Get Vnf Vdur IPs   ${vnf_autoheal_id}
+    Set Suite Variable   @{autoheal_ip_list}   @{autoheal_ip_list}
+    Log   @{autoheal_ip_list}
+
 
 Stop Autoheal VDU
-    [Documentation]   Stop one VM of the VNF.
-    Variable Should Exist   ${VDU_AUTOHEAL_ID}   msg=VDU is not available
-    Halt Server   ${VDU_AUTOHEAL_ID}
+    Variable Should Exist   ${vdu_autoheal_id}   msg=VDU is not available
+    Halt Server   ${vdu_autoheal_id}
     Sleep   30
 
+
 Wait For Autohealing To Be Completed
-    [Documentation]   Wait for auto-healing to be completed. OSM will detect that the VM is down and will re-create it.
-    ${healing_max_wait_time}=   Convert Time   ${HEALING_MAX_WAIT_TIME}   result_format=number
-    ${healing_max_wait_time}=   Evaluate   ${healing_max_wait_time} * ${VIM_TIMEOUT_MULTIPLIER}
-    Wait Until Keyword Succeeds   ${healing_max_wait_time}   ${HEALING_POL_TIME}   Get Operations By Type   ${NS_ID}   heal
-    ${stdout}=   Get Operations By Type   ${NS_ID}   heal
-    Wait Until Keyword Succeeds   ${healing_max_wait_time}   ${HEALING_POL_TIME}   Check For NS Operation Ended   ${stdout}
+    ${healing_max_wait_time}=   Convert Time   ${healing_max_wait_time}   result_format=number
+    ${healing_max_wait_time}=   Evaluate   ${healing_max_wait_time} * ${vim_timeout_multiplier}
+    Wait Until Keyword Succeeds   ${healing_max_wait_time}   ${healing_pol_time}   Get Operations By Type   ${ns_id}   heal
+    ${stdout}=   Get Operations By Type   ${ns_id}   heal
+    Wait Until Keyword Succeeds   ${healing_max_wait_time}   ${healing_pol_time}   Check For NS Operation Ended   ${stdout}
     Check For NS Operation Completed   ${stdout}
 
+
 Check VNF After Healing
-    [Documentation]   Check that the ID of the VM and the IP addresses have not changed after healing.
-    Variable Should Exist   ${VNF_AUTOHEAL_ID}   msg=VNF is not available
-    @{ip_list}=   Get Vnf Vdur IPs   ${VNF_AUTOHEAL_ID}
+    Variable Should Exist   ${vnf_autoheal_id}   msg=VNF is not available
+
+    @{ip_list}=   Get Vnf Vdur IPs   ${vnf_autoheal_id}
     Log   @{ip_list}
-    Should Be Equal   ${ip_list}   ${AUTOHEAL_IP_LIST}   IP addresses have changed after healing
-    ${id}=   Get VNF VIM ID   ${VNF_AUTOHEAL_ID}
+    Should Be Equal   ${ip_list}   ${autoheal_ip_list}   IP addresses have changed after healing
+
+    ${id}=   Get VNF VIM ID   ${vnf_autoheal_id}
     Log   ${id}
-    Should Not Be Equal   ${id}   ${VDU_AUTOHEAL_ID}   VDU id has not changed after healing
+    Should Not Be Equal   ${id}   ${vdu_autoheal_id}   VDU id has not changed after healing
+
 
 Update VIM Objects
-    [Documentation]   Retrieve all VMs from the NS and stores them in VIM_VDUS.
-    ...               This is done again to guarantee that all objects are cleaned in the VIM in case the heal operation
-    ...               added new objects.
-    Variable Should Exist   ${NS_ID}   msg=NS is not available
-    @{vnf_id_list}=   Get Ns Vnf List   ${NS_ID}
+    Variable Should Exist   ${ns_id}   msg=NS is not available
+    @{vnf_id_list}=   Get Ns Vnf List   ${ns_id}
     FOR   ${vnf_id}   IN   @{vnf_id_list}
         ${id}=   Get VNF VIM ID   ${vnf_id}
         @{vdu_ids}=   Split String   ${id}
         FOR   ${id}   IN   @{vdu_ids}
-            IF   not ${id} in @{VIM_VDUS}
-                Append To List   ${VIM_VDUS}   ${id}
+            IF   not "${id}" in "@{vim_vdus}"
+                Append To List   ${vim_vdus}   ${id}
             END
         END
     END
-    Log Many   @{VIM_VDUS}
+    Log Many   @{vim_vdus}
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptors
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+    Delete VNFD   ${vnfd_name}
 
-Delete Objects In VIM
-    [Documentation]   Delete any remaining objects (volumes, VMs, etc.) in the VIM.
+
+Delete Objects in VIM
     [Tags]   cleanup
     ${error}=   Set Variable   0
-    FOR   ${vdu_id}   IN   @{VIM_VDUS}
+    FOR   ${vdu_id}   IN   @{vim_vdus}
         Log   Checking if server ${vdu_id} is still in VIM
         ${status}=   Run Keyword And Ignore Error   Get Server Property   ${vdu_id}   id
         Log   ${status}[0]
-        IF   ${status}[0] == 'PASS'
+        IF   '${status}[0]' == 'PASS'
             ${error}=   Set Variable   1
             Log   Deleting server ${vdu_id}
             Run Keyword And Ignore Error   Delete Server   ${vdu_id}
@@ -191,6 +189,7 @@ Delete Objects In VIM
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index b87a174..899aed4 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   Copyright 2020 Canonical Ltd.
 #
 #   Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +12,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [K8s-01] Create K8s cluster.
 
@@ -22,135 +20,148 @@ Library   String
 Library   Collections
 Library   Process
 Library   SSHLibrary
-Library   ../lib/renderTemplate.py
+Library   %{ROBOT_DEVOPS_FOLDER}/lib/renderTemplate.py
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   k8s_01   cluster_k8s
+Force Tags   k8s_01   cluster_k8s
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package files
-${VNFD_PKG1}   k8s_jujucontroller_vnf.tar.gz
-${VNFD_PKG2}   k8s_jujumachine_vnf.tar.gz
-${NSD_PKG}   k8s_juju_ns.tar.gz
-${VNFD_NAME1}   k8s_jujucontroller_vnf
-${VNFD_NAME2}   k8s_jujumachine_vnf
-${NSD_NAME}   k8s_juju
+${vnfd_pkg1}   k8s_jujucontroller_vnf.tar.gz
+${vnfd_pkg2}   k8s_jujumachine_vnf.tar.gz
+${nsd_pkg}   k8s_juju_ns.tar.gz
+${vnfd_name1}   k8s_jujucontroller_vnf
+${vnfd_name2}   k8s_jujumachine_vnf
+${nsd_name}   k8s_juju
 
 # VNF Member indexes
-${VNF_MEMBER_INDEX_1}   k8s_vnf1
-${VNF_MEMBER_INDEX_2}   k8s_vnf2
-${VNF_MEMBER_INDEX_3}   k8s_vnf3
-${VNF_MEMBER_INDEX_4}   k8s_vnf4
-${VNF_MEMBER_INDEX_5}   k8s_juju
+${vnf_member_index_1}   k8s_vnf1
+${vnf_member_index_2}   k8s_vnf2
+${vnf_member_index_3}   k8s_vnf3
+${vnf_member_index_4}   k8s_vnf4
+${vnf_member_index_5}   k8s_juju
+
+# Username
+${username}   ubuntu
 
 # Kubeconfig file
-${KUBECONFIG_FILE}   /home/ubuntu/.kube/config
+${kubeconfig_file}   /home/ubuntu/.kube/config
 
 # NS instance name
-${NS_NAME}   k8s-cluster
+${ns_name}   k8s-cluster
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
 # Template and config file to use
-${TEMPLATE}   k8s_juju_template.yaml
-${CONFIG_FILE}   config.yaml
+${template}   k8s_juju_template.yaml
+${config_file}   config.yaml
 
 
 *** Test Cases ***
 Render a template
-    [Documentation]   Generate from a template the instantiation parameters that will be used for the NS instance.
-    ${stdout}=   Render Template   ../resources/${TEMPLATE}   ../resources/${CONFIG_FILE}   IP_VM1=%{IP_VM1}   IP_VM2=%{IP_VM2}   IP_VM3=%{IP_VM3}   IP_VM4=%{IP_VM4}   IP_JUJU=%{IP_JUJU}   NETWORK=%{VIM_MGMT_NET}
+
+    ${stdout}=   Render template   %{ROBOT_DEVOPS_FOLDER}/resources/${template}   %{ROBOT_DEVOPS_FOLDER}/resources/${config_file}   IP_VM1=%{IP_VM1}   IP_VM2=%{IP_VM2}   IP_VM3=%{IP_VM3}   IP_VM4=%{IP_VM4}   IP_JUJU=%{IP_JUJU}   NETWORK=%{VIM_MGMT_NET}
     Log To Console   \n${stdout}
 
+
 Create Controller VNF Descriptor
-    [Documentation]   Upload first VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG1}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg1}'
+
 
 Create Machines VNF Descriptor
-    [Documentation]   Upload second VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG2}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg2}'
+
 
 Create K8s Cluster NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate K8s Cluster Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ns_config=${EMPTY}   publickey=${PUBLICKEY}   ns_launch_max_wait_time=70min   config_file=%{ROBOT_DEVOPS_FOLDER}/resources/${CONFIG_FILE}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ns_config=${EMPTY}   publickey=${publickey}   ns_launch_max_wait_time=70min   config_file=%{ROBOT_DEVOPS_FOLDER}/resources/${config_file}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Management Ip Addresses
-    [Documentation]   Get the mgmt IP addresses of the five VNF of the NS.
-    ${ip_addr_1}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_1}
+
+    ${ip_addr_1}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_1}
     Log   ${ip_addr_1}
-    Set Suite Variable   ${VNF_1_IP_ADDR}   ${ip_addr_1}
-    ${ip_addr_2}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_2}
+    Set Suite Variable   ${vnf_1_ip_addr}   ${ip_addr_1}
+    ${ip_addr_2}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_2}
     Log   ${ip_addr_2}
-    Set Suite Variable   ${VNF_2_IP_ADDR}   ${ip_addr_2}
-    ${ip_addr_3}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_3}
+    Set Suite Variable   ${vnf_2_ip_addr}   ${ip_addr_2}
+    ${ip_addr_3}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_3}
     Log   ${ip_addr_3}
-    Set Suite Variable   ${VNF_3_IP_ADDR}   ${ip_addr_3}
-    ${ip_addr_4}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_4}
+    Set Suite Variable   ${vnf_3_ip_addr}   ${ip_addr_3}
+    ${ip_addr_4}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_4}
     Log   ${ip_addr_4}
-    Set Suite Variable   ${VNF_4_IP_ADDR}   ${ip_addr_4}
-    ${ip_addr_5}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_5}
+    Set Suite Variable   ${vnf_4_ip_addr}   ${ip_addr_4}
+    ${ip_addr_5}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_5}
     Log   ${ip_addr_5}
-    Set Suite Variable   ${VNF_5_IP_ADDR}   ${ip_addr_5}
+    Set Suite Variable   ${vnf_5_ip_addr}   ${ip_addr_5}
+
 
 Test SSH Access
-    [Documentation]   Check that the five VNF are accessible via SSH in their respective mgmt IP address.
-    Variable Should Exist   ${VNF_1_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX_1}' is not available
-    Variable Should Exist   ${VNF_2_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX_2}' is not available
-    Variable Should Exist   ${VNF_3_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX_3}' is not available
-    Variable Should Exist   ${VNF_4_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX_4}' is not available
-    Variable Should Exist   ${VNF_5_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX_5}' is not available
+
+    Variable Should Exist   ${vnf_1_ip_addr}   msg=IP address of the management VNF '${vnf_member_index_1}' is not available
+    Variable Should Exist   ${vnf_2_ip_addr}   msg=IP address of the management VNF '${vnf_member_index_2}' is not available
+    Variable Should Exist   ${vnf_3_ip_addr}   msg=IP address of the management VNF '${vnf_member_index_3}' is not available
+    Variable Should Exist   ${vnf_4_ip_addr}   msg=IP address of the management VNF '${vnf_member_index_4}' is not available
+    Variable Should Exist   ${vnf_5_ip_addr}   msg=IP address of the management VNF '${vnf_member_index_5}' is not available
     Sleep   30s   Waiting ssh daemon to be up
-    Test SSH Connection   ${VNF_1_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
-    Test SSH Connection   ${VNF_2_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
-    Test SSH Connection   ${VNF_3_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
-    Test SSH Connection   ${VNF_4_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
-    Test SSH Connection   ${VNF_5_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
+    Test SSH Connection   ${vnf_1_ip_addr}   ${username}   ${password}   ${privatekey}
+    Test SSH Connection   ${vnf_2_ip_addr}   ${username}   ${password}   ${privatekey}
+    Test SSH Connection   ${vnf_3_ip_addr}   ${username}   ${password}   ${privatekey}
+    Test SSH Connection   ${vnf_4_ip_addr}   ${username}   ${password}   ${privatekey}
+    Test SSH Connection   ${vnf_5_ip_addr}   ${username}   ${password}   ${privatekey}
+
+
+Check kubeconfig file
+
+    Check If remote File Exists   ${vnf_5_ip_addr}   ${username}   ${password}   ${privatekey}   ${kubeconfig_file}
 
-Check Kubeconfig File
-    [Documentation]   Check that the Kubeconfig file of the provisioned cluster is present in the VNF.
-    Check If Remote File Exists   ${VNF_5_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${KUBECONFIG_FILE}
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete Controller VNF Descriptor
-    [Documentation]   Delete first VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME1}
+
+    Delete VNFD   ${vnfd_name1}
 
 Delete Machines VNF Descriptor
-    [Documentation]   Delete second VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME2}
+
+    Delete VNFD   ${vnfd_name2}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME1}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME2}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index cb86e37..b3b9c86 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 # Copyright 2020 Canonical Ltd.
 #
 #   Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +12,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [K8s-02] K8s cluster addition.
 
@@ -22,47 +20,47 @@ Library   String
 Library   Collections
 Library   Process
 
-Resource   ../lib/k8scluster_lib.resource
-Resource   ../lib/vim_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/k8scluster_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vim_lib.robot
 
-Variables   ../resources/basic_01-crud_operations_on_vim_targets_data.py
+Variables   %{ROBOT_DEVOPS_FOLDER}/resources/basic_01-crud_operations_on_vim_targets_data.py
 
-Test Tags   k8s_02   cluster_k8s   daily   regression   azure
+Force Tags   k8s_02   cluster_k8s   daily   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # K8s cluster name and version
-${K8SCLUSTER_NAME}   k8s02
-${K8SCLUSTER_VERSION}   v1
-
+${k8scluster_name}   k8s02
+${k8scluster_version}   v1
 
 *** Test Cases ***
 Create VIM Target Basic
     [Documentation]   Creates a VIM for the K8s cluster to be anchored against
+
     ${rand}=   Generate Random String   6   [NUMBERS]
-    ${VIM_NAME}=   Catenate   SEPARATOR=_   ${vim_name_prefix}   ${rand}
-    Set Suite Variable   ${VIM_NAME}
-    ${CREATED_VIM_ACCOUNT_ID}=   Create VIM Target   ${VIM_NAME}   ${VIM_USER}   ${VIM_PASSWORD}   ${VIM_AUTH_URL}   ${VIM_TENANT}   ${VIM_ACCOUNT_TYPE}
-    Set Suite Variable   ${CREATED_VIM_ACCOUNT_ID}
+    ${vim_name}=   Catenate   SEPARATOR=_   ${vim_name_prefix}   ${rand}
+    Set Suite Variable   ${vim_name}
+    ${created_vim_account_id}=   Create VIM Target   ${vim_name}   ${vim_user}   ${vim_password}   ${vim_auth_url}   ${vim_tenant}   ${vim_account_type}
+    Set Suite Variable   ${created_vim_account_id}
 
 Add K8s Cluster To OSM
-    [Documentation]   Creates a VIM for the K8s cluster to be anchored against
-    Create K8s Cluster   %{K8S_CREDENTIALS}   ${K8SCLUSTER_VERSION}   ${VIM_NAME}   %{VIM_MGMT_NET}   ${K8SCLUSTER_NAME}
+
+    Create K8s Cluster   %{K8S_CREDENTIALS}   ${k8scluster_version}   ${vim_name}   %{VIM_MGMT_NET}   ${k8scluster_name}
 
 Remove K8s Cluster from OSM
-    [Documentation]   Delete K8s cluster.
     [Tags]   cleanup
-    Delete K8s Cluster   ${K8SCLUSTER_NAME}
+
+    Delete K8s Cluster   ${k8scluster_name}
 
 Delete VIM Target By ID
     [Documentation]   Delete the VIM Target created in previous test-case by its ID.
     ...               Checks whether the VIM Target was created or not before perform the deletion.
     [Tags]   cleanup
 
-    ${vim_account_id}=   Get VIM Target ID   ${VIM_NAME}
-    Should Be Equal As Strings   ${vim_account_id}   ${CREATED_VIM_ACCOUNT_ID}
+    ${vim_account_id}=   Get VIM Target ID   ${vim_name}
+    Should Be Equal As Strings   ${vim_account_id}   ${created_vim_account_id}
     Delete VIM Target   ${vim_account_id}
 
 
@@ -70,4 +68,4 @@ Delete VIM Target By ID
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting K8s Cluster
 
-    Run Keyword If Any Tests Failed   Delete K8s Cluster   ${K8SCLUSTER_NAME}
+    Run Keyword If Any Tests Failed   Delete K8s Cluster   ${k8scluster_name}
index a6838ea..99991f9 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   Copyright 2020 Canonical Ltd.
 #
 #   Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +12,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [K8s-03] Simple K8s.
 
@@ -22,85 +20,76 @@ Library   String
 Library   Collections
 Library   Process
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/package_lib.resource
-Resource   ../lib/connectivity_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/k8scluster_lib.resource
+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/package_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/connectivity_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/k8scluster_lib.robot
 
-Test Tags   k8s_03   cluster_k8s   regression   azure
+Force Tags   k8s_03   cluster_k8s   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   charm-packages/native_k8s_charm_vnf
-${VNFD_NAME}   native_k8s_charm-vnf
-${NSD_PKG}   charm-packages/native_k8s_charm_ns
-${NSD_NAME}   native_k8s_charm-ns
+${vnfd_pkg}   charm-packages/native_k8s_charm_vnf
+${vnfd_name}   native_k8s_charm-vnf
+${nsd_pkg}   charm-packages/native_k8s_charm_ns
+${nsd_name}   native_k8s_charm-ns
 
 # NS instance name and configuration
-${NS_NAME}   native-k8s
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-
-${NS_ID}   ${EMPTY}
-${PUBLICKEY}   ${EMPTY}
-${VNF_MEMBER_INDEX}   native_k8s_charm-vnf
-${ACTION_NAME}   changecontent
-${KDU_NAME}   native-kdu
-${APPLICATION_NAME}   nginx
-${CUSTOMTITLE}   Day 2 Action
+${ns_name}   native-k8s
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
+${ns_id}   ${EMPTY}
+${publickey}   ${EMPTY}
+${vnf_member_index}   native_k8s_charm-vnf
+${action_name}   changecontent
+${kdu_name}   native-kdu
+${application_name}   nginx
+${customtitle}   Day 2 Action
 
 *** Test Cases ***
 Create Simple K8s VNF Descriptor
-    [Documentation]   Upload NF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
 
 Create Simple K8s Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
 
 Network Service K8s Instance Test
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
 
 Execute Day 2 Operations
     [Documentation]   Performs one Day 2 operation per VNF that creates a new file.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute NS K8s Action   ${NS_NAME}   ${ACTION_NAME}   ${VNF_MEMBER_INDEX}   ${KDU_NAME}   application-name=${APPLICATION_NAME}   customtitle=${CUSTOMTITLE}
-    Log   ${ns_op_id}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute NS K8s Action   ${ns_name}   ${action_name}   ${vnf_member_index}   ${kdu_name}   application-name=${application_name}   customtitle=${customtitle}
 
 Delete NS K8s Instance Test
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+    Delete NS   ${ns_name}
 
 Delete NS Descriptor Test
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+    Delete NSD   ${nsd_name}
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete NF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+    Delete VNFD   ${vnfd_name}
 
 Delete VNF NS Packages
-    [Documentation]   Delete tar.gz NF and NS package files.
     [Tags]   cleanup
-    Delete Package   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
-    Delete Package   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Delete Package   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+    Delete Package   '%{PACKAGES_FOLDER}/${nsd_pkg}'
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index 74cd4d5..41baac8 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [K8s-04] Openldap Helm chart.
 
@@ -20,119 +18,102 @@ Library   String
 Library   Collections
 Library   Process
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/connectivity_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/k8scluster_lib.resource
+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/connectivity_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/k8scluster_lib.robot
 
-Test Tags   k8s_04   cluster_k8s   daily   regression   sanity   azure
+Force Tags   k8s_04   cluster_k8s   daily   regression   sanity   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   openldap_knf
-${VNFD_NAME}   openldap_knf
-${NSD_PKG}   openldap_ns
-${NSD_NAME}   openldap_ns
+${vnfd_pkg}   openldap_knf
+${vnfd_name}   openldap_knf
+${nsd_pkg}   openldap_ns
+${nsd_name}   openldap_ns
 
 # NS instance name and configuration
-${NS_NAME}   ldap
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}}], additionalParamsForVnf: [ {member-vnf-index: openldap, additionalParamsForKdu: [ {kdu_name: ldap, additionalParams: {service: {type: LoadBalancer }, adminPassword: admin}} ] } ] }
-
-${NS_ID}   ${EMPTY}
-${PUBLICKEY}   ${EMPTY}
-${VNF_MEMBER_INDEX}   openldap
-${KDU_NAME}   ldap
-${UPGRADE_ACTION}   upgrade
-${ROLLBACK_ACTION}   rollback
-${REPLICA_COUNT}   3
+${ns_name}   ldap
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}}], additionalParamsForVnf: [ {member-vnf-index: openldap, additionalParamsForKdu: [ {kdu_name: ldap, additionalParams: {service: {type: LoadBalancer }, adminPassword: admin}} ] } ] }
 
+${ns_id}   ${EMPTY}
+${publickey}   ${EMPTY}
+${vnf_member_index}   openldap
+${kdu_name}   ldap
+${upgrade_action}   upgrade
+${rollback_action}   rollback
+${replica_count}   3
 
 *** Test Cases ***
 Create Package For OpenLDAP CNF
-    [Documentation]   Upload NF package for the testsuite.
     [Tags]   prepare
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
 
 Create Package For OpenLDAP NS
-    [Documentation]   Upload NS package for the testsuite.
     [Tags]   prepare
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
 
 Create Network Service Instance
-    [Documentation]   Instantiate NS for the testsuite.
     [Tags]   prepare
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Log   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
 
 Get Ns Id
-    [Documentation]   Retrieve NS instance id to be used later on.
     [Tags]   verify
-    ${id}=   Get Ns Id   ${NS_NAME}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Get Ns Id   ${ns_name}
+    Set Suite Variable   ${ns_id}   ${id}
 
 Get Vnf Id
-    [Documentation]   Retrieve NF instance id to be used later on.
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vnfr_list}=   Get Ns Vnfr Ids   ${NS_ID}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vnfr_list}=   Get Ns Vnfr Ids   ${ns_id}
     Log List   ${vnfr_list}
-    Set Suite Variable   ${VNF_ID}   ${vnfr_list}[0]
+    Set Suite Variable   ${vnf_id}   ${vnfr_list}[0]
 
 Execute Upgrade Operation
-    [Documentation]   Perform OSM action to upgrade the number of replicas of a deployment in the CNF.
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute NS K8s Action   ${NS_NAME}   ${UPGRADE_ACTION}   ${VNF_MEMBER_INDEX}   ${KDU_NAME}   replicaCount=${REPLICA_COUNT}
-    Log   ${ns_op_id}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute NS K8s Action   ${ns_name}   ${upgrade_action}   ${vnf_member_index}   ${kdu_name}   replicaCount=${replica_count}
 
 Check Replicas After Upgrade Operation
-    [Documentation]   Check that the number of replicas after the upgrade is the expected one.
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${count}=   Get Vnf Kdu Replica Count   ${VNF_ID}   ${KDU_NAME}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${count}=   Get Vnf Kdu Replica Count   ${vnf_id}   ${kdu_name}
     Log   ${count}
-    Should Be Equal As Integers   ${count}   ${REPLICA_COUNT}
+    Should Be Equal As Integers   ${count}   ${replica_count}
 
 Execute Rollback Operation
-    [Documentation]   Perform OSM action to rollback the previous upgrade of the CNF.
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute NS K8s Action   ${NS_NAME}   ${ROLLBACK_ACTION}   ${VNF_MEMBER_INDEX}   ${KDU_NAME}
-    Log   ${ns_op_id}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute NS K8s Action   ${ns_name}   ${rollback_action}   ${vnf_member_index}   ${kdu_name}
 
 Check Replicas After Rollback Operation
-    [Documentation]   Check that the number of replcias after the rollback is the expected one.
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${count}=   Get Vnf Kdu Replica Count   ${VNF_ID}   ${KDU_NAME}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${count}=   Get Vnf Kdu Replica Count   ${vnf_id}   ${kdu_name}
     Log   ${count}
     Should Be Empty   ${count}
 
 Delete Network Service Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+    Delete NS   ${ns_name}
 
 Delete NS Descriptor Test
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+    Delete NSD   ${nsd_name}
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete NF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index be3bb31..f2175fd 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [K8s-05] K8s Proxy Charm.
 
 Library   OperatingSystem
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   k8s_05   cluster_ee_config   cluster_k8s_charms   regression   azure
+Force Tags   k8s_05   cluster_ee_config   cluster_k8s_charms   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   charm-packages/k8s_proxy_charm_vnf
-${VNFD_NAME}   k8s_proxy_charm-vnf
-${NSD_PKG}   charm-packages/k8s_proxy_charm_ns
-${NSD_NAME}   k8s_proxy_charm-ns
+${vnfd_pkg}   charm-packages/k8s_proxy_charm_vnf
+${vnfd_name}   k8s_proxy_charm-vnf
+${nsd_pkg}   charm-packages/k8s_proxy_charm_ns
+${nsd_name}   k8s_proxy_charm-ns
 
 # NS instance name and configuration
-${NS_NAME}   k8s_05-k8s_proxy_charm
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${NS_TIMEOUT}   15min
+${ns_name}   k8s_05-k8s_proxy_charm
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_timeout}   15min
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
-${ACTION_NAME}   touch
-${VNF_MEMBER_INDEX_1}   vnf1
-${VNF_MEMBER_INDEX_2}   vnf2
-${DAY_1_FILE_NAME}   /home/ubuntu/first-touch
-${DAY_2_FILE_NAME_1}   /home/ubuntu/mytouch1
-${DAY_2_FILE_NAME_2}   /home/ubuntu/mytouch2
+${action_name}   touch
+${vnf_member_index_1}   vnf1
+${vnf_member_index_2}   vnf2
+${day_1_file_name}   /home/ubuntu/first-touch
+${day_2_file_name_1}   /home/ubuntu/mytouch1
+${day_2_file_name_2}   /home/ubuntu/mytouch2
 
 
 *** Test Cases ***
 Create Charm VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create Charm NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Charm Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}   ${NS_TIMEOUT}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_timeout}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Management Ip Addresses
-    [Documentation]   Get the mgmt IP address of the two VNF of the NS.
-    ${ip_addr_1}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_1}
+
+    ${ip_addr_1}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_1}
     Log   ${ip_addr_1}
-    Set Suite Variable   ${VNF_1_IP_ADDR}   ${ip_addr_1}
-    ${ip_addr_2}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_2}
+    Set Suite Variable   ${vnf_1_ip_addr}   ${ip_addr_1}
+    ${ip_addr_2}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_2}
     Log   ${ip_addr_2}
-    Set Suite Variable   ${VNF_2_IP_ADDR}   ${ip_addr_2}
+    Set Suite Variable   ${vnf_2_ip_addr}   ${ip_addr_2}
+
 
 Test SSH Access
-    [Documentation]   Check that both VNF are accessible via SSH in their respective mgmt IP address.
-    Variable Should Exist   ${VNF_1_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX_1}' is not available
-    Variable Should Exist   ${VNF_2_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX_2}' is not available
+
+    Variable Should Exist   ${vnf_1_ip_addr}   msg=IP address of the management VNF '${vnf_member_index_1}' is not available
+    Variable Should Exist   ${vnf_2_ip_addr}   msg=IP address of the management VNF '${vnf_member_index_2}' is not available
     Sleep   30s   Waiting ssh daemon to be up
-    Test SSH Connection   ${VNF_1_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
-    Test SSH Connection   ${VNF_2_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
+    Test SSH Connection   ${vnf_1_ip_addr}   ${username}   ${password}   ${privatekey}
+    Test SSH Connection   ${vnf_2_ip_addr}   ${username}   ${password}   ${privatekey}
+
 
 Check Remote Files Created Via Day 1 Operations
     [Documentation]   The Charm VNF has a Day 1 operation that creates a file named ${day_1_file_name}.
     ...               This test checks whether that files have been created or not.
-    Check If Remote File Exists   ${VNF_1_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_1_FILE_NAME}
-    Check If Remote File Exists   ${VNF_2_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_1_FILE_NAME}
+
+    Check If remote File Exists   ${vnf_1_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_1_file_name}
+    Check If remote File Exists   ${vnf_2_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_1_file_name}
+
 
 Execute Day 2 Operations
     [Documentation]   Performs one Day 2 operation per VNF that creates a new file.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id_1}=   Execute NS Action   ${NS_NAME}   ${ACTION_NAME}   ${VNF_MEMBER_INDEX_1}   filename=${DAY_2_FILE_NAME_1}
-    Log   ${ns_op_id_1}
-    ${ns_op_id_2}=   Execute NS Action   ${NS_NAME}   ${ACTION_NAME}   ${VNF_MEMBER_INDEX_2}   filename=${DAY_2_FILE_NAME_2}
-    Log   ${ns_op_id_2}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id_1}=   Execute NS Action   ${ns_name}   ${action_name}   ${vnf_member_index_1}   filename=${day_2_file_name_1}
+    ${ns_op_id_2}=   Execute NS Action   ${ns_name}   ${action_name}   ${vnf_member_index_2}   filename=${day_2_file_name_2}
+
 
 Check Remote Files Created Via Day 2 Operations
     [Documentation]   Check whether the files created in the previous test via Day 2 operations exist or not.
-    Check If Remote File Exists   ${VNF_1_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_2_FILE_NAME_1}
-    Check If Remote File Exists   ${VNF_2_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_2_FILE_NAME_2}
+
+    Check If remote File Exists   ${vnf_1_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_2_file_name_1}
+    Check If remote File Exists   ${vnf_2_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_2_file_name_2}
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete NF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index d422d32..efec243 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [K8s-06] K8s Secure Key Management.
 
 Library   OperatingSystem
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   k8s_06   cluster_ee_config   cluster_k8s_charms   regression   azure
+Force Tags   k8s_06   cluster_ee_config   cluster_k8s_charms   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   charm-packages/nopasswd_k8s_proxy_charm_vnf
-${VNFD_NAME}   nopasswd_k8s_proxy_charm-vnf
-${NSD_PKG}   charm-packages/nopasswd_k8s_proxy_charm_ns
-${NSD_NAME}   nopasswd_k8s_proxy_charm-ns
+${vnfd_pkg}   charm-packages/nopasswd_k8s_proxy_charm_vnf
+${vnfd_name}   nopasswd_k8s_proxy_charm-vnf
+${nsd_pkg}   charm-packages/nopasswd_k8s_proxy_charm_ns
+${nsd_name}   nopasswd_k8s_proxy_charm-ns
 
 # NS instance name and configuration
-${NS_NAME}   k8s_06-nopasswd_k8s_proxy_charm
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${NS_TIMEOUT}   15min
+${ns_name}   k8s_06-nopasswd_k8s_proxy_charm
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_timeout}   15min
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
-${ACTION_NAME}   touch
-${VNF_MEMBER_INDEX_1}   vnf1
-${VNF_MEMBER_INDEX_2}   vnf2
-${DAY_1_FILE_NAME}   /home/ubuntu/first-touch
-${DAY_2_FILE_NAME_1}   /home/ubuntu/mytouch1
-${DAY_2_FILE_NAME_2}   /home/ubuntu/mytouch2
+${action_name}   touch
+${vnf_member_index_1}   vnf1
+${vnf_member_index_2}   vnf2
+${day_1_file_name}   /home/ubuntu/first-touch
+${day_2_file_name_1}   /home/ubuntu/mytouch1
+${day_2_file_name_2}   /home/ubuntu/mytouch2
+${ns_timeout}   15min
 
 
 *** Test Cases ***
 Create Charm VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
     [Tags]   prepare
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create Charm NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
     [Tags]   prepare
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Charm Network Service
-    [Documentation]   Instantiate NS for the testsuite.
     [Tags]   prepare
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}   ${NS_TIMEOUT}
-    Log   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_timeout}
 
 Get Ns Id
-    [Documentation]   Get the NS id and save it NS_ID suite variable to use it later on.
     [Tags]   verify
-    ${id}=   Get Ns Id   ${NS_NAME}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Get Ns Id   ${ns_name}
+    Set Suite Variable   ${ns_id}   ${id}
 
 Get Management Ip Addresses
-    [Documentation]   Get the mgmt IP address of the two VNF of the NS.
     [Tags]   verify
-    ${ip_addr_1}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_1}
+    ${ip_addr_1}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_1}
     Log   ${ip_addr_1}
-    Set Suite Variable   ${VNF_1_IP_ADDR}   ${ip_addr_1}
-    ${ip_addr_2}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_2}
+    Set Suite Variable   ${vnf_1_ip_addr}   ${ip_addr_1}
+    ${ip_addr_2}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_2}
     Log   ${ip_addr_2}
-    Set Suite Variable   ${VNF_2_IP_ADDR}   ${ip_addr_2}
+    Set Suite Variable   ${vnf_2_ip_addr}   ${ip_addr_2}
+
 
 Test SSH Access
-    [Documentation]   Check that both VNF are accessible via SSH in their respective mgmt IP address.
     [Tags]   verify
-    Variable Should Exist   ${VNF_1_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX_1}' is not available
-    Variable Should Exist   ${VNF_2_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX_2}' is not available
+    Variable Should Exist   ${vnf_1_ip_addr}   msg=IP address of the management VNF '${vnf_member_index_1}' is not available
+    Variable Should Exist   ${vnf_2_ip_addr}   msg=IP address of the management VNF '${vnf_member_index_2}' is not available
     Sleep   30s   Waiting ssh daemon to be up
-    Test SSH Connection   ${VNF_1_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
-    Test SSH Connection   ${VNF_2_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
+    Test SSH Connection   ${vnf_1_ip_addr}   ${username}   ${password}   ${privatekey}
+    Test SSH Connection   ${vnf_2_ip_addr}   ${username}   ${password}   ${privatekey}
+
 
 Check Remote Files Created Via Day 1 Operations
-    [Documentation]   The Charm VNF has a Day 1 operation that creates a file named ${DAY_1_FILE_NAME}.
-    ...               This test checks whether that files have been created or not.
     [Tags]   verify
-    Check If Remote File Exists   ${VNF_1_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_1_FILE_NAME}
-    Check If Remote File Exists   ${VNF_2_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_1_FILE_NAME}
+    [Documentation]   The Charm VNF has a Day 1 operation that creates a file named ${day_1_file_name}.
+    ...               This test checks whether that files have been created or not.
+
+    Check If remote File Exists   ${vnf_1_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_1_file_name}
+    Check If remote File Exists   ${vnf_2_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_1_file_name}
+
 
 Execute Day 2 Operations
-    [Documentation]   Performs one Day 2 operation per VNF that creates a new file.
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id_1}=   Execute NS Action   ${NS_NAME}   ${ACTION_NAME}   ${VNF_MEMBER_INDEX_1}   filename=${DAY_2_FILE_NAME_1}
-    Log   ${ns_op_id_1}
-    ${ns_op_id_2}=   Execute NS Action   ${NS_NAME}   ${ACTION_NAME}   ${VNF_MEMBER_INDEX_2}   filename=${DAY_2_FILE_NAME_2}
-    Log   ${ns_op_id_2}
+    [Documentation]   Performs one Day 2 operation per VNF that creates a new file.
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id_1}=   Execute NS Action   ${ns_name}   ${action_name}   ${vnf_member_index_1}   filename=${day_2_file_name_1}
+    ${ns_op_id_2}=   Execute NS Action   ${ns_name}   ${action_name}   ${vnf_member_index_2}   filename=${day_2_file_name_2}
+
 
 Check Remote Files Created Via Day 2 Operations
-    [Documentation]   Check whether the files created in the previous test via Day 2 operations exist or not.
     [Tags]   verify
-    Check If Remote File Exists   ${VNF_1_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_2_FILE_NAME_1}
-    Check If Remote File Exists   ${VNF_2_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_2_FILE_NAME_2}
+    [Documentation]   Check whether the files created in the previous test via Day 2 operations exist or not.
+
+    Check If remote File Exists   ${vnf_1_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_2_file_name_1}
+    Check If remote File Exists   ${vnf_2_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_2_file_name_2}
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete NF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index 59c73ba..c37fe4e 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [K8s-07] Openldap Helm in isolated cluster with dummy VIM.
 
@@ -20,101 +18,90 @@ Library   String
 Library   Collections
 Library   Process
 
-Resource   ../lib/vim_lib.resource
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/connectivity_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/k8scluster_lib.resource
+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/connectivity_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/k8scluster_lib.robot
 
-Test Tags   k8s_07   cluster_k8s   daily   regression   azure
+Force Tags   k8s_07   cluster_k8s   daily   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # VIM Configuration
-${VIM_NAME}   k8s07_dummy
-${VIM_USER}   user
-${VIM_PASSWORD}   pass
-${VIM_AUTH_URL}   http://localhost/dummy
-${VIM_TENANT}   tenant
-${VIM_ACCOUNT_TYPE}   dummy
+${vim_name}   k8s07_dummy
+${vim_user}   user
+${vim_password}   pass
+${vim_auth_url}   http://localhost/dummy
+${vim_tenant}   tenant
+${vim_account_type}   dummy
 
 # K8s cluster data
-${K8SCLUSTER_NAME}   k8s07
-${K8SCLUSTER_VERSION}   v1
-${K8SCLUSTER_NET}   null
+${k8scluster_name}   k8s07
+${k8scluster_version}   v1
+${k8scluster_net}   null
 
 # NS and VNF descriptor package files
-${VNFD_PKG}   openldap_knf
-${NSD_PKG}   openldap_ns
-${VNFD_NAME}   openldap_knf
-${NSD_NAME}   openldap_ns
+${vnfd_pkg}   openldap_knf
+${nsd_pkg}   openldap_ns
+${vnfd_name}   openldap_knf
+${nsd_name}   openldap_ns
 
 # NS instance name
-${NS_NAME}   ldap
+${ns_name}   ldap
 
-${NS_ID}   ${EMPTY}
-${NS_CONFIG}   ${EMPTY}
-${PUBLICKEY}   ${EMPTY}
+${ns_id}   ${EMPTY}
+${ns_config}   ${EMPTY}
+${publickey}   ${EMPTY}
 
 
 *** Test Cases ***
 Create Package For OpenLDAP CNF
-    [Documentation]   Upload NF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
 
 Create Package For OpenLDAP NS
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
 
 Create Dummy VIM
-    [Documentation]   Register a VIM of type dummy in OSM.
-    ${created_vim_account_id}=   Create VIM Target   ${VIM_NAME}   ${VIM_USER}   ${VIM_PASSWORD}   ${VIM_AUTH_URL}   ${VIM_TENANT}   ${VIM_ACCOUNT_TYPE}
-    Log   ${created_vim_account_id}
+    ${created_vim_account_id}=   Create VIM Target   ${vim_name}   ${vim_user}   ${vim_password}   ${vim_auth_url}   ${vim_tenant}   ${vim_account_type}
 
 Add K8s Cluster To OSM
-    [Documentation]   Register a K8s cluster associated to the dummy VIM.
-    Create K8s Cluster   %{K8S_CREDENTIALS}   ${K8SCLUSTER_VERSION}   ${VIM_NAME}   ${K8SCLUSTER_NET}   ${K8SCLUSTER_NAME}
+    Create K8s Cluster   %{K8S_CREDENTIALS}   ${k8scluster_version}   ${vim_name}   ${k8scluster_net}   ${k8scluster_name}
 
 Create Network Service Instance
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   ${VIM_NAME}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   ${vim_name}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
 
 Delete Network Service Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+    Delete NS   ${ns_name}
 
 Remove K8s Cluster from OSM
-    [Documentation]   Remove K8s cluster from OSM.
     [Tags]   cleanup
-    Delete K8s Cluster   ${K8SCLUSTER_NAME}
+    Delete K8s Cluster   ${k8scluster_name}
 
 Delete VIM
-    [Documentation]   Remove VIM from OSM.
     [Tags]   cleanup
-    Delete VIM Target   ${VIM_NAME}
+    Delete VIM Target   ${vim_name}
 
 Delete NS Descriptor Test
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+    Delete NSD   ${nsd_name}
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete NF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance, cluster and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
-    Run Keyword If Any Tests Failed   Delete K8s Cluster   ${K8SCLUSTER_NAME}
-    Run Keyword If Any Tests Failed   Delete VIM Target   ${VIM_NAME}
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+    Run Keyword If Any Tests Failed   Delete K8s Cluster   ${k8scluster_name}
+    Run Keyword If Any Tests Failed   Delete VIM Target   ${vim_name}
index 034a702..f0d87b4 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [K8s-08] Simple K8s Scale.
 
@@ -21,115 +19,110 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/k8scluster_lib.resource
-Resource   ../lib/juju_lib.resource
+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/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/k8scluster_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/juju_lib.robot
 
-Test Tags   k8s_08   cluster_k8s   regression   azure
+Force Tags   k8s_08   cluster_k8s   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   charm-packages/native_k8s_scale_charm_vnf
-${VNFD_NAME}   native_k8s_scale_charm-vnf
-${NSD_PKG}   charm-packages/native_k8s_scale_charm_ns
-${NSD_NAME}   native_k8s_scale_charm-ns
+${vnfd_pkg}   charm-packages/native_k8s_scale_charm_vnf
+${vnfd_name}   native_k8s_scale_charm-vnf
+${nsd_pkg}   charm-packages/native_k8s_scale_charm_ns
+${nsd_name}   native_k8s_scale_charm-ns
 
-${KDU_NAME}   native-kdu
-${APPLICATION_NAME}   nginx
-${VNF_MEMBER_INDEX}   native_k8s_scale_charm-vnf
-${INSTANTIATION_COUNT}   2
+${kdu_name}   native-kdu
+${application_name}   nginx
+${vnf_member_index}   native_k8s_scale_charm-vnf
+${instantiation_count}   2
 
 # NS instance name and configuration
-${NS_NAME}   native-k8s-scale
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ], additionalParamsForVnf: [{member-vnf-index: ${VNF_MEMBER_INDEX}, additionalParamsForKdu: [{ kdu_name: ${KDU_NAME}, additionalParams: { overlay: { applications: { ${APPLICATION_NAME}: { scale: ${INSTANTIATION_COUNT} } }}}}]}]}
-${NS_ID}   ${EMPTY}
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
+${ns_name}   native-k8s-scale
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ], additionalParamsForVnf: [{member-vnf-index: ${vnf_member_index}, additionalParamsForKdu: [{ kdu_name: ${kdu_name}, additionalParams: { overlay: { applications: { ${application_name}: { scale: ${instantiation_count} } }}}}]}]}
+${ns_id}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
 
 # Username and SSH private key for accessing OSM host
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
-${PRIVATEKEY}   %{OSM_RSA_FILE}
-
-${MODEL_NAME}   ${EMPTY}
-${ACTION_NAME}   changecontent
-${SCALING_GROUP}   scale-kdu
+${username}   ubuntu
+${password}   ${EMPTY}
+${privatekey}   %{OSM_RSA_FILE}
 
+${model_name}   ${EMPTY}
+${action_name}   changecontent
+${scaling_group}   scale-kdu
 
 *** Test Cases ***
 Create Simple K8s Scale VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
 
 Create Simple K8s Scale NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
 
 Network Service K8s Instance Test
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
 
 Get KDU Model Name
     [Documentation]   Get the model name of the network service k8s instance
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${name}=   Get Model Name   %{OSM_HOSTNAME}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${NS_ID}   ${KDU_NAME}
-    Set Suite Variable   ${MODEL_NAME}   ${name}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${name}=   Get Model Name   %{OSM_HOSTNAME}   ${username}   ${password}   ${privatekey}   ${ns_id}   ${kdu_name}
+    Set Suite Variable   ${model_name}   ${name}
 
 Get Scale Count Before Scale Out
     [Documentation]   Get the scale count of the application of network service k8s instance
-    Variable Should Exist   ${MODEL_NAME}   msg=Model name is not available
-    ${kdu_count}=   Get Scale Number   %{OSM_HOSTNAME}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${APPLICATION_NAME}   ${MODEL_NAME}
-    Set Suite Variable   ${INITIAL_KDU_COUNT}   ${kdu_count}
-    IF   ${INITIAL_KDU_COUNT} != ${INSTANTIATION_COUNT}   Fail   msg=Instantiation parameters were not applied.
+
+    Variable Should Exist   ${model_name}   msg=Model name is not available
+    ${kdu_count}=   Get Scale Number   %{OSM_HOSTNAME}   ${username}   ${password}   ${privatekey}   ${application_name}   ${model_name}
+    Set Suite Variable   ${initial_kdu_count}   ${kdu_count}
+    Run Keyword If   ${initial_kdu_count} != ${instantiation_count}   Fail   msg=Instantiation parameters were not applied.
 
 Perform Manual KDU Scale Out
     [Documentation]   Scale out the application of network service k8s instance.
-    ${ns_op_id_2}=   Execute Manual VNF Scale   ${NS_NAME}   ${VNF_MEMBER_INDEX}   ${SCALING_GROUP}   SCALE_OUT
-    Log   ${ns_op_id_2}
+
+    ${ns_op_id_2}=   Execute Manual VNF Scale   ${ns_name}   ${vnf_member_index}   ${scaling_group}   SCALE_OUT
 
 Check Scale Count After Scale Out
     [Documentation]   Check whether the scale count is more than one.
 
-    Variable Should Exist   ${INITIAL_KDU_COUNT}   msg=Initial KDU count is not available
-    ${kdu_count}=   Get Scale Number   %{OSM_HOSTNAME}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${APPLICATION_NAME}   ${MODEL_NAME}
-    IF   ${kdu_count} != ${INITIAL_KDU_COUNT} + 1   Fail   msg=There is no new KDU in the model after Scale Out
+    Variable Should Exist   ${initial_kdu_count}   msg=Initial KDU count is not available
+    ${kdu_count}=   Get Scale Number   %{OSM_HOSTNAME}   ${username}   ${password}   ${privatekey}   ${application_name}   ${model_name}
+    Run Keyword If   ${kdu_count} != ${initial_kdu_count} + 1   Fail   msg=There is no new KDU in the model after Scale Out
 
 Perform Manual KDU Scale In
     [Documentation]   Scale in the application of network service k8s instance.
-    ${ns_op_id_3}=   Execute Manual VNF Scale   ${NS_NAME}   ${VNF_MEMBER_INDEX}   ${SCALING_GROUP}   SCALE_IN
-    Log   ${ns_op_id_3}
+
+    ${ns_op_id_3}=   Execute Manual VNF Scale   ${ns_name}   ${vnf_member_index}   ${scaling_group}   SCALE_IN
 
 Check Scale Count After Scale In
     [Documentation]   Check whether the scale count is one less.
-    ${kdu_count}=   Get Scale Number   %{OSM_HOSTNAME}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${APPLICATION_NAME}   ${MODEL_NAME}
-    IF   ${kdu_count} != ${INITIAL_KDU_COUNT}   Fail   msg=There is the same number of KDU in the model after Scale In
+
+    ${kdu_count}=   Get Scale Number   %{OSM_HOSTNAME}   ${username}   ${password}   ${privatekey}   ${application_name}   ${model_name}
+    Run Keyword If   ${kdu_count} != ${initial_kdu_count}   Fail   msg=There is the same number of KDU in the model after Scale In
 
 Delete NS K8s Instance Test
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+    Delete NS   ${ns_name}
 
 Delete NS Descriptor Test
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+    Delete NSD   ${nsd_name}
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete NF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index 40c4ddb..63dbff3 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   Copyright 2020 Canonical Ltd.
 #
 #   Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +12,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [K8s-09] Pebble Charm.
 
@@ -22,85 +20,76 @@ Library   String
 Library   Collections
 Library   Process
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/package_lib.resource
-Resource   ../lib/connectivity_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/k8scluster_lib.resource
+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/package_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/connectivity_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/k8scluster_lib.robot
 
-Test Tags   k8s_09   cluster_k8s   regression   azure
+Force Tags   k8s_09   cluster_k8s   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   charm-packages/pebble_charm_vnf
-${VNFD_NAME}   pebble_charm-vnf
-${NSD_PKG}   charm-packages/pebble_charm_ns
-${NSD_NAME}   pebble_charm-ns
+${vnfd_pkg}   charm-packages/pebble_charm_vnf
+${vnfd_name}   pebble_charm-vnf
+${nsd_pkg}   charm-packages/pebble_charm_ns
+${nsd_name}   pebble_charm-ns
 
 # NS instance name and configuration
-${NS_NAME}   pebble-charm-k8s
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-
-${NS_ID}   ${EMPTY}
-${PUBLICKEY}   ${EMPTY}
-${VNF_MEMBER_INDEX}   pebble_charm-vnf
-${ACTION_NAME}   list-available-apps
-${KDU_NAME}   onos-kdu
-${APPLICATION_NAME}   onos
+${ns_name}   pebble-charm-k8s
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
+${ns_id}   ${EMPTY}
+${publickey}   ${EMPTY}
+${vnf_member_index}   pebble_charm-vnf
+${action_name}   list-available-apps
+${kdu_name}   onos-kdu
+${application_name}   onos
+${customtitle}   Day 2 Action
 
 *** Test Cases ***
 Create Simple K8s VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
 
 Create Simple K8s Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
 
 Network Service K8s Instance Test
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
 
 Execute Day 2 Operations
     [Documentation]   Performs one Day 2 operation per VNF that creates a new file.
 
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute NS K8s Action   ${NS_NAME}   ${ACTION_NAME}   ${VNF_MEMBER_INDEX}   ${KDU_NAME}   application-name=${APPLICATION_NAME}
-    Log   ${ns_op_id}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute NS K8s Action   ${ns_name}   ${action_name}   ${vnf_member_index}   ${kdu_name}   application-name=${application_name}
 
 Delete NS K8s Instance Test
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+    Delete NS   ${ns_name}
 
 Delete NS Descriptor Test
-    [Documentation]   Delete the NS package.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+    Delete NSD   ${nsd_name}
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete the VNF package.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+    Delete VNFD   ${vnfd_name}
 
 Delete VNF NS Packages
-    [Documentation]   Delete the tar.gz files associated to the VNF and NS packages.
     [Tags]   cleanup
-    Delete Package   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
-    Delete Package   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Delete Package   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+    Delete Package   '%{PACKAGES_FOLDER}/${nsd_pkg}'
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index b5d1ba2..1c7d3de 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [K8s-10] K8s Proxy Charm using SOL004 and SOL007 packages.
 
 Library   OperatingSystem
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/ssh_lib.robot
 
-Test Tags   k8s_10   cluster_ee_config   cluster_k8s_charms   daily   regression   azure
+Force Tags   k8s_10   cluster_ee_config   cluster_k8s_charms   daily   regression   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   charm-packages/sol004_k8s_proxy_charm_vnf
-${VNFD_NAME}   sol004_k8s_proxy_charm-vnf
-${NSD_PKG}   charm-packages/sol007_k8s_proxy_charm_ns
-${NSD_NAME}   sol007_k8s_proxy_charm-ns
+${vnfd_pkg}   charm-packages/sol004_k8s_proxy_charm_vnf
+${vnfd_name}   sol004_k8s_proxy_charm-vnf
+${nsd_pkg}   charm-packages/sol007_k8s_proxy_charm_ns
+${nsd_name}   sol007_k8s_proxy_charm-ns
 
 # NS instance name and configuration
-${NS_NAME}   k8s_10-k8s_proxy_charm
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
-${NS_TIMEOUT}   15min
+${ns_name}   k8s_10-k8s_proxy_charm
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_timeout}   15min
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
-${ACTION_NAME}   touch
-${VNF_MEMBER_INDEX_1}   vnf1
-${VNF_MEMBER_INDEX_2}   vnf2
-${DAY_1_FILE_NAME}   /home/ubuntu/first-touch
-${DAY_2_FILE_NAME_1}   /home/ubuntu/mytouch1
-${DAY_2_FILE_NAME_2}   /home/ubuntu/mytouch2
+${action_name}   touch
+${vnf_member_index_1}   vnf1
+${vnf_member_index_2}   vnf2
+${day_1_file_name}   /home/ubuntu/first-touch
+${day_2_file_name_1}   /home/ubuntu/mytouch1
+${day_2_file_name_2}   /home/ubuntu/mytouch2
 
 
 *** Test Cases ***
 Create Charm VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create Charm NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Charm Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}   ${NS_TIMEOUT}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}   ${ns_timeout}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Management Ip Addresses
-    [Documentation]   Get the mgmt IP addresses of both VNF of the NS.
-    ${ip_addr_1}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_1}
+
+    ${ip_addr_1}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_1}
     Log   ${ip_addr_1}
-    Set Suite Variable   ${VNF_1_IP_ADDR}   ${ip_addr_1}
-    ${ip_addr_2}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX_2}
+    Set Suite Variable   ${vnf_1_ip_addr}   ${ip_addr_1}
+    ${ip_addr_2}   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index_2}
     Log   ${ip_addr_2}
-    Set Suite Variable   ${VNF_2_IP_ADDR}   ${ip_addr_2}
+    Set Suite Variable   ${vnf_2_ip_addr}   ${ip_addr_2}
+
 
 Test SSH Access
-    [Documentation]   Check that both VNF are accessible via SSH in their mgmt IP addresses.
-    Variable Should Exist   ${VNF_1_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX_1}' is not available
-    Variable Should Exist   ${VNF_2_IP_ADDR}   msg=IP address of the management VNF '${VNF_MEMBER_INDEX_2}' is not available
+
+    Variable Should Exist   ${vnf_1_ip_addr}   msg=IP address of the management VNF '${vnf_member_index_1}' is not available
+    Variable Should Exist   ${vnf_2_ip_addr}   msg=IP address of the management VNF '${vnf_member_index_2}' is not available
     Sleep   30s   Waiting ssh daemon to be up
-    Test SSH Connection   ${VNF_1_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
-    Test SSH Connection   ${VNF_2_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
+    Test SSH Connection   ${vnf_1_ip_addr}   ${username}   ${password}   ${privatekey}
+    Test SSH Connection   ${vnf_2_ip_addr}   ${username}   ${password}   ${privatekey}
+
 
 Check Remote Files Created Via Day 1 Operations
     [Documentation]   The Charm VNF has a Day 1 operation that creates a file named ${day_1_file_name}.
     ...               This test checks whether that files have been created or not.
-    Check If Remote File Exists   ${VNF_1_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_1_FILE_NAME}
-    Check If Remote File Exists   ${VNF_2_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_1_FILE_NAME}
+
+    Check If remote File Exists   ${vnf_1_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_1_file_name}
+    Check If remote File Exists   ${vnf_2_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_1_file_name}
+
 
 Execute Day 2 Operations
     [Documentation]   Performs one Day 2 operation per VNF that creates a new file.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id_1}=   Execute NS Action   ${NS_NAME}   ${ACTION_NAME}   ${VNF_MEMBER_INDEX_1}   filename=${DAY_2_FILE_NAME_1}
-    Log   ${ns_op_id_1}
-    ${ns_op_id_2}=   Execute NS Action   ${NS_NAME}   ${ACTION_NAME}   ${VNF_MEMBER_INDEX_2}   filename=${DAY_2_FILE_NAME_2}
-    Log   ${ns_op_id_2}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id_1}=   Execute NS Action   ${ns_name}   ${action_name}   ${vnf_member_index_1}   filename=${day_2_file_name_1}
+    ${ns_op_id_2}=   Execute NS Action   ${ns_name}   ${action_name}   ${vnf_member_index_2}   filename=${day_2_file_name_2}
+
 
 Check Remote Files Created Via Day 2 Operations
     [Documentation]   Check whether the files created in the previous test via Day 2 operations exist or not.
-    Check If Remote File Exists   ${VNF_1_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_2_FILE_NAME_1}
-    Check If Remote File Exists   ${VNF_2_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   ${DAY_2_FILE_NAME_2}
+
+    Check If remote File Exists   ${vnf_1_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_2_file_name_1}
+    Check If remote File Exists   ${vnf_2_ip_addr}   ${username}   ${password}   ${privatekey}   ${day_2_file_name_2}
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index 14cda79..f5a73a7 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [K8s-11] Simple Helm K8s Scale.
 
@@ -21,126 +19,117 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/connectivity_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/k8scluster_lib.resource
+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/connectivity_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/k8scluster_lib.robot
 
-Test Tags   k8s_11   cluster_k8s
+Force Tags   k8s_11   cluster_k8s
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # K8s cluster name and version
-${K8SCLUSTER_NAME}   k8s11
-${K8SCLUSTER_VERSION}   v1
+${k8scluster_name}   k8s11
+${k8scluster_version}   v1
 
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   openldap_scale_knf
-${VNFD_NAME}   openldap_scale_knf
-${NSD_PKG}   openldap_scale_ns
-${NSD_NAME}   openldap_scale_ns
+${vnfd_pkg}   openldap_scale_knf
+${vnfd_name}   openldap_scale_knf
+${nsd_pkg}   openldap_scale_ns
+${nsd_name}   openldap_scale_ns
 
 # NS instance name and configuration
-${NS_NAME}   openldap-scale
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   openldap-scale
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # Username and SSH private key for accessing OSM host
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
-${PRIVATEKEY}   %{OSM_RSA_FILE}
-
-${NS_ID}   ${EMPTY}
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${VNF_MEMBER_INDEX}   openldap
-${KDU_NAME}   native-kdu
-${SCALING_GROUP}   scale-kdu
+${username}   ubuntu
+${password}   ${EMPTY}
+${privatekey}   %{OSM_RSA_FILE}
 
+${ns_id}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${vnf_member_index}   openldap
+${kdu_name}   native-kdu
+${scaling_group}   scale-kdu
 
 *** Test Cases ***
 Create Simple K8s Scale VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
 
 Create Simple K8s Scale NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
 
 Add K8s Cluster To OSM
-    [Documentation]   Register K8s cluster in OSM.
-    Create K8s Cluster   %{K8S_CREDENTIALS}   ${K8SCLUSTER_VERSION}   %{VIM_TARGET}   %{VIM_MGMT_NET}   ${K8SCLUSTER_NAME}
+    Create K8s Cluster   %{K8S_CREDENTIALS}   ${k8scluster_version}   %{VIM_TARGET}   %{VIM_MGMT_NET}   ${k8scluster_name}
 
 Create Network Service Instance
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
 
 Get Vnf Id
-    [Documentation]   Get VNF identifier from OSM.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vnfr_list}=   Get Ns Vnfr Ids   ${NS_ID}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vnfr_list}=   Get Ns Vnfr Ids   ${ns_id}
     Log List   ${vnfr_list}
-    Set Suite Variable   ${VNF_ID}   ${vnfr_list}[0]
+    Set Suite Variable   ${vnf_id}   ${vnfr_list}[0]
 
 Get Scale Count Before Scale Out
     [Documentation]   Get the scale count of the application of network service k8s instance
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${kdu_count}=   Get Vnf Kdu Replica Count   ${VNF_ID}   ${KDU_NAME}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${kdu_count}=   Get Vnf Kdu Replica Count   ${vnf_id}   ${kdu_name}
     Log   ${kdu_count}
-    Set Suite Variable   ${INITIAL_KDU_COUNT}   ${kdu_count}
+    Set Suite Variable   ${initial_kdu_count}   ${kdu_count}
 
 Perform Manual KDU Scale Out
     [Documentation]   Scale out the application of network service k8s instance.
-    ${ns_op_id_1}=   Execute Manual VNF Scale   ${NS_NAME}   ${VNF_MEMBER_INDEX}   ${SCALING_GROUP}   SCALE_OUT
-    Log   ${ns_op_id_1}
+
+    ${ns_op_id_1}=   Execute Manual VNF Scale   ${ns_name}   ${vnf_member_index}   ${scaling_group}   SCALE_OUT
 
 Check Scale Count After Scale Out
     [Documentation]   Check whether the scale count is more than one.
 
-    Variable Should Exist   ${INITIAL_KDU_COUNT}   msg=Initial KDU count is not available
-    ${kdu_count}=   Get Vnf Kdu Replica Count   ${VNF_ID}   ${KDU_NAME}
+    Variable Should Exist   ${initial_kdu_count}   msg=Initial KDU count is not available
+    ${kdu_count}=   Get Vnf Kdu Replica Count   ${vnf_id}   ${kdu_name}
     Log   ${kdu_count}
-    IF   ${kdu_count} != ${INITIAL_KDU_COUNT} + 2   Fail   msg=There is no new KDU in the model after Scale Out
+    Run Keyword If   ${kdu_count} != ${initial_kdu_count} + 2   Fail   msg=There is no new KDU in the model after Scale Out
 
 Perform Manual KDU Scale In
     [Documentation]   Scale in the application of network service k8s instance.
-    ${ns_op_id_2}=   Execute Manual VNF Scale   ${NS_NAME}   ${VNF_MEMBER_INDEX}   ${SCALING_GROUP}   SCALE_IN
-    Log   ${ns_op_id_2}
+
+    ${ns_op_id_2}=   Execute Manual VNF Scale   ${ns_name}   ${vnf_member_index}   ${scaling_group}   SCALE_IN
 
 Check Scale Count After Scale In
     [Documentation]   Check whether the scale count is one less.
-    ${kdu_count}=   Get Vnf Kdu Replica Count   ${VNF_ID}   ${KDU_NAME}
-    IF   ${kdu_count} != ${INITIAL_KDU_COUNT}   Fail   msg=There is the same number of KDU in the model after Scale In
+
+    ${kdu_count}=   Get Vnf Kdu Replica Count   ${vnf_id}   ${kdu_name}
+    Run Keyword If   ${kdu_count} != ${initial_kdu_count}   Fail   msg=There is the same number of KDU in the model after Scale In
 
 Delete NS K8s Instance Test
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+    Delete NS   ${ns_name}
 
 Remove K8s Cluster from OSM
-    [Documentation]   Unregister K8s cluster from OSM.
     [Tags]   cleanup
-    Delete K8s Cluster   ${K8SCLUSTER_NAME}
+    Delete K8s Cluster   ${k8scluster_name}
 
 Delete NS Descriptor Test
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+    Delete NSD   ${nsd_name}
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete NF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
-    Run Keyword If Any Tests Failed   Delete K8s Cluster   ${K8SCLUSTER_NAME}
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+    Run Keyword If Any Tests Failed   Delete K8s Cluster   ${k8scluster_name}
index 19e45c0..0abc535 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [K8s-12] Openldap Helm chart.
 
@@ -20,133 +18,114 @@ Library   String
 Library   Collections
 Library   Process
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/connectivity_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/k8scluster_lib.resource
+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/connectivity_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/k8scluster_lib.robot
 
-Test Tags   k8s_12   cluster_k8s   daily   azure
+Force Tags   k8s_12   cluster_k8s   daily   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # K8s cluster name and version
-${K8SCLUSTER_NAME}   k8s12
-${K8SCLUSTER_VERSION}   v1
+${k8scluster_name}   k8s12
+${k8scluster_version}   v1
 
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   openldap_primitives_knf
-${VNFD_NAME}   openldap_knf
-${NSD_PKG}   openldap_primitives_ns
-${NSD_NAME}   openldap_ns
+${vnfd_pkg}   openldap_primitives_knf
+${vnfd_name}   openldap_knf
+${nsd_pkg}   openldap_primitives_ns
+${nsd_name}   openldap_ns
 
 # NS instance name and configuration
-${NS_NAME}   ldap
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}}], additionalParamsForVnf: [ {member-vnf-index: openldap, additionalParamsForKdu: [ {kdu_name: ldap, additionalParams: {service: {type: LoadBalancer }, adminPassword: admin}} ] } ] }
-
-${NS_ID}   ${EMPTY}
-${PUBLICKEY}   ${EMPTY}
-${VNF_MEMBER_INDEX}   openldap
-${KDU_NAME}   ldap
-${UPGRADE_ACTION}   upgrade
-${ROLLBACK_ACTION}   rollback
-${REPLICA_COUNT}   3
-${ACTION_NAME}   get-user-info
-${ACTION_PARAM_CN}   admin
-${ACTION_PARAM_DC}   example.org
-
+${ns_name}   ldap
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}}], additionalParamsForVnf: [ {member-vnf-index: openldap, additionalParamsForKdu: [ {kdu_name: ldap, additionalParams: {service: {type: LoadBalancer }, adminPassword: admin}} ] } ] }
+
+${ns_id}   ${EMPTY}
+${publickey}   ${EMPTY}
+${vnf_member_index}   openldap
+${kdu_name}   ldap
+${upgrade_action}   upgrade
+${rollback_action}   rollback
+${replica_count}   3
+${action_name}   get-user-info
+${action_param_cn}   admin
+${action_param_dc}   example.org
 
 *** Test Cases ***
 Create Package For OpenLDAP CNF
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
 
 Create Package For OpenLDAP NS
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
 
 Add K8s Cluster To OSM
-    [Documentation]   Register K8s cluster in OSM.
-    Create K8s Cluster   %{K8S_CREDENTIALS}   ${K8SCLUSTER_VERSION}   %{VIM_TARGET}   %{VIM_MGMT_NET}   ${K8SCLUSTER_NAME}
+    Create K8s Cluster   %{K8S_CREDENTIALS}   ${k8scluster_version}   %{VIM_TARGET}   %{VIM_MGMT_NET}   ${k8scluster_name}
 
 Create Network Service Instance
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Log   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
 
 Get Ns Id
-    [Documentation]   Get NS instance id from OSM.
-    ${id}=   Get Ns Id   ${NS_NAME}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Get Ns Id   ${ns_name}
+    Set Suite Variable   ${ns_id}   ${id}
 
 Get Vnf Id
-    [Documentation]   Get VNF instance id from OSM.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vnfr_list}=   Get Ns Vnfr Ids   ${NS_ID}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vnfr_list}=   Get Ns Vnfr Ids   ${ns_id}
     Log List   ${vnfr_list}
-    Set Suite Variable   ${VNF_ID}   ${vnfr_list}[0]
+    Set Suite Variable   ${vnf_id}   ${vnfr_list}[0]
 
 Execute Day 2 Operations
     [Documentation]   Performs one Day 2 operation.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute NS K8s Action   ${NS_NAME}   ${ACTION_NAME}   ${VNF_MEMBER_INDEX}   ${KDU_NAME}   cn=${ACTION_PARAM_CN}   dc=${ACTION_PARAM_DC}
-    Log   ${ns_op_id}
+
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute NS K8s Action   ${ns_name}   ${action_name}   ${vnf_member_index}   ${kdu_name}   cn=${action_param_cn}   dc=${action_param_dc}
 
 Execute Upgrade Operation
-    [Documentation]   Perform OSM action to upgrade the number of replicas of a deployment in the CNF.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute NS K8s Action   ${NS_NAME}   ${UPGRADE_ACTION}   ${VNF_MEMBER_INDEX}   ${KDU_NAME}   replicaCount=${REPLICA_COUNT}
-    Log   ${ns_op_id}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute NS K8s Action   ${ns_name}   ${upgrade_action}   ${vnf_member_index}   ${kdu_name}   replicaCount=${replica_count}
 
 Check Replicas After Upgrade Operation
-    [Documentation]   Check that the number of replicas after the upgrade is the expected one.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${count}=   Get Vnf Kdu Replica Count   ${VNF_ID}   ${KDU_NAME}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${count}=   Get Vnf Kdu Replica Count   ${vnf_id}   ${kdu_name}
     Log   ${count}
-    Should Be Equal As Integers   ${count}   ${REPLICA_COUNT}
+    Should Be Equal As Integers   ${count}   ${replica_count}
 
 Execute Rollback Operation
-    [Documentation]   Perform OSM action to rollback the previous upgrade of the CNF.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute NS K8s Action   ${NS_NAME}   ${ROLLBACK_ACTION}   ${VNF_MEMBER_INDEX}   ${KDU_NAME}
-    Log   ${ns_op_id}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute NS K8s Action   ${ns_name}   ${rollback_action}   ${vnf_member_index}   ${kdu_name}
 
 Check Replicas After Rollback Operation
-    [Documentation]   Check that the number of replcias after the rollback is the expected one.
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${count}=   Get Vnf Kdu Replica Count   ${VNF_ID}   ${KDU_NAME}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${count}=   Get Vnf Kdu Replica Count   ${vnf_id}   ${kdu_name}
     Log   ${count}
     Should Be Empty   ${count}
 
 Delete Network Service Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+    Delete NS   ${ns_name}
 
 Remove K8s Cluster from OSM
-    [Documentation]   Delete K8s cluster from OSM.
     [Tags]   cleanup
-    Delete K8s Cluster   ${K8SCLUSTER_NAME}
+    Delete K8s Cluster   ${k8scluster_name}
 
 Delete NS Descriptor Test
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+    Delete NSD   ${nsd_name}
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete NF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
-    Run Keyword If Any Tests Failed   Delete K8s Cluster   ${K8SCLUSTER_NAME}
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+    Run Keyword If Any Tests Failed   Delete K8s Cluster   ${k8scluster_name}
index 763488b..b57e635 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [K8s-13] Two Helm-based KDU stored in public and private OCI repositories.
 
@@ -20,167 +18,160 @@ Library   String
 Library   Collections
 Library   Process
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/connectivity_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/k8scluster_lib.resource
-Resource   ../lib/repo_lib.resource
+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/connectivity_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/k8scluster_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/repo_lib.robot
 
-Test Tags   k8s_13   cluster_k8s   daily   azure
+Force Tags   k8s_13   cluster_k8s   daily   azure
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   two_helm_oci_knf
-${VNFD_NAME}   two_helm_oci_knf
-${NSD_PKG}   two_helm_oci_ns
-${NSD_NAME}   two_helm_oci_ns
+${vnfd_pkg}   two_helm_oci_knf
+${vnfd_name}   two_helm_oci_knf
+${nsd_pkg}   two_helm_oci_ns
+${nsd_name}   two_helm_oci_ns
 
 # NS instance name and configuration
-${NS_NAME}   ldap
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}}], additionalParamsForVnf: [ {member-vnf-index: two_helm_oci, additionalParamsForKdu: [ {kdu_name: haproxy, additionalParams: {service: {type: LoadBalancer }, adminPassword: admin}}, {kdu_name: ldap, additionalParams: {service: {type: LoadBalancer }, adminPassword: admin}} ] } ] }
-
-${NS_ID}   ${EMPTY}
-${PUBLICKEY}   ${EMPTY}
-${VNF_MEMBER_INDEX}   two_helm_oci
-${KDU1_NAME}   haproxy
-${KDU2_NAME}   ldap
-${UPGRADE_ACTION}   upgrade
-${ROLLBACK_ACTION}   rollback
-${REPLICA_COUNT}   3
+${ns_name}   ldap
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}}], additionalParamsForVnf: [ {member-vnf-index: two_helm_oci, additionalParamsForKdu: [ {kdu_name: haproxy, additionalParams: {service: {type: LoadBalancer }, adminPassword: admin}}, {kdu_name: ldap, additionalParams: {service: {type: LoadBalancer }, adminPassword: admin}} ] } ] }
+
+${ns_id}   ${EMPTY}
+${publickey}   ${EMPTY}
+${vnf_member_index}   two_helm_oci
+${kdu1_name}   haproxy
+${kdu2_name}   ldap
+${upgrade_action}   upgrade
+${rollback_action}   rollback
+${replica_count}   3
 
 # OCI helm repo configuration
-${REPO_NAME}   osm-gitlab
-${REPO_URI}   %{OCI_REGISTRY_URL}
-${REPO_USER}   %{OCI_REGISTRY_USER}
-${REPO_PASSWORD}   %{OCI_REGISTRY_PASSWORD}
-
+${repo_name}   osm-gitlab
+${repo_uri}   %{OCI_REGISTRY_URL}
+${repo_user}   %{OCI_REGISTRY_USER}
+${repo_password}   %{OCI_REGISTRY_PASSWORD}
 
 *** Test Cases ***
 Create Package For CNF
     [Documentation]   Create Package For CNF
     [Tags]   prepare
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
 
 Create Package For NS
     [Documentation]   Create Package For NS
     [Tags]   prepare
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
 
 Create Helm OCI Repo
     [Documentation]   Create Helm OCI Repo for openldap kdu
     [Tags]   prepare
-    Create Repo   ${REPO_NAME}   ${REPO_URI}   helm-chart   ${REPO_USER}   ${REPO_PASSWORD}   --oci
+    Create Repo   ${repo_name}   ${repo_uri}   helm-chart   ${repo_user}   ${repo_password}   --oci
 
 Create Network Service Instance
     [Documentation]   Create Network Service Instance
     [Tags]   prepare
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Log   ${id}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
 
 Get Ns Id
     [Documentation]   Get ID of NS instance
     [Tags]   verify
-    ${id}=   Get Ns Id   ${NS_NAME}
-    Set Suite Variable   ${NS_ID}   ${id}
+    ${id}=   Get Ns Id   ${ns_name}
+    Set Suite Variable   ${ns_id}   ${id}
 
 Get Vnf Id
     [Documentation]   Get ID of VNF
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    @{vnfr_list}=   Get Ns Vnfr Ids   ${NS_ID}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    @{vnfr_list}=   Get Ns Vnfr Ids   ${ns_id}
     Log List   ${vnfr_list}
-    Set Suite Variable   ${VNF_ID}   ${vnfr_list}[0]
+    Set Suite Variable   ${vnf_id}   ${vnfr_list}[0]
 
 Execute Upgrade Operation over first KDU
     [Documentation]   Execute Upgrade Operation over first KDU
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute NS K8s Action   ${NS_NAME}   ${UPGRADE_ACTION}   ${VNF_MEMBER_INDEX}   ${KDU1_NAME}   replicaCount=${REPLICA_COUNT}
-    Log   ${ns_op_id}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute NS K8s Action   ${ns_name}   ${upgrade_action}   ${vnf_member_index}   ${kdu1_name}   replicaCount=${replica_count}
 
 Check Replicas After Upgrade Operation over first KDU
     [Documentation]   Check Replicas After Upgrade Operation over first KDU
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${count}=   Get Vnf Kdu Replica Count   ${VNF_ID}   ${KDU1_NAME}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${count}=   Get Vnf Kdu Replica Count   ${vnf_id}   ${kdu1_name}
     Log   ${count}
-    Should Be Equal As Integers   ${count}   ${REPLICA_COUNT}
+    Should Be Equal As Integers   ${count}   ${replica_count}
 
 Execute Rollback Operation over first KDU
     [Documentation]   Execute Rollback Operation over first KDU
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute NS K8s Action   ${NS_NAME}   ${ROLLBACK_ACTION}   ${VNF_MEMBER_INDEX}   ${KDU1_NAME}
-    Log   ${ns_op_id}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute NS K8s Action   ${ns_name}   ${rollback_action}   ${vnf_member_index}   ${kdu1_name}
 
 Check Replicas After Rollback Operation over first KDU
     [Documentation]   Check Replicas After Rollback Operation over first KDU
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${count}=   Get Vnf Kdu Replica Count   ${VNF_ID}   ${KDU1_NAME}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${count}=   Get Vnf Kdu Replica Count   ${vnf_id}   ${kdu1_name}
     Log   ${count}
     Should Be Empty   ${count}
 
 Execute Upgrade Operation over second KDU
     [Documentation]   Execute Upgrade Operation over second KDU
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute NS K8s Action   ${NS_NAME}   ${UPGRADE_ACTION}   ${VNF_MEMBER_INDEX}   ${KDU2_NAME}   replicaCount=${REPLICA_COUNT}
-    Log   ${ns_op_id}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute NS K8s Action   ${ns_name}   ${upgrade_action}   ${vnf_member_index}   ${kdu2_name}   replicaCount=${replica_count}
 
 Check Replicas After Upgrade Operation over second KDU
     [Documentation]   Check Replicas After Upgrade Operation over second KDU
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${count}=   Get Vnf Kdu Replica Count   ${VNF_ID}   ${KDU2_NAME}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${count}=   Get Vnf Kdu Replica Count   ${vnf_id}   ${kdu2_name}
     Log   ${count}
-    Should Be Equal As Integers   ${count}   ${REPLICA_COUNT}
+    Should Be Equal As Integers   ${count}   ${replica_count}
 
 Execute Rollback Operation over second KDU
     [Documentation]   Execute Rollback Operation over second KDU
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${ns_op_id}=   Execute NS K8s Action   ${NS_NAME}   ${ROLLBACK_ACTION}   ${VNF_MEMBER_INDEX}   ${KDU2_NAME}
-    Log   ${ns_op_id}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${ns_op_id}=   Execute NS K8s Action   ${ns_name}   ${rollback_action}   ${vnf_member_index}   ${kdu2_name}
 
 Check Replicas After Rollback Operation over second KDU
     [Documentation]   Check Replicas After Rollback Operation over second KDU
     [Tags]   verify
-    Variable Should Exist   ${NS_ID}   msg=Network service instance is not available
-    ${count}=   Get Vnf Kdu Replica Count   ${VNF_ID}   ${KDU2_NAME}
+    Variable Should Exist   ${ns_id}   msg=Network service instance is not available
+    ${count}=   Get Vnf Kdu Replica Count   ${vnf_id}   ${kdu2_name}
     Log   ${count}
     Should Be Empty   ${count}
 
 Delete Network Service Instance
     [Documentation]   Delete Network Service Instance
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+    Delete NS   ${ns_name}
 
 Delete Helm OCI Repo
     [Documentation]   Delete Helm OCI Repo
     [Tags]   prepare
-    Delete Repo   ${REPO_NAME}
+    Delete Repo   ${repo_name}
 
 Delete NS Descriptor Test
     [Documentation]   Delete NS Descriptor Test
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+    Delete NSD   ${nsd_name}
 
 Delete VNF Descriptor Test
     [Documentation]   Delete VNF Descriptor Test
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index 01c0e7e..3b9d215 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [LCMOP_01] Cancel an ongoing NS operation
 
@@ -21,77 +19,97 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ns_operation_lib.resource
-Resource   ../lib/connectivity_lib.resource
-Resource   ../lib/ssh_lib.resource
+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/connectivity_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
 
-Test Tags   lcmop_01   cluster_lcmop   daily
+Force Tags   lcmop_01   cluster_lcmop   daily
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   simple_ee_vnf
-${VNFD_NAME}   simple_ee-vnf
-${NSD_PKG}   simple_ee_ns
-${NSD_NAME}   simple_ee-ns
+${vnfd_pkg}   simple_ee_vnf
+${vnfd_name}   simple_ee-vnf
+${nsd_pkg}   simple_ee_ns
+${nsd_name}   simple_ee-ns
 
 # NS instance name and configuration
-${NS_NAME}   lcmop_01_cancel_operation_basic
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_name}   lcmop_01_cancel_operation_basic
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 
 *** Test Cases ***
 Create VNF Descriptor
     [Documentation]   Create the VNF descriptor
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    ${id}=   Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+    Set Suite Variable   ${vnfd_id}   ${id}
+
 
 Create NS Descriptor
     [Documentation]   Create the NS descriptor
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
     [Documentation]   Instantiate the Network service
-    ${id}=   Instantiate Network Service   ${NS_NAME}   ${NSD_NAME}   %{VIM_TARGET}   --config '${NS_CONFIG}'
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Instantiate Network Service   ${ns_name}   ${nsd_name}   %{VIM_TARGET}   --config '${ns_config}'
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get operation ID
     [Documentation]   Obtain the operation ID of the NS instantiation
-    ${id}=   Get Operations By Type   ${NS_ID}   instantiate
-    Set Suite Variable   ${OP_ID}   ${id}
+
+    ${id}=   Get Operations By Type   ${ns_id}   instantiate
+    Set Suite Variable   ${op_id}   ${id}
+
 
 Cancel operation
     [Documentation]   Cancel the ongoing NS instantiation
+
     Sleep   5s   Waiting before cancelling the operation
-    Cancel Operation By Id   ${OP_ID}
+    Cancel operation By Id   ${op_id}
+
 
 Check that operation is cancelled
     [Documentation]   Check that the operation is succesfully cancelled
-    Check For NS Operation Cancelled   ${OP_ID}
+
+    Check For NS Operation Cancelled   ${op_id}
+
 
 Delete NS Instance Test
     [Documentation]   Delete the cancelled NS instance
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor Test
     [Documentation]   Delete the NS descriptor
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor Test
     [Documentation]   Delete the VNF descriptor
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor, instance and vim
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index 6558c17..f37412d 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [QUOTAS-01] Quota enforcement.
 
@@ -19,151 +17,160 @@ Library   OperatingSystem
 Library   String
 Library   Collections
 
-Resource   ../lib/project_lib.resource
-Resource   ../lib/user_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/project_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/user_lib.robot
 
-Test Tags   quotas_01   cluster_main   daily   regression
+Force Tags   quotas_01   cluster_main   daily   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # VNFD package to use during test
-${VNFD_PKG}   hackfest_basic_vnf
+${vnfd_pkg}   hackfest_basic_vnf
 
 # Project names and quotas to use
-${PROJECT_1_NAME}   quotas_01_proj_1
-${PROJECT_2_NAME}   quotas_01_proj_2
-${PROJECT_3_NAME}   quotas_01_proj_3
-${PROJECT_1_QUOTAS}   vnfds=1,nsds=2,ns_instances=3
-${PROJECT_2_QUOTAS}   vnfds=1,nsds=1,ns_instances=1
-${PROJECT_3_QUOTAS}   vnfds=5,nsds=,ns_instances=
+${project_1_name}   quotas_01_proj_1
+${project_2_name}   quotas_01_proj_2
+${project_3_name}   quotas_01_proj_3
+${project_1_quotas}   vnfds=1,nsds=2,ns_instances=3
+${project_2_quotas}   vnfds=1,nsds=1,ns_instances=1
+${project_3_quotas}   vnfds=5,nsds=,ns_instances=
 
 # User name and password for project
-${USERNAME}   quotas_01_user
-${USER_PASSWORD}   Quotas_01_pass
-${USER_NEW_PASSWORD}   Quotas_01_new_pass
+${user_name}   quotas_01_user
+${user_password}   Quotas_01_pass
+${user_new_password}   Quotas_01_new_pass
 
-${SUCCESS_RETURN_CODE}   0
+${success_return_code}   0
 
 
 *** Test Cases ***
 Create First Project With Quotas
-    [Documentation]   Create a first project with quotas, then get the project quotas and check that they are correct.
-    Create Project With Quotas   ${PROJECT_1_NAME}   ${PROJECT_1_QUOTAS}
-    ${project_1_vnfds}=   Get Project Quotas   ${PROJECT_1_NAME}   vnfds
+
+    Create Project With Quotas   ${project_1_name}   ${project_1_quotas}
+    ${project_1_vnfds}=   Get Project Quotas   ${project_1_name}   vnfds
     Should Be Equal As Integers   1   ${project_1_vnfds}
-    ${project_1_nsds}=   Get Project Quotas   ${PROJECT_1_NAME}   nsds
+    ${project_1_nsds}=   Get Project Quotas   ${project_1_name}   nsds
     Should Be Equal As Integers   2   ${project_1_nsds}
-    ${project_1_ns_instances}=   Get Project Quotas   ${PROJECT_1_NAME}   ns_instances
+    ${project_1_ns_instances}=   Get Project Quotas   ${project_1_name}   ns_instances
     Should Be Equal As Integers   3   ${project_1_ns_instances}
 
+
 Create Second Project With Quotas
-    [Documentation]   Create a second project with quotas, then get the project quotas and check that they are correct.
-    Create Project With Quotas   ${PROJECT_2_NAME}   ${PROJECT_2_QUOTAS}
-    ${project_2_vnfds}=   Get Project Quotas   ${PROJECT_2_NAME}   vnfds
+
+    Create Project With Quotas   ${project_2_name}   ${project_2_quotas}
+    ${project_2_vnfds}=   Get Project Quotas   ${project_2_name}   vnfds
     Should Be Equal As Integers   1   ${project_2_vnfds}
-    ${project_2_nsds}=   Get Project Quotas   ${PROJECT_2_NAME}   nsds
+    ${project_2_nsds}=   Get Project Quotas   ${project_2_name}   nsds
     Should Be Equal As Integers   1   ${project_2_nsds}
-    ${project_2_ns_instances}=   Get Project Quotas   ${PROJECT_2_NAME}   ns_instances
+    ${project_2_ns_instances}=   Get Project Quotas   ${project_2_name}   ns_instances
     Should Be Equal As Integers   1   ${project_2_ns_instances}
 
 Create User In Projects
-    [Documentation]   Create a user with role project_admin in both projects.
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm user-create ${USERNAME} --password ${USER_PASSWORD} --project-role-mappings ${PROJECT_1_NAME},project_admin --project-role-mappings ${PROJECT_2_NAME},project_admin
-    Log   ${rc},${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Check If User Is Assigned To Project   ${USERNAME}   ${PROJECT_1_NAME}
-    Check If User Is Assigned To Project   ${USERNAME}   ${PROJECT_2_NAME}
-    Update User Password   ${USERNAME}   ${USER_PASSWORD}   ${USER_NEW_PASSWORD}
+
+    ${rc}   ${stdout}=   Run And Return RC And Output   osm user-create ${user_name} --password ${user_password} --project-role-mappings ${project_1_name},project_admin --project-role-mappings ${project_2_name},project_admin
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Check If User Is Assigned To Project   ${user_name}   ${project_1_name}
+    Check If User Is Assigned To Project   ${user_name}   ${project_2_name}
+    Update User Password   ${user_name}   ${user_password}   ${user_new_password}
+
 
 Change First Project Name to Third Project Name
-    [Documentation]   Rename first project. From now on, the project will be considered for the tests a third project.
-    Update Project Name   ${PROJECT_1_NAME}   ${PROJECT_3_NAME}
-    ${project_3_vnfds}=   Get Project Quotas   ${PROJECT_3_NAME}   vnfds
+
+    Update Project Name   ${project_1_name}   ${project_3_name}
+    ${project_3_vnfds}=   Get Project Quotas   ${project_3_name}   vnfds
     Should Be Equal As Integers   1   ${project_3_vnfds}
-    ${project_3_nsds}=   Get Project Quotas   ${PROJECT_3_NAME}   nsds
+    ${project_3_nsds}=   Get Project Quotas   ${project_3_name}   nsds
     Should Be Equal As Integers   2   ${project_3_nsds}
-    ${project_3_ns_instances}=   Get Project Quotas   ${PROJECT_3_NAME}   ns_instances
+    ${project_3_ns_instances}=   Get Project Quotas   ${project_3_name}   ns_instances
     Should Be Equal As Integers   3   ${project_3_ns_instances}
-    Check If User Is Assigned To Project   ${USERNAME}   ${PROJECT_3_NAME}
+    Check If User Is Assigned To Project   ${user_name}   ${project_3_name}
+
 
 Create VNFDs On Third Project Until Exceed Quota
-    [Documentation]   Upload VNF packages in the third project.
-    Create VNFD In Project   ${PROJECT_3_NAME}   '%{PACKAGES_FOLDER}/${VNFD_PKG}'   ${USERNAME}   ${USER_NEW_PASSWORD}   override='id=v1;product-name=v1'
-    Run Keyword And Expect Error   *   Create VNFD In Project   ${PROJECT_3_NAME}   '%{PACKAGES_FOLDER}/${VNFD_PKG}'   ${USERNAME}   ${USER_NEW_PASSWORD}   override='id=v2;product-name=v2'
+
+    Create VNFD In Project   ${project_3_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=v1;product-name=v1'
+    Run Keyword And Expect Error   *   Create VNFD In Project   ${project_3_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=v2;product-name=v2'
+
 
 Increase Third Project Quotas
-    [Documentation]   Update the quotas of the third project.
-    Update Project Quotas   ${PROJECT_3_NAME}   ${PROJECT_3_QUOTAS}
-    ${project_3_vnfds}=   Get Project Quotas   ${PROJECT_3_NAME}   vnfds
+
+    Update Project Quotas   ${project_3_name}   ${project_3_quotas}
+    ${project_3_vnfds}=   Get Project Quotas   ${project_3_name}   vnfds
     Should Be Equal As Integers   5   ${project_3_vnfds}
 
+
 Create More VNFDs On Third Project Until Exceed Quota
-    [Documentation]   Upload VNF packages in the third project until the quota is reached, so that an error is obtained.
-    Create VNFD In Project   ${PROJECT_3_NAME}   '%{PACKAGES_FOLDER}/${VNFD_PKG}'   ${USERNAME}   ${USER_NEW_PASSWORD}   override='id=v2;product-name=v2'
-    Create VNFD In Project   ${PROJECT_3_NAME}   '%{PACKAGES_FOLDER}/${VNFD_PKG}'   ${USERNAME}   ${USER_NEW_PASSWORD}   override='id=v3;product-name=v3'
-    Create VNFD In Project   ${PROJECT_3_NAME}   '%{PACKAGES_FOLDER}/${VNFD_PKG}'   ${USERNAME}   ${USER_NEW_PASSWORD}   override='id=v4;product-name=v4'
-    Create VNFD In Project   ${PROJECT_3_NAME}   '%{PACKAGES_FOLDER}/${VNFD_PKG}'   ${USERNAME}   ${USER_NEW_PASSWORD}   override='id=v5;product-name=v5'
-    Run Keyword And Expect Error   *   Create VNFD In Project   ${PROJECT_3_NAME}   '%{PACKAGES_FOLDER}/${VNFD_PKG}'   ${USERNAME}   ${USER_NEW_PASSWORD}   override='id=v6;product-name=v6'
+
+    Create VNFD In Project   ${project_3_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=v2;product-name=v2'
+    Create VNFD In Project   ${project_3_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=v3;product-name=v3'
+    Create VNFD In Project   ${project_3_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=v4;product-name=v4'
+    Create VNFD In Project   ${project_3_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=v5;product-name=v5'
+    Run Keyword And Expect Error   *   Create VNFD In Project   ${project_3_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=v6;product-name=v6'
+
 
 Create VNFDs On Second Project Until Exceed Quota
-    [Documentation]   Upload VNF packages in the second project until the quota is reached, so that an error is obtained.
-    Create VNFD In Project   ${PROJECT_2_NAME}   '%{PACKAGES_FOLDER}/${VNFD_PKG}'   ${USERNAME}   ${USER_NEW_PASSWORD}   override='id=vp2_1;product-name=vp2_1'
-    Run Keyword And Expect Error   *   Create VNFD In Project   ${PROJECT_2_NAME}   '%{PACKAGES_FOLDER}/${VNFD_PKG}'   ${USERNAME}   ${USER_NEW_PASSWORD}   override='id=vp2_2;product-name=vp2_2'
+
+    Create VNFD In Project   ${project_2_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=vp2_1;product-name=vp2_1'
+    Run Keyword And Expect Error   *   Create VNFD In Project   ${project_2_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=vp2_2;product-name=vp2_2'
+
 
 Check Project Scopes
-    [Documentation]   Check that the user can see a VNF package in both projects.
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm --project ${PROJECT_3_NAME} --password ${USER_NEW_PASSWORD} --user ${USERNAME} vnfpkg-show vp2_1
+
+    ${rc}   ${stdout}=   Run And Return RC And Output   osm --project ${project_3_name} --password ${user_new_password} --user ${user_name} vnfpkg-show vp2_1
     Log   ${stdout}
-    Should Not Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm --project ${PROJECT_2_NAME} --password ${USER_NEW_PASSWORD} --user ${USERNAME} vnfpkg-show v1
+    Should Not Be Equal As Integers   ${rc}   ${success_return_code}
+    ${rc}   ${stdout}=   Run And Return RC And Output   osm --project ${project_2_name} --password ${user_new_password} --user ${user_name} vnfpkg-show v1
     Log   ${stdout}
-    Should Not Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
+    Should Not Be Equal As Integers   ${rc}   ${success_return_code}
+
 
 Delete Second Project VNFD
-    [Documentation]   Delete VNF packages from second project.
     [Tags]   cleanup
-    Delete VNFD In Project   ${PROJECT_2_NAME}   vp2_1   ${USERNAME}   ${USER_NEW_PASSWORD}
+
+    Delete VNFD In Project   ${project_2_name}   vp2_1   ${user_name}   ${user_new_password}
+
 
 Delete Third Project VNFDs
-    [Documentation]   Delete VNF packages from third project.
     [Tags]   cleanup
-    Delete VNFD In Project   ${PROJECT_3_NAME}   v1   ${USERNAME}   ${USER_NEW_PASSWORD}
-    Delete VNFD In Project   ${PROJECT_3_NAME}   v2   ${USERNAME}   ${USER_NEW_PASSWORD}
-    Delete VNFD In Project   ${PROJECT_3_NAME}   v3   ${USERNAME}   ${USER_NEW_PASSWORD}
-    Delete VNFD In Project   ${PROJECT_3_NAME}   v4   ${USERNAME}   ${USER_NEW_PASSWORD}
-    Delete VNFD In Project   ${PROJECT_3_NAME}   v5   ${USERNAME}   ${USER_NEW_PASSWORD}
+
+    Delete VNFD In Project   ${project_3_name}   v1   ${user_name}   ${user_new_password}
+    Delete VNFD In Project   ${project_3_name}   v2   ${user_name}   ${user_new_password}
+    Delete VNFD In Project   ${project_3_name}   v3   ${user_name}   ${user_new_password}
+    Delete VNFD In Project   ${project_3_name}   v4   ${user_name}   ${user_new_password}
+    Delete VNFD In Project   ${project_3_name}   v5   ${user_name}   ${user_new_password}
+
 
 Delete Second Project After Removing User From It
-    [Documentation]   Delete user from second project, then delete the second project.
     [Tags]   cleanup
-    Run Keyword And Expect Error   *   Delete Project   ${PROJECT_2_NAME}
-    Remove User From Project   ${USERNAME}   ${PROJECT_2_NAME}
-    Delete Project   ${PROJECT_2_NAME}
+
+    Run Keyword And Expect Error   *   Delete Project   ${project_2_name}
+    Remove User From Project   ${user_name}   ${project_2_name}
+    Delete Project   ${project_2_name}
+
 
 Delete Projects User
-    [Documentation]   Delete user.
     [Tags]   cleanup
-    ${rc}=   Run And Return RC   osm user-delete ${USERNAME}
-    Log   ${rc}
+
+    ${rc}=   Run And Return RC   osm user-delete ${user_name}
+
 
 Delete Third Project
-    [Documentation]   Delete third project.
     [Tags]   cleanup
-    Delete Project   ${PROJECT_3_NAME}
+
+    Delete Project   ${project_3_name}
 
 
 *** Keywords ***
 Suite Cleanup
-    [Documentation]   Test Suite Cleanup: Deleting VNF packages, projects and users.
-    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${PROJECT_2_NAME}   vp2_1   ${USERNAME}   ${USER_NEW_PASSWORD}
-    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${PROJECT_3_NAME}   v1   ${USERNAME}   ${USER_NEW_PASSWORD}
-    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${PROJECT_3_NAME}   v2   ${USERNAME}   ${USER_NEW_PASSWORD}
-    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${PROJECT_3_NAME}   v3   ${USERNAME}   ${USER_NEW_PASSWORD}
-    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${PROJECT_3_NAME}   v4   ${USERNAME}   ${USER_NEW_PASSWORD}
-    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${PROJECT_3_NAME}   v5   ${USERNAME}   ${USER_NEW_PASSWORD}
-    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete Project   ${PROJECT_1_NAME}
-    Run Keyword If Any Tests Failed   Delete Project   ${PROJECT_2_NAME}
-    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete Project   ${PROJECT_3_NAME}
-    Run And Return RC   osm user-delete ${USERNAME}
+    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${project_2_name}   vp2_1   ${user_name}   ${user_new_password}
+    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${project_3_name}   v1   ${user_name}   ${user_new_password}
+    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${project_3_name}   v2   ${user_name}   ${user_new_password}
+    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${project_3_name}   v3   ${user_name}   ${user_new_password}
+    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${project_3_name}   v4   ${user_name}   ${user_new_password}
+    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${project_3_name}   v5   ${user_name}   ${user_new_password}
+    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete Project   ${project_1_name}
+    Run Keyword If Any Tests Failed   Delete Project   ${project_2_name}
+    Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete Project   ${project_3_name}
+    Run And Return RC   osm user-delete ${user_name}
index 871972e..2a98e13 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [SA-01] VNF with VIM-based metrics.
 
@@ -19,13 +17,13 @@ Library   OperatingSystem
 Library   String
 Library   Collections
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/prometheus_lib.resource
+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/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/prometheus_lib.robot
 
-Test Tags   sa_01   cluster_sa   daily   regression
+Force Tags   sa_01   cluster_sa   daily   regression
 
 Suite Setup   Run Keyword And Ignore Error   Suite Preparation
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
@@ -33,81 +31,92 @@ Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 *** Variables ***
 # NS instantiation parameters
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   hackfest_basic_metrics_vnf
-${VNFD_NAME}   hackfest_basic_metrics-vnf
-${NSD_PKG}   hackfest_basic_metrics_ns
-${NSD_NAME}   hackfest_basic-ns-metrics
+${vnfd_pkg}   hackfest_basic_metrics_vnf
+${vnfd_name}   hackfest_basic_metrics-vnf
+${nsd_pkg}   hackfest_basic_metrics_ns
+${nsd_name}   hackfest_basic-ns-metrics
 
 # NS instance name
-${NS_NAME}   sa_01-vnf_with_vim_metrics_test
+${ns_name}   sa_01-vnf_with_vim_metrics_test
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
 
 # Prometheus polling interval and retries
-${PROMETHEUS_POLL_RETRIES}   15 times
-${PROMETHEUS_POLL_TIMEOUT}   1 minute
+${prometheus_poll_retries}   15 times
+${prometheus_poll_timeout}   1 minute
 
 # Prometheus metrics to retrieve
-${METRIC_1_NAME}   osm_cpu_utilization
-${METRIC_2_NAME}   osm_average_memory_utilization
+${metric_1_name}   osm_cpu_utilization
+${metric_2_name}   osm_average_memory_utilization
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get VNF VIM-based Metrics
-    [Documentation]   Check that the expected metrics are present in Prometheus (pushed from SA modules).
-    Variable Should Exist   ${PROMETHEUS_POLL_RETRIES}   msg=Metric polling retries is not available
-    Variable Should Exist   ${PROMETHEUS_POLL_TIMEOUT}   msg=Metric polling timeout is not available
-    Variable Should Exist   ${PROMETHEUS_HOST}   msg=Prometheus address is not available
-    Variable Should Exist   ${PROMETHEUS_PORT}   msg=Prometheus port is not available
-    Variable Should Exist   ${METRIC_1_NAME}   msg=Prometheus first metric name is not available
-    Variable Should Exist   ${METRIC_2_NAME}   msg=Prometheus second metric name is not available
-    ${metric_filter}=   Set Variable   ns_id=${NS_ID}
-    ${metric_1_value}=   Wait Until Keyword Succeeds   ${PROMETHEUS_POLL_RETRIES}   ${PROMETHEUS_POLL_TIMEOUT}   Get Metric   ${PROMETHEUS_HOST}   ${PROMETHEUS_PORT}   ${PROMETHEUS_USER}   ${PROMETHEUS_PASSWORD}   ${METRIC_1_NAME}   ${metric_filter}
-    IF   ${metric_1_value} <= 0   Fail   msg=The metric '${METRIC_1_NAME}' value is '${metric_1_value}'
-    ${metric_2_value}=   Wait Until Keyword Succeeds   ${PROMETHEUS_POLL_RETRIES}   ${PROMETHEUS_POLL_TIMEOUT}   Get Metric   ${PROMETHEUS_HOST}   ${PROMETHEUS_PORT}   ${PROMETHEUS_USER}   ${PROMETHEUS_PASSWORD}   ${METRIC_2_NAME}   ${metric_filter}
-    IF   ${metric_2_value} <= 0   Fail   msg=The metric '${METRIC_2_NAME}' value is '${metric_2_value}'
+
+    Variable Should Exist   ${prometheus_poll_retries}   msg=Metric polling retries is not available
+    Variable Should Exist   ${prometheus_poll_timeout}   msg=Metric polling timeout is not available
+    Variable Should Exist   ${prometheus_host}   msg=Prometheus address is not available
+    Variable Should Exist   ${prometheus_port}   msg=Prometheus port is not available
+    Variable Should Exist   ${metric_1_name}   msg=Prometheus first metric name is not available
+    Variable Should Exist   ${metric_2_name}   msg=Prometheus second metric name is not available
+    ${metric_filter}=   Set Variable   ns_id=${ns_id}
+    ${metric_1_value}=   Wait Until Keyword Succeeds   ${prometheus_poll_retries}   ${prometheus_poll_timeout}   Get Metric   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   ${metric_1_name}   ${metric_filter}
+    Run Keyword If   ${metric_1_value} <= 0   Fail   msg=The metric '${metric_1_name}' value is '${metric_1_value}'
+    ${metric_2_value}=   Wait Until Keyword Succeeds   ${prometheus_poll_retries}   ${prometheus_poll_timeout}   Get Metric   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   ${metric_2_name}   ${metric_filter}
+    Run Keyword If   ${metric_2_value} <= 0   Fail   msg=The metric '${metric_2_name}' value is '${metric_2_value}'
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Preparation
     [Documentation]   Test Suite Preparation: Setting Prometheus Testsuite Variables
+
     Set Testsuite Prometheus Variables
 
+
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index f760871..b5910f5 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [SA-02] VNF with VIM-based metrics and auto-scaling.
 
@@ -20,13 +18,13 @@ Library   String
 Library   Collections
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/prometheus_lib.resource
+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/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/prometheus_lib.robot
 
-Test Tags   sa_02   cluster_sa   daily   regression   sanity   azure
+Force Tags   sa_02   cluster_sa   daily   regression   sanity   azure
 
 Suite Setup   Run Keyword And Ignore Error   Suite Preparation
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
@@ -34,156 +32,170 @@ Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 *** Variables ***
 # NS instantiation parameters
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   hackfest_basic_metrics_vnf
-${VNFD_NAME}   hackfest_basic_metrics-vnf
-${NSD_PKG}   hackfest_basic_metrics_ns
-${NSD_NAME}   hackfest_basic-ns-metrics
+${vnfd_pkg}   hackfest_basic_metrics_vnf
+${vnfd_name}   hackfest_basic_metrics-vnf
+${nsd_pkg}   hackfest_basic_metrics_ns
+${nsd_name}   hackfest_basic-ns-metrics
 
 # NS instance name and id
-${NS_ID}   ${EMPTY}
-${NS_NAME}   sa_02
+${ns_id}   ${EMPTY}
+${ns_name}   sa_02
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   osm4u
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   osm4u
 
 # Prometheus polling interval and retries
-${PROMETHEUS_POLL_RETRIES}   15 times
-${PROMETHEUS_POLL_TIMEOUT}   1 minute
+${prometheus_poll_retries}   15 times
+${prometheus_poll_timeout}   1 minute
 
 # Prometheus metrics to retrieve
-${METRIC_NAME}   osm_cpu_utilization
+${metric_name}   osm_cpu_utilization
 
 # VNF Variables
-${VNF_MEMBER_INDEX}   vnf
-${VNF_IP_ADDR}   ${EMPTY}
-${VNF_ID}   ${EMPTY}
+${vnf_member_index}   vnf
+${vnf_ip_addr}   ${EMPTY}
+${vnf_id}   ${EMPTY}
 
-${SUCCESS_RETURN_CODE}   0
+${success_return_code}   0
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Get Thresholds From VNF
-    [Documentation]   Read metric threshold and threshold time from VNF descriptor.
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnfpkg-show ${VNFD_NAME} --literal | yq -r '.df[0]."scaling-aspect"[0]."scaling-policy"[0]."scaling-criteria"[0]."scale-out-threshold"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnfpkg-show ${vnfd_name} --literal | yq -r '.df[0]."scaling-aspect"[0]."scaling-policy"[0]."scaling-criteria"[0]."scale-out-threshold"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
     ${scaleout_threshold}=   Convert To Number   ${stdout}
-    Set Suite Variable   ${METRIC_THRESHOLD}   ${scaleout_threshold}
-    Log   ${METRIC_THRESHOLD}
-    ${rc}   ${stdout}=   Run And Return RC And Output   osm vnfpkg-show ${VNFD_NAME} --literal | yq -r '.df[0]."scaling-aspect"[0]."scaling-policy"[0]."threshold-time"'
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}   msg=${stdout}   values=False
+    Set Suite Variable   ${metric_threshold}   ${scaleout_threshold}
+    Log   ${metric_threshold}
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm vnfpkg-show ${vnfd_name} --literal | yq -r '.df[0]."scaling-aspect"[0]."scaling-policy"[0]."threshold-time"'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${stdout}   values=False
     ${threshold_time_value}=   Convert To Number   ${stdout}
-    Set Suite Variable   ${THRESHOLD_TIME}   ${threshold_time_value}
-    Log   ${THRESHOLD_TIME}
+    Set Suite Variable   ${threshold_time}   ${threshold_time_value}
+    Log   ${threshold_time}
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate the NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get VNF Id
-    [Documentation]   Retrieve VNF instance id to be used later on.
-    @{vnfr_list}=   Get Ns Vnfr Ids   ${NS_ID}
+
+    @{vnfr_list}=   Get Ns Vnfr Ids   ${ns_id}
     Log List   ${vnfr_list}
-    Set Suite Variable   ${VNF_ID}   ${vnfr_list}[0]
+    Set Suite Variable   ${vnf_id}   ${vnfr_list}[0]
+
 
 Get VNF IP Address
-    [Documentation]   Get the mgmt IP address of the VNF to be used in later tests.
-    ${ip_addr}=   Get Vnf Management Ip Address   ${NS_ID}   ${VNF_MEMBER_INDEX}
+
+    ${ip_addr}=   Get Vnf Management Ip Address   ${ns_id}   ${vnf_member_index}
     Log   ${ip_addr}
-    Set Suite Variable   ${VNF_IP_ADDR}   ${ip_addr}
+    Set Suite Variable   ${vnf_ip_addr}   ${ip_addr}
+
 
 Get VNF VIM-based Metric Before Auto-scaling
-    [Documentation]   Get from Prometheus the VIM metric associated to the VNF auto-scaling group.
-    Variable Should Exist   ${PROMETHEUS_POLL_RETRIES}   msg=Metric polling retries is not available
-    Variable Should Exist   ${PROMETHEUS_POLL_TIMEOUT}   msg=Metric polling timeout is not available
-    Variable Should Exist   ${PROMETHEUS_HOST}   msg=Prometheus address is not available
-    Variable Should Exist   ${PROMETHEUS_PORT}   msg=Prometheus port is not available
-    Variable Should Exist   ${METRIC_NAME}   msg=Prometheus metric name is not available
-    ${metric_filter}=   Set Variable   ns_id=${NS_ID}
-    ${metric_value}=   Wait Until Keyword Succeeds   ${PROMETHEUS_POLL_RETRIES}   ${PROMETHEUS_POLL_TIMEOUT}   Get Metric   ${PROMETHEUS_HOST}   ${PROMETHEUS_PORT}   ${PROMETHEUS_USER}   ${PROMETHEUS_PASSWORD}   ${METRIC_NAME}   ${metric_filter}
-    IF   ${metric_value} <= 0
-        Fail   msg=The metric '${METRIC_NAME}' value is '${metric_value}'
-    END
-    IF   ${metric_value} >= ${METRIC_THRESHOLD}
-        Fail   msg=The metric '${METRIC_NAME}' value is higher than '${METRIC_THRESHOLD}' before scaling
-    END
+
+    Variable Should Exist   ${prometheus_poll_retries}   msg=Metric polling retries is not available
+    Variable Should Exist   ${prometheus_poll_timeout}   msg=Metric polling timeout is not available
+    Variable Should Exist   ${prometheus_host}   msg=Prometheus address is not available
+    Variable Should Exist   ${prometheus_port}   msg=Prometheus port is not available
+    Variable Should Exist   ${metric_name}   msg=Prometheus metric name is not available
+    ${metric_filter}=   Set Variable   ns_id=${ns_id}
+    ${metric_value}=   Wait Until Keyword Succeeds   ${prometheus_poll_retries}   ${prometheus_poll_timeout}   Get Metric   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   ${metric_name}   ${metric_filter}
+    Run Keyword If   ${metric_value} <= 0   Fail   msg=The metric '${metric_name}' value is '${metric_value}'
+    Run Keyword If   ${metric_value} >= ${metric_threshold}   Fail   msg=The metric '${metric_name}' value is higher than '${metric_threshold}' before scaling
+
 
 Increase VIM-based Metric To Force Auto-scaling
-    [Documentation]   Connect to the VNF via SSH and force VIM metric to increase.
-    Variable Should Exist   ${PRIVATEKEY}   msg=SSH private key not available
-    Execute Remote Command Check Rc Return Output   ${VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   for i in {1..9}; do yes &> /dev/null & done
+
+    Variable Should Exist   ${privatekey}   msg=SSH private key not available
+    Execute Remote Command Check Rc Return Output   ${vnf_ip_addr}   ${username}   ${password}   ${privatekey}   for i in {1..9}; do yes &> /dev/null & done
+
 
 Wait VIM-based Metric To Exceed Threshold
-    [Documentation]   Wait until the VIM metric exceeds threshold, which should lead to a scale up.
-    Variable Should Exist   ${PROMETHEUS_POLL_RETRIES}   msg=Metric polling retries is not available
-    Variable Should Exist   ${PROMETHEUS_POLL_TIMEOUT}   msg=Metric polling timeout is not available
-    Wait Until Keyword Succeeds   ${PROMETHEUS_POLL_RETRIES}   ${PROMETHEUS_POLL_TIMEOUT}   Check VIM-based Metric Exceeds Threshold
+
+    Variable Should Exist   ${prometheus_poll_retries}   msg=Metric polling retries is not available
+    Variable Should Exist   ${prometheus_poll_timeout}   msg=Metric polling timeout is not available
+    Wait Until Keyword Succeeds   ${prometheus_poll_retries}   ${prometheus_poll_timeout}   Check VIM-based Metric Exceeds Threshold
+
 
 Wait Threshold Time
-    [Documentation]   Wait until the VIM metric has exceeded threshold for the defined period in the descriptor.
-    ${threshold_time_sleep}=   Evaluate   ${THRESHOLD_TIME} + 1
+
+    ${threshold_time_sleep}=   Evaluate   ${threshold_time} + 1
     Sleep   ${threshold_time_sleep} minutes   Wait scale-out threshold time plus 1 minute
 
+
 Check VIM-based Metric Exceeds Threshold After Threshold-time
-    [Documentation]   Check that the VIM metric has exceeded the threshold.
+
     Check VIM-based Metric Exceeds Threshold
 
+
 Get VDUs After Auto-scaling
-    [Documentation]   Check that the VNF has scaled up and the humber of VDUs has increased.
+
     Sleep   2 minutes   Wait for auto-scale to take place
-    @{vdur_list}=   Get Vnf Vdur Names   ${VNF_ID}
+    @{vdur_list}=   Get Vnf Vdur Names   ${vnf_id}
     Log List   ${vdur_list}
     ${vdurs}=   Get Length   ${vdur_list}
-    IF   ${vdurs} <= 1   Fail   msg=There is no new VDU after auto-scaling
+    Run Keyword If   ${vdurs} <= 1   Fail   msg=There is no new VDU after auto-scaling
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Preparation
     [Documentation]   Test Suite Preparation: Setting Prometheus Testsuite Variables
+
     Set Testsuite Prometheus Variables
 
+
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
 
 Check VIM-based Metric Exceeds Threshold
     [Documentation]   Auxiliar keyword to check if metric exceeds threshold
-    Variable Should Exist   ${PROMETHEUS_HOST}   msg=Prometheus address is not available
-    Variable Should Exist   ${PROMETHEUS_PORT}   msg=Prometheus port is not available
-    Variable Should Exist   ${METRIC_NAME}   msg=Prometheus metric name is not available
-    ${metric_filter}=   Set Variable   ns_id=${NS_ID}
-    ${metric_value}=   Get Metric   ${PROMETHEUS_HOST}   ${PROMETHEUS_PORT}   ${PROMETHEUS_USER}   ${PROMETHEUS_PASSWORD}   ${METRIC_NAME}   ${metric_filter}
-    IF   ${metric_value} <= ${METRIC_THRESHOLD}
-        Fail   msg=The metric '${METRIC_NAME}' value is '${metric_value}' which is lower than '${METRIC_THRESHOLD}'
-    END
+
+    Variable Should Exist   ${prometheus_host}   msg=Prometheus address is not available
+    Variable Should Exist   ${prometheus_port}   msg=Prometheus port is not available
+    Variable Should Exist   ${metric_name}   msg=Prometheus metric name is not available
+    ${metric_filter}=   Set Variable   ns_id=${ns_id}
+    ${metric_value}=   Get Metric   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   ${metric_name}   ${metric_filter}
+    Run Keyword If   ${metric_value} <= ${metric_threshold}   Fail   msg=The metric '${metric_name}' value is '${metric_value}' which is lower than '${metric_threshold}'
index a26ca11..d79a762 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [SA-07] Events or alarms coming from SA-related VNFs in the NS.
 
@@ -20,13 +18,13 @@ Library   String
 Library   Collections
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/prometheus_lib.resource
+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/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/prometheus_lib.robot
 
-Test Tags   sa_07   cluster_sa   daily   regression
+Force Tags   sa_07   cluster_sa   daily   regression
 
 Suite Setup   Run Keyword And Ignore Error   Suite Preparation
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
@@ -34,159 +32,179 @@ Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 *** Variables ***
 # NS instantiation parameters
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   cirros_alarm_vnf
-${VNFD_NAME}   cirros_alarm-vnf
-${VNFD_FILE}   cirros_alarm_vnfd.yaml
-${NEW_VNFD_PKG}   new_cirros_alarm_vnf
-${NSD_PKG}   cirros_alarm_ns
-${NSD_NAME}   cirros_alarm-ns
+${vnfd_pkg}   cirros_alarm_vnf
+${vnfd_name}   cirros_alarm-vnf
+${vnfd_file}   cirros_alarm_vnfd.yaml
+${new_vnfd_pkg}   new_cirros_alarm_vnf
+${nsd_pkg}   cirros_alarm_ns
+${nsd_name}   cirros_alarm-ns
 
 # NS instance name and id
-${NS_ID}   ${EMPTY}
-${NS_NAME}   sa_07-alarm_test
+${ns_id}   ${EMPTY}
+${ns_name}   sa_07-alarm_test
 
 # Webhook NS and VNF descriptor package folder and ids
-${WS_VNFD_PKG}   hackfest_basic_vnf
-${WS_NSD_PKG}   hackfest_basic_ns
-${WS_VNFD_NAME}   hackfest_basic-vnf
-${WS_NSD_NAME}   hackfest_basic-ns
+${ws_vnfd_pkg}   hackfest_basic_vnf
+${ws_nsd_pkg}   hackfest_basic_ns
+${ws_vnfd_name}   hackfest_basic-vnf
+${ws_nsd_name}   hackfest_basic-ns
 
 # Webhook NS instance name and id
-${WS_NS_ID}   ${EMPTY}
-${WS_NS_NAME}   sa_07-webhook_service_test
+${ws_ns_id}   ${EMPTY}
+${ws_ns_name}   sa_07-webhook_service_test
 
 # Webhook NS Variables
-${WS_VNF_MEMBER_INDEX}   vnf
-${WS_VNF_IP_ADDR}   ${EMPTY}
-${WS_LOG_FILE}   webhook.log
-${WS_PORT}   5212
-${WS_ALARM_MSG}   notify_alarm
+${ws_vnf_member_index}   vnf
+${ws_vnf_ip_addr}   ${EMPTY}
+${ws_log_file}   webhook.log
+${ws_port}   5212
+${ws_alarm_msg}   notify_alarm
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
 # Prometheus polling interval and retries
-${PROMETHEUS_POLL_RETRIES}   15 times
-${PROMETHEUS_POLL_TIMEOUT}   1 minute
+${prometheus_poll_retries}   15 times
+${prometheus_poll_timeout}   1 minute
 
 # Prometheus metrics to retrieve
-${METRIC_NAME}   osm_cpu_utilization
+${metric_name}   osm_cpu_utilization
 
-${SUCCESS_RETURN_CODE}   0
+${success_return_code}   0
 
 
 *** Test Cases ***
 Create Webhook Service VNF Descriptor
-    [Documentation]   Upload VNF package with a webhook service for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${WS_VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${ws_vnfd_pkg}'
+
 
 Create Webhook Service NS Descriptor
-    [Documentation]   Upload NS package with a webhook service for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${WS_NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${ws_nsd_pkg}'
+
 
 Instantiate Webhook Service Network Service
-    [Documentation]   Instantiate NS with the webhook for the testsuite.
-    ${id}=   Create Network Service   ${WS_NSD_NAME}   %{VIM_TARGET}   ${WS_NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${WS_NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${ws_nsd_name}   %{VIM_TARGET}   ${ws_ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ws_ns_id}   ${id}
+
 
 Get Webhook Service VNF IP Address
-    [Documentation]   Get the mgmt IP address of the VNF offering the webhook service.
-    ${ip_addr}=   Get Vnf Management Ip Address   ${WS_NS_ID}   ${WS_VNF_MEMBER_INDEX}
+
+    ${ip_addr}=   Get Vnf Management Ip Address   ${ws_ns_id}   ${ws_vnf_member_index}
     Log   ${ip_addr}
-    Set Suite Variable   ${WS_VNF_IP_ADDR}   ${ip_addr}
+    Set Suite Variable   ${ws_vnf_ip_addr}   ${ip_addr}
+
 
 Start Webhook Service
-    [Documentation]   Launch simple command in webhook VNF to listen to notifications.
-    Variable Should Exist   ${PRIVATEKEY}   msg=SSH private key not available
+
+    Variable Should Exist   ${privatekey}   msg=SSH private key not available
     Sleep   40 seconds   Wait for SSH daemon to be up
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${WS_VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   while true; do { echo -e 'HTTP/1.0 200 OK\r\nContent-Length: 0\r\n\r\n'; test; } | nc -l '${WS_PORT}'; done > '${WS_LOG_FILE}' 2>&1 &
-    Log   ${stdout}
+    ${stdout}=   Execute Remote Command Check Rc Return Output   ${ws_vnf_ip_addr}   ${username}   ${password}   ${privatekey}   while true; do { echo -e 'HTTP/1.0 200 OK\r\nContent-Length: 0\r\n\r\n'; test; } | nc -l '${ws_port}'; done > '${ws_log_file}' 2>&1 &
+
 
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    ${rc}   ${stdout}=   Run And Return RC And Output   mkdir '%{PACKAGES_FOLDER}/${NEW_VNFD_PKG}' && WEBHOOK_URL="http://${WS_VNF_IP_ADDR}:${WS_PORT}" envsubst < '%{PACKAGES_FOLDER}/${VNFD_PKG}'/'${VNFD_FILE}' > '%{PACKAGES_FOLDER}/${NEW_VNFD_PKG}'/'${VNFD_FILE}'
+
+    ${rc}   ${stdout}=   Run and Return RC and Output   mkdir '%{PACKAGES_FOLDER}/${new_vnfd_pkg}' && WEBHOOK_URL="http://${ws_vnf_ip_addr}:${ws_port}" envsubst < '%{PACKAGES_FOLDER}/${vnfd_pkg}'/'${vnfd_file}' > '%{PACKAGES_FOLDER}/${new_vnfd_pkg}'/'${vnfd_file}'
     Log   ${stdout}
-    Should Be Equal As Integers   ${rc}   ${SUCCESS_RETURN_CODE}
-    Create VNFD   '%{PACKAGES_FOLDER}/${NEW_VNFD_PKG}'
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    Create VNFD   '%{PACKAGES_FOLDER}/${new_vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate the main NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get Alarm Metric
-    [Documentation]   Check that the expected metric is present in Prometheus (pushed from SA modules).
-    Variable Should Exist   ${PROMETHEUS_POLL_RETRIES}   msg=Metric polling retries is not available
-    Variable Should Exist   ${PROMETHEUS_POLL_TIMEOUT}   msg=Metric polling timeout is not available
-    Variable Should Exist   ${PROMETHEUS_HOST}   msg=Prometheus address is not available
-    Variable Should Exist   ${PROMETHEUS_PORT}   msg=Prometheus port is not available
-    Variable Should Exist   ${METRIC_NAME}   msg=Prometheus metric name is not available
-    ${metric_filter}=   Set Variable   ns_id=${NS_ID}
-    ${metric_value}=   Wait Until Keyword Succeeds   ${PROMETHEUS_POLL_RETRIES}   ${PROMETHEUS_POLL_TIMEOUT}   Get Metric   ${PROMETHEUS_HOST}   ${PROMETHEUS_PORT}   ${PROMETHEUS_USER}   ${PROMETHEUS_PASSWORD}   ${METRIC_NAME}   ${metric_filter}
-    IF   ${metric_value} <= 0   Fail   msg=The metric '${METRIC_NAME}' value is '${metric_value}'
+
+    Variable Should Exist   ${prometheus_poll_retries}   msg=Metric polling retries is not available
+    Variable Should Exist   ${prometheus_poll_timeout}   msg=Metric polling timeout is not available
+    Variable Should Exist   ${prometheus_host}   msg=Prometheus address is not available
+    Variable Should Exist   ${prometheus_port}   msg=Prometheus port is not available
+    Variable Should Exist   ${metric_name}   msg=Prometheus metric name is not available
+    ${metric_filter}=   Set Variable   ns_id=${ns_id}
+    ${metric_value}=   Wait Until Keyword Succeeds   ${prometheus_poll_retries}   ${prometheus_poll_timeout}   Get Metric   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   ${metric_name}   ${metric_filter}
+    Run Keyword If   ${metric_value} <= 0   Fail   msg=The metric '${metric_name}' value is '${metric_value}'
+
 
 Check Alarms Were Received
-    [Documentation]   Check in the webhook VNF that the notification is received.
-    Wait Until Keyword Succeeds   6 times   40 seconds   Execute Remote Command Check Rc Return Output   ${WS_VNF_IP_ADDR}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   cat '${WS_LOG_FILE}' | grep '${WS_ALARM_MSG}' | grep '${NS_NAME}'
+
+    Wait Until Keyword Succeeds   6 times   40 seconds   Execute Remote Command Check Rc Return Output   ${ws_vnf_ip_addr}   ${username}   ${password}   ${privatekey}   cat '${ws_log_file}' | grep '${ws_alarm_msg}' | grep '${ns_name}'
+
 
 Delete NS Instance
-    [Documentation]   Delete main NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete main NS package.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete main VNF package.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
+
 
 Delete Webhook Service NS Instance
-    [Documentation]   Delete NS instance for the webhook.
     [Tags]   cleanup
-    Delete NS   ${WS_NS_NAME}
+
+    Delete NS   ${ws_ns_name}
+
 
 Delete Webhook Service NS Descriptor
-    [Documentation]   Delete NS package for the webhook.
     [Tags]   cleanup
-    Delete NSD   ${WS_NSD_NAME}
+
+    Delete NSD   ${ws_nsd_name}
+
 
 Delete Webhook Service VNF Descriptor
-    [Documentation]   Delete VNF package for the webhook.
     [Tags]   cleanup
-    Delete VNFD   ${WS_VNFD_NAME}
+
+    Delete VNFD   ${ws_vnfd_name}
 
 
 *** Keywords ***
 Suite Preparation
     [Documentation]   Test Suite Preparation: Setting Prometheus Testsuite Variables
+
     Set Testsuite Prometheus Variables
 
+
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
-    Run Keyword If Any Tests Failed   Delete NS   ${WS_NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${WS_NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${WS_VNFD_NAME}
-    Delete Temporary Descriptor Folder   '%{PACKAGES_FOLDER}/${NEW_VNFD_PKG}'
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+    Run Keyword If Any Tests Failed   Delete NS   ${ws_ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${ws_nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${ws_vnfd_name}
+    Delete Temporary Descriptor Folder   '%{PACKAGES_FOLDER}/${new_vnfd_pkg}'
+
 
 Delete Temporary Descriptor Folder
     [Documentation]   Removes the temporary package folder created for the test
     [Arguments]   ${folder_name}
-    ${rc}   ${stdout}=   Run And Return RC And Output   rm -rf '${folder_name}'
-    Log   ${rc},${stdout}
+    ${rc}   ${stdout}=   Run and Return RC and Output   rm -rf '${folder_name}'
+    Log   ${stdout}
+
+
index 7ba0818..ea8873c 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [SA-08] VNF with VNF-based indicators through SNMP.
 
@@ -19,13 +17,13 @@ Library   OperatingSystem
 Library   String
 Library   Collections
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/ssh_lib.resource
-Resource   ../lib/prometheus_lib.resource
+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/ssh_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/prometheus_lib.robot
 
-Test Tags   sa_08   cluster_k8s   daily   regression
+Force Tags   sa_08   cluster_k8s   daily   regression
 
 Suite Setup   Run Keyword And Ignore Error   Suite Preparation
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
@@ -33,76 +31,85 @@ Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 *** Variables ***
 # NS instantiation parameters
-${NS_CONFIG}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   snmp_ee_vnf
-${VNFD_NAME}   snmp_ee-vnf
-${NSD_PKG}   snmp_ee_ns
-${NSD_NAME}   snmp_ee-ns
+${vnfd_pkg}   snmp_ee_vnf
+${vnfd_name}   snmp_ee-vnf
+${nsd_pkg}   snmp_ee_ns
+${nsd_name}   snmp_ee-ns
 
 # NS instance name
-${NS_NAME}   sa_08-vnf_with_vnf_indicators_snmp_test
+${ns_name}   sa_08-vnf_with_vnf_indicators_snmp_test
 
 # Prometheus polling interval and retries
-${PROMETHEUS_POLL_RETRIES}   10 times
-${PROMETHEUS_POLL_TIMEOUT}   1 minute
+${prometheus_poll_retries}   10 times
+${prometheus_poll_timeout}   1 minute
 
 # Prometheus metrics to retrieve
-${METRIC_1_NAME}   ifInOctets
-${METRIC_1_FILTER}   ifIndex=1
-${METRIC_2_NAME}   ifMtu
-${METRIC_2_FILTER}   ifIndex=2
+${metric_1_name}   ifInOctets
+${metric_1_filter}   ifIndex=1
+${metric_2_name}   ifMtu
+${metric_2_filter}   ifIndex=2
 
 
 *** Test Cases ***
 Create VNF Descriptor
-    [Documentation]   Upload VNF package for the testsuite.
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
 
 Create NS Descriptor
-    [Documentation]   Upload NS package for the testsuite.
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 Instantiate Network Service
-    [Documentation]   Instantiate the NS for the testsuite.
-    ${id}=   Create Network Service   ${NSD_NAME}   %{VIM_TARGET}   ${NS_NAME}   ${NS_CONFIG}   ${EMPTY}
-    Set Suite Variable   ${NS_ID}   ${id}
+
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${EMPTY}
+    Set Suite Variable   ${ns_id}   ${id}
+
 
 Get VNF SNMP Metrics
-    [Documentation]   Check that SNMP metrics from the VNF are stored in Prometheus.
-    Variable Should Exist   ${PROMETHEUS_HOST}   msg=Prometheus address is not available
-    Variable Should Exist   ${PROMETHEUS_PORT}   msg=Prometheus port is not available
-    Variable Should Exist   ${METRIC_1_NAME}   msg=Prometheus first metric name is not available
-    Variable Should Exist   ${METRIC_2_NAME}   msg=Prometheus second metric name is not available
-    ${metric_1_value}=   Wait Until Keyword Succeeds   ${PROMETHEUS_POLL_RETRIES}   ${PROMETHEUS_POLL_TIMEOUT}   Get Metric   ${PROMETHEUS_HOST}   ${PROMETHEUS_PORT}   ${PROMETHEUS_USER}   ${PROMETHEUS_PASSWORD}   ${METRIC_1_NAME}   ${METRIC_1_FILTER}
-    IF   ${metric_1_value} <= 0   Fail   msg=The metric '${METRIC_1_NAME}' value is '${metric_1_value}'
-    ${metric_2_value}=   Wait Until Keyword Succeeds   ${PROMETHEUS_POLL_RETRIES}   ${PROMETHEUS_POLL_TIMEOUT}   Get Metric   ${PROMETHEUS_HOST}   ${PROMETHEUS_PORT}   ${PROMETHEUS_USER}   ${PROMETHEUS_PASSWORD}   ${METRIC_2_NAME}   ${METRIC_2_FILTER}
-    IF   ${metric_2_value} <= 0   Fail   msg=The metric '${METRIC_2_NAME}' value is '${metric_2_value}'
+
+    Variable Should Exist   ${prometheus_host}   msg=Prometheus address is not available
+    Variable Should Exist   ${prometheus_port}   msg=Prometheus port is not available
+    Variable Should Exist   ${metric_1_name}   msg=Prometheus first metric name is not available
+    Variable Should Exist   ${metric_2_name}   msg=Prometheus second metric name is not available
+    ${metric_1_value}=   Wait Until Keyword Succeeds   ${prometheus_poll_retries}   ${prometheus_poll_timeout}   Get Metric   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   ${metric_1_name}   ${metric_1_filter}
+    Run Keyword If   ${metric_1_value} <= 0   Fail   msg=The metric '${metric_1_name}' value is '${metric_1_value}'
+    ${metric_2_value}=   Wait Until Keyword Succeeds   ${prometheus_poll_retries}   ${prometheus_poll_timeout}   Get Metric   ${prometheus_host}   ${prometheus_port}   ${prometheus_user}   ${prometheus_password}   ${metric_2_name}   ${metric_2_filter}
+    Run Keyword If   ${metric_2_value} <= 0   Fail   msg=The metric '${metric_2_name}' value is '${metric_2_value}'
+
 
 Delete NS Instance
-    [Documentation]   Delete NS instance.
     [Tags]   cleanup
-    Delete NS   ${NS_NAME}
+
+    Delete NS   ${ns_name}
+
 
 Delete NS Descriptor
-    [Documentation]   Delete NS package from OSM.
     [Tags]   cleanup
-    Delete NSD   ${NSD_NAME}
+
+    Delete NSD   ${nsd_name}
+
 
 Delete VNF Descriptor
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Preparation
     [Documentation]   Test Suite Preparation: Setting Prometheus Testsuite Variables
+
     Set Testsuite Prometheus Variables
 
+
 Suite Cleanup
     [Documentation]   Test Suite Cleanup: Deleting descriptors and NS instance
-    Run Keyword If Any Tests Failed   Delete NS   ${NS_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NS   ${ns_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
index ee19f39..a910524 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   Copyright 2020 Atos
 #
 #   Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +12,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [SLICE-01] Network Slicing.
 
@@ -24,140 +22,171 @@ Library   Process
 Library   SSHLibrary
 Library   yaml
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/nst_lib.resource
-Resource   ../lib/nsi_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/connectivity_lib.resource
-Resource   ../lib/ssh_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nst_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsi_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/connectivity_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
 
-Test Tags   slice_01   cluster_slices   daily   regression
+Force Tags   slice_01   cluster_slices   daily   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # NS and VNF descriptor package files
-${VNFD1_PKG}   slice_basic_vnf
-${VNFD2_PKG}   slice_basic_middle_vnf
-${NSD1_PKG}   slice_basic_ns
-${NSD2_PKG}   slice_basic_middle_ns
-${NST}   slice_basic_nst/slice_basic_nst.yaml
+${vnfd1_pkg}   slice_basic_vnf
+${vnfd2_pkg}   slice_basic_middle_vnf
+${nsd1_pkg}   slice_basic_ns
+${nsd2_pkg}   slice_basic_middle_ns
+${nst}   slice_basic_nst/slice_basic_nst.yaml
 
 # Descriptor names
-${NST_NAME}   slice_basic_nst
-${VNFD1_NAME}   slice_basic_vnf
-${VNFD2_NAME}   slice_basic_middle_vnf
-${NSD1_NAME}   slice_basic_ns
-${NSD2_NAME}   slice_basic_middle_ns
+${nst_name}   slice_basic_nst
+${vnfd1_name}   slice_basic_vnf
+${vnfd2_name}   slice_basic_middle_vnf
+${nsd1_name}   slice_basic_ns
+${nsd2_name}   slice_basic_middle_ns
 
 # Instance names
-${SLICE_NAME}   slicebasic
-${MIDDLE_NS_NAME}   slicebasic.slice_basic_nsd_2
+${slice_name}   slicebasic
+${middle_ns_name}   slicebasic.slice_basic_nsd_2
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
-${VNF_MEMBER_INDEX}   middle
-${VNF_IP_ADDR}   ${EMPTY}
-${MGMT_VNF_IP}   ${EMPTY}
-${NST_CONFIG}   {netslice-vld: [ {name: slice_vld_mgmt, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_id}   ${EMPTY}
+${vnf_member_index}   middle
+${vnf_ip_addr}   ${EMPTY}
+${mgmt_vnf_ip}   ${EMPTY}
+${nst_config}   {netslice-vld: [ {name: slice_vld_mgmt, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 
 *** Test Cases ***
 Create Slice VNF Descriptors
     [Documentation]   Onboards all the VNFDs required for the test: vnfd1_pkg and vnfd2_pkg (in the variables file)
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD1_PKG}'
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD2_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd1_pkg}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd2_pkg}'
+
 
 Create Slice NS Descriptors
     [Documentation]   Onboards all the NSDs required for the test: nsd1_pkg and nsd2_pkg (in the variables file)
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD1_PKG}'
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD2_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd1_pkg}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd2_pkg}'
 
 Create Slice Template
     [Documentation]   Onboards the Network Slice Template: nst (in the variables file)
-    Create NST   '%{PACKAGES_FOLDER}/${NST}'
+
+    Create NST   '%{PACKAGES_FOLDER}/${nst}'
 
 Network Slice Instance Test
     [Documentation]   Instantiates the NST recently onboarded and sets the instantiation id as a suite variable (nsi_id)
-    ${id}=   Create Network Slice   ${NST_NAME}   %{VIM_TARGET}   ${SLICE_NAME}   ${NST_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NSI_ID}   ${id}
+
+    ${id}=   Create Network Slice   ${nst_name}   %{VIM_TARGET}   ${slice_name}   ${nst_config}   ${publickey}
+    Set Suite Variable   ${nsi_id}   ${id}
+
 
 Get Middle Vnf Management Ip
     [Documentation]   Obtains the management IP of the slice middle VNF (name in the reources file) and sets the ip as a suite variable (mgmt_vnf_ip)
-    ${middle_ns_id}=   Run And Return RC And Output   osm ns-list | grep ${MIDDLE_NS_NAME} | awk '{print $4}' 2>&1
-    ${vnf_ip}=   Get Vnf Management Ip Address   ${middle_ns_id}[1]   ${VNF_MEMBER_INDEX}
-    IF   ${vnf_ip} == ${EMPTY}   Fatal Error   Variable \$\{ vnf_ip\} Empty
-    Set Suite Variable   ${MGMT_VNF_IP}   ${vnf_ip}
+
+    ${middle_ns_id}=   Run and Return RC and Output   osm ns-list | grep ${middle_ns_name} | awk '{print $4}' 2>&1
+    ${vnf_ip}   Get Vnf Management Ip Address   ${middle_ns_id}[1]   ${vnf_member_index}
+    Run Keyword If   '${vnf_ip}' == '${EMPTY}'   Fatal Error   Variable \$\{ vnf_ip\} Empty
+    Set Suite Variable   ${mgmt_vnf_ip}   ${vnf_ip}
+
 
 Get Slice Vnf Ip Addresses
     [Documentation]   Obtains the list of IPs addresses in the slice and sets the list as a suite variable (slice_vnfs_ips)
+
     # Get all the ns_id in the slice except the middle one to avoid self ping
-    @{slice_ns_list}=   Get Slice Ns List Except One   ${SLICE_NAME}   ${MIDDLE_NS_NAME}
-    Log Many   @{slice_ns_list}
+    @{slice_ns_list}   Get Slice Ns List Except One   ${slice_name}   ${middle_ns_name}
+    Log many   @{slice_ns_list}
     @{temp_list}=   Create List
     # For each ns_id in the list, get all the vnf_id and their IP addresses
     FOR   ${ns_id}   IN   @{slice_ns_list}
         Log   ${ns_id}
-        @{vnf_id_list}=   Get Ns Vnf List   ${ns_id}
+        @{vnf_id_list}   Get Ns Vnf List   ${ns_id}
         # For each vnf_id in the list, get all its IP addresses
-        @{ns_ip_list}=   Get Ns Ip List   @{vnf_id_list}
+        @{ns_ip_list}   Get Ns Ip List   @{vnf_id_list}
         @{temp_list}=   Combine Lists   ${temp_list}   ${ns_ip_list}
     END
     Log List   ${temp_list}
-    Set Suite Variable   ${SLICE_VNFS_IPS}   ${temp_list}
+    Set Suite Variable   ${slice_vnfs_ips}   ${temp_list}
+
 
 Test Middle Ns Ping
     [Documentation]   Pings the slice middle vnf (mgmt_vnf_ip)
+
     Sleep   60s   Waiting for the network to be up
     # Ping to the middle VNF
-    Log   ${MGMT_VNF_IP}
-    Test Connectivity   ${MGMT_VNF_IP}
+    Log   ${mgmt_vnf_ip}
+    Test Connectivity   ${mgmt_vnf_ip}
+
 
 Test Middle Vnf SSH Access
     [Documentation]   SSH access to the slice middle vnf (mgmt_vnf_ip) with the credentials provided in the variables file
+
     Sleep   30s   Waiting ssh daemon to be up
-    Test SSH Connection   ${MGMT_VNF_IP}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
+    Test SSH Connection   ${mgmt_vnf_ip}   ${username}   ${password}   ${privatekey}
+
 
 Test Slice Connectivity
     [Documentation]   SSH access to the slice middle vnf (mgmt_vnf_ip) with the credentials provided in the variables file
     ...               and pings all the IP addresses in the list (slice_vnfs_ips)
-    Ping Many   ${MGMT_VNF_IP}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   @{SLICE_VNFS_IPS}
+
+    Ping Many   ${mgmt_vnf_ip}   ${username}   ${password}   ${privatekey}   @{slice_vnfs_ips}
+
 
 Delete Slice Instance
     [Documentation]   Stops the slice instance (slice_name)
     [Tags]   cleanup
-    Delete NSI   ${SLICE_NAME}
+
+    Delete NSI   ${slice_name}
+
 
 Delete Slice Template
     [Documentation]   Deletes the NST (nst_name) from OSM
     [Tags]   cleanup
-    Delete NST   ${NST_NAME}
+
+    Delete NST   ${nst_name}
+
 
 Delete NS Descriptors
     [Documentation]   Deletes all the NSDs created for the test: nsd1_name, nsd2_name
     [Tags]   cleanup
-    Delete NSD   ${NSD1_NAME}
-    Delete NSD   ${NSD2_NAME}
+
+    Delete NSD   ${nsd1_name}
+    Delete NSD   ${nsd2_name}
+
 
 Delete VNF Descriptors
     [Documentation]   Deletes all the VNFDs created for the test: vnfd1_name, vnfd2_name
     [Tags]   cleanup
-    Delete VNFD   ${VNFD1_NAME}
-    Delete VNFD   ${VNFD2_NAME}
+
+    Delete VNFD   ${vnfd1_name}
+    Delete VNFD   ${vnfd2_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptors, instance and template
-    Run Keyword If Any Tests Failed   Delete NSI   ${SLICE_NAME}
-    Run Keyword If Any Tests Failed   Delete NST   ${NST_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD1_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD2_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD1_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD2_NAME}
+
+    Run Keyword If Any Tests Failed   Delete NSI   ${slice_name}
+
+    Run Keyword If Any Tests Failed   Delete NST   ${nst_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd1_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd2_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd1_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd2_name}
+
+
+
index d5a376a..869eb45 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   Copyright 2020 Atos
 #
 #   Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +12,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 
-
 *** Settings ***
 Documentation   [SLICE-02] Shared Network Slicing.
 
@@ -23,180 +21,227 @@ Library   Collections
 Library   Process
 Library   SSHLibrary
 
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/nsd_lib.resource
-Resource   ../lib/nst_lib.resource
-Resource   ../lib/nsi_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/connectivity_lib.resource
-Resource   ../lib/ssh_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nst_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsi_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/connectivity_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
 
-Test Tags   slice_02   cluster_slices   daily   regression
+Force Tags   slice_02   cluster_slices   daily   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
+
 # NS and VNF descriptor package files
-${VNFD1_PKG}   slice_basic_vnf
-${VNFD2_PKG}   slice_basic_middle_vnf
-${NSD1_PKG}   slice_basic_ns
-${NSD2_PKG}   slice_basic_middle_ns
-${NST}   slice_basic_nst/slice_basic_nst.yaml
-${NST2}   slice_basic_nst/slice_basic_2nd_nst.yaml
+${vnfd1_pkg}   slice_basic_vnf
+${vnfd2_pkg}   slice_basic_middle_vnf
+${nsd1_pkg}   slice_basic_ns
+${nsd2_pkg}   slice_basic_middle_ns
+${nst}   slice_basic_nst/slice_basic_nst.yaml
+${nst2}   slice_basic_nst/slice_basic_2nd_nst.yaml
 
 # Instance names
-${SLICE_NAME}   slicebasic
-${SLICE2_NAME}   sliceshared
-${MIDDLE_NS_NAME}   slicebasic.slice_basic_nsd_2
+${slice_name}   slicebasic
+${slice2_name}   sliceshared
+${middle_ns_name}   slicebasic.slice_basic_nsd_2
 
 # Descriptor names
-${NST_NAME}   slice_basic_nst
-${NST2_NAME}   slice_basic_nst2
-${VNFD1_NAME}   slice_basic_vnf
-${VNFD2_NAME}   slice_basic_middle_vnf
-${NSD1_NAME}   slice_basic_ns
-${NSD2_NAME}   slice_basic_middle_ns
+${nst_name}   slice_basic_nst
+${nst2_name}   slice_basic_nst2
+${vnfd1_name}   slice_basic_vnf
+${vnfd2_name}   slice_basic_middle_vnf
+${nsd1_name}   slice_basic_ns
+${nsd2_name}   slice_basic_middle_ns
 
 # SSH keys and username to be used
-${PUBLICKEY}   %{HOME}/.ssh/id_rsa.pub
-${PRIVATEKEY}   %{HOME}/.ssh/id_rsa
-${USERNAME}   ubuntu
-${PASSWORD}   ${EMPTY}
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${privatekey}   %{HOME}/.ssh/id_rsa
+${username}   ubuntu
+${password}   ${EMPTY}
 
-${VNF_MEMBER_INDEX}   middle
-${VNF_IP_ADDR}   ${EMPTY}
-${NST_CONFIG}   {netslice-vld: [ {name: slice_vld_mgmt, vim-network-name: %{VIM_MGMT_NET}} ] }
+${ns_id}   ${EMPTY}
+${vnf_member_index}   middle
+${vnf_ip_addr}   ${EMPTY}
+${nst_config}   {netslice-vld: [ {name: slice_vld_mgmt, vim-network-name: %{VIM_MGMT_NET}} ] }
 
 
 *** Test Cases ***
 Create Slice VNF Descriptors
     [Documentation]   Onboards all the VNFDs required for the test: vnfd1_pkg and vnfd2_pkg (in the variables file)
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD1_PKG}'
-    Create VNFD   '%{PACKAGES_FOLDER}/${VNFD2_PKG}'
+
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd1_pkg}'
+    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd2_pkg}'
+
 
 Create Slice NS Descriptors
     [Documentation]   Onboards all the NSDs required for the test: nsd1_pkg and nsd2_pkg (in the variables file)
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD1_PKG}'
-    Create NSD   '%{PACKAGES_FOLDER}/${NSD2_PKG}'
+
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd1_pkg}'
+    Create NSD   '%{PACKAGES_FOLDER}/${nsd2_pkg}'
 
 Create Slice Templates
     [Documentation]   Onboards the Network Slice Templates: nst, nst2 (in the variables file)
-    Create NST   '%{PACKAGES_FOLDER}/${NST}'
-    Create NST   '%{PACKAGES_FOLDER}/${NST2}'
+
+    Create NST   '%{PACKAGES_FOLDER}/${nst}'
+    Create NST   '%{PACKAGES_FOLDER}/${nst2}'
 
 Network Slice First Instance
     [Documentation]   Instantiates the First NST recently onboarded (nst_name) and sets the instantiation id as a suite variable (nsi_id)
     ...               The slice contains 3 NS (1 shared)
-    ${id}=   Create Network Slice   ${NST_NAME}   %{VIM_TARGET}   ${SLICE_NAME}   ${NST_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NSI_ID}   ${id}
+
+    ${id}=   Create Network Slice   ${nst_name}   %{VIM_TARGET}   ${slice_name}   ${nst_config}   ${publickey}
+    Set Suite Variable   ${nsi_id}   ${id}
+
 
 Network Slice Second Instance
     [Documentation]   Instantiates the Second NST recently onboarded (nst2_name) and sets the instantiation id as a suite variable (nsi2_id)
     ...               The slice contains 2 NS (1 shared)
-    ${id}=   Create Network Slice   ${NST2_NAME}   %{VIM_TARGET}   ${SLICE2_NAME}   ${NST_CONFIG}   ${PUBLICKEY}
-    Set Suite Variable   ${NSI2_ID}   ${id}
+
+    ${id}=   Create Network Slice   ${nst2_name}   %{VIM_TARGET}   ${slice2_name}   ${nst_config}   ${publickey}
+    Set Suite Variable   ${nsi2_id}   ${id}
+
 
 First Network Slice Ns Count
     [Documentation]   Counts the NS in both slice instances and shoul be equal to 4
-    ${slice1_count}=   Get Slice Ns Count   ${SLICE_NAME}
-    ${slice2_count}=   Get Slice Ns Count   ${SLICE2_NAME}
+
+    ${slice1_count}=   Get Slice Ns Count   ${slice_name}
+    ${slice2_count}=   Get Slice Ns Count   ${slice2_name}
     ${together}=   Evaluate   ${slice1_count} + ${slice2_count}
     Should Be Equal As Integers   ${together}   4
 
+
 Get Middle Vnf Management Ip
     [Documentation]   Obtains the management IP of the shared NS main (only) VNF and sets it as a suite variable (mgmt_vnf_ip)
-    ${middle_ns_id}=   Run And Return RC And Output   osm ns-list | grep ${MIDDLE_NS_NAME} | awk '{print $4}' 2>&1
-    ${vnf_ip}=   Get Vnf Management Ip Address   ${middle_ns_id}[1]   ${VNF_MEMBER_INDEX}
-    IF   ${vnf_ip} == ${EMPTY}   Fatal Error   Variable \$\{ vnf_ip\} Empty
-    Set Suite Variable   ${MGMT_VNF_IP}   ${vnf_ip}
+
+    ${middle_ns_id}=   Run and Return RC and Output   osm ns-list | grep ${middle_ns_name} | awk '{print $4}' 2>&1
+    ${vnf_ip}   Get Vnf Management Ip Address   ${middle_ns_id}[1]   ${vnf_member_index}
+    Run Keyword If   '${vnf_ip}' == '${EMPTY}'   Fatal Error   Variable \$\{ vnf_ip\} Empty
+    Set Suite Variable   ${mgmt_vnf_ip}   ${vnf_ip}
+
 
 Get First Slice Vnf IPs
     [Documentation]   Obtains the list of IPs addresses in the first slice and sets the list as a suite variable (slice1_vnfs_ips)
+
     # Get all the ns_id in the slice except the middle one
-    @{ip_list}=   Get Slice Vnf Ip Addresses   ${SLICE_NAME}
+    @{ip_list}   Get Slice Vnf Ip Addresses   ${slice_name}
     Should Be True   ${ip_list} is not None
-    Set Suite Variable   ${SLICE1_VNFS_IPS}   ${ip_list}
+    Set Suite Variable   ${slice1_vnfs_ips}   ${ip_list}
+
 
 Test Middle Ns Ping
     [Documentation]   Pings the slice middle vnf (mgmt_vnf_ip)
+
     Sleep   60s   Waiting for the network to be up
     # Ping to the middle VNF
-    Test Connectivity   ${MGMT_VNF_IP}
+    Test Connectivity   ${mgmt_vnf_ip}
+
 
 Test Middle Vnf SSH Access
     [Documentation]   SSH access to the slice middle vnf (mgmt_vnf_ip) with the credentials provided in the variables file
+
     Sleep   30s   Waiting ssh daemon to be up
-    Test SSH Connection   ${MGMT_VNF_IP}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}
+    Test SSH Connection   ${mgmt_vnf_ip}   ${username}   ${password}   ${privatekey}
+
 
 Test First Slice Connectivity
     [Documentation]   SSH access to the slice middle vnf (mgmt_vnf_ip) with the credentials provided in the variables file
     ...               and pings all the IP addresses in the list (slice1_vnfs_ips)
-    Ping Many   ${MGMT_VNF_IP}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   @{SLICE1_VNFS_IPS}
+
+    Ping Many   ${mgmt_vnf_ip}   ${username}   ${password}   ${privatekey}   @{slice1_vnfs_ips}
+
 
 Delete Slice One Instance
     [Documentation]   Stops the slice instance (slice_name)
+
     [Tags]   cleanup
-    Delete NSI   ${SLICE_NAME}
+
+    Delete NSI   ${slice_name}
+
 
 Second Network Slice Ns Count
     [Documentation]   Counts the NS in both slice instances and should be equal to 2
-    ${slice1_count}=   Get Slice Ns Count   ${SLICE_NAME}
-    ${slice2_count}=   Get Slice Ns Count   ${SLICE2_NAME}
+
+    ${slice1_count}=   Get Slice Ns Count   ${slice_name}
+    ${slice2_count}=   Get Slice Ns Count   ${slice2_name}
     ${together}=   Evaluate   ${slice1_count} + ${slice2_count}
     Should Be Equal As Integers   ${together}   2
 
 Get Second Slice Vnf IPs
     [Documentation]   Obtains the list of IPs addresses in the second slice and sets the list as a suite variable (slice2_vnfs_ips)
+
     # Get all the ns_id in the slice
-    @{ip_list}=   Get Slice Vnf Ip Addresses   ${SLICE2_NAME}
+    @{ip_list}   Get Slice Vnf Ip Addresses   ${slice2_name}
     Should Be True   ${ip_list} is not None
-    Set Suite Variable   ${SLICE2_VNFS_IPS}   ${ip_list}
+    Set Suite Variable   ${slice2_vnfs_ips}   ${ip_list}
+
 
 Test Second Slice Connectivity
     [Documentation]   SSH access to the slice middle vnf (mgmt_vnf_ip) with the credentials provided in the variables file
     ...               and pings all the IP addresses in the list (slice2_vnfs_ips)
-    Ping Many   ${MGMT_VNF_IP}   ${USERNAME}   ${PASSWORD}   ${PRIVATEKEY}   @{SLICE2_VNFS_IPS}
+
+    Ping Many   ${mgmt_vnf_ip}   ${username}   ${password}   ${privatekey}   @{slice2_vnfs_ips}
+
 
 Delete Slice Two Instance
     [Documentation]   Stops the slice instance (slice2_name)
+
     [Tags]   cleanup
-    Delete NSI   ${SLICE2_NAME}
+
+    Delete NSI   ${slice2_name}
+
 
 Delete Slice One Template
     [Documentation]   Deletes the NST (nst_name) from OSM
+
     [Tags]   cleanup
-    Delete NST   ${NST_NAME}
+
+    Delete NST   ${nst_name}
+
 
 Delete Slice Two Template
     [Documentation]   Deletes the NST (nst2_name) from OSM
+
     [Tags]   cleanup
-    Delete NST   ${NST2_NAME}
+
+    Delete NST   ${nst2_name}
+
 
 Delete NS Descriptors
     [Documentation]   Deletes all the NSDs created for the test: nsd1_name, nsd2_name
+
     [Tags]   cleanup
-    Delete NSD   ${NSD1_NAME}
-    Delete NSD   ${NSD2_NAME}
+
+    Delete NSD   ${nsd1_name}
+    Delete NSD   ${nsd2_name}
+
 
 Delete VNF Descriptors
     [Documentation]   Deletes all the VNFDs created for the test: vnfd1_name, vnfd2_name
+
     [Tags]   cleanup
-    Delete VNFD   ${VNFD1_NAME}
-    Delete VNFD   ${VNFD2_NAME}
+
+    Delete VNFD   ${vnfd1_name}
+    Delete VNFD   ${vnfd2_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptors, instance and templates
-    Run Keyword If Any Tests Failed   Delete NSI   ${SLICE_NAME}
-    Run Keyword If Any Tests Failed   Delete NSI   ${SLICE2_NAME}
 
-    Run Keyword If Any Tests Failed   Delete NST   ${NST_NAME}
-    Run Keyword If Any Tests Failed   Delete NST   ${NST2_NAME}
+    Run Keyword If Any Tests Failed   Delete NSI   ${slice_name}
+    Run Keyword If Any Tests Failed   Delete NSI   ${slice2_name}
+
+    Run Keyword If Any Tests Failed   Delete NST   ${nst_name}
+    Run Keyword If Any Tests Failed   Delete NST   ${nst2_name}
+
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd1_name}
+    Run Keyword If Any Tests Failed   Delete NSD   ${nsd2_name}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd1_name}
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd2_name}
 
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD1_NAME}
-    Run Keyword If Any Tests Failed   Delete NSD   ${NSD2_NAME}
 
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD1_NAME}
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD2_NAME}
index 3d4bf90..a238fb1 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,7 +10,6 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License
 
-
 *** Settings ***
 Documentation   [SOL003-01] Sol003 Api testing
 
@@ -23,50 +21,51 @@ Library   yaml
 Library   JsonValidator
 Library   JSONLibrary
 
-Resource   ../lib/rest_lib.resource
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/vnf_lib.resource
-Resource   ../lib/vim_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/rest_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnf_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vim_lib.robot
 
-Test Tags   sol003_01   cluster_osm_rest   daily
+Force Tags   sol003_01   cluster_osm_rest   daily
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # SOL003 API URI paths
-${VNF_INSTANCE_URI}   /osm/vnflcm/v1/vnf_instances
-${VNF_INSTANCE_LCM_OPS}   /osm/vnflcm/v1/vnf_lcm_op_occs
+${vnf_instance_uri}   /osm/vnflcm/v1/vnf_instances
+${vnf_instantiate_uri}   /osm/vnflcm/v1/vnf_instances
+${vnf_instance_lcm_ops}   /osm/vnflcm/v1/vnf_lcm_op_occs
 
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   hackfest_basic_metrics_vnf
-${VNFD_NAME}   hackfest_basic_metrics-vnf
+${vnfd_pkg}   hackfest_basic_metrics_vnf
+${vnfd_name}   hackfest_basic_metrics-vnf
 
 
 *** Test Cases ***
-Create VNF Package From JSON File
-    [Documentation]   Create a VNF package and update it via SOL003 interface using a JSON file
+Create VNF package from JSON file descriptor
+    [Documentation]   Test case to create a VNF Identifier
     Get VNFDs List
-    ${id}=   Create VNFD   '%{PACKAGES_FOLDER}/${VNFD_PKG}'
-    Log   ${id}
-    ${CREATED_VIM_ACCOUNT_ID}=   Get VIM Target ID   %{VIM_TARGET}
-    Set Suite Variable   ${CREATED_VIM_ACCOUNT_ID}
+    ${id}=   Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+    Set Suite Variable   ${vnfid}   ${id}
+    ${created_vim_account_id}=   Get VIM Target ID   %{VIM_TARGET}
+    Set Suite Variable   ${created_vim_account_id}
     Get Auth Token
     ${json_path}=   Read Directory
     ${json_obj}=   Load JSON From File   ${json_path}/sol003_01-vnf-lifecycle-management.json
     ${json_obj}=   Get Variable Value   ${json_obj['data'][0]}
-    ${UPDATED_JSON_OBJ}=   JSONLibrary.Update Value To Json   ${json_obj}   $..vimAccountId   ${CREATED_VIM_ACCOUNT_ID}
-    Log   ${UPDATED_JSON_OBJ}
-    ${UPDATED_JSON_OBJ}=   JSONLibrary.Update Value To Json   ${UPDATED_JSON_OBJ}   $..additionalParams.virtual-link-desc[0][id]   %{VIM_MGMT_NET}
-    Log   ${UPDATED_JSON_OBJ}
-    ${UPDATED_JSON_OBJ}=   JSONLibrary.Update Value To Json   ${UPDATED_JSON_OBJ}   $..additionalParams.virtual-link-profile-id   %{VIM_MGMT_NET}
-    Log   ${UPDATED_JSON_OBJ}
-    Set Test Variable   ${UPDATED_JSON_OBJ}
-    Post Api Request   ${VNF_INSTANCE_URI}   ${UPDATED_JSON_OBJ}
-    Pass Execution If   ${request_response.status_code} in ${SUCCESS_STATUS_CODE_LIST}   Query VNF Instance completed
+    ${updated_json_obj}=   JSONLibrary.Update Value To Json   ${json_obj}   $..vimAccountId   ${created_vim_account_id}
+    Log   ${updated_json_obj}
+    ${updated_json_obj}=   JSONLibrary.Update Value To Json   ${updated_json_obj}   $..additionalParams.virtual-link-desc[0][id]   %{VIM_MGMT_NET}
+    Log   ${updated_json_obj}
+    ${updated_json_obj}=   JSONLibrary.Update Value To Json   ${updated_json_obj}   $..additionalParams.virtual-link-profile-id   %{VIM_MGMT_NET}
+    Log   ${updated_json_obj}
+    Set Test Variable   ${updated_json_obj}
+    Post API Request   ${vnf_instance_uri}
+    Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Query VNF Instance completed
     ${id}=   Get Value From Json   ${request_response.json()}   $..id
-    Set Suite Variable   ${CREATEID}   ${id[0]}
+    Set Suite Variable   ${createid}   ${id[0]}
     Get VNFDs List
 
 Instantiate VNF
@@ -77,13 +76,13 @@ Instantiate VNF
     ${json_path}=   Read Directory
     ${json_obj}=   Load JSON From File   ${json_path}/sol003_01-vnf-lifecycle-management.json
     ${json_obj}=   Get Variable Value   ${json_obj['data'][1]}
-    ${UPDATED_JSON_OBJ}=   JSONLibrary.Update Value To Json   ${json_obj}   $..vimAccountId   ${CREATED_VIM_ACCOUNT_ID}
-    ${UPDATED_JSON_OBJ}=   JSONLibrary.Update Value To Json   ${UPDATED_JSON_OBJ}   $..vnfId   ${CREATEID}
-    Set Test Variable   ${UPDATED_JSON_OBJ}
-    Post Api Request   ${VNF_INSTANCE_URI}/${CREATEID}/instantiate   ${UPDATED_JSON_OBJ}
-    Pass Execution If   ${request_response.status_code} in ${SUCCESS_STATUS_CODE_LIST}   Instantiate VNF Instance completed
+    ${updated_json_obj}=   JSONLibrary.Update Value To Json   ${json_obj}   $..vimAccountId   ${created_vim_account_id}
+    ${updated_json_obj}=   JSONLibrary.Update Value To Json   ${updated_json_obj}   $..vnfId   ${createid}
+    Set Test Variable   ${updated_json_obj}
+    Post API Request   ${vnf_instantiate_uri}/${createid}/instantiate
+    Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Instantiate VNF Instance completed
     ${id}=   Get Value From Json   ${request_response.json()}   $..id
-    Set Suite Variable   ${INSTANTIATEID}   ${id[0]}
+    Set Suite Variable   ${instantiateid}   ${id[0]}
     Sleep   12s
     Get Ns List
     Get Vnf List
@@ -91,127 +90,112 @@ Instantiate VNF
 Query VNF Instances
     [Documentation]   Test case to query VNF Instance
     Get Auth Token
-    Get Api Request   ${VNF_INSTANCE_URI}
+    Get Api Request   ${vnf_instance_uri}
     ${value}=   Get ID   nsState
     Should Be Equal   ${value}   INSTANTIATED
-    Pass Execution If   ${request_response.status_code} in ${SUCCESS_STATUS_CODE_LIST}   Query VNF Instance completed
+    Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Query VNF Instance completed
     ${id}=   Get Value From Json   ${request_response.json()}   $.._id
-    Set Suite Variable   ${QUERYID}   ${id[0]}
+    Set Suite Variable   ${Queryid}   ${id[0]}
 
 Query VNF Instance ID
     [Documentation]   Test case to query Vnf instance ID
     Get Auth Token
-    Get Api Request   ${VNF_INSTANCE_URI}/${QUERYID}
+    Get Api Request   ${vnf_instance_uri}/${Queryid}
     ${value}=   Get ID   nsState
     Should Be Equal   ${value}   INSTANTIATED
     Should Be Equal As Strings   ${RequestResponse.status_code}   200
     ${id}=   Get Value From Json   ${request_response.json()}   $.._id
-    Set Suite Variable   ${INSTANCEID}   ${id[0]}
+    Set Suite Variable   ${Instanceid}   ${id[0]}
 
 Query VNF LCM Ops
     [Documentation]   Test case to Query VNF LCM operation
     Get Auth Token
-    Get Api Request   ${VNF_INSTANCE_LCM_OPS}
-    ${id1}=   Get Value From Json   ${request_response.json()}   $.._id
-    Set Suite Variable   ${LCMOPS}   ${id1[0]}
-    FOR   ${index}   IN RANGE   0   15
-        Log   ${index}
-        Get Api Request   ${VNF_INSTANCE_LCM_OPS}
+    Get Api Request   ${vnf_instance_lcm_ops}
+    ${ID1}=   Get Value From Json   ${request_response.json()}   $.._id
+    Set Suite Variable   ${lcmops}   ${ID1[0]}
+    FOR   ${Index}   IN RANGE   0   15
+        Get Api Request   ${vnf_instance_lcm_ops}
         ${value}=   Get ID   operationState
         ${status}=   Run Keyword And Return Status   Should Be Equal   ${value}   COMPLETED
-        IF   ${status}
-            BREAK
-        ELSE
-            Sleep   10s
-        END
+        Run Keyword If   ${status}   Exit For Loop
+        ...   ELSE   Sleep   10s
     END
 
 Query VNF LCM Ops ID
-    [Documentation]   Check if the operation has completed.
     Get Auth Token
-    Get Api Request   ${VNF_INSTANCE_LCM_OPS}/${LCMOPS}
-    ${id1}=   Get Value From Json   ${request_response.json()}   $.._id
-    Set Suite Variable   ${LCMOPSID}   ${id1[0]}
-    FOR   ${index}   IN RANGE   0   15
-        Log   ${index}
-        Get Api Request   ${VNF_INSTANCE_LCM_OPS}/${LCMOPS}
+    Get Api Request   ${vnf_instance_lcm_ops}/${lcmops}
+    ${ID1}=   Get Value From Json   ${request_response.json()}   $.._id
+    Set Suite Variable   ${lcmopsid}   ${ID1[0]}
+    FOR   ${Index}   IN RANGE   0   15
+        Get Api Request   ${vnf_instance_lcm_ops}/${lcmops}
         ${value}=   Get ID   operationState
         ${status}=   Run Keyword And Return Status   Should Be Equal   ${value}   COMPLETED
-        IF   ${status}
-            BREAK
-        ELSE
-            Sleep   10s
-        END
+        Run Keyword If   ${status}   Exit For Loop
+        ...   ELSE   Sleep   10s
     END
 
 Scale VNF
-    [Documentation]   Scale out VNF
+    [Documentation]   Test case to   Scale out VNF
     Get Auth Token
     ${json_path}=   Read Directory
     ${updated_json_obj}=   Load JSON From File   ${json_path}/sol003_01-vnf-lifecycle-management.json
-    ${updated_json_obj}=   Get Variable Value   ${UPDATED_JSON_OBJ['data'][2]}
-    Set Test Variable   ${UPDATED_JSON_OBJ}
-    Post Api Request   ${VNF_INSTANCE_URI}/${CREATEID}/scale   ${UPDATED_JSON_OBJ}
+    ${updated_json_obj}=   Get Variable Value   ${updated_json_obj['data'][2]}
+    Set Test Variable   ${updated_json_obj}
+    Post API Request   ${vnf_instance_uri}/${createid}/scale
     ${value}=   Get ID   id
-    ${id1}=   Get Value From Json   ${request_response.json()}   $..id
-    Set Suite Variable   ${SCALEOUTID}   ${id1[0]}
-    Get Api Request   ${VNF_INSTANCE_LCM_OPS}/${SCALEOUTID}
+    ${ID1}=   Get Value From Json   ${request_response.json()}   $..id
+    Set Suite Variable   ${scaleoutid}   ${ID1[0]}
+    Get Api Request   ${vnf_instance_lcm_ops}/${scaleoutid}
     ${LcmopsScale}=   Get Value From Json   ${request_response.json()}   $.._id
-    Set Suite Variable   ${LCMOPSSCALEID}   ${LcmopsScale[0]}
-    FOR   ${index}   IN RANGE   0   15
-        Log   ${index}
-        Get Api Request   ${VNF_INSTANCE_LCM_OPS}/${SCALEOUTID}
+    Set Suite Variable   ${lcmopsscaleid}   ${LcmopsScale[0]}
+    FOR   ${Index}   IN RANGE   0   15
+        Get Api Request   ${vnf_instance_lcm_ops}/${scaleoutid}
         ${value}=   Get ID   operationState
         ${status}=   Run Keyword And Return Status   Should Be Equal   ${value}   COMPLETED
-        IF   ${status}
-            BREAK
-        ELSE
-            Sleep   10s
-        END
+        Run Keyword If   ${status}   Exit For Loop
+        ...   ELSE   Sleep   10s
     END
-    Pass Execution If   ${request_response.status_code} in ${SUCCESS_STATUS_CODE_LIST}   Scale VNF instance completed
+    Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Scale VNF instance completed
 
 Terminate VNF
     [Documentation]   Test case to terminate the VNF
     Get Auth Token
     ${json_path}=   Read Directory
     ${updated_json_obj}=   Load JSON From File   ${json_path}/sol003_01-vnf-lifecycle-management.json
-    ${updated_json_obj}=   Get Variable Value   ${UPDATED_JSON_OBJ['data'][3]}
-    Set Suite Variable   ${UPDATED_JSON_OBJ}
-    Post Api Request   ${VNF_INSTANCE_URI}/${CREATEID}/terminate   ${UPDATED_JSON_OBJ}
+    ${updated_json_obj}=   Get Variable Value   ${updated_json_obj['data'][3]}
+    Set Suite Variable   ${updated_json_obj}
+    Post API Request   ${vnf_instance_uri}/${createid}/terminate
     ${id}=   Get Value From Json   ${request_response.json()}   $..id
-    Set Suite Variable   ${TERMINATEID}   ${id[0]}
-    Get Api Request   ${VNF_INSTANCE_LCM_OPS}/${TERMINATEID}
+    Set Suite Variable   ${terminateid}   ${id[0]}
+    Get Api Request   ${vnf_instance_lcm_ops}/${terminateid}
     ${LcmopsTerminate}=   Get Value From Json   ${request_response.json()}   $.._id
-    Set Suite Variable   ${LCMOPSSCALEID}   ${LcmopsTerminate[0]}
-    FOR   ${index}   IN RANGE   0   15
-        Log   ${index}
-        Get Api Request   ${VNF_INSTANCE_LCM_OPS}/${TERMINATEID}
+    Set Suite Variable   ${lcmopsscaleid}   ${LcmopsTerminate[0]}
+    FOR   ${Index}   IN RANGE   0   15
+        Get Api Request   ${vnf_instance_lcm_ops}/${terminateid}
         ${value}=   Get ID   operationState
         ${status}=   Run Keyword And Return Status   Should Be Equal   ${value}   COMPLETED
-        IF   ${status}
-            BREAK
-        ELSE
-            Sleep   10s
-        END
+        Run Keyword If   ${status}   Exit For Loop
+        ...   ELSE   Sleep   10s
     END
-    Pass Execution If   ${request_response.status_code} in ${SUCCESS_STATUS_CODE_LIST}   Terminate VNF instance completed
+    Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Terminate VNF instance completed
 
 Delete VNF
-    [Documentation]   Delete VNF instance.
+    [Documentation]   Test case to delete VNF
     Get Auth Token
-    Create Session   APISession   ${REST_API_HOST}
-    &{Headers}=   Create Dictionary   Content-Type=application/json   Accept=application/json   Authorization=Bearer ${ACCESS_TOKEN}
-    ${resp}=   DELETE On Session   APISession   ${VNF_INSTANCE_URI}/${CREATEID}   headers=${Headers}
-    Pass Execution If   ${resp.status_code} in ${SUCCESS_STATUS_CODE_LIST}   Delete VNF Instance completed
+    Create Session   APISession   ${HOST}
+    &{Headers}   Create Dictionary   Content-Type=application/json   Accept=application/json   Authorization=Bearer ${AccessToken}
+    ${resp}=   DELETE On Session   APISession   ${vnf_instance_uri}/${createid}   headers=${Headers}
+    Pass Execution If   ${resp.status_code} in ${success_status_code_list}   Delete VNF Instance completed
 
 Delete VNF Descriptor Test
-    [Documentation]   Delete VNF package from OSM.
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
index 6a2ae7a..4c16dd8 100644 (file)
@@ -1,4 +1,3 @@
-*** Comments ***
 #   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
@@ -11,9 +10,8 @@
 #   See the License for the specific language governing permissions and
 #   limitations under the License
 
-
 *** Settings ***
-Documentation   [Sol003-02] Sol003 Dual Stack IP in VNFM NB interface
+Documentation Sol003-02 Sol003   This script launches dual-stack IP addresses NS in VIM and verify the dualstack ip
 
 Library   OperatingSystem
 Library   String
@@ -23,53 +21,55 @@ Library   yaml
 Library   JsonValidator
 Library   JSONLibrary
 
-Resource   ../lib/rest_lib.resource
-Resource   ../lib/vnfd_lib.resource
-Resource   ../lib/ns_lib.resource
-Resource   ../lib/vnf_lib.resource
-Resource   ../lib/vim_lib.resource
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/rest_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnf_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vim_lib.robot
 
-Test Tags   sol003_02   cluster_osm_rest   daily
+Force Tags   sol003_02   cluster_osm_rest   daily
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
 
 *** Variables ***
 # SOL003 API URI paths
-${VNF_INSTANCE_URI}   /osm/vnflcm/v1/vnf_instances
-${VNF_INSTANCE_LCM_OPS}   /osm/vnflcm/v1/vnf_lcm_op_occs
+${vnf_instance_uri}   /osm/vnflcm/v1/vnf_instances
+${vnf_instantiate_uri}   /osm/vnflcm/v1/vnf_instances
+${vnf_instance_lcm_ops}   /osm/vnflcm/v1/vnf_lcm_op_occs
 
 # NS and VNF descriptor package folder and ids
-${VNFD_PKG}   hackfest_basic_vnf
-${VNFD_NAME}   hackfest_basic-vnf
+${vnfd_pkg}   hackfest_basic_vnf
+${vnfd_name}   hackfest_basic-vnf
 
 
 *** Test Cases ***
+
 Create VNFD Descriptor
     [Documentation]   Test case to create a VNF Identifier
-    ${VNFD_ID}=   Create VNFD   %{PACKAGES_FOLDER}/${VNFD_PKG}
-    Set Suite Variable   ${VNFD_ID}
-    ${CREATED_VIM_ACCOUNT_ID}=   Get VIM Target ID   %{VIM_TARGET}
-    Set Suite Variable   ${CREATED_VIM_ACCOUNT_ID}
+    ${vnfd_id}=   Create VNFD   %{PACKAGES_FOLDER}/${vnfd_pkg}
+    Set Suite Variable   ${vnfd_id}
+    ${created_vim_account_id}=   Get VIM Target ID   %{VIM_TARGET}
+    Set Suite Variable   ${created_vim_account_id}
     Get Auth Token
     ${json_path}=   Read Directory
     ${json_obj}=   Load JSON From File   ${json_path}/sol003_DualStackip.json
     ${json_obj}=   Get Variable Value   ${json_obj['data'][0]}
-    ${NS_NAME}=   Get Variable Value   ${json_obj['vnfInstanceName']}
-    Set Suite Variable   ${NS_NAME}
-    ${VALUE1}=   Get Variable Value   ${json_obj['additionalParams']['ip-address']}
-    Set Suite Variable   ${VALUE1}
-    ${UPDATED_JSON_OBJ}=   JSONLibrary.Update Value To Json   ${json_obj}   $..vimAccountId   ${CREATED_VIM_ACCOUNT_ID}
-    Log   ${UPDATED_JSON_OBJ}
-    ${UPDATED_JSON_OBJ}=   JSONLibrary.Update Value To Json   ${UPDATED_JSON_OBJ}   $..additionalParams.virtual-link-desc[0][id]   %{VIM_MGMT_NET}
-    Log   ${UPDATED_JSON_OBJ}
-    ${UPDATED_JSON_OBJ}=   JSONLibrary.Update Value To Json   ${UPDATED_JSON_OBJ}   $..additionalParams.virtual-link-profile-id   %{VIM_MGMT_NET}
-    Log   ${UPDATED_JSON_OBJ}
-    Set Test Variable   ${UPDATED_JSON_OBJ}
-    Post Api Request   ${VNF_INSTANCE_URI}   ${UPDATED_JSON_OBJ}
+    ${ns_name}=   Get Variable Value   ${json_obj['vnfInstanceName']}
+    Set Suite Variable   ${ns_name}
+    ${Value1}=   Get Variable Value   ${json_obj['additionalParams']['ip-address']}
+    Set Suite Variable   ${Value1}
+    ${updated_json_obj}=   JSONLibrary.Update Value To Json   ${json_obj}   $..vimAccountId   ${created_vim_account_id}
+    Log   ${updated_json_obj}
+    ${updated_json_obj}=   JSONLibrary.Update Value To Json   ${updated_json_obj}   $..additionalParams.virtual-link-desc[0][id]   %{VIM_MGMT_NET}
+    Log   ${updated_json_obj}
+    ${updated_json_obj}=   JSONLibrary.Update Value To Json   ${updated_json_obj}   $..additionalParams.virtual-link-profile-id   %{VIM_MGMT_NET}
+    Log   ${updated_json_obj}
+    Set Test Variable   ${updated_json_obj}
+    Post API Request   ${vnf_instance_uri}
     Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Query VNF Instance completed
     ${id}=   Get Value From Json   ${request_response.json()}   $..id
-    Set Suite Variable   ${CREATEID}   ${id[0]}
+    Set Suite Variable   ${createid}   ${id[0]}
     Get VNFDs List
 
 Instantiate VNF
@@ -80,128 +80,122 @@ Instantiate VNF
     ${json_path}=   Read Directory
     ${json_obj}=   Load JSON From File   ${json_path}/sol003_DualStackip.json
     ${json_obj}=   Get Variable Value   ${json_obj['data'][1]}
-    ${UPDATED_JSON_OBJ}=   JSONLibrary.Update Value To Json   ${json_obj}   $..vimAccountId   ${CREATED_VIM_ACCOUNT_ID}
-    ${UPDATED_JSON_OBJ}=   JSONLibrary.Update Value To Json   ${UPDATED_JSON_OBJ}   $..vnfId   ${CREATEID}
-    Set Test Variable   ${UPDATED_JSON_OBJ}
-    Post Api Request   ${VNF_INSTANCE_URI}/${CREATEID}/instantiate   ${UPDATED_JSON_OBJ}
+    ${updated_json_obj}=   JSONLibrary.Update Value To Json   ${json_obj}   $..vimAccountId   ${created_vim_account_id}
+    ${updated_json_obj}=   JSONLibrary.Update Value To Json   ${updated_json_obj}   $..vnfId   ${createid}
+    Set Test Variable   ${updated_json_obj}
+    Post API Request   ${vnf_instantiate_uri}/${createid}/instantiate
     Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Instantiate VNF Instance completed
     ${id}=   Get Value From Json   ${request_response.json()}   $..id
-    Set Suite Variable   ${VNF_INSTANCE_ID}   ${id[0]}
+    Set Suite Variable   ${instantiateid}   ${id[0]}
     Sleep   12s
     Get Ns List
     Get Vnf List
 
 Get Ns Id
-    [Documentation]   Get the NS identifier
+    [Documentation]   Get the ns id from the ns list
     ${id}=   Get Ns Id   ${ns_name}
-    Set Suite Variable   ${NS_ID}   ${id}
+    Set Suite Variable   ${ns_id}   ${id}
 
 Get Dual Ip
-    [Documentation]   Get the IP address from the NS
-    ${id}=   Get Dual Ip   ${NS_ID}
-    Set Suite Variable   ${DUAL_IP}   ${id}
+    [Documentation]   Get the ip from the ns list
+    ${id}=   Get Dual Ip   ${ns_id}
+    Set Suite Variable   ${ip}   ${id}
 
 Query VNF Instances
     [Documentation]   Test case to query VNF Instance
     Get Auth Token
-    Get Api Request   ${VNF_INSTANCE_URI}
+    Get Api Request   ${vnf_instance_uri}
     ${value}=   Get ID   nsState
     Should Be Equal   ${value}   INSTANTIATED
     Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Query VNF Instance completed
     ${id}=   Get Value From Json   ${request_response.json()}   $.._id
-    Set Suite Variable   ${QUERY_ID}   ${id[0]}
+    Set Suite Variable   ${Queryid}   ${id[0]}
 
 Query VNF Instance ID
     [Documentation]   Test case to query Vnf instance ID
     Get Auth Token
-    Get Api Request   ${VNF_INSTANCE_URI}/${QUERY_ID}
+    Get Api Request   ${vnf_instance_uri}/${Queryid}
     ${value}=   Get ID   nsState
     Should Be Equal   ${value}   INSTANTIATED
     Should Be Equal As Strings   ${RequestResponse.status_code}   200
     ${id}=   Get Value From Json   ${request_response.json()}   $.._id
-    Log   ${id[0]}
+    Set Suite Variable   ${Instanceid}   ${id[0]}
 
 Query VNF LCM Ops
     [Documentation]   Test case to Query VNF LCM operation
     Get Auth Token
-    Get Api Request   ${VNF_INSTANCE_LCM_OPS}
-    ${id1}=   Get Value From Json   ${request_response.json()}   $.._id
-    Set Suite Variable   ${LCM_OP_ID}   ${id1[0]}
-    FOR   ${index}   IN RANGE   0   15
-        Log   ${index}
-        Get Api Request   ${VNF_INSTANCE_LCM_OPS}
-        ${value}=   Get ID   operationState
-        ${status}=   Run Keyword And Return Status   Should Be Equal   ${value}   COMPLETED
-        IF   ${status}
-            BREAK
-        ELSE
-            Sleep   10s
-        END
+    Get Api Request   ${vnf_instance_lcm_ops}
+    ${ID1}=   Get Value From Json   ${request_response.json()}   $.._id
+    Set Suite Variable   ${lcmops}   ${ID1[0]}
+    FOR   ${Index}   IN RANGE   0   15
+    Get Api Request   ${vnf_instance_lcm_ops}
+    ${value}=   Get ID   operationState
+    ${status}=   Run Keyword And Return Status   Should Be Equal   ${value}   COMPLETED
+    Run Keyword If   ${status}   Exit For Loop
+    ...   ELSE   Sleep   10s
     END
 
 Query VNF LCM Ops ID
     [Documentation]   Test case to Query VNF LCM operation id
     Get Auth Token
-    Get Api Request   ${VNF_INSTANCE_LCM_OPS}/${LCM_OP_ID}
-    ${id1}=   Get Value From Json   ${request_response.json()}   $.._id
-    Log   ${id1[0]}
-    FOR   ${index}   IN RANGE   0   15
-        Log   ${index}
-        Get Api Request   ${VNF_INSTANCE_LCM_OPS}/${LCM_OP_ID}
+    Get Api Request   ${vnf_instance_lcm_ops}/${lcmops}
+    ${ID1}=   Get Value From Json   ${request_response.json()}   $.._id
+    Set Suite Variable   ${lcmopsid}   ${ID1[0]}
+    FOR   ${Index}   IN RANGE   0   15
+        Get Api Request   ${vnf_instance_lcm_ops}/${lcmops}
         ${value}=   Get ID   operationState
         ${status}=   Run Keyword And Return Status   Should Be Equal   ${value}   COMPLETED
-        IF   ${status}
-            BREAK
-        ELSE
-            Sleep   10s
-        END
+        Run Keyword If   ${status}   Exit For Loop
+        ...   ELSE   Sleep   10s
     END
 
 Verify Dual Ip
-    [Documentation]   Test case to terminate the VNF
-    Should Be Equal   ${DUAL_IP}   ${VALUE1}
+    Should Be Equal   ${ip}   ${Value1}
+
 
 Terminate VNF
     [Documentation]   Test case to terminate the VNF
     Get Auth Token
     ${json_path}=   Read Directory
-    ${UPDATED_JSON_OBJ}=   Load JSON From File   ${json_path}/sol003_DualStackip.json
-    ${UPDATED_JSON_OBJ}=   Get Variable Value   ${UPDATED_JSON_OBJ['data'][3]}
-    Set Suite Variable   ${UPDATED_JSON_OBJ}
-    Post Api Request   ${VNF_INSTANCE_URI}/${CREATEID}/terminate   ${UPDATED_JSON_OBJ}
+    ${updated_json_obj}=   Load JSON From File   ${json_path}/sol003_DualStackip.json
+    ${updated_json_obj}=   Get Variable Value   ${updated_json_obj['data'][3]}
+    Set Suite Variable   ${updated_json_obj}
+    Post API Request   ${vnf_instance_uri}/${createid}/terminate
     ${id}=   Get Value From Json   ${request_response.json()}   $..id
-    ${terminateid}=   Set Variable   ${id[0]}
-    Get Api Request   ${VNF_INSTANCE_LCM_OPS}/${terminateid}
+    Set Suite Variable   ${terminateid}   ${id[0]}
+    Get Api Request   ${vnf_instance_lcm_ops}/${terminateid}
     ${LcmopsTerminate}=   Get Value From Json   ${request_response.json()}   $.._id
-    Log   ${LcmopsTerminate[0]}
-    FOR   ${index}   IN RANGE   0   15
-        Log   ${index}
-        Get Api Request   ${VNF_INSTANCE_LCM_OPS}/${terminateid}
+    Set Suite Variable   ${lcmopsscaleid}   ${LcmopsTerminate[0]}
+    FOR   ${Index}   IN RANGE   0   15
+        Get Api Request   ${vnf_instance_lcm_ops}/${terminateid}
         ${value}=   Get ID   operationState
         ${status}=   Run Keyword And Return Status   Should Be Equal   ${value}   COMPLETED
-        IF   ${status}
-            BREAK
-        ELSE
-            Sleep   10s
-        END
+        Run Keyword If   ${status}   Exit For Loop
+        ...   ELSE   Sleep   10s
     END
     Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Terminate VNF instance completed
 
 Delete VNF
     [Documentation]   Test case to delete VNF
     Get Auth Token
-    Create Session   APISession   ${REST_API_HOST}
-    &{Headers}=   Create Dictionary   Content-Type=application/json   Accept=application/json   Authorization=Bearer ${AccessToken}
-    ${resp}=   DELETE On Session   APISession   ${VNF_INSTANCE_URI}/${CREATEID}   headers=${Headers}
+    Create Session   APISession   ${HOST}
+    &{Headers}   Create Dictionary   Content-Type=application/json   Accept=application/json   Authorization=Bearer ${AccessToken}
+    ${resp}=   DELETE On Session   APISession   ${vnf_instance_uri}/${createid}   headers=${Headers}
     Pass Execution If   ${resp.status_code} in ${success_status_code_list}   Delete VNF Instance completed
 
 Delete VNF Descriptor Test
     [Documentation]   Test case to delete the VNF descriptor test
     [Tags]   cleanup
-    Delete VNFD   ${VNFD_NAME}
+
+    Delete VNFD   ${vnfd_name}
 
 
 *** Keywords ***
 Suite Cleanup
     [Documentation]   Test Suit Cleanup: Deleting Descriptor
-    Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}
+
+    Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
+
+
+
+
diff --git a/tox.ini b/tox.ini
index 58889d1..729a3e0 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -16,7 +16,7 @@
 #######################################################################################
 
 [tox]
-envlist = black, cover, flake8, pylint, rflint, safety
+envlist = black, cover, flake8, pylint, safety
 
 [tox:jenkins]
 toxworkdir = /tmp/.tox
@@ -53,26 +53,11 @@ commands =
 
 #######################################################################################
 [testenv:pylint]
-changedir = {toxinidir}/robot-systest
 deps =  {[testenv]deps}
         -r{toxinidir}/requirements-dev.txt
         pylint
 commands =
-        pylint -E .
-
-
-#######################################################################################
-[testenv:rflint]
-changedir = {toxinidir}/robot-systest
-deps =  {[testenv]deps}
-        -r{toxinidir}/requirements-dev.txt
-        robotframework-lint
-        robotframework-robocop
-commands =
-        rflint --ignore LineTooLong --ignore TooFewTestSteps --ignore TooManyTestCases \
-               --ignore TooManyTestSteps --ignore TooFewKeywordSteps \
-               testsuite lib resources
-        robocop --configure return_status:quality_gate:E=0:W=0:I=0 --exclude 050*,0701,0923 .
+        - pylint -E robot-systest/resources
 
 
 #######################################################################################