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
5 # http://www.apache.org/licenses/LICENSE-2.0
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
14 Documentation [SOL003-01] Sol003 Api testing
15 Suite Teardown Run Keyword And Ignore Error Suite Cleanup
16 Force Tags sol003_01 cluster_sol003 daily
17 Library OperatingSystem
20 Library RequestsLibrary
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
29 ${vnfd_pkg} hackfest_basic_metrics_vnf
30 ${vnfd_name} hackfest_basic_metrics-vnf
33 Create VNF package from JSON file descriptor
34 [Documentation] Test case to create a VNF Identifier
35 ${id}= Create VNFD '%{PACKAGES_FOLDER}/${vnfd_pkg}'
36 Set Suite Variable ${vnfid} ${id}
37 ${created_vim_account_id}= Get VIM Target ID %{VIM_TARGET}
38 Set Suite Variable ${created_vim_account_id}
40 ${json_path}= Read Directory
41 ${json_obj}= Load JSON From File ${json_path}/sol003_01-vnf-lifecycle-management.json
42 ${json_obj}= Get Variable Value ${json_obj['data'][0]}
43 ${updated_json_obj} JSONLibrary.Update Value To Json ${json_obj} $..vimAccountId ${created_vim_account_id}
44 ${updated_json_obj} JSONLibrary.Update Value To Json ${updated_json_obj} $..additionalParams.virtual-link-desc[0][id] %{VIM_MGMT_NET}
45 ${updated_json_obj} JSONLibrary.Update Value To Json ${updated_json_obj} $..additionalParams.virtual-link-profile-id %{VIM_MGMT_NET}
46 Set Test Variable ${updated_json_obj}
47 Post API Request ${vnf_instance_uri}
48 Pass Execution If ${request_response.status_code} in ${success_status_code_list} Query VNF Instance completed
49 ${id}= Get Value From Json ${request_response.json()} $..id
50 Set Suite Variable ${createid} ${id[0]}
53 [Documentation] Test case to Instantiate a VNF
55 ${json_path}= Read Directory
56 ${json_obj}= Load JSON From File ${json_path}/sol003_01-vnf-lifecycle-management.json
57 ${json_obj}= Get Variable Value ${json_obj['data'][1]}
58 ${updated_json_obj} JSONLibrary.Update Value To Json ${json_obj} $..vimAccountId ${created_vim_account_id}
59 ${updated_json_obj} JSONLibrary.Update Value To Json ${json_obj} $..vnfId ${createid}
60 Set Test Variable ${updated_json_obj}
61 Post API Request ${vnf_instantiate_uri}/${createid}/instantiate
62 Pass Execution If ${request_response.status_code} in ${success_status_code_list} Instantiate VNF Instance completed
63 ${id}= Get Value From Json ${request_response.json()} $..id
64 Set Suite Variable ${instantiateid} ${id[0]}
68 [Documentation] Test case to query VNF Instance
70 Get Api Request ${vnf_instance_uri}
71 ${value}= Get ID nsState
72 Should Be Equal ${value} INSTANTIATED
73 Pass Execution If ${request_response.status_code} in ${success_status_code_list} Query VNF Instance completed
74 ${id}= Get Value From Json ${request_response.json()} $.._id
75 Set Suite Variable ${Queryid} ${id[0]}
78 [Documentation] Test case to query Vnf instance ID
80 Get Api Request ${vnf_instance_uri}/${Queryid}
81 ${value}= Get ID nsState
82 Should Be Equal ${value} INSTANTIATED
83 Should Be Equal As Strings ${RequestResponse.status_code} 200
84 ${id}= Get Value From Json ${request_response.json()} $.._id
85 Set Suite Variable ${Instanceid} ${id[0]}
88 [Documentation] Test case to Query VNF LCM operation
90 Get Api Request ${vnf_instance_lcm_ops}
91 ${ID1}= Get Value From Json ${request_response.json()} $.._id
92 Set Suite Variable ${lcmops} ${ID1[0]}
93 FOR ${Index} IN RANGE 0 15
94 Get Api Request ${vnf_instance_lcm_ops}
95 ${value}= Get ID operationState
96 ${status}= Run Keyword And Return Status Should Be Equal ${value} COMPLETED
97 Run Keyword If ${status} Exit For Loop
103 Get Api Request ${vnf_instance_lcm_ops}/${lcmops}
104 ${ID1}= Get Value From Json ${request_response.json()} $.._id
105 Set Suite Variable ${lcmopsid} ${ID1[0]}
106 FOR ${Index} IN RANGE 0 15
107 Get Api Request ${vnf_instance_lcm_ops}/${lcmops}
108 ${value}= Get ID operationState
109 ${status}= Run Keyword And Return Status Should Be Equal ${value} COMPLETED
110 Run Keyword If ${status} Exit For Loop
115 [Documentation] Test case to Scale out VNF
117 ${json_path}= Read Directory
118 ${updated_json_obj}= Load JSON From File ${json_path}/sol003_01-vnf-lifecycle-management.json
119 ${updated_json_obj}= Get Variable Value ${updated_json_obj['data'][2]}
120 Set Test Variable ${updated_json_obj}
121 Post API Request ${vnf_instance_uri}/${createid}/scale
123 ${ID1}= Get Value From Json ${request_response.json()} $..id
124 Set Suite Variable ${scaleoutid} ${ID1[0]}
125 Get Api Request ${vnf_instance_lcm_ops}/${scaleoutid}
126 ${LcmopsScale}= Get Value From Json ${request_response.json()} $.._id
127 Set Suite Variable ${lcmopsscaleid} ${LcmopsScale[0]}
128 FOR ${Index} IN RANGE 0 15
129 Get Api Request ${vnf_instance_lcm_ops}/${scaleoutid}
130 ${value}= Get ID operationState
131 ${status}= Run Keyword And Return Status Should Be Equal ${value} COMPLETED
132 Run Keyword If ${status} Exit For Loop
135 Pass Execution If ${request_response.status_code} in ${success_status_code_list} Scale VNF instance completed
138 [Documentation] Test case to terminate the VNF
140 ${json_path}= Read Directory
141 ${updated_json_obj}= Load JSON From File ${json_path}/sol003_01-vnf-lifecycle-management.json
142 ${updated_json_obj}= Get Variable Value ${updated_json_obj['data'][3]}
143 Set Suite Variable ${updated_json_obj}
144 Post API Request ${vnf_instance_uri}/${createid}/terminate
145 ${id}= Get Value From Json ${request_response.json()} $..id
146 Set Suite Variable ${terminateid} ${id[0]}
147 Get Api Request ${vnf_instance_lcm_ops}/${terminateid}
148 ${LcmopsTerminate}= Get Value From Json ${request_response.json()} $.._id
149 Set Suite Variable ${lcmopsscaleid} ${LcmopsTerminate[0]}
150 FOR ${Index} IN RANGE 0 15
151 Get Api Request ${vnf_instance_lcm_ops}/${terminateid}
152 ${value}= Get ID operationState
153 ${status}= Run Keyword And Return Status Should Be Equal ${value} COMPLETED
154 Run Keyword If ${status} Exit For Loop
157 Pass Execution If ${request_response.status_code} in ${success_status_code_list} Terminate VNF instance completed
160 [Documentation] Test case to delete VNF
162 Create Session APISession ${HOST}
163 &{Headers} Create Dictionary Content-Type=application/json Accept=application/json Authorization=Bearer ${AccessToken}
164 ${resp}= DELETE On Session APISession ${vnf_instance_uri}/${createid} headers=${Headers}
165 Pass Execution If ${resp.status_code} in ${success_status_code_list} Delete VNF Instance completed
167 Delete VNF Descriptor Test
170 Delete VNFD ${vnfd_name}
174 [Documentation] Test Suit Cleanup: Deleting Descriptor
176 Run Keyword If Any Tests Failed Delete VNFD ${vnfd_name}