Update requirements-dev.txt based on osmclient and IM requirements
[osm/tests.git] / robot-systest / testsuite / sol003_01-vnf-lifecycle-management.robot
1 #   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 ***
14 Documentation   [SOL003-01] Sol003 Api testing
15
16 Library   OperatingSystem
17 Library   String
18 Library   Collections
19 Library   RequestsLibrary
20 Library   yaml
21 Library   JsonValidator
22 Library   JSONLibrary
23
24 Resource   %{ROBOT_DEVOPS_FOLDER}/lib/sol003_common_lib.robot
25 Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
26 Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vim_lib.robot
27
28 Force Tags   sol003_01   cluster_sol003   daily
29
30 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
31
32
33 *** Variables ***
34 ${vnfd_pkg}   hackfest_basic_metrics_vnf
35 ${vnfd_name}   hackfest_basic_metrics-vnf
36
37
38 *** Test Cases ***
39 Create VNF package from JSON file descriptor
40     [Documentation]   Test case to create a VNF Identifier
41     ${id}=   Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
42     Set Suite Variable   ${vnfid}   ${id}
43     ${created_vim_account_id}=   Get VIM Target ID   %{VIM_TARGET}
44     Set Suite Variable   ${created_vim_account_id}
45     Get Auth Token
46     ${json_path}=   Read Directory
47     ${json_obj}=   Load JSON From File   ${json_path}/sol003_01-vnf-lifecycle-management.json
48     ${json_obj}=   Get Variable Value   ${json_obj['data'][0]}
49     ${updated_json_obj}   JSONLibrary.Update Value To Json   ${json_obj}   $..vimAccountId   ${created_vim_account_id}
50     ${updated_json_obj}   JSONLibrary.Update Value To Json   ${updated_json_obj}   $..additionalParams.virtual-link-desc[0][id]   %{VIM_MGMT_NET}
51     ${updated_json_obj}   JSONLibrary.Update Value To Json   ${updated_json_obj}   $..additionalParams.virtual-link-profile-id   %{VIM_MGMT_NET}
52     Set Test Variable   ${updated_json_obj}
53     Post API Request   ${vnf_instance_uri}
54     Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Query VNF Instance completed
55     ${id}=   Get Value From Json   ${request_response.json()}   $..id
56     Set Suite Variable   ${createid}   ${id[0]}
57
58 Instantiate VNF
59     [Documentation]   Test case to Instantiate a VNF
60     Get Auth Token
61     ${json_path}=   Read Directory
62     ${json_obj}=   Load JSON From File   ${json_path}/sol003_01-vnf-lifecycle-management.json
63     ${json_obj}=   Get Variable Value   ${json_obj['data'][1]}
64     ${updated_json_obj}   JSONLibrary.Update Value To Json   ${json_obj}   $..vimAccountId   ${created_vim_account_id}
65     ${updated_json_obj}   JSONLibrary.Update Value To Json   ${json_obj}   $..vnfId   ${createid}
66     Set Test Variable   ${updated_json_obj}
67     Post API Request   ${vnf_instantiate_uri}/${createid}/instantiate
68     Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Instantiate VNF Instance completed
69     ${id}=   Get Value From Json   ${request_response.json()}   $..id
70     Set Suite Variable   ${instantiateid}   ${id[0]}
71     Sleep   12s
72
73 Query VNF Instances
74     [Documentation]   Test case to query VNF Instance
75     Get Auth Token
76     Get Api Request   ${vnf_instance_uri}
77     ${value}=   Get ID   nsState
78     Should Be Equal   ${value}   INSTANTIATED
79     Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Query VNF Instance completed
80     ${id}=   Get Value From Json   ${request_response.json()}   $.._id
81     Set Suite Variable   ${Queryid}   ${id[0]}
82
83 Query VNF Instance ID
84     [Documentation]   Test case to query Vnf instance ID
85     Get Auth Token
86     Get Api Request   ${vnf_instance_uri}/${Queryid}
87     ${value}=   Get ID   nsState
88     Should Be Equal   ${value}   INSTANTIATED
89     Should Be Equal As Strings   ${RequestResponse.status_code}   200
90     ${id}=   Get Value From Json   ${request_response.json()}   $.._id
91     Set Suite Variable   ${Instanceid}   ${id[0]}
92
93 Query VNF LCM Ops
94     [Documentation]   Test case to Query VNF LCM operation
95     Get Auth Token
96     Get Api Request   ${vnf_instance_lcm_ops}
97     ${ID1}=   Get Value From Json   ${request_response.json()}   $.._id
98     Set Suite Variable   ${lcmops}   ${ID1[0]}
99     FOR   ${Index}   IN RANGE   0   15
100         Get Api Request   ${vnf_instance_lcm_ops}
101         ${value}=   Get ID   operationState
102         ${status}=   Run Keyword And Return Status   Should Be Equal   ${value}   COMPLETED
103         Run Keyword If   ${status}   Exit For Loop
104         ...   ELSE   Sleep   10s
105     END
106
107 Query VNF LCM Ops ID
108     Get Auth Token
109     Get Api Request   ${vnf_instance_lcm_ops}/${lcmops}
110     ${ID1}=   Get Value From Json   ${request_response.json()}   $.._id
111     Set Suite Variable   ${lcmopsid}   ${ID1[0]}
112     FOR   ${Index}   IN RANGE   0   15
113         Get Api Request   ${vnf_instance_lcm_ops}/${lcmops}
114         ${value}=   Get ID   operationState
115         ${status}=   Run Keyword And Return Status   Should Be Equal   ${value}   COMPLETED
116         Run Keyword If   ${status}   Exit For Loop
117         ...   ELSE   Sleep   10s
118     END
119
120 Scale VNF
121     [Documentation]   Test case to   Scale out VNF
122     Get Auth Token
123     ${json_path}=   Read Directory
124     ${updated_json_obj}=   Load JSON From File   ${json_path}/sol003_01-vnf-lifecycle-management.json
125     ${updated_json_obj}=   Get Variable Value   ${updated_json_obj['data'][2]}
126     Set Test Variable   ${updated_json_obj}
127     Post API Request   ${vnf_instance_uri}/${createid}/scale
128     ${value}=   Get ID   id
129     ${ID1}=   Get Value From Json   ${request_response.json()}   $..id
130     Set Suite Variable   ${scaleoutid}   ${ID1[0]}
131     Get Api Request   ${vnf_instance_lcm_ops}/${scaleoutid}
132     ${LcmopsScale}=   Get Value From Json   ${request_response.json()}   $.._id
133     Set Suite Variable   ${lcmopsscaleid}   ${LcmopsScale[0]}
134     FOR   ${Index}   IN RANGE   0   15
135         Get Api Request   ${vnf_instance_lcm_ops}/${scaleoutid}
136         ${value}=   Get ID   operationState
137         ${status}=   Run Keyword And Return Status   Should Be Equal   ${value}   COMPLETED
138         Run Keyword If   ${status}   Exit For Loop
139         ...   ELSE   Sleep   10s
140     END
141     Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Scale VNF instance completed
142
143 Terminate VNF
144     [Documentation]   Test case to terminate the VNF
145     Get Auth Token
146     ${json_path}=   Read Directory
147     ${updated_json_obj}=   Load JSON From File   ${json_path}/sol003_01-vnf-lifecycle-management.json
148     ${updated_json_obj}=   Get Variable Value   ${updated_json_obj['data'][3]}
149     Set Suite Variable   ${updated_json_obj}
150     Post API Request   ${vnf_instance_uri}/${createid}/terminate
151     ${id}=   Get Value From Json   ${request_response.json()}   $..id
152     Set Suite Variable   ${terminateid}   ${id[0]}
153     Get Api Request   ${vnf_instance_lcm_ops}/${terminateid}
154     ${LcmopsTerminate}=   Get Value From Json   ${request_response.json()}   $.._id
155     Set Suite Variable   ${lcmopsscaleid}   ${LcmopsTerminate[0]}
156     FOR   ${Index}   IN RANGE   0   15
157         Get Api Request   ${vnf_instance_lcm_ops}/${terminateid}
158         ${value}=   Get ID   operationState
159         ${status}=   Run Keyword And Return Status   Should Be Equal   ${value}   COMPLETED
160         Run Keyword If   ${status}   Exit For Loop
161         ...   ELSE   Sleep   10s
162     END
163     Pass Execution If   ${request_response.status_code} in ${success_status_code_list}   Terminate VNF instance completed
164
165 Delete VNF
166     [Documentation]   Test case to delete VNF
167     Get Auth Token
168     Create Session   APISession   ${HOST}
169     &{Headers}   Create Dictionary   Content-Type=application/json   Accept=application/json   Authorization=Bearer ${AccessToken}
170     ${resp}=   DELETE On Session   APISession   ${vnf_instance_uri}/${createid}   headers=${Headers}
171     Pass Execution If   ${resp.status_code} in ${success_status_code_list}   Delete VNF Instance completed
172
173 Delete VNF Descriptor Test
174     [Tags]   cleanup
175
176     Delete VNFD   ${vnfd_name}
177
178
179 *** Keywords ***
180 Suite Cleanup
181     [Documentation]   Test Suit Cleanup: Deleting Descriptor
182
183     Run Keyword If Any Tests Failed   Delete VNFD   ${vnfd_name}
184