-*** 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
# See the License for the specific language governing permissions and
# limitations under the License.
-
*** Settings ***
Documentation [QUOTAS-01] Quota enforcement.
Library String
Library Collections
-Resource ../lib/project_lib.resource
-Resource ../lib/user_lib.resource
+Resource %{ROBOT_DEVOPS_FOLDER}/lib/project_lib.robot
+Resource %{ROBOT_DEVOPS_FOLDER}/lib/user_lib.robot
-Test Tags quotas_01 cluster_main daily regression
+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_PKG} hackfest_basic_vnf
+${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=
+${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
+${user_name} quotas_01_user
+${user_password} Quotas_01_pass
+${user_new_password} Quotas_01_new_pass
-${SUCCESS_RETURN_CODE} 0
+${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
+
+ 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
+ ${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
+ ${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
+
+ 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
+ ${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
+ ${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}
+
+ ${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}
+ Update User Password ${user_name} ${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
+
+ 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
+ ${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
+ ${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}
+ Check If User Is Assigned To Project ${user_name} ${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'
+
+ Create VNFD In Project ${project_3_name} '%{PACKAGES_FOLDER}/${vnfd_pkg}' ${user_name} ${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}' ${user_name} ${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
+
+ 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 VNFD In Project ${project_3_name} '%{PACKAGES_FOLDER}/${vnfd_pkg}' ${user_name} ${user_new_password} override='id=v2;product-name=v2'
+ Create VNFD In Project ${project_3_name} '%{PACKAGES_FOLDER}/${vnfd_pkg}' ${user_name} ${user_new_password} override='id=v3;product-name=v3'
+ Create VNFD In Project ${project_3_name} '%{PACKAGES_FOLDER}/${vnfd_pkg}' ${user_name} ${user_new_password} override='id=v4;product-name=v4'
+ Create VNFD In Project ${project_3_name} '%{PACKAGES_FOLDER}/${vnfd_pkg}' ${user_name} ${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}' ${user_name} ${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'
+
+ Create VNFD In Project ${project_2_name} '%{PACKAGES_FOLDER}/${vnfd_pkg}' ${user_name} ${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}' ${user_name} ${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
+
+ ${rc} ${stdout}= Run And Return RC And Output osm --project ${project_3_name} --password ${user_new_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_NEW_PASSWORD} --user ${USERNAME} vnfpkg-show v1
+ 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 ${user_name} vnfpkg-show v1
Log ${stdout}
- Should Not Be Equal As Integers ${rc} ${SUCCESS_RETURN_CODE}
+ 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 VNFD In Project ${project_2_name} vp2_1 ${user_name} ${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 VNFD In Project ${project_3_name} v1 ${user_name} ${user_new_password}
+ Delete VNFD In Project ${project_3_name} v2 ${user_name} ${user_new_password}
+ Delete VNFD In Project ${project_3_name} v3 ${user_name} ${user_new_password}
+ Delete VNFD In Project ${project_3_name} v4 ${user_name} ${user_new_password}
+ Delete VNFD In Project ${project_3_name} v5 ${user_name} ${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}
+
+ 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
- [Documentation] Delete user.
[Tags] cleanup
- ${rc}= Run And Return RC osm user-delete ${USERNAME}
- Log ${rc}
+
+ ${rc}= Run And Return RC osm user-delete ${user_name}
+
Delete Third Project
- [Documentation] Delete third project.
[Tags] cleanup
- Delete Project ${PROJECT_3_NAME}
+
+ 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}
+ 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}
+ Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${project_3_name} v1 ${user_name} ${user_new_password}
+ Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${project_3_name} v2 ${user_name} ${user_new_password}
+ Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${project_3_name} v3 ${user_name} ${user_new_password}
+ Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${project_3_name} v4 ${user_name} ${user_new_password}
+ Run Keyword If Any Tests Failed Run Keyword And Ignore Error Delete VNFD In Project ${project_3_name} v5 ${user_name} ${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 ${user_name}