Autohealing Feature robot test support
[osm/tests.git] / robot-systest / testsuite / heal_04-autohealing.robot
1 #   Licensed under the Apache License, Version 2.0 (the "License");\r
2 #   you may not use this file except in compliance with the License.\r
3 #   You may obtain a copy of the License at\r
4 #\r
5 #       http://www.apache.org/licenses/LICENSE-2.0\r
6 #\r
7 #   Unless required by applicable law or agreed to in writing, software\r
8 #   distributed under the License is distributed on an "AS IS" BASIS,\r
9 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
10 #   See the License for the specific language governing permissions and\r
11 #   limitations under the License.\r
12 \r
13 *** Settings ***\r
14 Documentation     [HEAL-04] Autohealing of NS\r
15 Suite Teardown    Run Keyword And Ignore Error    Suite Cleanup\r
16 Force Tags        heal_04   cluster_main   daily   regression\r
17 Library           OperatingSystem\r
18 Library           String\r
19 Library           Collections\r
20 Library           Process\r
21 Library           SSHLibrary\r
22 Resource          %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot\r
23 Resource          %{ROBOT_DEVOPS_FOLDER}/lib/vnf_lib.robot\r
24 Resource          %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot\r
25 Resource          %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot\r
26 Resource          %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot\r
27 Resource          %{ROBOT_DEVOPS_FOLDER}/lib/openstack_lib.robot\r
28 \r
29 *** Variables ***\r
30 # NS and VNF descriptor package folder and ids\r
31 ${vnfd_pkg}   autoheal_vnf\r
32 ${vnfd_name}   autoheal_vnfd\r
33 ${vdu_name}   autoheal_vnfd-VM\r
34 ${vnf_index}   1\r
35 ${nsd_pkg}   autoheal_ns\r
36 ${nsd_name}  autoheal_nsd\r
37 # NS instance name and configuration\r
38 ${ns_name}    heal_04\r
39 ${ns_config}   {vld: [ {name: mgmt, vim-network-name: %{VIM_MGMT_NET}} ] }\r
40 \r
41 # SSH keys and username to be used\r
42 ${publickey}   %{HOME}/.ssh/id_rsa.pub\r
43 ${privatekey}   %{HOME}/.ssh/id_rsa\r
44 ${username}   ubuntu\r
45 ${password}   ${EMPTY}\r
46 \r
47 ${success_return_code}   0\r
48 \r
49 *** Test Cases ***\r
50 Create VNF Descriptors\r
51     [Tags]  prepare\r
52     Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'\r
53 \r
54 \r
55 Create NS Descriptor\r
56     [Tags]  prepare\r
57     Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'\r
58 \r
59 \r
60 Network Service Instance Test\r
61     [Tags]  prepare\r
62     ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}\r
63     Set Suite Variable   ${ns_id}   ${id}\r
64 \r
65 \r
66 Get NS Id\r
67     [Tags]   verify   cleanup\r
68     ${variables}   Get Variables\r
69     IF   not "\${ns_id}" in "${variables}"\r
70         ${id}=   Get Ns Id   ${ns_name}\r
71         Set Suite Variable   ${ns_id}   ${id}\r
72     END\r
73 \r
74 \r
75 Get VNF Info\r
76     [Tags]  verify\r
77     Variable Should Exist  ${ns_id}  msg=NS is not available\r
78     ${ip_addr}=  Get Vnf Management Ip Address   ${ns_id}   ${vnf_index}\r
79     log   ${ip_addr}\r
80     Set Suite Variable   ${vnf_ip_addr}   ${ip_addr}\r
81 \r
82     ${vnf_id}=  Get Vnf Id   ${ns_id}   ${vnf_index}\r
83     Set Suite Variable   ${vnf_autoheal_id}   ${vnf_id}\r
84     ${id}=  Get VNF VIM ID   ${vnf_id}\r
85     Set Suite Variable   ${vdu_autoheal_id}   ${id}\r
86     log   ${vdu_autoheal_id}\r
87 \r
88     @{autoheal_ip_list}=  Get Vnf Vdur IPs   ${vnf_autoheal_id}\r
89     Set Suite Variable   @{autoheal_ip_list}   @{autoheal_ip_list}\r
90     log   @{autoheal_ip_list}\r
91 \r
92 \r
93 Stop Autoheal VDU\r
94     [Tags]  verify\r
95     Variable Should Exist  ${vdu_autoheal_id}  msg=VDU is not available\r
96     Halt Server   ${vdu_autoheal_id}\r
97     Sleep   20\r
98 \r
99 \r
100 Check VNF After Healing\r
101     [Tags]  verify\r
102     FOR    ${Index}    IN RANGE    0    15\r
103         ${server_status}=  Get Server Property   ${vdu_autoheal_id}   status\r
104         ${status}=    Run Keyword And Return Status    Should Be Equal    ${server_status}    ACTIVE\r
105         Run Keyword If  ${status}    Exit For Loop\r
106     ...  ELSE  Sleep    10\r
107     END\r
108     Variable Should Exist  ${vnf_autoheal_id}  msg=VNF is not available\r
109 \r
110     @{ip_list}=  Get Vnf Vdur IPs   ${vnf_autoheal_id}\r
111     log   @{ip_list}\r
112     Should Be Equal   ${ip_list}   ${autoheal_ip_list}   IP addresses have changed after healing\r
113 \r
114     ${id}=  Get VNF VIM ID   ${vnf_autoheal_id}\r
115     log   ${id}\r
116     Should Not Be Equal   ${id}   ${vdu_autoheal_id}   VDU id has not changed after healing\r
117 \r
118 \r
119 Delete NS Instance\r
120     [Tags]   cleanup\r
121     Delete NS   ${ns_name}\r
122 \r
123 \r
124 Delete NS Descriptor\r
125     [Tags]   cleanup\r
126     Delete NSD   ${nsd_name}\r
127 \r
128 \r
129 Delete VNF Descriptors\r
130     [Tags]   cleanup\r
131     Delete VNFD   ${vnfd_name}\r
132 \r
133 *** Keywords ***\r
134 Suite Cleanup\r
135     [Documentation]  Test Suit Cleanup: Deleting Descriptor, instance and vim\r
136 \r
137     Run Keyword If Any Tests Failed  Delete NS   ${ns_name}\r
138     Run Keyword If Any Tests Failed  Delete NSD   ${nsd_name}\r
139     Run Keyword If Any Tests Failed  Delete VNFD   ${vnfd_name}\r