blob: ef7f772a636d9352074d2a9a04e7e16b94b033a8 [file] [log] [blame]
aguilard845c2ea2022-04-08 09:36:03 +00001# 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 ***
garciadeblasf4ebaa82022-06-23 13:33:26 +020014Documentation [HEAL-02] Healing of scaled charm VDUs
aguilard845c2ea2022-04-08 09:36:03 +000015
16Library OperatingSystem
17Library String
18Library Collections
19Library Process
20Library SSHLibrary
21
22Resource %{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_02 cluster_heal daily
aguilard845c2ea2022-04-08 09:36:03 +000030
31
32Suite Teardown Run Keyword And Ignore Error Suite Cleanup
33
34
35*** Variables ***
36# NS and VNF descriptor package folder and ids
37${vnfd_volumes_pkg} several_volumes_vnf
38${vnfd_volumes_name} several_volumes-vnf
39${vdu_volumes_name} several_volumes-VM
40${vnf_several_index} several_volumes_vnf
41${vnfd_charm_pkg} charm-packages/native_manual_scale_charm_vnf
42${vnfd_charm_name} native_manual_scale_charm-vnf
43${vdu_charm_name} mgmtVM
44${vnf_charm_index} charm_vnf
45${vnf_charm_scaling_group} manual-scaling_mgmtVM
46${vnf_charm_cloudinit_file} /root/helloworld.txt
47${vnf_charm_day1_file} /home/ubuntu/first-touch
48${nsd_pkg} volumes_nativecharm_ns
49${nsd_name} volumes_nativecharm-ns
50
51# NS instance name and configuration
aguilardf9be5502023-06-20 10:51:16 +000052${flavor_name_prefix} osm.heal02
aguilard845c2ea2022-04-08 09:36:03 +000053${ns_name} heal_02
garciadeblasf01b9a42023-06-02 14:43:43 +020054${ns_timeout} 6min
aguilard845c2ea2022-04-08 09:36:03 +000055${scale_wait_time} 4min
56
57# SSH keys and username to be used
58${publickey} %{HOME}/.ssh/id_rsa.pub
59${privatekey} %{HOME}/.ssh/id_rsa
60${username} ubuntu
61${password} ${EMPTY}
62
63${success_return_code} 0
64
aguilardbd91f862022-12-20 15:13:02 +000065@{vim_vdus} @{EMPTY}
66@{vim_volumes} @{EMPTY}
67
aguilard845c2ea2022-04-08 09:36:03 +000068
69*** Test Cases ***
70Create VNF Descriptors
aguilard845c2ea2022-04-08 09:36:03 +000071 Create VNFD '%{PACKAGES_FOLDER}/${vnfd_charm_pkg}'
72 Create VNFD '%{PACKAGES_FOLDER}/${vnfd_volumes_pkg}'
73
74
75Create NS Descriptor
aguilard845c2ea2022-04-08 09:36:03 +000076 Create NSD '%{PACKAGES_FOLDER}/${nsd_pkg}'
77
78
Gabriel Cuba8f994cc2023-05-12 13:44:16 -050079Create Test Flavor
aguilardf9be5502023-06-20 10:51:16 +000080 ${rand}= Generate Random String 6 [NUMBERS]
81 ${flavor_name}= Catenate SEPARATOR=_ ${flavor_name_prefix} ${rand}
aguilard83eed182023-06-20 07:40:33 +000082 ${id}= Create Flavor ${flavor_name} 1 1024 10
Gabriel Cuba8f994cc2023-05-12 13:44:16 -050083 Set Suite Variable ${flavor_id} ${id}
84
85
aguilard845c2ea2022-04-08 09:36:03 +000086Network Service Instance Test
Gabriel Cuba8f994cc2023-05-12 13:44:16 -050087 ${ns_config}= Set Variable {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}}],vnf: [ {member-vnf-index: charm_vnf, vdu: [{ id: mgmtVM, vim-flavor-id: ${flavor_id}}]}] }
garciadeblasf01b9a42023-06-02 14:43:43 +020088 ${id}= Create Network Service ${nsd_name} %{VIM_TARGET} ${ns_name} ${ns_config} ${publickey} ${ns_timeout}
aguilard845c2ea2022-04-08 09:36:03 +000089 Set Suite Variable ${ns_id} ${id}
90
91
92Get NS Id
Mark Beierl58710332022-08-03 14:14:14 -040093 [Tags] cleanup
aguilard845c2ea2022-04-08 09:36:03 +000094 ${variables} Get Variables
95 IF not "\${ns_id}" in "${variables}"
96 ${id}= Get Ns Id ${ns_name}
97 Set Suite Variable ${ns_id} ${id}
98 END
99
100
101Scale Out Charm VNF
garciadeblasf4ebaa82022-06-23 13:33:26 +0200102 ${vnf_id}= Get Vnf Id ${ns_id} ${vnf_charm_index}
aguilard845c2ea2022-04-08 09:36:03 +0000103 Set Suite Variable ${vnf_charm_id} ${vnf_id}
garciadeblasf4ebaa82022-06-23 13:33:26 +0200104 @{vdur_list}= Get Vnf Vdur Names ${vnf_charm_id}
105 ${vdurs}= Get Length ${vdur_list}
aguilard845c2ea2022-04-08 09:36:03 +0000106 Set Suite Variable ${initial_vdur_count} ${vdurs}
garciadeblasf4ebaa82022-06-23 13:33:26 +0200107 Execute Manual VNF Scale ${ns_name} ${vnf_charm_index} ${vnf_charm_scaling_group} SCALE_OUT ${scale_wait_time}
108 @{vdur_list}= Get Vnf Vdur Names ${vnf_charm_id}
109 ${vdurs}= Get Length ${vdur_list}
aguilard10320252022-07-01 12:06:41 +0000110 Run Keyword 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 +0000111
112
aguilardbd91f862022-12-20 15:13:02 +0000113Get VIM Objects
114 Variable Should Exist ${ns_id} msg=NS is not available
115 @{vnf_id_list}= Get Ns Vnf List ${ns_id}
garciadeblas321726f2022-12-21 11:43:06 +0100116 Log ${vnf_id_list}
aguilardbd91f862022-12-20 15:13:02 +0000117 FOR ${vnf_id} IN @{vnf_id_list}
garciadeblas321726f2022-12-21 11:43:06 +0100118 Log ${vnf_id}
aguilardbd91f862022-12-20 15:13:02 +0000119 ${id}= Get VNF VIM ID ${vnf_id}
120 @{vdu_ids}= Split String ${id}
121 Append To List ${vim_vdus} @{vdu_ids}
122 END
123 FOR ${vdu_id} IN @{vim_vdus}
124 ${volumes_attached}= Get Server Property ${vdu_id} volumes_attached
125 ${match}= Get Regexp Matches ${volumes_attached} '([0-9a-f\-]+)' 1
126 IF ${match} != @{EMPTY}
127 IF not "${match}[0]" in "@{vim_volumes}"
128 Append To List ${vim_volumes} ${match}[0]
129 END
130 END
131 END
garciadeblas321726f2022-12-21 11:43:06 +0100132 Log Many @{vim_vdus}
133 Log Many @{vim_volumes}
aguilardbd91f862022-12-20 15:13:02 +0000134
135
aguilard845c2ea2022-04-08 09:36:03 +0000136Get Charm VNF Info
garciadeblasf4ebaa82022-06-23 13:33:26 +0200137 Variable Should Exist ${ns_id} msg=NS is not available
aguilard845c2ea2022-04-08 09:36:03 +0000138 ${variables} Get Variables
139 IF not "\${vnf_charm_id}" in "${variables}"
garciadeblasf4ebaa82022-06-23 13:33:26 +0200140 ${vnf_id}= Get Vnf Id ${ns_id} ${vnf_charm_index}
aguilard845c2ea2022-04-08 09:36:03 +0000141 Set Suite Variable ${vnf_charm_id} ${vnf_id}
142 END
garciadeblasf4ebaa82022-06-23 13:33:26 +0200143 ${id}= Get VNF VIM ID ${vnf_charm_id}
144 @{vdu_charm_ids}= Split String ${id}
aguilard845c2ea2022-04-08 09:36:03 +0000145 Set Suite Variable @{vdu_charm_ids} @{vdu_charm_ids}
garciadeblas321726f2022-12-21 11:43:06 +0100146 Log ${vdu_charm_ids}[1]
garciadeblasf4ebaa82022-06-23 13:33:26 +0200147 @{charm_ip_list}= Get Vnf Vdur IPs ${vnf_charm_id}
aguilard845c2ea2022-04-08 09:36:03 +0000148 Set Suite Variable @{charm_ip_list} @{charm_ip_list}
149
150
aguilard8f18bfd2022-06-22 10:44:20 +0000151Halt Charm VDU
garciadeblasf4ebaa82022-06-23 13:33:26 +0200152 Variable Should Exist @{vdu_charm_ids} msg=VDU is not available
aguilard8f18bfd2022-06-22 10:44:20 +0000153 Halt Server ${vdu_charm_ids}[1]
aguilard845c2ea2022-04-08 09:36:03 +0000154 Sleep 15
155
156
157Heal Charm VDU
garciadeblasf4ebaa82022-06-23 13:33:26 +0200158 Variable Should Exist ${vnf_charm_id} msg=VNF is not available
aguilard845c2ea2022-04-08 09:36:03 +0000159 Heal Network Service ${ns_id} --vnf ${vnf_charm_id} --cause "Heal VM of charm_vnf" --vdu ${vdu_charm_name} --count-index 1 --run-day1
160
161
162Check VNF After Healing
garciadeblasf4ebaa82022-06-23 13:33:26 +0200163 Variable Should Exist ${vnf_charm_id} msg=VNF is not available
aguilard845c2ea2022-04-08 09:36:03 +0000164
garciadeblasf4ebaa82022-06-23 13:33:26 +0200165 @{ip_list}= Get Vnf Vdur IPs ${vnf_charm_id}
aguilard845c2ea2022-04-08 09:36:03 +0000166 Should Be Equal ${ip_list} ${charm_ip_list} IP addresses have changed after healing
167
garciadeblasf4ebaa82022-06-23 13:33:26 +0200168 ${id}= Get VNF VIM ID ${vnf_charm_id}
169 @{ids}= Split String ${id}
aguilard845c2ea2022-04-08 09:36:03 +0000170 Should Be Equal ${vdu_charm_ids}[0] ${ids}[0] VDU[0] id has changed after healing
171 Should Not Be Equal ${vdu_charm_ids}[1] ${ids}[1] VDU[1] id has not changed after healing
172 Should Be Equal ${vdu_charm_ids}[2] ${ids}[2] VDU[2] id has changed after healing
173
garciadeblasf4ebaa82022-06-23 13:33:26 +0200174 ${ip}= Get Vdu Attribute ${vnf_charm_id} ip-address 1
aguilard845c2ea2022-04-08 09:36:03 +0000175 ${stdout}= Execute Remote Command Check Rc Return Output ${ip} ${username} ${password} ${privatekey} sudo ls ${vnf_charm_cloudinit_file}
garciadeblas321726f2022-12-21 11:43:06 +0100176 Log ${stdout}
garciadeblasf4ebaa82022-06-23 13:33:26 +0200177 Check If remote File Exists ${ip} ${username} ${password} ${privatekey} ${vnf_charm_day1_file}
garciadeblas8218c9a2023-06-19 12:48:04 +0200178 ${vim_info}= Get Vdu Attribute ${vnf_charm_id} vim_info 1
179 Should Contain ${vim_info} id: ${flavor_id} msg=Flavor ID is incorrect
aguilard845c2ea2022-04-08 09:36:03 +0000180
181
aguilardbd91f862022-12-20 15:13:02 +0000182Update VIM Objects
183 Variable Should Exist ${ns_id} msg=NS is not available
184 @{vdu_updated}= Create List
185 @{vnf_id_list}= Get Ns Vnf List ${ns_id}
186 FOR ${vnf_id} IN @{vnf_id_list}
187 ${id}= Get VNF VIM ID ${vnf_id}
188 @{vdu_ids}= Split String ${id}
189 Append To List ${vdu_updated} @{vdu_ids}
190 FOR ${id} IN @{vdu_ids}
191 IF not "${id}" in "@{vim_vdus}"
192 Append To List ${vim_vdus} ${id}
193 END
194 END
195 END
196 FOR ${vdu_id} IN @{vdu_updated}
197 ${volumes_attached}= Get Server Property ${vdu_id} volumes_attached
198 ${match}= Get Regexp Matches ${volumes_attached} '([0-9a-f\-]+)' 1
199 IF ${match} != @{EMPTY}
200 IF not "${match}[0]" in "@{vim_volumes}"
201 Append To List ${vim_volumes} ${match}[0]
202 END
203 END
204 END
garciadeblas321726f2022-12-21 11:43:06 +0100205 Log Many @{vim_vdus}
206 Log Many @{vim_volumes}
aguilardbd91f862022-12-20 15:13:02 +0000207
208
aguilard845c2ea2022-04-08 09:36:03 +0000209Delete NS Instance
210 [Tags] cleanup
211 Delete NS ${ns_name}
212
213
214Delete NS Descriptor
215 [Tags] cleanup
216 Delete NSD ${nsd_name}
217
218
219Delete VNF Descriptors
220 [Tags] cleanup
221 Delete VNFD ${vnfd_volumes_name}
222 Delete VNFD ${vnfd_charm_name}
223
224
aguilardbd91f862022-12-20 15:13:02 +0000225Delete Objects in VIM
226 [Tags] cleanup
aguilard83eed182023-06-20 07:40:33 +0000227 Delete Flavor ${flavor_id}
aguilardbd91f862022-12-20 15:13:02 +0000228 ${error}= Set Variable 0
229 FOR ${vol_id} IN @{vim_volumes}
garciadeblas321726f2022-12-21 11:43:06 +0100230 Log Checking if volume ${vol_id} is still in VIM
aguilardbd91f862022-12-20 15:13:02 +0000231 ${exists}= Check If Volume Exists ${vol_id}
232 IF ${exists}!=0
233 ${error}= Set Variable 1
garciadeblas321726f2022-12-21 11:43:06 +0100234 Log Deleting volume ${vol_id}
aguilardbd91f862022-12-20 15:13:02 +0000235 Run Keyword And Ignore Error Delete Volume ${vol_id}
236 END
237 END
238 FOR ${vdu_id} IN @{vim_vdus}
garciadeblas321726f2022-12-21 11:43:06 +0100239 Log Checking if server ${vdu_id} is still in VIM
aguilardbd91f862022-12-20 15:13:02 +0000240 ${status}= Run Keyword And Ignore Error Get Server Property ${vdu_id} id
garciadeblas321726f2022-12-21 11:43:06 +0100241 Log ${status}[0]
aguilardbd91f862022-12-20 15:13:02 +0000242 IF '${status}[0]' == 'PASS'
243 ${error}= Set Variable 1
garciadeblas321726f2022-12-21 11:43:06 +0100244 Log Deleting server ${vdu_id}
aguilardbd91f862022-12-20 15:13:02 +0000245 Run Keyword And Ignore Error Delete Server ${vdu_id}
246 END
247 END
248 IF ${error}==1
249 Fail Some objects created by test were not deleted in VIM
250 END
251
252
aguilard845c2ea2022-04-08 09:36:03 +0000253*** Keywords ***
254Suite Cleanup
garciadeblasf4ebaa82022-06-23 13:33:26 +0200255 [Documentation] Test Suit Cleanup: Deleting Descriptor, instance and vim
aguilard845c2ea2022-04-08 09:36:03 +0000256
garciadeblasf4ebaa82022-06-23 13:33:26 +0200257 Run Keyword If Any Tests Failed Delete NS ${ns_name}
258 Run Keyword If Any Tests Failed Delete NSD ${nsd_name}
259 Run Keyword If Any Tests Failed Delete VNFD ${vnfd_volumes_name}
260 Run Keyword If Any Tests Failed Delete VNFD ${vnfd_charm_name}
aguilardbd91f862022-12-20 15:13:02 +0000261 Run Keyword If Any Tests Failed Delete Objects in VIM