Add actions to Simple K8s test 43/9543/2
authorDominik Fleischmann <dominik.fleischmann@canonical.com>
Fri, 31 Jul 2020 13:17:26 +0000 (15:17 +0200)
committerbeierlm <mark.beierl@canonical.com>
Fri, 31 Jul 2020 15:15:26 +0000 (17:15 +0200)
This commit changes the package used for the test
k8s-03. The new package has actions included and
uses local k8s charms.

This required the additon of the upload-package
commands in the robot test libraries and the
K8s Ns Action command.

Additionally the timeout time for the k8scluster
creation has been extended, as it was to short for
some test environments.

Change-Id: I846733982a7874b3467270d1a1d1fa8a330030f8
Signed-off-by: Dominik Fleischmann <dominik.fleischmann@canonical.com>
robot-systest/lib/k8scluster_lib.robot
robot-systest/lib/ns_lib.robot
robot-systest/lib/package_lib.robot [new file with mode: 0644]
robot-systest/resources/k8s_03-simple_k8s_data.py
robot-systest/testsuite/k8s_03-simple_k8s.robot

index 3896941..b663d52 100644 (file)
@@ -14,7 +14,7 @@
 
 *** Variables ***
 ${success_return_code}   0
-${k8scluster_launch_max_wait_time}   2min
+${k8scluster_launch_max_wait_time}   5min
 ${k8scluster_launch_pol_time}   30sec
 ${k8scluster_delete_max_wait_time}   2min
 ${k8scluster_delete_pol_time}   15sec
index b1db909..b3c912f 100644 (file)
@@ -152,6 +152,31 @@ Execute NS Action
     [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 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.
diff --git a/robot-systest/lib/package_lib.robot b/robot-systest/lib/package_lib.robot
new file mode 100644 (file)
index 0000000..7b3cad2
--- /dev/null
@@ -0,0 +1,55 @@
+# -*- 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 ***
+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
index f4f99bf..b544eef 100644 (file)
@@ -18,13 +18,13 @@ home = str(Path.home())
 k8scluster_name = 'k8s-test'
 k8scluster_version = 'v1'
 # NS and VNF descriptor package files
-vnfd_pkg = 'hackfest_simple_k8s_vnf'
-nsd_pkg = 'hackfest_simple_k8s_ns'
+vnfd_pkg = 'charm-packages/native_k8s_charm_vnf'
+nsd_pkg = 'charm-packages/native_k8s_charm_ns'
 # NS and VNF descriptor package files
-vnfd_name = 'hackfest-simple-k8s-vnf'
-nsd_name = 'hackfest-simple-k8s-ns'
+vnfd_name = 'native_k8s_charm-vnf'
+nsd_name = 'native_k8s_charm-ns'
 # NS instance name
-ns_name = 'simple-k8s'
+ns_name = 'native-k8s'
 # SSH keys to be used
 publickey = home + '/.ssh/id_rsa.pub'
 privatekey = home + '/.ssh/id_rsa'
index f0aa94d..081219d 100644 (file)
@@ -21,6 +21,7 @@ Library   Process
 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
@@ -34,15 +35,20 @@ Suite Teardown   Run Keyword And Ignore Error   Test Cleanup
 ${ns_id}   ${EMPTY}
 ${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 ${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
     [Tags]   simple_k8s   charm   sanity   regression
-    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+    Upload Package   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
 
 Create Simple K8s Descriptor
     [Tags]   simple_k8s   charm   sanity   regression
-    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+    Upload Package   '%{PACKAGES_FOLDER}/${nsd_pkg}'
 
 Add K8s Cluster To OSM
     [Tags]   simple_k8s   charm   sanity   regression
@@ -53,6 +59,14 @@ Network Service K8s Instance Test
     ${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.
+    [Tags]   simple_k8s   charm   sanity   regression
+
+    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
     [Tags]   simple_k8s   charm   sanity   regression   cleanup
     Delete NS   ${ns_name}
@@ -69,6 +83,11 @@ Delete VNF Descriptor Test
     [Tags]   simple_k8s   charm   sanity   regression   cleanup
     Delete VNFD   ${vnfd_name}
 
+Delete VNF NS Packages
+    [Tags]   simple_k8s   charm   sanity   regression   cleanup
+    Delete Package   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+    Delete Package   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 *** Keywords ***
 Test Cleanup