# Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. *** Settings *** Documentation [QUOTAS-01] Quota enforcement. Library OperatingSystem Library String Library Collections Resource %{ROBOT_DEVOPS_FOLDER}/lib/project_lib.robot Force Tags quotas_01 cluster_main daily regression Suite Teardown Run Keyword And Ignore Error Suite Cleanup *** Variables *** # VNFD package to use during test ${vnfd_name} hackfest_basic_vnf ${vnfd_pkg} %{PACKAGES_FOLDER}/${vnfd_name} # Project names and quotas to use ${project_1_name} quotas_01_proj_1 ${project_2_name} quotas_01_proj_2 ${project_3_name} quotas_01_proj_3 ${project_1_quotas} vnfds=1,nsds=2,ns_instances=3 ${project_2_quotas} vnfds=1,nsds=1,ns_instances=1 ${project_3_quotas} vnfds=5,nsds=,ns_instances= # User name and password for project ${user_name} quotas_01_user ${user_password} quotas_01_pass ${success_return_code} 0 *** Test Cases *** Create First Project With Quotas Create Project With Quotas ${project_1_name} ${project_1_quotas} ${project_1_vnfds}= Get Project Quotas ${project_1_name} vnfds Should Be Equal As Integers 1 ${project_1_vnfds} ${project_1_nsds}= Get Project Quotas ${project_1_name} nsds Should Be Equal As Integers 2 ${project_1_nsds} ${project_1_ns_instances}= Get Project Quotas ${project_1_name} ns_instances Should Be Equal As Integers 3 ${project_1_ns_instances} Create Second Project With Quotas Create Project With Quotas ${project_2_name} ${project_2_quotas} ${project_2_vnfds}= Get Project Quotas ${project_2_name} vnfds Should Be Equal As Integers 1 ${project_2_vnfds} ${project_2_nsds}= Get Project Quotas ${project_2_name} nsds Should Be Equal As Integers 1 ${project_2_nsds} ${project_2_ns_instances}= Get Project Quotas ${project_2_name} ns_instances Should Be Equal As Integers 1 ${project_2_ns_instances} Create User In Projects ${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 Should Be Equal As Integers ${rc} ${success_return_code} Check If User Is Assigned To Project ${user_name} ${project_1_name} Check If User Is Assigned To Project ${user_name} ${project_2_name} Change First Project Name to Third Project Name Update Project Name ${project_1_name} ${project_3_name} ${project_3_vnfds}= Get Project Quotas ${project_3_name} vnfds Should Be Equal As Integers 1 ${project_3_vnfds} ${project_3_nsds}= Get Project Quotas ${project_3_name} nsds Should Be Equal As Integers 2 ${project_3_nsds} ${project_3_ns_instances}= Get Project Quotas ${project_3_name} ns_instances Should Be Equal As Integers 3 ${project_3_ns_instances} Check If User Is Assigned To Project ${user_name} ${project_3_name} Create VNFDs On Third Project Until Exceed Quota Create VNFD In Project ${project_3_name} ${vnfd_pkg} ${user_name} ${user_password} override='id=v1;product-name=v1' Run Keyword And Expect Error * Create VNFD In Project ${project_3_name} ${vnfd_pkg} ${user_name} ${user_password} override='id=v2;product-name=v2' Increase Third Project Quotas Update Project Quotas ${project_3_name} ${project_3_quotas} ${project_3_vnfds}= Get Project Quotas ${project_3_name} vnfds Should Be Equal As Integers 5 ${project_3_vnfds} Create More VNFDs On Third Project Until Exceed Quota Create VNFD In Project ${project_3_name} ${vnfd_pkg} ${user_name} ${user_password} override='id=v2;product-name=v2' Create VNFD In Project ${project_3_name} ${vnfd_pkg} ${user_name} ${user_password} override='id=v3;product-name=v3' Create VNFD In Project ${project_3_name} ${vnfd_pkg} ${user_name} ${user_password} override='id=v4;product-name=v4' Create VNFD In Project ${project_3_name} ${vnfd_pkg} ${user_name} ${user_password} override='id=v5;product-name=v5' Run Keyword And Expect Error * Create VNFD In Project ${project_3_name} ${vnfd_pkg} ${user_name} ${user_password} override='id=v6;product-name=v6' Create VNFDs On Second Project Until Exceed Quota Create VNFD In Project ${project_2_name} ${vnfd_pkg} ${user_name} ${user_password} override='id=vp2_1;product-name=vp2_1' 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' Check Project Scopes ${rc} ${stdout}= Run And Return RC And Output osm --project ${project_3_name} --password ${user_password} --user ${user_name} vnfpkg-show vp2_1 Log ${stdout} Should Not Be Equal As Integers ${rc} ${success_return_code} ${rc} ${stdout}= Run And Return RC And Output osm --project ${project_2_name} --password ${user_password} --user ${user_name} vnfpkg-show v1 Log ${stdout} Should Not Be Equal As Integers ${rc} ${success_return_code} Delete Second Project VNFD [Tags] cleanup Delete VNFD In Project ${project_2_name} vp2_1 ${user_name} ${user_password} Delete Third Project VNFDs [Tags] cleanup Delete VNFD In Project ${project_3_name} v1 ${user_name} ${user_password} Delete VNFD In Project ${project_3_name} v2 ${user_name} ${user_password} Delete VNFD In Project ${project_3_name} v3 ${user_name} ${user_password} Delete VNFD In Project ${project_3_name} v4 ${user_name} ${user_password} Delete VNFD In Project ${project_3_name} v5 ${user_name} ${user_password} Delete Second Project After Removing User From It [Tags] cleanup Run Keyword And Expect Error * Delete Project ${project_2_name} Remove User From Project ${user_name} ${project_2_name} Delete Project ${project_2_name} Delete Projects User [Tags] cleanup ${rc}= Run And Return RC osm user-delete ${user_name} Delete Third Project [Tags] cleanup Delete Project ${project_3_name} *** Keywords *** Suite Cleanup Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${project_2_name} vp2_1 ${user_name} ${user_password} Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${project_3_name} v1 ${user_name} ${user_password} Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${project_3_name} v2 ${user_name} ${user_password} Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${project_3_name} v3 ${user_name} ${user_password} Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${project_3_name} v4 ${user_name} ${user_password} Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${project_3_name} v5 ${user_name} ${user_password} Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete Project ${project_1_name} Run Keyword If Any Tests Failed Delete Project ${project_2_name} Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete Project ${project_3_name} Run And Return RC osm user-delete ${user_name}