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 [QUOTAS-01] Quota enforcement.
16 Library OperatingSystem
20 Resource %{ROBOT_DEVOPS_FOLDER}/lib/project_lib.robot
21 Resource %{ROBOT_DEVOPS_FOLDER}/lib/user_lib.robot
23 Force Tags quotas_01 cluster_main daily regression
25 Suite Teardown Run Keyword And Ignore Error Suite Cleanup
29 # VNFD package to use during test
30 ${vnfd_pkg} hackfest_basic_vnf
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=
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
45 ${success_return_code} 0
49 Create First Project With Quotas
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}
60 Create Second Project With Quotas
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}
70 Create User In Projects
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}
79 Change First Project Name to Third Project Name
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}
91 Create VNFDs On Third Project Until Exceed Quota
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'
97 Increase Third Project Quotas
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}
104 Create More VNFDs On Third Project Until Exceed Quota
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'
113 Create VNFDs On Second Project Until Exceed Quota
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'
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
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
126 Should Not Be Equal As Integers ${rc} ${success_return_code}
129 Delete Second Project VNFD
132 Delete VNFD In Project ${project_2_name} vp2_1 ${user_name} ${user_new_password}
135 Delete Third Project VNFDs
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}
145 Delete Second Project After Removing User From It
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}
156 ${rc}= Run And Return RC osm user-delete ${user_name}
162 Delete Project ${project_3_name}
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}