From 1a9cf4646bf405c737717a063950697955261179 Mon Sep 17 00:00:00 2001 From: aktas Date: Fri, 25 Mar 2022 06:04:25 +0300 Subject: [PATCH] Fix bug 1931: adds missing parameter ns_config now includes initial replicaCount to set a start point for the deployment. Also, the logic for pod number counting is change with `kubectl` command to get real time pod count. `Get Vnf Kdu Replica Count` method gets the replicaCount information from osm configs. Change-Id: I92cdb88c562a4297f6d09b773710c7c6b371e05e Signed-off-by: aktas --- robot-systest/lib/kubectl_lib.robot | 24 ++++++++++++ robot-systest/lib/ns_lib.robot | 12 ++++++ .../k8s_11-simple_helm_k8s_scaling.robot | 37 ++++++++++++------- 3 files changed, 59 insertions(+), 14 deletions(-) create mode 100644 robot-systest/lib/kubectl_lib.robot diff --git a/robot-systest/lib/kubectl_lib.robot b/robot-systest/lib/kubectl_lib.robot new file mode 100644 index 0000000..508f947 --- /dev/null +++ b/robot-systest/lib/kubectl_lib.robot @@ -0,0 +1,24 @@ +# 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 *** +Count Pod Number + [Arguments] ${host} ${username} ${password} ${privatekey} ${namespace} ${application_selector} + + Should Not Be Empty ${namespace} ${application_selector} + ${stdout}= Execute Remote Command Check Rc Return Output ${host} ${username} ${password} ${privatekey} kubectl get pods --namespace ${namespace} --output name --selector=${application_selector} | wc -l + log Pod count is ${stdout} for ${application_selector} in ${namespace} namespace + [Return] ${stdout} diff --git a/robot-systest/lib/ns_lib.robot b/robot-systest/lib/ns_lib.robot index 0976241..623d43e 100644 --- a/robot-systest/lib/ns_lib.robot +++ b/robot-systest/lib/ns_lib.robot @@ -312,3 +312,15 @@ Get VDU Affinity Group Name log ${affinity_group_name} Should Be Equal As Integers ${rc} ${success_return_code} msg=${affinity_group_name} values=False [Return] ${affinity_group_name} + + +Get Vnf Namespace + [Documentation] Return the KDU's namespace + + [Arguments] ${vnf_id} + + ${rc} ${stdout}= Run and Return RC and Output osm vnf-show ${vnf_id} --literal | yq '.kdur[]."k8s-namespace"' | tr -d \\" + Should Be Equal As Integers ${rc} ${success_return_code} msg=${stdout} values=False + Should Not Be Empty ${stdout} + log namespace: ${stdout} + [Return] ${stdout} diff --git a/robot-systest/testsuite/k8s_11-simple_helm_k8s_scaling.robot b/robot-systest/testsuite/k8s_11-simple_helm_k8s_scaling.robot index 78611e5..e23f4cc 100644 --- a/robot-systest/testsuite/k8s_11-simple_helm_k8s_scaling.robot +++ b/robot-systest/testsuite/k8s_11-simple_helm_k8s_scaling.robot @@ -25,8 +25,9 @@ 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/kubectl_lib.robot -Force Tags k8s_11 cluster_k8s regression +Force Tags k8s_11 cluster_k8s daily regression Suite Teardown Run Keyword And Ignore Error Suite Cleanup @@ -42,10 +43,6 @@ ${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}} ] } - # Username and SSH private key for accessing OSM host ${username} ubuntu ${password} ${EMPTY} @@ -54,8 +51,14 @@ ${privatekey} %{OSM_RSA_FILE} ${ns_id} ${EMPTY} ${publickey} %{HOME}/.ssh/id_rsa.pub ${vnf_member_index} openldap -${kdu_name} native-kdu +${kdu_name} ldap ${scaling_group} scale-kdu +${replica_count} 1 +${application_selector} app=openldap + +# NS instance name and configuration +${ns_name} openldap-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": {"replicaCount": "${replica_count}"}} ]} ]} *** Test Cases *** Create Simple K8s Scale VNF Descriptor @@ -68,20 +71,24 @@ Add K8s Cluster To OSM Create K8s Cluster %{K8S_CREDENTIALS} ${k8scluster_version} %{VIM_TARGET} %{VIM_MGMT_NET} ${k8scluster_name} Create Network Service Instance - ${id}= Create Network Service ${nsd_name} %{VIM_TARGET} ${ns_name} ${ns_config} ${publickey} + ${id}= Create Network Service ${nsd_name} %{VIM_TARGET} ${ns_name} ${ns_config} ${publickey} Set Suite Variable ${ns_id} ${id} Get Vnf 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] + ${id}= Get Vnf Id ${ns_id} ${vnf_member_index} + Set Suite Variable ${vnf_id} ${id} + +Get Vnf Namespace + Variable Should Exist ${vnf_id} msg=VNF instance is not available + ${namespace}= Get Vnf Namespace ${vnf_id} + Set Suite Variable ${vnf_namespace} ${namespace} 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 ${vnf_namespace} msg=Network service instance is not available + ${kdu_count}= Count Pod Number %{OSM_HOSTNAME} ${username} ${password} ${privatekey} ${vnf_namespace} ${application_selector} log ${kdu_count} Set Suite Variable ${initial_kdu_count} ${kdu_count} @@ -89,12 +96,13 @@ 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} 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} + ${kdu_count}= Count Pod Number %{OSM_HOSTNAME} ${username} ${password} ${privatekey} ${vnf_namespace} ${application_selector} log ${kdu_count} Run Keyword Unless ${kdu_count} == ${initial_kdu_count} + 2 Fail msg=There is no new KDU in the model after Scale Out @@ -102,11 +110,12 @@ 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} 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} + ${kdu_count}= Count Pod Number %{OSM_HOSTNAME} ${username} ${password} ${privatekey} ${vnf_namespace} ${application_selector} Run Keyword Unless ${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 -- 2.17.1