Feature 10915: SOL003 STD Support for OSM - Robot Support
[osm/tests.git] / robot-systest / testsuite / sol003_01-vnf-lifecycle-management.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     [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
18 Library           String\r
19 Library           Collections\r
20 Library           RequestsLibrary\r
21 Library           HttpLibrary.HTTP\r
22 Library           yaml\r
23 Library           JsonValidator\r
24 Library           JSONLibrary\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
28 \r
29 *** Variables ***\r
30 ${vnfd_pkg}       hackfest_basic_metrics_vnf\r
31 ${vnfd_name}      hackfest_basic_metrics_vnf\r
32 \r
33 *** Test Cases ***\r
34 Create VNF package from JSON file descriptor\r
35     [Documentation]    Test case to create a VNF Identifier\r
36     Create VIM\r
37     Get Auth Token\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
49 \r
50 Instantiate VNF\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
54     Get Auth Token\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
64     Sleep    12s\r
65 \r
66 Query VNF Instances\r
67     [Documentation]    Test case to query VNF Instance\r
68     Get Auth Token\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
75 \r
76 Query VNF Instance ID\r
77     [Documentation]    Test case to query Vnf instance ID\r
78     Get Auth Token\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
85 \r
86 Query VNF LCM Ops\r
87     [Documentation]    Test case to Query VNF LCM operation\r
88     Get Auth Token\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
94 \r
95 Query VNF LCM Ops ID\r
96     Get Auth Token\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
105 \r
106 Scale VNF\r
107     [Documentation]    Test case to Scale in and Scale out VNF\r
108     Get Auth Token\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
117     Sleep    5s\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
126     Sleep    10s\r
127 \r
128 Terminate VNF\r
129     [Documentation]    Test case to terminate the VNF\r
130     Get Auth Token\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
139     sleep    10s\r
140 \r
141 Delete VNF\r
142     [Documentation]    Test case to delete VNF\r
143     Get Auth Token\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