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
5 # http://www.apache.org/licenses/LICENSE-2.0
\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
14 Documentation [SOL003-01] Sol003 Api testing
\r
15 Suite Teardown Run Keyword And Ignore Error Suite Cleanup
\r
16 Force Tags sol003_01 cluster_sol003 daily
\r
17 Library OperatingSystem
\r
20 Library RequestsLibrary
\r
21 Library HttpLibrary.HTTP
\r
23 Library JsonValidator
\r
25 Resource %{ROBOT_DEVOPS_FOLDER}/lib/sol003-common.robot
\r
26 Variables %{ROBOT_DEVOPS_FOLDER}/resources/sol003_01-vnf-lifecycle-management.json
\r
27 Resource %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
\r
30 ${vnfd_pkg} hackfest_basic_metrics_vnf
\r
31 ${vnfd_name} hackfest_basic_metrics_vnf
\r
34 Create VNF package from JSON file descriptor
\r
35 [Documentation] Test case to create a VNF Identifier
\r
38 ${json_path}= Read Directory
\r
39 ${json_obj}= Load JSON From File ${json_path}/sol003_01-vnf-lifecycle-management.json
\r
40 ${json_obj}= Get Variable Value ${json_obj['data'][0]}
\r
41 ${updated_json_obj} JSONLibrary.Update Value To Json ${json_obj} $..vimAccountId ${created_vim_account_id}
\r
42 ${updated_json_obj} JSONLibrary.Update Value To Json ${updated_json_obj} $..additionalParams.virtual-link-desc[0][id] %{VIM_MGMT_NET}
\r
43 ${updated_json_obj} JSONLibrary.Update Value To Json ${updated_json_obj} $..additionalParams.virtual-link-profile-id %{VIM_MGMT_NET}
\r
44 Set Suite Variable ${updated_json_obj}
\r
45 Post API Request ${vnf_instance_uri}
\r
46 Pass Execution If ${request_response.status_code} in ${success_status_code_list} Query VNF Instance completed
\r
47 ${id}= Get Value From Json ${request_response.json()} $..id
\r
48 Set Suite Variable ${createid} ${id[0]}
\r
51 [Documentation] Test case to Instantiate a VNF
\r
52 ${id}= Create VNFD '%{PACKAGES_FOLDER}/${vnfd_pkg}'
\r
53 Set Suite Variable ${vnfid} ${id}
\r
55 ${json_path}= Read Directory
\r
56 ${json_obj}= Load JSON From File ${json_path}/sol003_01-vnf-lifecycle-management.json
\r
57 ${json_obj}= Get Variable Value ${json_obj['data'][1]}
\r
58 ${updated_json_obj} JSONLibrary.Update Value To Json ${json_obj} $..vimAccountId ${created_vim_account_id}
\r
59 ${updated_json_obj} JSONLibrary.Update Value To Json ${json_obj} $..vnfId ${createid}
\r
60 Post API Request ${vnf_instantiate_uri}/${createid}/instantiate
\r
61 Pass Execution If ${request_response.status_code} in ${success_status_code_list} Instantiate VNF Instance completed
\r
62 ${id}= Get Value From Json ${request_response.json()} $..id
\r
63 Set Suite Variable ${instantiateid} ${id[0]}
\r
67 [Documentation] Test case to query VNF Instance
\r
69 Get Api Request ${vnf_instance_uri}
\r
70 ${value}= Get ID nsState
\r
71 Should Be Equal ${value} INSTANTIATED
\r
72 Pass Execution If ${request_response.status_code} in ${success_status_code_list} Query VNF Instance completed
\r
73 ${id}= Get Value From Json ${request_response.json()} $.._id
\r
74 Set Suite Variable ${Queryid} ${id[0]}
\r
76 Query VNF Instance ID
\r
77 [Documentation] Test case to query Vnf instance ID
\r
79 Get Api Request ${vnf_instance_uri}/${Queryid}
\r
80 ${value}= Get ID nsState
\r
81 Should Be Equal ${value} INSTANTIATED
\r
82 Should Be Equal As Strings ${RequestResponse.status_code} 202
\r
83 ${id}= Get Value From Json ${request_response.json()} $.._id
\r
84 Set Suite Variable ${Instanceid} ${id[0]}
\r
87 [Documentation] Test case to Query VNF LCM operation
\r
89 Get Api Request ${vnf_instance_lcm_ops}
\r
90 ${ID1}= Get Value From Json ${request_response.json()} $.._id
\r
91 Set Suite Variable ${lcmops} ${ID1[0]}
\r
92 ${value}= Get ID operationState
\r
93 Should Be Equal ${value} COMPLETED
\r
95 Query VNF LCM Ops ID
\r
97 Get Api Request ${vnf_instance_lcm_ops}/${lcmops}
\r
98 ${ID1}= Get Value From Json ${request_response.json()} $.._id
\r
99 Set Suite Variable ${lcmopsid} ${ID1[0]}
\r
100 ${value}= Get ID operationState
\r
101 : FOR ${Index} IN RANGE 0 15
\r
102 \ ${status}= Run Keyword And Return Status Should Be Equal ${value} COMPLETED
\r
103 \ Run Keyword Unless ${status} Sleep 10s
\r
104 \ Run Keyword If ${status} Exit For Loop
\r
107 [Documentation] Test case to Scale in and Scale out VNF
\r
109 ${json_path}= Read Directory
\r
110 ${updated_json_obj}= Load JSON From File ${json_path}/sol003_01-vnf-lifecycle-management.json
\r
111 ${updated_json_obj}= Get Variable Value ${updated_json_obj['data'][2]}
\r
112 Set Suite Variable ${updated_json_obj}
\r
113 Post API Request ${vnf_instance_uri}/${createid}/scale
\r
114 ${value}= Get ID id
\r
115 ${ID1}= Get Value From Json ${request_response.json()} $..id
\r
116 Set Suite Variable ${scaleoutid} ${ID1[0]}
\r
118 ${json_path}= Read Directory
\r
119 ${updated_json_obj}= Load JSON From File ${json_path}/sol003_01-vnf-lifecycle-management.json
\r
120 ${updated_json_obj} JSONLibrary.Update Value To Json ${updated_json_obj} $..type SCALE_IN
\r
121 Set Suite Variable ${updated_json_obj}
\r
122 Post API Request ${vnf_instance_uri}/${createid}/scale
\r
123 Pass Execution If ${request_response.status_code} in ${success_status_code_list} Scale VNF instance completed
\r
124 ${id}= Get Value From Json ${request_response.json()} $..id
\r
125 Set Suite Variable ${scaleind} ${id[0]}
\r
129 [Documentation] Test case to terminate the VNF
\r
131 ${json_path}= Read Directory
\r
132 ${updated_json_obj}= Load JSON From File ${json_path}/sol003_01-vnf-lifecycle-management.json
\r
133 ${updated_json_obj}= Get Variable Value ${updated_json_obj['data'][3]}
\r
134 Set Suite Variable ${updated_json_obj}
\r
135 Post API Request ${vnf_instance_uri}/${createid}/terminate
\r
136 ${id}= Get Value From Json ${request_response.json()} $..id
\r
137 Set Suite Variable ${terminateid} ${id[0]}
\r
138 Pass Execution If ${request_response.status_code} in ${success_status_code_list} Terminate VNF instance completed
\r
142 [Documentation] Test case to delete VNF
\r
144 Create Session APISession ${HOST}
\r
145 &{Headers} Create Dictionary Content-Type=application/json Accept=application/json Authorization=Bearer ${AccessToken}
\r
146 ${resp}= Delete Request APISession ${vnf_instance_uri}/${createid}
\r
147 Pass Execution If ${resp.status_code} in ${success_status_code_list} Delete VNF Instance completed
\r