| # 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 [HEAL-04] Autohealing of NS |
| |
| Library OperatingSystem |
| Library String |
| Library Collections |
| Library Process |
| Library SSHLibrary |
| |
| 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_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 |
| # NS instance name and configuration |
| ${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} |
| |
| ${success_return_code} 0 |
| |
| #Healing wait time |
| ${healing_pol_time} 15sec |
| ${healing_max_wait_time} 10m |
| |
| @{vim_vdus} @{EMPTY} |
| |
| |
| *** Test Cases *** |
| Create VNF Descriptors |
| Create VNFD '%{PACKAGES_FOLDER}/${vnfd_pkg}' |
| |
| |
| Create NS Descriptor |
| Create NSD '%{PACKAGES_FOLDER}/${nsd_pkg}' |
| |
| |
| Network Service Instance Test |
| ${id}= Create Network Service ${nsd_name} %{VIM_TARGET} ${ns_name} ${ns_config} ${publickey} |
| Set Suite Variable ${ns_id} ${id} |
| |
| |
| Get NS Id |
| [Tags] cleanup |
| ${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 |
| 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} |
| END |
| Log Many @{vim_vdus} |
| |
| |
| Get VNF Info |
| 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} |
| ${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} |
| |
| |
| Stop Autoheal VDU |
| Variable Should Exist ${vdu_autoheal_id} msg=VDU is not available |
| Halt Server ${vdu_autoheal_id} |
| Sleep 30 |
| |
| |
| Wait For Autohealing To Be Completed |
| ${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 |
| 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} |
| Log ${id} |
| Should Not Be Equal ${id} ${vdu_autoheal_id} VDU id has not changed after healing |
| |
| |
| Update VIM Objects |
| 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} |
| END |
| END |
| END |
| Log Many @{vim_vdus} |
| |
| |
| Delete NS Instance |
| [Tags] cleanup |
| Delete NS ${ns_name} |
| |
| |
| Delete NS Descriptor |
| [Tags] cleanup |
| Delete NSD ${nsd_name} |
| |
| |
| Delete VNF Descriptors |
| [Tags] cleanup |
| Delete VNFD ${vnfd_name} |
| |
| |
| Delete Objects in VIM |
| [Tags] cleanup |
| ${error}= Set Variable 0 |
| 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' |
| ${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 |
| 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_name} |