--- /dev/null
+*** 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-04] Cluster creation in Openshift via ACM
+
+Library OperatingSystem
+Library String
+Library Collections
+Library Process
+
+Resource ../lib/advanced_cluster_mgmt_lib.resource
+Resource ../lib/vim_lib.resource
+
+Test Tags gitops_04 cluster_gitops
+
+Suite Teardown Run Keyword And Ignore Error Suite Cleanup
+
+
+*** Variables ***
+# OKA packages
+${OKA_FOLDER} '%{PACKAGES_FOLDER}/oka'
+${OKA1_PKG} apps/jenkins
+${OKA1_NAME} jenkins
+${OKA1_PROFILE} app-profile
+${OKA_NS_PKG} apps/namespace
+${OKA_NS_NAME} namespace
+${OKA_NS_PROFILE} app-profile
+
+# VIM and Clusters
+${VIM_NAME} gitops04vim
+${ACM_CLUSTER_NAME} acm-gitops04
+${ACM_CLUSTER_DESCRIPTION} "ACM Cluster for gitops04 Robot test suite"
+${CLUSTER_NAME} gitops04
+${CLUSTER_DESCRIPTION} "Cluster for gitops04 Robot test suite"
+${CLUSTER_VM_SIZE} m1.large
+${CLUSTER_NODES} 1
+${REGION_NAME} northeurope
+${RESOURCE_GROUP} OSM-CTIO
+${KUBERNETES_VERSION} "1.31.7"
+${OPENSHIFT_RELEASE} "4.18.13-multi"
+${CLUSTER_CONFIG} --config '{"openshift": {"openshift-release": ${OPENSHIFT_RELEASE}, "worker-cores": "8", "workder-memory": "16", "worker-disk": "100", "storage-class": "ocs-storagecluster-ceph-rbd", "base-domain": "base.domain.com", "acm-cluster": ${ACM_CLUSTER_NAME}, "hosted-clusters-project": "clusters"}}'
+
+# KSUs
+${KSU_NS_NAME} jenkins-ns
+${KSU1_NAME} jenkins
+${KSU1_PARAMS} ${CURDIR}/../resources/gitops-jenkins-params.yaml
+${KSU_NS_ID} ${EMPTY}
+${KSU1_ID} ${EMPTY}
+
+
+*** Test Cases ***
+Create Dummy VIM For The Testsuite
+ [Documentation] Create dummy VIM for the testsuite.
+ [Tags] vim acm-cluster create
+ ${vim_id}= Create VIM Target ${VIM_NAME} u p http://localhost/dummy t dummy
+ Set Suite Variable ${VIM_ID} ${vim_id}
+
+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}
+
+Register ACM Cluster For Testsuite
+ [Documentation] Register ACM K8s cluster for the testsuite.
+ [Tags] acm-cluster create
+ ${id}= Register Cluster ${ACM_CLUSTER_NAME} ${VIM_NAME} %{ACM_CLUSTER_KUBECONFIG_CREDENTIALS} ${ACM_CLUSTER_DESCRIPTION}
+ Set Suite Variable ${ACM_CLUSTER_ID} ${id}
+ Log ${ACM_CLUSTER_ID}
+
+Get Cluster Kubeconfig
+ [Documentation] Get Kubeconfig for the ACM cluster.
+ [Tags] acm-cluster
+ ${rc} ${stdout}= Run And Return Rc And Output
+ ... osm cluster-show ${ACM_CLUSTER_NAME} -o jsonpath='{.credentials}' | yq -y
+ Should Be Equal As Integers ${rc} ${SUCCESS_RETURN_CODE}
+ Log ${stdout}
+
+Create Openshift Cluster
+ [Documentation] Create Openshift K8s cluster for the testsuite.
+ [Tags] cluster create
+ ${id}= Create Cluster ${CLUSTER_NAME} ${VIM_NAME} ${CLUSTER_DESCRIPTION} ${CLUSTER_VM_SIZE} ${KUBERNETES_VERSION} ${CLUSTER_NODES} ${REGION_NAME} ${RESOURCE_GROUP} ${CLUSTER_CONFIG}
+ Set Suite Variable ${CLUSTER_ID} ${id}
+ Log ${CLUSTER_ID}
+
+Get Openshift Cluster Kubeconfig
+ [Documentation] Get Kubeconfig for the Openshift 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 With Params
+ [Documentation] Create KSU based on ${OKA1_NAME} with params.
+ [Tags] ksu ksu1 create
+ ${id}= Create KSU ${KSU1_NAME} ${KSU1_NAME} ${CLUSTER_NAME} app-profile ${OKA1_NAME} ${KSU1_PARAMS}
+ Set Suite Variable ${KSU1_ID} ${id}
+ Log ${KSU1_ID}
+
+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}
+
+Delete Cluster For Testsuite
+ [Documentation] Delete K8s cluster for the testsuite.
+ [Tags] cleanup cluster
+ Delete Cluster ${CLUSTER_NAME}
+
+Deregister ACM Cluster For Testsuite
+ [Documentation] Deregister ACM K8s cluster for the testsuite.
+ [Tags] cleanup acm-cluster
+ Deregister Cluster ${ACM_CLUSTER_NAME}
+
+Delete Dummy VIM For The Testsuite
+ [Documentation] Delete dummy VIM for the testsuite.
+ [Tags] vim acm-cluster cleanup
+ Delete VIM Target ${VIM_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}
+
+
+*** Keywords ***
+Suite Cleanup
+ [Documentation] Test Suit Cleanup: Deleting cluster, KSUs, OKAs
+ Run Keyword If Any Tests Failed Delete Cluster ${CLUSTER_NAME}
+ Run Keyword If Any Tests Failed Deregister Cluster ${ACM_CLUSTER_NAME}
+ Run Keyword If Any Tests Failed Delete VIM Target ${VIM_NAME}
+ Run Keyword If Any Tests Failed Delete OKA Package ${OKA_NS_NAME}
+ Run Keyword If Any Tests Failed Delete OKA Package ${OKA1_NAME}