Revert "Feature 11001: Robot framework linting for E2E tests"
[osm/tests.git] / robot-systest / testsuite / quotas_01-quota_enforcement.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   [QUOTAS-01] Quota enforcement.
15
16 Library   OperatingSystem
17 Library   String
18 Library   Collections
19
20 Resource   %{ROBOT_DEVOPS_FOLDER}/lib/project_lib.robot
21 Resource   %{ROBOT_DEVOPS_FOLDER}/lib/user_lib.robot
22
23 Force Tags   quotas_01   cluster_main   daily   regression
24
25 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
26
27
28 *** Variables ***
29 # VNFD package to use during test
30 ${vnfd_pkg}   hackfest_basic_vnf
31
32 # Project names and quotas to use
33 ${project_1_name}   quotas_01_proj_1
34 ${project_2_name}   quotas_01_proj_2
35 ${project_3_name}   quotas_01_proj_3
36 ${project_1_quotas}   vnfds=1,nsds=2,ns_instances=3
37 ${project_2_quotas}   vnfds=1,nsds=1,ns_instances=1
38 ${project_3_quotas}   vnfds=5,nsds=,ns_instances=
39
40 # User name and password for project
41 ${user_name}   quotas_01_user
42 ${user_password}   Quotas_01_pass
43 ${user_new_password}   Quotas_01_new_pass
44
45 ${success_return_code}   0
46
47
48 *** Test Cases ***
49 Create First Project With Quotas
50
51     Create Project With Quotas   ${project_1_name}   ${project_1_quotas}
52     ${project_1_vnfds}=   Get Project Quotas   ${project_1_name}   vnfds
53     Should Be Equal As Integers   1   ${project_1_vnfds}
54     ${project_1_nsds}=   Get Project Quotas   ${project_1_name}   nsds
55     Should Be Equal As Integers   2   ${project_1_nsds}
56     ${project_1_ns_instances}=   Get Project Quotas   ${project_1_name}   ns_instances
57     Should Be Equal As Integers   3   ${project_1_ns_instances}
58
59
60 Create Second Project With Quotas
61
62     Create Project With Quotas   ${project_2_name}   ${project_2_quotas}
63     ${project_2_vnfds}=   Get Project Quotas   ${project_2_name}   vnfds
64     Should Be Equal As Integers   1   ${project_2_vnfds}
65     ${project_2_nsds}=   Get Project Quotas   ${project_2_name}   nsds
66     Should Be Equal As Integers   1   ${project_2_nsds}
67     ${project_2_ns_instances}=   Get Project Quotas   ${project_2_name}   ns_instances
68     Should Be Equal As Integers   1   ${project_2_ns_instances}
69
70 Create User In Projects
71
72     ${rc}   ${stdout}=   Run And Return RC And Output   osm user-create ${user_name} --password ${user_password} --project-role-mappings ${project_1_name},project_admin --project-role-mappings ${project_2_name},project_admin
73     Should Be Equal As Integers   ${rc}   ${success_return_code}
74     Check If User Is Assigned To Project   ${user_name}   ${project_1_name}
75     Check If User Is Assigned To Project   ${user_name}   ${project_2_name}
76     Update User Password   ${user_name}   ${user_password}   ${user_new_password}
77
78
79 Change First Project Name to Third Project Name
80
81     Update Project Name   ${project_1_name}   ${project_3_name}
82     ${project_3_vnfds}=   Get Project Quotas   ${project_3_name}   vnfds
83     Should Be Equal As Integers   1   ${project_3_vnfds}
84     ${project_3_nsds}=   Get Project Quotas   ${project_3_name}   nsds
85     Should Be Equal As Integers   2   ${project_3_nsds}
86     ${project_3_ns_instances}=   Get Project Quotas   ${project_3_name}   ns_instances
87     Should Be Equal As Integers   3   ${project_3_ns_instances}
88     Check If User Is Assigned To Project   ${user_name}   ${project_3_name}
89
90
91 Create VNFDs On Third Project Until Exceed Quota
92
93     Create VNFD In Project   ${project_3_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=v1;product-name=v1'
94     Run Keyword And Expect Error   *   Create VNFD In Project   ${project_3_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=v2;product-name=v2'
95
96
97 Increase Third Project Quotas
98
99     Update Project Quotas   ${project_3_name}   ${project_3_quotas}
100     ${project_3_vnfds}=   Get Project Quotas   ${project_3_name}   vnfds
101     Should Be Equal As Integers   5   ${project_3_vnfds}
102
103
104 Create More VNFDs On Third Project Until Exceed Quota
105
106     Create VNFD In Project   ${project_3_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=v2;product-name=v2'
107     Create VNFD In Project   ${project_3_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=v3;product-name=v3'
108     Create VNFD In Project   ${project_3_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=v4;product-name=v4'
109     Create VNFD In Project   ${project_3_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=v5;product-name=v5'
110     Run Keyword And Expect Error   *   Create VNFD In Project   ${project_3_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=v6;product-name=v6'
111
112
113 Create VNFDs On Second Project Until Exceed Quota
114
115     Create VNFD In Project   ${project_2_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=vp2_1;product-name=vp2_1'
116     Run Keyword And Expect Error   *   Create VNFD In Project   ${project_2_name}   '%{PACKAGES_FOLDER}/${vnfd_pkg}'   ${user_name}   ${user_new_password}   override='id=vp2_2;product-name=vp2_2'
117
118
119 Check Project Scopes
120
121     ${rc}   ${stdout}=   Run And Return RC And Output   osm --project ${project_3_name} --password ${user_new_password} --user ${user_name} vnfpkg-show vp2_1
122     Log   ${stdout}
123     Should Not Be Equal As Integers   ${rc}   ${success_return_code}
124     ${rc}   ${stdout}=   Run And Return RC And Output   osm --project ${project_2_name} --password ${user_new_password} --user ${user_name} vnfpkg-show v1
125     Log   ${stdout}
126     Should Not Be Equal As Integers   ${rc}   ${success_return_code}
127
128
129 Delete Second Project VNFD
130     [Tags]   cleanup
131
132     Delete VNFD In Project   ${project_2_name}   vp2_1   ${user_name}   ${user_new_password}
133
134
135 Delete Third Project VNFDs
136     [Tags]   cleanup
137
138     Delete VNFD In Project   ${project_3_name}   v1   ${user_name}   ${user_new_password}
139     Delete VNFD In Project   ${project_3_name}   v2   ${user_name}   ${user_new_password}
140     Delete VNFD In Project   ${project_3_name}   v3   ${user_name}   ${user_new_password}
141     Delete VNFD In Project   ${project_3_name}   v4   ${user_name}   ${user_new_password}
142     Delete VNFD In Project   ${project_3_name}   v5   ${user_name}   ${user_new_password}
143
144
145 Delete Second Project After Removing User From It
146     [Tags]   cleanup
147
148     Run Keyword And Expect Error   *   Delete Project   ${project_2_name}
149     Remove User From Project   ${user_name}   ${project_2_name}
150     Delete Project   ${project_2_name}
151
152
153 Delete Projects User
154     [Tags]   cleanup
155
156     ${rc}=   Run And Return RC   osm user-delete ${user_name}
157
158
159 Delete Third Project
160     [Tags]   cleanup
161
162     Delete Project   ${project_3_name}
163
164
165 *** Keywords ***
166 Suite Cleanup
167     Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${project_2_name}   vp2_1   ${user_name}   ${user_new_password}
168     Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${project_3_name}   v1   ${user_name}   ${user_new_password}
169     Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${project_3_name}   v2   ${user_name}   ${user_new_password}
170     Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${project_3_name}   v3   ${user_name}   ${user_new_password}
171     Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${project_3_name}   v4   ${user_name}   ${user_new_password}
172     Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete VNFD In Project   ${project_3_name}   v5   ${user_name}   ${user_new_password}
173     Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete Project   ${project_1_name}
174     Run Keyword If Any Tests Failed   Delete Project   ${project_2_name}
175     Run Keyword If Any Tests Failed   Run Keyword And Ignore Error   Delete Project   ${project_3_name}
176     Run And Return RC   osm user-delete ${user_name}