blob: 328274d106810e95dd21828bda8dc4d29c89c556 [file] [log] [blame]
garciadeblas7a9e0312023-12-11 22:24:46 +01001*** Comments ***
aguilard845c2ea2022-04-08 09:36:03 +00002# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
garciadeblas7a9e0312023-12-11 22:24:46 +010014
aguilard845c2ea2022-04-08 09:36:03 +000015*** Settings ***
garciadeblas988b9892023-12-17 01:39:04 +010016Documentation [HEAL-02] Healing of scaled VDUs
aguilard845c2ea2022-04-08 09:36:03 +000017
18Library OperatingSystem
19Library String
20Library Collections
21Library Process
22Library SSHLibrary
23
garciadeblas7a9e0312023-12-11 22:24:46 +010024Resource ../lib/vnfd_lib.resource
25Resource ../lib/vnf_lib.resource
26Resource ../lib/nsd_lib.resource
27Resource ../lib/ns_lib.resource
28Resource ../lib/ns_operation_lib.resource
29Resource ../lib/ssh_lib.resource
30Resource ../lib/openstack_lib.resource
aguilard845c2ea2022-04-08 09:36:03 +000031
garciadeblas166c8912023-12-16 10:51:48 +010032Test Tags heal_02 cluster_heal daily regression
aguilard845c2ea2022-04-08 09:36:03 +000033
34Suite Teardown Run Keyword And Ignore Error Suite Cleanup
35
36
37*** Variables ***
38# NS and VNF descriptor package folder and ids
garciadeblas7a9e0312023-12-11 22:24:46 +010039${VNFD_VOLUMES_PKG} several_volumes_vnf
40${VNFD_VOLUMES_NAME} several_volumes-vnf
41${VDU_VOLUMES_NAME} several_volumes-VM
42${VNF_SEVERAL_INDEX} several_volumes_vnf
garciadeblas988b9892023-12-17 01:39:04 +010043${VNFD_MANUALSCALE_PKG} manual_scale_vnf
44${VNFD_MANUALSCALE_NAME} manual_scale-vnf
45${VDU_MANUALSCALE_NAME} mgmtVM
46${VNF_MANUALSCALE_INDEX} manual_scale_vnf
47${VNF_MANUALSCALE_SCALING_GROUP} manual-scaling_mgmtVM
48${VNF_MANUALSCALE_CLOUDINIT_FILE} /root/helloworld.txt
49${VNF_MANUALSCALE_DAY1_FILE} /home/ubuntu/first-touch
50${NSD_PKG} volumes_healing_ns
51${NSD_NAME} volumes_healing-ns
aguilard845c2ea2022-04-08 09:36:03 +000052
53# NS instance name and configuration
garciadeblas7a9e0312023-12-11 22:24:46 +010054${FLAVOR_NAME_PREFIX} osm.heal02
55${NS_NAME} heal_02
56${NS_TIMEOUT} 6min
57${SCALE_WAIT_TIME} 5min
aguilard845c2ea2022-04-08 09:36:03 +000058
59# SSH keys and username to be used
garciadeblas7a9e0312023-12-11 22:24:46 +010060${PUBLICKEY} %{HOME}/.ssh/id_rsa.pub
61${PRIVATEKEY} %{HOME}/.ssh/id_rsa
62${USERNAME} ubuntu
63${PASSWORD} ${EMPTY}
aguilard845c2ea2022-04-08 09:36:03 +000064
garciadeblas7a9e0312023-12-11 22:24:46 +010065${SUCCESS_RETURN_CODE} 0
aguilard845c2ea2022-04-08 09:36:03 +000066
garciadeblas7a9e0312023-12-11 22:24:46 +010067@{VIM_VDUS} @{EMPTY}
68@{VIM_VOLUMES} @{EMPTY}
aguilardbd91f862022-12-20 15:13:02 +000069
garciadeblasbd5cf972024-02-02 14:49:51 +010070# Variables to control time for healing and polling
71${VNF_MAX_TIME_TO_BE_READY} 120sec
72${VNF_POL_TIME} 30sec
73
aguilard845c2ea2022-04-08 09:36:03 +000074
75*** Test Cases ***
76Create VNF Descriptors
garciadeblas7a9e0312023-12-11 22:24:46 +010077 [Documentation] Upload VNF packages for the testsuite.
garciadeblas988b9892023-12-17 01:39:04 +010078 Create VNFD '%{PACKAGES_FOLDER}/${VNFD_MANUALSCALE_PKG}'
garciadeblas7a9e0312023-12-11 22:24:46 +010079 Create VNFD '%{PACKAGES_FOLDER}/${VNFD_VOLUMES_PKG}'
aguilard845c2ea2022-04-08 09:36:03 +000080
81Create NS Descriptor
garciadeblas7a9e0312023-12-11 22:24:46 +010082 [Documentation] Upload NS package for the testsuite.
83 Create NSD '%{PACKAGES_FOLDER}/${NSD_PKG}'
aguilard845c2ea2022-04-08 09:36:03 +000084
Gabriel Cuba8f994cc2023-05-12 13:44:16 -050085Create Test Flavor
garciadeblas7a9e0312023-12-11 22:24:46 +010086 [Documentation] Create a flavor that will be used at NS instantiation time and save it as FLAVOR_ID.
aguilardf9be5502023-06-20 10:51:16 +000087 ${rand}= Generate Random String 6 [NUMBERS]
garciadeblas7a9e0312023-12-11 22:24:46 +010088 ${flavor_name}= Catenate SEPARATOR=_ ${FLAVOR_NAME_PREFIX} ${rand}
aguilard83eed182023-06-20 07:40:33 +000089 ${id}= Create Flavor ${flavor_name} 1 1024 10
garciadeblas7a9e0312023-12-11 22:24:46 +010090 Set Suite Variable ${FLAVOR_ID} ${id}
Gabriel Cuba8f994cc2023-05-12 13:44:16 -050091
aguilard845c2ea2022-04-08 09:36:03 +000092Network Service Instance Test
garciadeblas7a9e0312023-12-11 22:24:46 +010093 [Documentation] Instantiate NS for the testsuite using the previously created flavor.
garciadeblas988b9892023-12-17 01:39:04 +010094 ${ns_config}= Set Variable {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}}],vnf: [ {member-vnf-index: manual_scale_vnf, vdu: [{ id: mgmtVM, vim-flavor-id: ${FLAVOR_ID}}]}] }
garciadeblas7a9e0312023-12-11 22:24:46 +010095 ${id}= Create Network Service ${NSD_NAME} %{VIM_TARGET} ${NS_NAME} ${ns_config} ${PUBLICKEY} ${NS_TIMEOUT}
96 Set Suite Variable ${NS_ID} ${id}
aguilard845c2ea2022-04-08 09:36:03 +000097
98Get NS Id
garciadeblas7a9e0312023-12-11 22:24:46 +010099 [Documentation] Get NS identifier.
Mark Beierl58710332022-08-03 14:14:14 -0400100 [Tags] cleanup
garciadeblas7a9e0312023-12-11 22:24:46 +0100101 ${variables}= Get Variables
garciadeblas23ff8f92023-12-11 16:26:40 +0100102 IF not "\${ns_id}" in "${variables}"
garciadeblas7a9e0312023-12-11 22:24:46 +0100103 ${id}= Get Ns Id ${NS_NAME}
104 Set Suite Variable ${NS_ID} ${id}
aguilard845c2ea2022-04-08 09:36:03 +0000105 END
106
garciadeblas988b9892023-12-17 01:39:04 +0100107Scale Out Manual Scale VNF
108 [Documentation] Perform a manual scale-out operation of the manual-scale VNF.
109 ${vnf_id}= Get Vnf Id ${NS_ID} ${VNF_MANUALSCALE_INDEX}
110 Set Suite Variable ${VNF_MANUALSCALE_ID} ${vnf_id}
111 @{vdur_list}= Get Vnf Vdur Names ${VNF_MANUALSCALE_ID}
garciadeblasf4ebaa82022-06-23 13:33:26 +0200112 ${vdurs}= Get Length ${vdur_list}
garciadeblas7a9e0312023-12-11 22:24:46 +0100113 Set Suite Variable ${INITIAL_VDUR_COUNT} ${vdurs}
garciadeblas988b9892023-12-17 01:39:04 +0100114 Execute Manual VNF Scale ${NS_NAME} ${VNF_MANUALSCALE_INDEX} ${VNF_MANUALSCALE_SCALING_GROUP} SCALE_OUT ${SCALE_WAIT_TIME}
115 @{vdur_list}= Get Vnf Vdur Names ${VNF_MANUALSCALE_ID}
garciadeblasf4ebaa82022-06-23 13:33:26 +0200116 ${vdurs}= Get Length ${vdur_list}
garciadeblas7a9e0312023-12-11 22:24:46 +0100117 IF ${vdurs} != ${INITIAL_VDUR_COUNT} + 1 Fail msg=There is no new VDU records in the VNF after Scale Out
aguilard845c2ea2022-04-08 09:36:03 +0000118
aguilardbd91f862022-12-20 15:13:02 +0000119Get VIM Objects
garciadeblas7a9e0312023-12-11 22:24:46 +0100120 [Documentation] Retrieve all VMs and volumes from the NS and stores them in VIM_VDUS and VIM_VOLUMES lists.
121 Variable Should Exist ${NS_ID} msg=NS is not available
122 @{vnf_id_list}= Get Ns Vnf List ${NS_ID}
garciadeblas321726f2022-12-21 11:43:06 +0100123 Log ${vnf_id_list}
aguilardbd91f862022-12-20 15:13:02 +0000124 FOR ${vnf_id} IN @{vnf_id_list}
garciadeblas321726f2022-12-21 11:43:06 +0100125 Log ${vnf_id}
aguilardbd91f862022-12-20 15:13:02 +0000126 ${id}= Get VNF VIM ID ${vnf_id}
127 @{vdu_ids}= Split String ${id}
garciadeblas7a9e0312023-12-11 22:24:46 +0100128 Append To List ${VIM_VDUS} @{vdu_ids}
aguilardbd91f862022-12-20 15:13:02 +0000129 END
garciadeblas7a9e0312023-12-11 22:24:46 +0100130 FOR ${vdu_id} IN @{VIM_VDUS}
aguilardbd91f862022-12-20 15:13:02 +0000131 ${volumes_attached}= Get Server Property ${vdu_id} volumes_attached
132 ${match}= Get Regexp Matches ${volumes_attached} '([0-9a-f\-]+)' 1
133 IF ${match} != @{EMPTY}
garciadeblas7a9e0312023-12-11 22:24:46 +0100134 IF not "${match}[0]" in "@{VIM_VOLUMES}"
135 Append To List ${VIM_VOLUMES} ${match}[0]
aguilardbd91f862022-12-20 15:13:02 +0000136 END
137 END
138 END
garciadeblas7a9e0312023-12-11 22:24:46 +0100139 Log Many @{VIM_VDUS}
140 Log Many @{VIM_VOLUMES}
aguilardbd91f862022-12-20 15:13:02 +0000141
garciadeblas988b9892023-12-17 01:39:04 +0100142Get Manual Scale VNF Info
143 [Documentation] Get VDU ID and IP addresses of the manual scale VNF and stores them in VDU_MANUALSCALE_IDS and MANUALSCALE_IP_LIST.
garciadeblas7a9e0312023-12-11 22:24:46 +0100144 Variable Should Exist ${NS_ID} msg=NS is not available
145 ${variables}= Get Variables
garciadeblas988b9892023-12-17 01:39:04 +0100146 IF not "\${VNF_MANUALSCALE_ID}" in "${variables}"
147 ${vnf_id}= Get Vnf Id ${NS_ID} ${VNF_MANUALSCALE_INDEX}
148 Set Suite Variable ${VNF_MANUALSCALE_ID} ${vnf_id}
aguilard845c2ea2022-04-08 09:36:03 +0000149 END
garciadeblas988b9892023-12-17 01:39:04 +0100150 ${id}= Get VNF VIM ID ${VNF_MANUALSCALE_ID}
151 @{vdu_manualscale_ids}= Split String ${id}
152 Set Suite Variable @{VDU_MANUALSCALE_IDS} @{vdu_manualscale_ids}
153 Log ${VDU_MANUALSCALE_IDS}[1]
154 @{manualscale_ip_list}= Get Vnf Vdur IPs ${VNF_MANUALSCALE_ID}
155 Set Suite Variable @{MANUALSCALE_IP_LIST} @{manualscale_ip_list}
garciadeblasbd5cf972024-02-02 14:49:51 +0100156 ${ip}= Get Vdu Attribute ${VNF_MANUALSCALE_ID} ip-address 1
157 Set Suite Variable ${HEALED_VDU_MGMT_IP} ${ip}
158
159Check Day0 And Day1 In VDU Before Halting VM
160 [Documentation] Check that the VDU is accessible via SSH in its mgmt IP address.
161 ... It also checks if day-0 worked and a remote file has been created in the VDU.
162 ... It also checks if day-1 worked and a remote file has been created in the VDU.
163 ${ip}= Get Vdu Attribute ${VNF_MANUALSCALE_ID} ip-address 1
164 Variable Should Exist ${HEALED_VDU_MGMT_IP} msg=IP address of the healed VDU is not available
165 Wait Until Keyword Succeeds ${VNF_MAX_TIME_TO_BE_READY} ${VNF_POL_TIME} Test SSH Connection ${HEALED_VDU_MGMT_IP} ${USERNAME} ${PASSWORD} ${PRIVATEKEY}
166 ${stdout}= Execute Remote Command Check Rc Return Output ${ip} ${USERNAME} ${PASSWORD} ${PRIVATEKEY} sudo ls ${VNF_MANUALSCALE_CLOUDINIT_FILE}
167 Log ${stdout}
168 # Check If Remote File Exists ${HEALED_VDU_MGMT_IP} ${USERNAME} ${PASSWORD} ${PRIVATEKEY} ${VNF_MANUALSCALE_DAY1_FILE}
aguilard845c2ea2022-04-08 09:36:03 +0000169
garciadeblas988b9892023-12-17 01:39:04 +0100170Halt Manual Scale VDU
171 [Documentation] Halt one of the VM of the Manual Scale VNF.
172 Variable Should Exist @{VDU_MANUALSCALE_IDS} msg=VDU is not available
173 Halt Server ${VDU_MANUALSCALE_IDS}[1]
aguilard845c2ea2022-04-08 09:36:03 +0000174 Sleep 15
175
garciadeblas988b9892023-12-17 01:39:04 +0100176Heal Manual Scale VDU
garciadeblas7a9e0312023-12-11 22:24:46 +0100177 [Documentation] Heal manually via OSM commands all stopped VMs . They should be started again.
garciadeblas988b9892023-12-17 01:39:04 +0100178 Variable Should Exist ${VNF_MANUALSCALE_ID} msg=VNF is not available
179 Heal Network Service ${NS_ID} --vnf ${VNF_MANUALSCALE_ID} --cause "Heal VM of manual_scale_vnf" --vdu ${VDU_MANUALSCALE_NAME} --count-index 1 --run-day1
aguilard845c2ea2022-04-08 09:36:03 +0000180
garciadeblase7d562d2024-06-18 10:14:48 +0200181Check VNF After Healing
182 [Documentation] Check that the IDs of the VM and volumes have not changed after healing.
183 Variable Should Exist ${VNF_MANUALSCALE_ID} msg=VNF is not available
184 @{ip_list}= Get Vnf Vdur IPs ${VNF_MANUALSCALE_ID}
185 Should Be Equal ${ip_list} ${MANUALSCALE_IP_LIST} IP addresses have changed after healing
186 ${id}= Get VNF VIM ID ${VNF_MANUALSCALE_ID}
187 @{ids}= Split String ${id}
188 Should Be Equal ${VDU_MANUALSCALE_IDS}[0] ${ids}[0] VDU[0] id has changed after healing
189 Should Not Be Equal ${VDU_MANUALSCALE_IDS}[1] ${ids}[1] VDU[1] id has not changed after healing
190 Should Be Equal ${VDU_MANUALSCALE_IDS}[2] ${ids}[2] VDU[2] id has changed after healing
garciadeblase7d562d2024-06-18 10:14:48 +0200191 ${vim_info}= Get Vdu Attribute ${VNF_MANUALSCALE_ID} vim_info 1
192 Should Contain ${vim_info} id: ${FLAVOR_ID} msg=Flavor ID is incorrect
garciadeblasbd5cf972024-02-02 14:49:51 +0100193 ${ip}= Get Vdu Attribute ${VNF_MANUALSCALE_ID} ip-address 1
194 Should Be Equal ${HEALED_VDU_MGMT_IP} ${ip}
195
196Check Day0 And Day1 In VDU After Healing
197 [Documentation] Check that the healed VDU is accessible via SSH in its mgmt IP address.
198 ... It also checks if day-0 worked after healing and a remote file has been created in the VDU.
199 ... It also checks if day-1 worked after healing and a remote file has been created in the VDU.
200 Variable Should Exist ${HEALED_VDU_MGMT_IP} msg=IP address of the healed VDU is not available
201 Wait Until Keyword Succeeds ${VNF_MAX_TIME_TO_BE_READY} ${VNF_POL_TIME} Test SSH Connection ${HEALED_VDU_MGMT_IP} ${USERNAME} ${PASSWORD} ${PRIVATEKEY}
202 ${stdout}= Execute Remote Command Check Rc Return Output ${HEALED_VDU_MGMT_IP} ${USERNAME} ${PASSWORD} ${PRIVATEKEY} sudo ls ${VNF_MANUALSCALE_CLOUDINIT_FILE}
203 Log ${stdout}
204 # Check If Remote File Exists ${HEALED_VDU_MGMT_IP} ${USERNAME} ${PASSWORD} ${PRIVATEKEY} ${VNF_MANUALSCALE_DAY1_FILE}
aguilard845c2ea2022-04-08 09:36:03 +0000205
aguilardbd91f862022-12-20 15:13:02 +0000206Update VIM Objects
garciadeblas7a9e0312023-12-11 22:24:46 +0100207 [Documentation] Retrieve all VMs and volumes from the NS and stores them in VIM_VDUS and VIM_VOLUMES lists.
208 ... This is done again to guarantee that all objects are cleaned in the VIM in case the heal operation
209 ... added new objects.
210 Variable Should Exist ${NS_ID} msg=NS is not available
aguilardbd91f862022-12-20 15:13:02 +0000211 @{vdu_updated}= Create List
garciadeblas7a9e0312023-12-11 22:24:46 +0100212 @{vnf_id_list}= Get Ns Vnf List ${NS_ID}
aguilardbd91f862022-12-20 15:13:02 +0000213 FOR ${vnf_id} IN @{vnf_id_list}
214 ${id}= Get VNF VIM ID ${vnf_id}
215 @{vdu_ids}= Split String ${id}
216 Append To List ${vdu_updated} @{vdu_ids}
217 FOR ${id} IN @{vdu_ids}
garciadeblas7a9e0312023-12-11 22:24:46 +0100218 IF not "${id}" in "@{VIM_VDUS}"
219 Append To List ${VIM_VDUS} ${id}
aguilardbd91f862022-12-20 15:13:02 +0000220 END
221 END
222 END
223 FOR ${vdu_id} IN @{vdu_updated}
224 ${volumes_attached}= Get Server Property ${vdu_id} volumes_attached
225 ${match}= Get Regexp Matches ${volumes_attached} '([0-9a-f\-]+)' 1
226 IF ${match} != @{EMPTY}
garciadeblas7a9e0312023-12-11 22:24:46 +0100227 IF not "${match}[0]" in "@{VIM_VOLUMES}"
228 Append To List ${VIM_VOLUMES} ${match}[0]
aguilardbd91f862022-12-20 15:13:02 +0000229 END
230 END
231 END
garciadeblas7a9e0312023-12-11 22:24:46 +0100232 Log Many @{VIM_VDUS}
233 Log Many @{VIM_VOLUMES}
aguilardbd91f862022-12-20 15:13:02 +0000234
aguilard845c2ea2022-04-08 09:36:03 +0000235Delete NS Instance
garciadeblas7a9e0312023-12-11 22:24:46 +0100236 [Documentation] Delete NS instance.
aguilard845c2ea2022-04-08 09:36:03 +0000237 [Tags] cleanup
garciadeblas7a9e0312023-12-11 22:24:46 +0100238 Delete NS ${NS_NAME}
aguilard845c2ea2022-04-08 09:36:03 +0000239
240Delete NS Descriptor
garciadeblas7a9e0312023-12-11 22:24:46 +0100241 [Documentation] Delete NS package from OSM.
aguilard845c2ea2022-04-08 09:36:03 +0000242 [Tags] cleanup
garciadeblas7a9e0312023-12-11 22:24:46 +0100243 Delete NSD ${NSD_NAME}
aguilard845c2ea2022-04-08 09:36:03 +0000244
245Delete VNF Descriptors
garciadeblas7a9e0312023-12-11 22:24:46 +0100246 [Documentation] Delete VNF packages from OSM.
aguilard845c2ea2022-04-08 09:36:03 +0000247 [Tags] cleanup
garciadeblas7a9e0312023-12-11 22:24:46 +0100248 Delete VNFD ${VNFD_VOLUMES_NAME}
garciadeblas988b9892023-12-17 01:39:04 +0100249 Delete VNFD ${VNFD_MANUALSCALE_NAME}
garciadeblas7a9e0312023-12-11 22:24:46 +0100250
251Delete Remaining Objects In VIM
252 [Documentation] Delete any remaining objects (volumes, VMs, etc.) in the VIM.
253 [Tags] cleanup
254 Delete Objects In VIM
garciadeblas5e001f52023-11-23 16:02:56 +0100255
garciadeblas23ff8f92023-12-11 16:26:40 +0100256
garciadeblas7a9e0312023-12-11 22:24:46 +0100257*** Keywords ***
258Suite Cleanup
259 [Documentation] Test Suit Cleanup: Deleting Descriptor, instance and vim
260 Run Keyword If Any Tests Failed Delete NS ${NS_NAME}
261 Run Keyword If Any Tests Failed Delete NSD ${NSD_NAME}
262 Run Keyword If Any Tests Failed Delete VNFD ${VNFD_VOLUMES_NAME}
garciadeblas988b9892023-12-17 01:39:04 +0100263 Run Keyword If Any Tests Failed Delete VNFD ${VNFD_MANUALSCALE_NAME}
garciadeblas7a9e0312023-12-11 22:24:46 +0100264 Run Keyword If Any Tests Failed Delete Objects In VIM
265
266Delete Objects In VIM
267 [Documentation] Clean up remaining VMs and volumes directly from the VIM.
268 Delete Flavor ${FLAVOR_ID}
aguilardbd91f862022-12-20 15:13:02 +0000269 ${error}= Set Variable 0
garciadeblas7a9e0312023-12-11 22:24:46 +0100270 FOR ${vol_id} IN @{VIM_VOLUMES}
garciadeblas321726f2022-12-21 11:43:06 +0100271 Log Checking if volume ${vol_id} is still in VIM
aguilardbd91f862022-12-20 15:13:02 +0000272 ${exists}= Check If Volume Exists ${vol_id}
garciadeblas7a9e0312023-12-11 22:24:46 +0100273 IF ${exists}
aguilardbd91f862022-12-20 15:13:02 +0000274 ${error}= Set Variable 1
garciadeblas321726f2022-12-21 11:43:06 +0100275 Log Deleting volume ${vol_id}
aguilardbd91f862022-12-20 15:13:02 +0000276 Run Keyword And Ignore Error Delete Volume ${vol_id}
277 END
278 END
garciadeblas7a9e0312023-12-11 22:24:46 +0100279 FOR ${vdu_id} IN @{VIM_VDUS}
garciadeblas321726f2022-12-21 11:43:06 +0100280 Log Checking if server ${vdu_id} is still in VIM
aguilardbd91f862022-12-20 15:13:02 +0000281 ${status}= Run Keyword And Ignore Error Get Server Property ${vdu_id} id
garciadeblas321726f2022-12-21 11:43:06 +0100282 Log ${status}[0]
garciadeblas23ff8f92023-12-11 16:26:40 +0100283 IF '${status}[0]' == 'PASS'
aguilardbd91f862022-12-20 15:13:02 +0000284 ${error}= Set Variable 1
garciadeblas321726f2022-12-21 11:43:06 +0100285 Log Deleting server ${vdu_id}
aguilardbd91f862022-12-20 15:13:02 +0000286 Run Keyword And Ignore Error Delete Server ${vdu_id}
287 END
288 END
289 IF ${error}==1
290 Fail Some objects created by test were not deleted in VIM
291 END