*** Comments *** # 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 ../lib/project_lib.resource Resource ../lib/user_lib.resource Test Tags quotas_01 cluster_main daily regression Suite Teardown Run Keyword And Ignore Error Suite Cleanup *** Variables *** # VNFD package to use during test ${VNFD_PKG} hackfest_basic_vnf # 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 ${USERNAME} quotas_01_user ${USER_PASSWORD} Quotas_01_pass ${USER_NEW_PASSWORD} Quotas_01_new_pass ${SUCCESS_RETURN_CODE} 0 *** Test Cases *** Create First Project With Quotas [Documentation] Create a first project with quotas, then get the project quotas and check that they are correct. 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 [Documentation] Create a second project with quotas, then get the project quotas and check that they are correct. 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 [Documentation] Create a user with role project_admin in both projects. ${rc} ${stdout}= Run And Return RC And Output osm user-create ${USERNAME} --password ${USER_PASSWORD} --project-role-mappings ${PROJECT_1_NAME},project_admin --project-role-mappings ${PROJECT_2_NAME},project_admin Log ${rc},${stdout} Should Be Equal As Integers ${rc} ${SUCCESS_RETURN_CODE} Check If User Is Assigned To Project ${USERNAME} ${PROJECT_1_NAME} Check If User Is Assigned To Project ${USERNAME} ${PROJECT_2_NAME} Update User Password ${USERNAME} ${USER_PASSWORD} ${USER_NEW_PASSWORD} Change First Project Name to Third Project Name [Documentation] Rename first project. From now on, the project will be considered for the tests a third project. 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 ${USERNAME} ${PROJECT_3_NAME} Create VNFDs On Third Project Until Exceed Quota [Documentation] Upload VNF packages in the third project. Create VNFD In Project ${PROJECT_3_NAME} '%{PACKAGES_FOLDER}/${VNFD_PKG}' ${USERNAME} ${USER_NEW_PASSWORD} override='id=v1;product-name=v1' Run Keyword And Expect Error * Create VNFD In Project ${PROJECT_3_NAME} '%{PACKAGES_FOLDER}/${VNFD_PKG}' ${USERNAME} ${USER_NEW_PASSWORD} override='id=v2;product-name=v2' Increase Third Project Quotas [Documentation] Update the quotas of the third project. 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 [Documentation] Upload VNF packages in the third project until the quota is reached, so that an error is obtained. Create VNFD In Project ${PROJECT_3_NAME} '%{PACKAGES_FOLDER}/${VNFD_PKG}' ${USERNAME} ${USER_NEW_PASSWORD} override='id=v2;product-name=v2' Create VNFD In Project ${PROJECT_3_NAME} '%{PACKAGES_FOLDER}/${VNFD_PKG}' ${USERNAME} ${USER_NEW_PASSWORD} override='id=v3;product-name=v3' Create VNFD In Project ${PROJECT_3_NAME} '%{PACKAGES_FOLDER}/${VNFD_PKG}' ${USERNAME} ${USER_NEW_PASSWORD} override='id=v4;product-name=v4' Create VNFD In Project ${PROJECT_3_NAME} '%{PACKAGES_FOLDER}/${VNFD_PKG}' ${USERNAME} ${USER_NEW_PASSWORD} override='id=v5;product-name=v5' Run Keyword And Expect Error * Create VNFD In Project ${PROJECT_3_NAME} '%{PACKAGES_FOLDER}/${VNFD_PKG}' ${USERNAME} ${USER_NEW_PASSWORD} override='id=v6;product-name=v6' Create VNFDs On Second Project Until Exceed Quota [Documentation] Upload VNF packages in the second project until the quota is reached, so that an error is obtained. Create VNFD In Project ${PROJECT_2_NAME} '%{PACKAGES_FOLDER}/${VNFD_PKG}' ${USERNAME} ${USER_NEW_PASSWORD} override='id=vp2_1;product-name=vp2_1' Run Keyword And Expect Error * Create VNFD In Project ${PROJECT_2_NAME} '%{PACKAGES_FOLDER}/${VNFD_PKG}' ${USERNAME} ${USER_NEW_PASSWORD} override='id=vp2_2;product-name=vp2_2' Check Project Scopes [Documentation] Check that the user can see a VNF package in both projects. ${rc} ${stdout}= Run And Return RC And Output osm --project ${PROJECT_3_NAME} --password ${USER_NEW_PASSWORD} --user ${USERNAME} 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_NEW_PASSWORD} --user ${USERNAME} vnfpkg-show v1 Log ${stdout} Should Not Be Equal As Integers ${rc} ${SUCCESS_RETURN_CODE} Delete Second Project VNFD [Documentation] Delete VNF packages from second project. [Tags] cleanup Delete VNFD In Project ${PROJECT_2_NAME} vp2_1 ${USERNAME} ${USER_NEW_PASSWORD} Delete Third Project VNFDs [Documentation] Delete VNF packages from third project. [Tags] cleanup Delete VNFD In Project ${PROJECT_3_NAME} v1 ${USERNAME} ${USER_NEW_PASSWORD} Delete VNFD In Project ${PROJECT_3_NAME} v2 ${USERNAME} ${USER_NEW_PASSWORD} Delete VNFD In Project ${PROJECT_3_NAME} v3 ${USERNAME} ${USER_NEW_PASSWORD} Delete VNFD In Project ${PROJECT_3_NAME} v4 ${USERNAME} ${USER_NEW_PASSWORD} Delete VNFD In Project ${PROJECT_3_NAME} v5 ${USERNAME} ${USER_NEW_PASSWORD} Delete Second Project After Removing User From It [Documentation] Delete user from second project, then delete the second project. [Tags] cleanup Run Keyword And Expect Error * Delete Project ${PROJECT_2_NAME} Remove User From Project ${USERNAME} ${PROJECT_2_NAME} Delete Project ${PROJECT_2_NAME} Delete Projects User [Documentation] Delete user. [Tags] cleanup ${rc}= Run And Return RC osm user-delete ${USERNAME} Log ${rc} Delete Third Project [Documentation] Delete third project. [Tags] cleanup Delete Project ${PROJECT_3_NAME} *** Keywords *** Suite Cleanup [Documentation] Test Suite Cleanup: Deleting VNF packages, projects and users. Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${PROJECT_2_NAME} vp2_1 ${USERNAME} ${USER_NEW_PASSWORD} Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${PROJECT_3_NAME} v1 ${USERNAME} ${USER_NEW_PASSWORD} Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${PROJECT_3_NAME} v2 ${USERNAME} ${USER_NEW_PASSWORD} Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${PROJECT_3_NAME} v3 ${USERNAME} ${USER_NEW_PASSWORD} Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${PROJECT_3_NAME} v4 ${USERNAME} ${USER_NEW_PASSWORD} Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${PROJECT_3_NAME} v5 ${USERNAME} ${USER_NEW_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 ${USERNAME}