From 590e29519c96e510ad6be6e0eb1e07c42d5ace52 Mon Sep 17 00:00:00 2001 From: garciadeblas Date: Wed, 23 Apr 2025 17:05:03 +0200 Subject: [PATCH] New test gitops02 for cluster registration, OKA and KSU in imported clusters Change-Id: I5ab0daa91ef593ad613211951ba175f49c67dda2 Signed-off-by: garciadeblas --- .../lib/advanced_cluster_mgmt_lib.resource | 46 +++++- ...eclarative_cluster_creation_oka_ksu.robot} | 4 +- ...arative_cluster_registration_oka_ksu.robot | 149 ++++++++++++++++++ 3 files changed, 194 insertions(+), 5 deletions(-) rename robot-systest/testsuite/{gitops_01-advanced_cluster_management.robot => gitops_01-declarative_cluster_creation_oka_ksu.robot} (97%) create mode 100644 robot-systest/testsuite/gitops_02-declarative_cluster_registration_oka_ksu.robot diff --git a/robot-systest/lib/advanced_cluster_mgmt_lib.resource b/robot-systest/lib/advanced_cluster_mgmt_lib.resource index dc1621d..23b3c02 100644 --- a/robot-systest/lib/advanced_cluster_mgmt_lib.resource +++ b/robot-systest/lib/advanced_cluster_mgmt_lib.resource @@ -25,6 +25,8 @@ Library String ${SUCCESS_RETURN_CODE} 0 ${CLUSTER_LAUNCH_MAX_WAIT_TIME} 12min ${CLUSTER_LAUNCH_POL_TIME} 30sec +${CLUSTER_REGISTER_MAX_WAIT_TIME} 7min +${CLUSTER_REGISTER_POL_TIME} 30sec ${CLUSTER_DELETE_MAX_WAIT_TIME} 12min ${CLUSTER_DELETE_POL_TIME} 30sec ${OKA_OPERATION_MAX_WAIT_TIME} 5min @@ -54,6 +56,31 @@ Create Cluster ${cluster_id}= Set Variable ${stdout} Log ${cluster_id} Check Cluster Age Keys ${cluster_id} + IF ${wait_flag} == True + Wait Until Keyword Succeeds ${CLUSTER_REGISTER_MAX_WAIT_TIME} ${CLUSTER_REGISTER_POL_TIME} + ... Check For Cluster To Be Ready ${name} + END + RETURN ${cluster_id} + +Register Cluster + [Documentation] Register a Kubernetes cluster in OSM using a provided name and kubeconfig credentials. + [Arguments] ${name} ${vim_account} ${creds} ${description} ${bootstrap_flag}=True ${wait_flag}=True + ${command}= Catenate + ... osm cluster-register ${name} + ... --vim-account ${vim_account} + ... --creds ${creds} + ... --description ${description} + IF ${bootstrap_flag} == True + Catenate ${command} --bootstrap + ELSE + Catenate ${command} --no-bootstrap + END + ${rc} ${stdout}= Run And Return Rc And Output ${command} + Log ${rc},${stdout} + Should Be Equal As Integers ${rc} ${SUCCESS_RETURN_CODE} msg=Cluster registration failed: ${stdout} + ${cluster_id}= Set Variable ${stdout} + Log ${cluster_id} + Check Cluster Age Keys ${cluster_id} IF ${wait_flag} == True Wait Until Keyword Succeeds ${CLUSTER_LAUNCH_MAX_WAIT_TIME} ${CLUSTER_LAUNCH_POL_TIME} ... Check For Cluster To Be Ready ${name} @@ -75,7 +102,7 @@ Check Cluster Age Keys Log pubkey is ${stdout} Delete Cluster - [Documentation] Unregister/delete a Kubernetes cluster from OSM. + [Documentation] Delete a Kubernetes cluster from OSM. [Arguments] ${cluster_name} ${wait_flag}=True ${rc} ${stdout}= Run And Return Rc And Output osm cluster-delete ${cluster_name} Log ${rc},${stdout} @@ -85,6 +112,17 @@ Delete Cluster ... Check For Cluster Deletion Status ${cluster_name} END +Deregister Cluster + [Documentation] Deregister a Kubernetes cluster from OSM. + [Arguments] ${cluster_name} ${wait_flag}=True + ${rc} ${stdout}= Run And Return Rc And Output osm cluster-deregister ${cluster_name} + Log ${rc},${stdout} + Should Be Equal As Integers ${rc} ${SUCCESS_RETURN_CODE} msg=Cluster deregistration failed: ${stdout} + IF ${wait_flag} == True + Wait Until Keyword Succeeds ${CLUSTER_DELETE_MAX_WAIT_TIME} ${CLUSTER_DELETE_POL_TIME} + ... Check For Cluster Deletion Status ${cluster_name} + END + Check For Cluster Deletion Status [Documentation] Check if a Kubernetes cluster identified by name is deleted or in error state. [Arguments] ${cluster_name} @@ -236,10 +274,12 @@ Check For KSU To Be Deleted Log ${matches} IF ${matches} != @{EMPTY} Log ${ksu_name} is a valid UUID - ${rc} ${stdout}= Run And Return Rc And Output osm ksu-list --filter _id="${ksu_name}" | grep ${ksu_name} + # ${rc} ${stdout}= Run And Return Rc And Output osm ksu-list --filter _id="${ksu_name}" | grep ${ksu_name} + ${rc} ${stdout}= Run And Return Rc And Output osm ksu-list --filter _id="${ksu_name}" -o jsonpath='[*].name'| grep -E "\^${ksu_name}\$"" ELSE Log ${ksu_name} is not a valid UUID, so it will be treated as a name - ${rc} ${stdout}= Run And Return Rc And Output osm ksu-list --filter name="${ksu_name}" | grep ${ksu_name} + # ${rc} ${stdout}= Run And Return Rc And Output osm ksu-list --filter name="${ksu_name}" | grep ${ksu_name} + ${rc} ${stdout}= Run And Return Rc And Output osm ksu-list --filter name="${ksu_name}" -o jsonpath='[*].name'| grep -E "\^${ksu_name}\$" END Log ${rc},${stdout} Should Be Empty ${stdout} diff --git a/robot-systest/testsuite/gitops_01-advanced_cluster_management.robot b/robot-systest/testsuite/gitops_01-declarative_cluster_creation_oka_ksu.robot similarity index 97% rename from robot-systest/testsuite/gitops_01-advanced_cluster_management.robot rename to robot-systest/testsuite/gitops_01-declarative_cluster_creation_oka_ksu.robot index 14c31af..a6bb19a 100644 --- a/robot-systest/testsuite/gitops_01-advanced_cluster_management.robot +++ b/robot-systest/testsuite/gitops_01-declarative_cluster_creation_oka_ksu.robot @@ -13,7 +13,7 @@ *** Settings *** -Documentation [GITOPS-01] Advanced Cluster Management. +Documentation [GITOPS-01] Advanced Cluster Management. Cluster creation Library OperatingSystem Library String @@ -24,7 +24,7 @@ Resource ../lib/advanced_cluster_mgmt_lib.resource Test Tags gitops_01 cluster_gitops -# Suite Teardown Run Keyword And Ignore Error Suite Cleanup +Suite Teardown Run Keyword And Ignore Error Suite Cleanup *** Variables *** diff --git a/robot-systest/testsuite/gitops_02-declarative_cluster_registration_oka_ksu.robot b/robot-systest/testsuite/gitops_02-declarative_cluster_registration_oka_ksu.robot new file mode 100644 index 0000000..4f3a07a --- /dev/null +++ b/robot-systest/testsuite/gitops_02-declarative_cluster_registration_oka_ksu.robot @@ -0,0 +1,149 @@ +*** 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 [GITOPS-02] Advanced Cluster Management. Cluster registration + +Library OperatingSystem +Library String +Library Collections +Library Process + +Resource ../lib/advanced_cluster_mgmt_lib.resource + +Test Tags gitops_02 cluster_gitops + +# Suite Teardown Run Keyword And Ignore Error Suite Cleanup + + +*** Variables *** +# OKA packages +${OKA_FOLDER} '%{PACKAGES_FOLDER}/oka' +${OKA1_PKG} apps/testacme +${OKA1_NAME} testacme +${OKA1_PROFILE} app-profile +${OKA2_PKG} apps/jenkins +${OKA2_NAME} jenkins +${OKA2_PROFILE} app-profile +${OKA_NS_PKG} apps/namespace +${OKA_NS_NAME} namespace +${OKA_NS_PROFILE} app-profile + +# Cluster +${CLUSTER_NAME} cl-madrid-norte1 +${CLUSTER_DESCRIPTION} "Cluster for gitops02 Robot test suite" + +# KSUs +${KSU_NS_NAME} jenkins-ns +${KSU1_NAME} testacme +${KSU2_NAME} jenkins +${KSU_NS_ID} ${EMPTY} +${KSU1_ID} ${EMPTY} +${KSU2_ID} ${EMPTY} + + +*** Test Cases *** +Add OKA Packages For The Testsuite + [Documentation] Add OKA packages for the testsuite. + [Tags] oka create + Add OKA Package ${OKA_NS_NAME} '${OKA_FOLDER}/${OKA_NS_PKG}' ${OKA_NS_PROFILE} + Add OKA Package ${OKA1_NAME} '${OKA_FOLDER}/${OKA1_PKG}' ${OKA1_PROFILE} + Add OKA Package ${OKA2_NAME} '${OKA_FOLDER}/${OKA2_PKG}' ${OKA2_PROFILE} + +Register Cluster For Testsuite + [Documentation] Register K8s cluster for the testsuite. + [Tags] cluster create + ${id}= Register Cluster ${CLUSTER_NAME} %{VIM_TARGET} %{CLUSTER_KUBECONFIG_CREDENTIALS} ${CLUSTER_DESCRIPTION} + Set Suite Variable ${CLUSTER_ID} ${id} + Log ${CLUSTER_ID} + +Get Cluster Kubeconfig + [Documentation] Get Kubeconfig for the cluster. + [Tags] cluster + ${rc} ${stdout}= Run And Return Rc And Output + ... osm cluster-show ${CLUSTER_NAME} -o jsonpath='{.credentials}' | yq -y + Should Be Equal As Integers ${rc} ${SUCCESS_RETURN_CODE} + Log ${stdout} + +Create KSU Namespace For All KSUs + [Documentation] Create KSU based on ${OKA_NS_NAME} with params. + [Tags] ksu ksu-ns create + ${id}= Create KSU ${KSU_NS_NAME} ${KSU_NS_NAME} ${CLUSTER_NAME} app-profile ${OKA_NS_NAME} ${OKA_FOLDER}/apps/jenkins-ns-params.yaml + Set Suite Variable ${KSU_NS_ID} ${id} + Log ${KSU_NS_ID} + +Create KSU1 Without Params + [Documentation] Create KSU based on ${OKA1_NAME} without params (default namespace). + [Tags] ksu ksu1 create + ${id}= Create KSU ${KSU1_NAME} ${KSU1_NAME} ${CLUSTER_NAME} app-profile ${OKA1_NAME} + Set Suite Variable ${KSU1_ID} ${id} + Log ${KSU1_ID} + +Create KSU2 With Params + [Documentation] Create KSU based on ${OKA2_NAME} with params. + [Tags] ksu ksu2 create + ${id}= Create KSU ${KSU2_NAME} ${KSU2_NAME} ${CLUSTER_NAME} app-profile ${OKA2_NAME} ${OKA_FOLDER}/apps/jenkins-params.yaml + Set Suite Variable ${KSU2_ID} ${id} + Log ${KSU2_ID} + +Delete KSU2 + [Documentation] Delete KSU2 based on ${OKA2_NAME}. + [Tags] cleanup ksu ksu2 + IF '${KSU2_ID}' != '' + ${KSU_TO_BE_DELETED}= Set Variable ${KSU2_ID} + ELSE + ${KSU_TO_BE_DELETED}= Set Variable ${KSU2_NAME} + END + Delete KSU ${KSU_TO_BE_DELETED} + +Delete KSU1 + [Documentation] Delete KSU1 based on ${OKA1_NAME}. + [Tags] cleanup ksu ksu1 + IF '${KSU1_ID}' != '' + ${KSU_TO_BE_DELETED}= Set Variable ${KSU1_ID} + ELSE + ${KSU_TO_BE_DELETED}= Set Variable ${KSU1_NAME} + END + Delete KSU ${KSU_TO_BE_DELETED} + +Delete KSU Namespace + [Documentation] Delete KSU based on ${OKA_NS_NAME}. + [Tags] cleanup ksu ksu-ns + IF '${KSU_NS_ID}' != '' + ${KSU_TO_BE_DELETED}= Set Variable ${KSU_NS_ID} + ELSE + ${KSU_TO_BE_DELETED}= Set Variable ${KSU_NS_NAME} + END + Delete KSU ${KSU_TO_BE_DELETED} + +Deregister Cluster For Testsuite + [Documentation] Deregister K8s cluster for the testsuite. + [Tags] cleanup cluster + Deregister Cluster ${CLUSTER_NAME} + +Delete OKA Packages For The Testsuite + [Documentation] Delete OKA packages for the testsuite. + [Tags] cleanup oka + Delete OKA Package ${OKA_NS_NAME} + Delete OKA Package ${OKA1_NAME} + Delete OKA Package ${OKA2_NAME} + + +*** Keywords *** +Suite Cleanup + [Documentation] Test Suit Cleanup: Deleting cluster, KSUs, OKAs + Run Keyword If Any Tests Failed Deregister Cluster ${CLUSTER_NAME} + Run Keyword If Any Tests Failed Delete OKA Package ${OKA_NS_NAME} + Run Keyword If Any Tests Failed Delete OKA Package ${OKA1_NAME} + Run Keyword If Any Tests Failed Delete OKA Package ${OKA2_NAME} -- 2.25.1