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