*** 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
[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.
--- /dev/null
+# -*- 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
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'
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
${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
${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}
[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