Bug 2327 fix to verify ipaddress in sol003_02 testsuite
[osm/tests.git] / robot-systest / testsuite / sol003_02-dualstack_ip_vnfm.robot
1 *** Comments ***
2 #   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
14
15 *** Settings ***
16 Documentation   [Sol003-02] Sol003 Dual Stack IP in VNFM NB interface
17
18 Library   OperatingSystem
19 Library   String
20 Library   Collections
21 Library   RequestsLibrary
22 Library   yaml
23 Library   JsonValidator
24 Library   JSONLibrary
25
26 Resource   ../lib/rest_lib.resource
27 Resource   ../lib/vnfd_lib.resource
28 Resource   ../lib/ns_lib.resource
29 Resource   ../lib/vnf_lib.resource
30 Resource   ../lib/vim_lib.resource
31 Resource   ../lib/nsd_lib.resource
32
33 Test Tags   sol003_02   cluster_osm_rest   daily
34
35 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
36
37
38 *** Variables ***
39 # SOL003 API URI paths
40 ${VNF_INSTANCE_URI}   /osm/vnflcm/v1/vnf_instances
41 ${VNF_INSTANCE_LCM_OPS}   /osm/vnflcm/v1/vnf_lcm_op_occs
42
43 # NS and VNF descriptor package folder and ids
44 ${VNFD_PKG}   hackfest_basic_vnf
45 ${VNFD_NAME}   hackfest_basic-vnf
46
47
48 *** Test Cases ***
49 Create VNFD Descriptor
50     [Documentation]   Test case to create a VNF Identifier
51     ${VNFD_ID}=   Create VNFD   %{PACKAGES_FOLDER}/${VNFD_PKG}
52     Set Suite Variable   ${VNFD_ID}
53     ${CREATED_VIM_ACCOUNT_ID}=   Get VIM Target ID   %{VIM_TARGET}
54     Set Suite Variable   ${CREATED_VIM_ACCOUNT_ID}
55     Get Auth Token
56     ${json_path}=   Read Directory
57     ${json_obj}=   Load JSON From File   ${json_path}/sol003_02-dualstack_ip_vnfm.json
58     ${json_obj}=   Get Variable Value   ${json_obj['data'][0]}
59     ${NS_NAME}=   Get Variable Value   ${json_obj['vnfInstanceName']}
60     Set Suite Variable   ${NS_NAME}
61     ${UPDATED_JSON_OBJ}=   JSONLibrary.Update Value To Json   ${json_obj}   $..vimAccountId   ${CREATED_VIM_ACCOUNT_ID}
62     Log   ${UPDATED_JSON_OBJ}
63     ${UPDATED_JSON_OBJ}=   JSONLibrary.Update Value To Json   ${UPDATED_JSON_OBJ}   $..additionalParams.virtual-link-desc[0][id]   %{VIM_MGMT_NET}
64     Log   ${UPDATED_JSON_OBJ}
65     ${UPDATED_JSON_OBJ}=   JSONLibrary.Update Value To Json   ${UPDATED_JSON_OBJ}   $..additionalParams.virtual-link-profile-id   %{VIM_MGMT_NET}
66     Log   ${UPDATED_JSON_OBJ}
67     Set Test Variable   ${UPDATED_JSON_OBJ}
68     Post Api Request   ${VNF_INSTANCE_URI}   ${UPDATED_JSON_OBJ}
69     Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Query VNF Instance completed
70     ${id}=   Get Value From Json   ${request_response.json()}   $..id
71     Set Suite Variable   ${CREATEID}   ${id[0]}
72     Get VNFDs List
73
74 Instantiate VNF
75     [Documentation]   Test case to Instantiate a VNF
76     Get Ns List
77     Get Vnf List
78     Get Auth Token
79     ${json_path}=   Read Directory
80     ${json_obj}=   Load JSON From File   ${json_path}/sol003_02-dualstack_ip_vnfm.json
81     ${json_obj}=   Get Variable Value   ${json_obj['data'][1]}
82     ${UPDATED_JSON_OBJ}=   JSONLibrary.Update Value To Json   ${json_obj}   $..vimAccountId   ${CREATED_VIM_ACCOUNT_ID}
83     ${UPDATED_JSON_OBJ}=   JSONLibrary.Update Value To Json   ${UPDATED_JSON_OBJ}   $..vnfId   ${CREATEID}
84     Set Test Variable   ${UPDATED_JSON_OBJ}
85     Post Api Request   ${VNF_INSTANCE_URI}/${CREATEID}/instantiate   ${UPDATED_JSON_OBJ}
86     Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Instantiate VNF Instance completed
87     ${id}=   Get Value From Json   ${request_response.json()}   $..id
88     Set Suite Variable   ${VNF_INSTANCE_ID}   ${id[0]}
89     Sleep   12s
90     Check For NS Instance For Failure   ${ns_name}
91     Get Ns List
92     Get Vnf List
93
94 Get Ns Id
95     [Documentation]   Get the NS instance id
96     ${id}=   Get Ns Id   ${ns_name}
97     Set Suite Variable   ${NS_ID}   ${id}
98
99 Get Ip From The NSD
100     [Documentation]   Get the IP address from the NSD
101     ${id}=   Get NSD ID From The NS   ${NS_ID}
102     Set Suite Variable   ${NSD_ID}   ${id}
103     ${Nsd_IP}=   Get NSD Ip   ${NSD_ID}
104     Log   ${Nsd_IP}
105     ${Nsd_IP}=   Split String   ${Nsd_IP}
106     Set Suite Variable   ${IPV6NSD}   ${Nsd_IP}[0]
107     Set Suite Variable   ${IPV4NSD}   ${Nsd_IP}[1]
108     Log   ${IPV4NSD}
109     Log   ${IPV6NSD}
110
111 Get Dual Ip
112     [Documentation]   Get the IP address from the NS
113     ${Ns_IP}=   Get Dual Ip   ${NS_ID}
114     Log   ${Ns_IP}
115     ${Ns_IP}=   Split String   ${Ns_IP}
116     Set Suite Variable   ${IPV6NS}   ${Ns_IP}[0]
117     Set Suite Variable   ${IPV4NS}   ${Ns_IP}[1]
118     Log   ${IPV4NS}
119     Log   ${IPV6NS}
120
121 Verify Dual Ip
122     [Documentation]   Test case to validate the IP address.
123     Should Be Equal   ${IPV4NS}   ${IPV4NSD}
124     Should Be Equal   ${IPV6NS}   ${IPV6NSD}
125
126 Terminate VNF
127     [Documentation]   Test case to terminate the VNF
128     Get Auth Token
129     ${json_path}=   Read Directory
130     ${UPDATED_JSON_OBJ}=   Load JSON From File   ${json_path}/sol003_02-dualstack_ip_vnfm.json
131     ${UPDATED_JSON_OBJ}=   Get Variable Value   ${UPDATED_JSON_OBJ['data'][3]}
132     Set Suite Variable   ${UPDATED_JSON_OBJ}
133     Post Api Request   ${VNF_INSTANCE_URI}/${CREATEID}/terminate   ${UPDATED_JSON_OBJ}
134     ${id}=   Get Value From Json   ${request_response.json()}   $..id
135     ${terminateid}=   Set Variable   ${id[0]}
136     Get Api Request   ${VNF_INSTANCE_LCM_OPS}/${terminateid}
137     ${LcmopsTerminate}=   Get Value From Json   ${request_response.json()}   $.._id
138     Log   ${LcmopsTerminate[0]}
139     FOR   ${index}   IN RANGE   0   15
140         Log   ${index}
141         Get Api Request   ${VNF_INSTANCE_LCM_OPS}/${terminateid}
142         ${value}=   Get ID   operationState
143         ${status}=   Run Keyword And Return Status   Should Be Equal   ${value}   COMPLETED
144         IF   ${status}
145             BREAK
146         ELSE
147             Sleep   10s
148         END
149     END
150     Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Terminate VNF instance completed
151
152 Delete VNF
153     [Documentation]   Test case to delete VNF
154     Get Auth Token
155     Create Session   APISession   ${REST_API_HOST}
156     &{Headers}=   Create Dictionary   Content-Type=application/json   Accept=application/json   Authorization=Bearer ${AccessToken}
157     ${resp}=   DELETE On Session   APISession   ${VNF_INSTANCE_URI}/${CREATEID}   headers=${Headers}
158     Pass Execution If   ${resp.status_code} in ${success_status_code_list}   Delete VNF Instance completed
159
160 Delete VNF Descriptor Test
161     [Documentation]   Test case to delete the VNF descriptor.
162     [Tags]   cleanup
163     Delete VNFD   ${VNFD_NAME}
164
165
166 *** Keywords ***
167 Suite Cleanup
168     [Documentation]   Test Suit Cleanup: Deleting Descriptor
169     Run Keyword If Any Tests Failed   Delete VNFD   ${VNFD_NAME}