blob: ada204a31f0979788906da336e72bcddc7fef5f6 [file] [log] [blame]
garciadeblasf4ebaa82022-06-23 13:33:26 +02001# Licensed under the Apache License, Version 2.0 (the "License");
2# you may not use this file except in compliance with the License.
3# You may obtain a copy of the License at
4#
5# http://www.apache.org/licenses/LICENSE-2.0
6#
7# Unless required by applicable law or agreed to in writing, software
8# distributed under the License is distributed on an "AS IS" BASIS,
9# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10# See the License for the specific language governing permissions and
11# limitations under the License.
12
13*** Settings ***
14Documentation [HEAL-04] Autohealing of NS
garciadeblasb731aac2022-06-25 18:29:22 +020015
garciadeblasf4ebaa82022-06-23 13:33:26 +020016Library OperatingSystem
17Library String
18Library Collections
19Library Process
20Library SSHLibrary
garciadeblasb731aac2022-06-25 18:29:22 +020021
garciadeblasf4ebaa82022-06-23 13:33:26 +020022Resource %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
23Resource %{ROBOT_DEVOPS_FOLDER}/lib/vnf_lib.robot
24Resource %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
25Resource %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
26Resource %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
27Resource %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot
28
garciadeblasd7f75d72022-06-25 18:38:32 +020029Force Tags heal_04 cluster_heal daily
garciadeblasb731aac2022-06-25 18:29:22 +020030
31Suite Teardown Run Keyword And Ignore Error Suite Cleanup
32
33
garciadeblasf4ebaa82022-06-23 13:33:26 +020034*** Variables ***
35# NS and VNF descriptor package folder and ids
36${vnfd_pkg} autoheal_vnf
37${vnfd_name} autoheal_vnfd
38${vdu_name} autoheal_vnfd-VM
39${vnf_index} autoheal-basic-1
40${nsd_pkg} autoheal_ns
41${nsd_name} autoheal_nsd
42# NS instance name and configuration
43${ns_name} heal_04
44${ns_config} {vld: [ {name: mgmt, vim-network-name: %{VIM_MGMT_NET}} ] }
45
46# SSH keys and username to be used
47${publickey} %{HOME}/.ssh/id_rsa.pub
48${privatekey} %{HOME}/.ssh/id_rsa
49${username} ubuntu
50${password} ${EMPTY}
51
52${success_return_code} 0
53
54#Healing wait time
55${healing_pol_time} 15sec
56${healing_max_wait_time} 10m
57
aguilardbd91f862022-12-20 15:13:02 +000058@{vim_vdus} @{EMPTY}
59
60
garciadeblasf4ebaa82022-06-23 13:33:26 +020061*** Test Cases ***
62Create VNF Descriptors
63 Create VNFD '%{PACKAGES_FOLDER}/${vnfd_pkg}'
64
65
66Create NS Descriptor
67 Create NSD '%{PACKAGES_FOLDER}/${nsd_pkg}'
68
69
70Network Service Instance Test
71 ${id}= Create Network Service ${nsd_name} %{VIM_TARGET} ${ns_name} ${ns_config} ${publickey}
72 Set Suite Variable ${ns_id} ${id}
73
74
75Get NS Id
76 [Tags] cleanup
77 ${variables} Get Variables
78 IF not "\${ns_id}" in "${variables}"
79 ${id}= Get Ns Id ${ns_name}
80 Set Suite Variable ${ns_id} ${id}
81 END
82
83
aguilardbd91f862022-12-20 15:13:02 +000084Get VIM Objects
85 Variable Should Exist ${ns_id} msg=NS is not available
86 @{vnf_id_list}= Get Ns Vnf List ${ns_id}
garciadeblas321726f2022-12-21 11:43:06 +010087 Log ${vnf_id_list}
aguilardbd91f862022-12-20 15:13:02 +000088 FOR ${vnf_id} IN @{vnf_id_list}
garciadeblas321726f2022-12-21 11:43:06 +010089 Log ${vnf_id}
aguilardbd91f862022-12-20 15:13:02 +000090 ${id}= Get VNF VIM ID ${vnf_id}
91 @{vdu_ids}= Split String ${id}
92 Append To List ${vim_vdus} @{vdu_ids}
93 END
garciadeblas321726f2022-12-21 11:43:06 +010094 Log Many @{vim_vdus}
aguilardbd91f862022-12-20 15:13:02 +000095
96
garciadeblasf4ebaa82022-06-23 13:33:26 +020097Get VNF Info
98 Variable Should Exist ${ns_id} msg=NS is not available
99 ${ip_addr}= Get Vnf Management Ip Address ${ns_id} ${vnf_index}
garciadeblas321726f2022-12-21 11:43:06 +0100100 Log ${ip_addr}
garciadeblasf4ebaa82022-06-23 13:33:26 +0200101 Set Suite Variable ${vnf_ip_addr} ${ip_addr}
102
103 ${vnf_id}= Get Vnf Id ${ns_id} ${vnf_index}
104 Set Suite Variable ${vnf_autoheal_id} ${vnf_id}
105 ${id}= Get VNF VIM ID ${vnf_id}
106 Set Suite Variable ${vdu_autoheal_id} ${id}
garciadeblas321726f2022-12-21 11:43:06 +0100107 Log ${vdu_autoheal_id}
garciadeblasf4ebaa82022-06-23 13:33:26 +0200108
109 @{autoheal_ip_list}= Get Vnf Vdur IPs ${vnf_autoheal_id}
110 Set Suite Variable @{autoheal_ip_list} @{autoheal_ip_list}
garciadeblas321726f2022-12-21 11:43:06 +0100111 Log @{autoheal_ip_list}
garciadeblasf4ebaa82022-06-23 13:33:26 +0200112
113
114Stop Autoheal VDU
115 Variable Should Exist ${vdu_autoheal_id} msg=VDU is not available
116 Halt Server ${vdu_autoheal_id}
117 Sleep 30
118
119
120Wait For Autohealing To Be Completed
121 ${healing_max_wait_time}= Convert Time ${healing_max_wait_time} result_format=number
122 ${healing_max_wait_time}= Evaluate ${healing_max_wait_time} * ${vim_timeout_multiplier}
123 Wait Until Keyword Succeeds ${healing_max_wait_time} ${healing_pol_time} Get Operations By Type ${ns_id} heal
124 ${stdout}= Get Operations By Type ${ns_id} heal
125 Wait Until Keyword Succeeds ${healing_max_wait_time} ${healing_pol_time} Check For NS Operation Ended ${stdout}
126 Check For NS Operation Completed ${stdout}
127
128
129Check VNF After Healing
130 Variable Should Exist ${vnf_autoheal_id} msg=VNF is not available
131
132 @{ip_list}= Get Vnf Vdur IPs ${vnf_autoheal_id}
garciadeblas321726f2022-12-21 11:43:06 +0100133 Log @{ip_list}
garciadeblasf4ebaa82022-06-23 13:33:26 +0200134 Should Be Equal ${ip_list} ${autoheal_ip_list} IP addresses have changed after healing
135
136 ${id}= Get VNF VIM ID ${vnf_autoheal_id}
garciadeblas321726f2022-12-21 11:43:06 +0100137 Log ${id}
garciadeblasf4ebaa82022-06-23 13:33:26 +0200138 Should Not Be Equal ${id} ${vdu_autoheal_id} VDU id has not changed after healing
139
140
aguilardbd91f862022-12-20 15:13:02 +0000141Update VIM Objects
142 Variable Should Exist ${ns_id} msg=NS is not available
143 @{vnf_id_list}= Get Ns Vnf List ${ns_id}
144 FOR ${vnf_id} IN @{vnf_id_list}
145 ${id}= Get VNF VIM ID ${vnf_id}
146 @{vdu_ids}= Split String ${id}
147 FOR ${id} IN @{vdu_ids}
148 IF not "${id}" in "@{vim_vdus}"
149 Append To List ${vim_vdus} ${id}
150 END
151 END
152 END
garciadeblas321726f2022-12-21 11:43:06 +0100153 Log Many @{vim_vdus}
aguilardbd91f862022-12-20 15:13:02 +0000154
155
garciadeblasf4ebaa82022-06-23 13:33:26 +0200156Delete NS Instance
157 [Tags] cleanup
158 Delete NS ${ns_name}
159
160
161Delete NS Descriptor
162 [Tags] cleanup
163 Delete NSD ${nsd_name}
164
165
166Delete VNF Descriptors
167 [Tags] cleanup
168 Delete VNFD ${vnfd_name}
169
aguilardbd91f862022-12-20 15:13:02 +0000170
171Delete Objects in VIM
172 [Tags] cleanup
173 ${error}= Set Variable 0
174 FOR ${vdu_id} IN @{vim_vdus}
garciadeblas321726f2022-12-21 11:43:06 +0100175 Log Checking if server ${vdu_id} is still in VIM
aguilardbd91f862022-12-20 15:13:02 +0000176 ${status}= Run Keyword And Ignore Error Get Server Property ${vdu_id} id
garciadeblas321726f2022-12-21 11:43:06 +0100177 Log ${status}[0]
aguilardbd91f862022-12-20 15:13:02 +0000178 IF '${status}[0]' == 'PASS'
179 ${error}= Set Variable 1
garciadeblas321726f2022-12-21 11:43:06 +0100180 Log Deleting server ${vdu_id}
aguilardbd91f862022-12-20 15:13:02 +0000181 Run Keyword And Ignore Error Delete Server ${vdu_id}
182 END
183 END
184 IF ${error}==1
185 Fail Some objects created by test were not deleted in VIM
186 END
187
188
garciadeblasf4ebaa82022-06-23 13:33:26 +0200189*** Keywords ***
190Suite Cleanup
191 [Documentation] Test Suit Cleanup: Deleting Descriptor, instance and vim
192
193 Run Keyword If Any Tests Failed Delete NS ${ns_name}
194 Run Keyword If Any Tests Failed Delete NSD ${nsd_name}
195 Run Keyword If Any Tests Failed Delete VNFD ${vnfd_name}