From 2661d5b52a1fc49acefaa31219c11fe88daf9a82 Mon Sep 17 00:00:00 2001 From: garciadeblas Date: Fri, 29 Aug 2025 13:22:33 +0200 Subject: [PATCH] Feature 11049. CAPI cluster management in Openstack. Add ArgoWF templates for VIM/cloud operations Change-Id: I54d64fd5bf1e66c46bc19c2cb142fad659ec8647 Signed-off-by: garciadeblas --- .../capi-cloud-configs-wft.yaml | 266 ++++++++++++++++++ .../full-create-capi-cloudconfig-wft.yaml | 234 +++++++++++++++ .../full-delete-capi-cloudconfig-wft.yaml | 180 ++++++++++++ .../full-update-capi-cloudconfig-wft.yaml | 234 +++++++++++++++ 4 files changed, 914 insertions(+) create mode 100644 installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/capi-cloud-configs-wft.yaml create mode 100644 installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-capi-cloudconfig-wft.yaml create mode 100644 installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-capi-cloudconfig-wft.yaml create mode 100644 installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-capi-cloudconfig-wft.yaml diff --git a/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/capi-cloud-configs-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/capi-cloud-configs-wft.yaml new file mode 100644 index 00000000..df6aed63 --- /dev/null +++ b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/capi-cloud-configs-wft.yaml @@ -0,0 +1,266 @@ +####################################################################################### +# Copyright ETSI Contributors and Others. +# +# 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. +####################################################################################### + +apiVersion: argoproj.io/v1alpha1 +kind: WorkflowTemplate +metadata: + name: capi-cloud-configs-wft + namespace: osm-workflows +spec: + templates: + + # Create a CloudConfig for CAPI OpenStack provider + - name: create-capi-openstack-cloudconfig + inputs: + parameters: + # Volumes with cloned repos + - name: fleet_volume_name + - name: fleet_mount_path + value: "/fleet" + - name: sw_catalogs_volume_name + - name: sw_catalogs_mount_path + value: "/sw-catalogs" + + # Specific parameters + - name: openstack_clouds_yaml_secret_name + - name: openstack_clouds_yaml_secret_key + - name: openstack_cacert_secret_name + - name: openstack_cacert_secret_key + - name: os_auth_url + - name: os_region_name + - name: os_username + - name: openstack_credentials_secret_name + - name: openstack_credentials_secret_key + - name: os_project_id + - name: os_project_domain_id + - name: openstack_cloud_name + - name: age_public_key_mgmt + - name: mgmt_project_name + # Debug? + - name: debug + value: "false" + + # Other parameters - Do not touch + - name: mgmt_cluster_name + value: "_management" + - name: base_templates_path + value: "cloud-resources" + - name: cloned_fleet_folder_name + value: "fleet-osm" + - name: cloned_sw_catalogs_folder_name + value: "sw-catalogs-osm" + + container: + image: opensourcemano/osm-krm-functions:testing-daily + # imagePullPolicy: Always + env: + - name: OPENSTACK_CLOUDS_YAML + valueFrom: + secretKeyRef: + name: "{{inputs.parameters.openstack_clouds_yaml_secret_name}}" + key: "{{inputs.parameters.openstack_clouds_yaml_secret_key}}" + default: "" + - name: OPENSTACK_CACERT + valueFrom: + secretKeyRef: + name: "{{inputs.parameters.openstack_cacert_secret_name}}" + key: "{{inputs.parameters.openstack_cacert_secret_key}}" + default: "" + - name: OS_AUTH_URL + value: "{{inputs.parameters.os_auth_url}}" + - name: OS_REGION_NAME + value: "{{inputs.parameters.os_region_name}}" + - name: OS_USERNAME + value: "{{inputs.parameters.os_username}}" + - name: OS_PASSWORD + valueFrom: + secretKeyRef: + name: "{{inputs.parameters.openstack_credentials_secret_name}}" + key: "{{inputs.parameters.openstack_credentials_secret_key}}" + default: "" + - name: OS_PROJECT_ID + value: "{{inputs.parameters.os_project_id}}" + - name: OS_PROJECT_DOMAIN_ID + value: "{{inputs.parameters.os_project_domain_id}}" + - name: DEBUG + value: "{{inputs.parameters.debug}}" + command: ["/app/scripts/entrypoint.sh"] + args: + - create_capi_openstack_cloudconf + - "{{inputs.parameters.openstack_cloud_name}}" + - "{{inputs.parameters.age_public_key_mgmt}}" + - "{{inputs.parameters.fleet_mount_path}}/{{inputs.parameters.cloned_fleet_folder_name}}/{{inputs.parameters.mgmt_project_name}}/infra-config-profiles/{{inputs.parameters.mgmt_cluster_name}}" + volumeMounts: + - name: fleet-repo-volume + mountPath: '{{inputs.parameters.fleet_mount_path}}' + - name: sw-catalogs-repo-volume + mountPath: '{{inputs.parameters.sw_catalogs_mount_path}}' + volumes: + - name: fleet-repo-volume + persistentVolumeClaim: + claimName: '{{inputs.parameters.fleet_volume_name}}' + - name: sw-catalogs-repo-volume + persistentVolumeClaim: + claimName: '{{inputs.parameters.sw_catalogs_volume_name}}' + securityContext: + fsGroup: 10000 + + + # Update a CloudConfig for CAPI OpenStack provider + - name: update-capi-openstack-cloudconfig + inputs: + parameters: + # Volumes with cloned repos + - name: fleet_volume_name + - name: fleet_mount_path + value: "/fleet" + - name: sw_catalogs_volume_name + - name: sw_catalogs_mount_path + value: "/sw-catalogs" + + # Specific parameters + - name: openstack_clouds_yaml_secret_name + - name: openstack_clouds_yaml_secret_key + - name: openstack_cacert_secret_name + - name: openstack_cacert_secret_key + - name: os_auth_url + - name: os_region_name + - name: os_username + - name: openstack_credentials_secret_name + - name: openstack_credentials_secret_key + - name: os_project_id + - name: os_project_domain_id + - name: openstack_cloud_name + - name: age_public_key_mgmt + - name: mgmt_project_name + # Debug? + - name: debug + value: "false" + + # Other parameters - Do not touch + - name: mgmt_cluster_name + value: "_management" + - name: base_templates_path + value: "cloud-resources" + - name: cloned_fleet_folder_name + value: "fleet-osm" + - name: cloned_sw_catalogs_folder_name + value: "sw-catalogs-osm" + + container: + image: opensourcemano/osm-krm-functions:testing-daily + # imagePullPolicy: Always + env: + - name: OPENSTACK_CLOUDS_YAML + valueFrom: + secretKeyRef: + name: "{{inputs.parameters.openstack_clouds_yaml_secret_name}}" + key: "{{inputs.parameters.openstack_clouds_yaml_secret_key}}" + default: "" + - name: OPENSTACK_CACERT + valueFrom: + secretKeyRef: + name: "{{inputs.parameters.openstack_cacert_secret_name}}" + key: "{{inputs.parameters.openstack_cacert_secret_key}}" + default: "" + - name: OS_AUTH_URL + value: "{{inputs.parameters.os_auth_url}}" + - name: OS_REGION_NAME + value: "{{inputs.parameters.os_region_name}}" + - name: OS_USERNAME + value: "{{inputs.parameters.os_username}}" + - name: OS_PASSWORD + valueFrom: + secretKeyRef: + name: "{{inputs.parameters.openstack_credentials_secret_name}}" + key: "{{inputs.parameters.openstack_credentials_secret_key}}" + default: "" + - name: OS_PROJECT_ID + value: "{{inputs.parameters.os_project_id}}" + - name: OS_PROJECT_DOMAIN_ID + value: "{{inputs.parameters.os_project_domain_id}}" + - name: DEBUG + value: "{{inputs.parameters.debug}}" + command: ["/app/scripts/entrypoint.sh"] + args: + - update_capi_openstack_cloudconf + - "{{inputs.parameters.openstack_cloud_name}}" + - "{{inputs.parameters.age_public_key_mgmt}}" + - "{{inputs.parameters.fleet_mount_path}}/{{inputs.parameters.cloned_fleet_folder_name}}/{{inputs.parameters.mgmt_project_name}}/infra-config-profiles/{{inputs.parameters.mgmt_cluster_name}}" + volumeMounts: + - name: fleet-repo-volume + mountPath: '{{inputs.parameters.fleet_mount_path}}' + - name: sw-catalogs-repo-volume + mountPath: '{{inputs.parameters.sw_catalogs_mount_path}}' + volumes: + - name: fleet-repo-volume + persistentVolumeClaim: + claimName: '{{inputs.parameters.fleet_volume_name}}' + - name: sw-catalogs-repo-volume + persistentVolumeClaim: + claimName: '{{inputs.parameters.sw_catalogs_volume_name}}' + securityContext: + fsGroup: 10000 + + + # Delete a CloudConfig for CAPI OpenStack provider + - name: delete-capi-openstack-cloudconfig + inputs: + parameters: + # Volumes with cloned repos + - name: fleet_volume_name + - name: fleet_mount_path + value: "/fleet" + - name: sw_catalogs_volume_name + - name: sw_catalogs_mount_path + value: "/sw-catalogs" + + # Specific parameters + - name: openstack_cloud_name + - name: mgmt_project_name + # Debug? + - name: debug + value: "false" + + # Other parameters - Do not touch + - name: mgmt_cluster_name + value: "_management" + - name: base_templates_path + value: "cloud-resources" + - name: cloned_fleet_folder_name + value: "fleet-osm" + + container: + image: opensourcemano/osm-krm-functions:testing-daily + # imagePullPolicy: Always + env: + - name: DEBUG + value: "{{inputs.parameters.debug}}" + command: ["/app/scripts/entrypoint.sh"] + args: + - delete_capi_openstack_cloudconf + - "{{inputs.parameters.openstack_cloud_name}}" + - "{{inputs.parameters.fleet_mount_path}}/{{inputs.parameters.cloned_fleet_folder_name}}/{{inputs.parameters.mgmt_project_name}}/infra-config-profiles/{{inputs.parameters.mgmt_cluster_name}}" + volumeMounts: + - name: fleet-repo-volume + mountPath: '{{inputs.parameters.fleet_mount_path}}' + volumes: + - name: fleet-repo-volume + persistentVolumeClaim: + claimName: '{{inputs.parameters.fleet_volume_name}}' + securityContext: + fsGroup: 10000 \ No newline at end of file diff --git a/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-capi-cloudconfig-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-capi-cloudconfig-wft.yaml new file mode 100644 index 00000000..c251e9dc --- /dev/null +++ b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-capi-cloudconfig-wft.yaml @@ -0,0 +1,234 @@ +####################################################################################### +# Copyright ETSI Contributors and Others. +# +# 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. +####################################################################################### + +apiVersion: argoproj.io/v1alpha1 +kind: WorkflowTemplate +metadata: + name: full-create-capi-openstack-cloudconfig + namespace: osm-workflows + +spec: + arguments: + parameters: + # Fleet repo + - name: git_fleet_url + - name: fleet_destination_folder + - name: git_fleet_cred_secret + # SW-Catalogs repo + - name: git_sw_catalogs_url + - name: sw_catalogs_destination_folder + - name: git_sw_catalogs_cred_secret + + # Specific parameters + - name: openstack_clouds_yaml_secret_name + value: "openstack-clouds-yaml" + - name: openstack_clouds_yaml_secret_key + value: "clouds.yaml" + - name: openstack_cacert_secret_name + value: "openstack-cacert" + - name: openstack_cacert_secret_key + value: "cacert" + - name: os_auth_url + - name: os_region_name + - name: os_username + - name: openstack_credentials_secret_name + value: "openstack-credentials" + - name: openstack_credentials_secret_key + value: "password" + - name: os_project_id + - name: os_project_domain_id + - name: openstack_cloud_name + - name: age_public_key_mgmt + - name: mgmt_project_name + value: "osm_admin" + - name: mgmt_cluster_name + value: "_management" + # Debug/dry run? + - name: debug + value: "false" + - name: dry_run + value: "false" + + # Cleanup policy + ttlStrategy: + secondsAfterCompletion: 6000 # Time to live after workflow is completed, replaces ttlSecondsAfterFinished + secondsAfterSuccess: 6000 # Time to live after workflow is successful + secondsAfterFailure: 9000 # Time to live after workflow fails + + entrypoint: create-capi-openstack-cloudconfig + + templates: + + # Main template + - name: create-capi-openstack-cloudconfig + inputs: + parameters: + # Fleet repo + - name: git_fleet_url + - name: fleet_destination_folder + - name: git_fleet_cred_secret + # SW-Catalogs repo + - name: git_sw_catalogs_url + - name: sw_catalogs_destination_folder + - name: git_sw_catalogs_cred_secret + # Specific parameters + - name: openstack_clouds_yaml_secret_name + - name: openstack_clouds_yaml_secret_key + - name: openstack_cacert_secret_name + - name: openstack_cacert_secret_key + - name: os_auth_url + - name: os_region_name + - name: os_username + - name: openstack_credentials_secret_name + - name: openstack_credentials_secret_key + - name: os_project_id + - name: os_project_domain_id + - name: openstack_cloud_name + - name: age_public_key_mgmt + - name: mgmt_project_name + - name: mgmt_cluster_name + # Debug/dry run? + - name: debug + value: "false" + - name: dry_run + value: "false" + + steps: + + # ------ Preparations for transaction + - - name: generate-fleet-volume-repo + templateRef: + name: k8s-resources-wft + template: generate-volume + arguments: + parameters: + - name: pvc-size + value: '100Mi' + - name: generate-sw-catalogs-volume-repo + templateRef: + name: k8s-resources-wft + template: generate-volume + arguments: + parameters: + - name: pvc-size + value: '100Mi' + - - name: clone-fleet + templateRef: + name: git-wft + template: git-clone + arguments: + parameters: + - name: mount_path + value: "/fleet" + - name: repo_url + value: "{{inputs.parameters.git_fleet_url}}" + - name: destination_folder + value: "{{inputs.parameters.fleet_destination_folder}}" + - name: git_cred_secret + value: "{{inputs.parameters.git_fleet_cred_secret}}" + - name: git_volume_name + value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}' + - name: clone-sw-catalogs + templateRef: + name: git-wft + template: git-clone + arguments: + parameters: + - name: mount_path + value: "/sw-catalogs" + - name: repo_url + value: "{{inputs.parameters.git_sw_catalogs_url}}" + - name: destination_folder + value: "{{inputs.parameters.sw_catalogs_destination_folder}}" + - name: git_cred_secret + value: "{{inputs.parameters.git_sw_catalogs_cred_secret}}" + - name: git_volume_name + value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}' + # ------ end of preparations for transaction + + # ------ Transformations + - - name: create-capi-openstack-cloudconfig + templateRef: + name: capi-cloud-configs-wft + template: create-capi-openstack-cloudconfig + arguments: + parameters: + # References to required external resources + - name: fleet_volume_name + value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}' + - name: sw_catalogs_volume_name + value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}' + # Specific parameters + - name: openstack_clouds_yaml_secret_name + value: "{{inputs.parameters.openstack_clouds_yaml_secret_name}}" + - name: openstack_clouds_yaml_secret_key + value: "{{inputs.parameters.openstack_clouds_yaml_secret_key}}" + - name: openstack_cacert_secret_name + value: "{{inputs.parameters.openstack_cacert_secret_name}}" + - name: openstack_cacert_secret_key + value: "{{inputs.parameters.openstack_cacert_secret_key}}" + - name: os_auth_url + value: "{{inputs.parameters.os_auth_url}}" + - name: os_region_name + value: "{{inputs.parameters.os_region_name}}" + - name: os_username + value: "{{inputs.parameters.os_username}}" + - name: openstack_credentials_secret_name + value: "{{inputs.parameters.openstack_credentials_secret_name}}" + - name: openstack_credentials_secret_key + value: "{{inputs.parameters.openstack_credentials_secret_key}}" + - name: os_project_id + value: "{{inputs.parameters.os_project_id}}" + - name: os_project_domain_id + value: "{{inputs.parameters.os_project_domain_id}}" + - name: openstack_cloud_name + value: "{{inputs.parameters.openstack_cloud_name}}" + - name: age_public_key_mgmt + value: "{{inputs.parameters.age_public_key_mgmt}}" + - name: mgmt_project_name + value: "{{inputs.parameters.mgmt_project_name}}" + - name: mgmt_cluster_name + value: "{{inputs.parameters.mgmt_cluster_name}}" + # Debug? + - name: debug + value: "{{inputs.parameters.debug}}" + # ------ end of transformations + + # ------ Commit transaction + - - name: push-to-fleet + templateRef: + name: git-wft + template: git-commit-merge-push + arguments: + parameters: + - name: mount_path + value: "/fleet" + - name: repo_folder + value: "{{inputs.parameters.fleet_destination_folder}}" + - name: git_cred_secret + value: "{{inputs.parameters.git_fleet_cred_secret}}" + - name: git_volume_name + value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}' + - name: commit_message + value: "Create CAPI OpenStack CloudConfig {{inputs.parameters.openstack_cloud_name}}" + - name: main_branch + value: main + - name: contrib_branch + value: osm_contrib + - name: dry_run + value: "{{inputs.parameters.dry_run}}" +# ------ end of commit transaction \ No newline at end of file diff --git a/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-capi-cloudconfig-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-capi-cloudconfig-wft.yaml new file mode 100644 index 00000000..798cf203 --- /dev/null +++ b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-capi-cloudconfig-wft.yaml @@ -0,0 +1,180 @@ +####################################################################################### +# Copyright ETSI Contributors and Others. +# +# 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. +####################################################################################### + +apiVersion: argoproj.io/v1alpha1 +kind: WorkflowTemplate +metadata: + name: full-delete-capi-openstack-cloudconfig + namespace: osm-workflows + +spec: + arguments: + parameters: + # Fleet repo + - name: git_fleet_url + - name: fleet_destination_folder + - name: git_fleet_cred_secret + # SW-Catalogs repo + - name: git_sw_catalogs_url + - name: sw_catalogs_destination_folder + - name: git_sw_catalogs_cred_secret + + # Specific parameters + - name: openstack_cloud_name + - name: mgmt_project_name + value: "osm_admin" + - name: mgmt_cluster_name + value: "_management" + # Debug/dry run? + - name: debug + value: "false" + - name: dry_run + value: "false" + + # Cleanup policy + ttlStrategy: + secondsAfterCompletion: 6000 # Time to live after workflow is completed, replaces ttlSecondsAfterFinished + secondsAfterSuccess: 6000 # Time to live after workflow is successful + secondsAfterFailure: 9000 # Time to live after workflow fails + + entrypoint: delete-capi-openstack-cloudconfig + + templates: + + # Main template + - name: delete-capi-openstack-cloudconfig + inputs: + parameters: + # Fleet repo + - name: git_fleet_url + - name: fleet_destination_folder + - name: git_fleet_cred_secret + # SW-Catalogs repo + - name: git_sw_catalogs_url + - name: sw_catalogs_destination_folder + - name: git_sw_catalogs_cred_secret + # Specific parameters + - name: openstack_cloud_name + - name: mgmt_project_name + - name: mgmt_cluster_name + # Debug/dry run? + - name: debug + value: "false" + - name: dry_run + value: "false" + + steps: + + # ------ Preparations for transaction + - - name: generate-fleet-volume-repo + templateRef: + name: k8s-resources-wft + template: generate-volume + arguments: + parameters: + - name: pvc-size + value: '100Mi' + - name: generate-sw-catalogs-volume-repo + templateRef: + name: k8s-resources-wft + template: generate-volume + arguments: + parameters: + - name: pvc-size + value: '100Mi' + - - name: clone-fleet + templateRef: + name: git-wft + template: git-clone + arguments: + parameters: + - name: mount_path + value: "/fleet" + - name: repo_url + value: "{{inputs.parameters.git_fleet_url}}" + - name: destination_folder + value: "{{inputs.parameters.fleet_destination_folder}}" + - name: git_cred_secret + value: "{{inputs.parameters.git_fleet_cred_secret}}" + - name: git_volume_name + value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}' + - name: clone-sw-catalogs + templateRef: + name: git-wft + template: git-clone + arguments: + parameters: + - name: mount_path + value: "/sw-catalogs" + - name: repo_url + value: "{{inputs.parameters.git_sw_catalogs_url}}" + - name: destination_folder + value: "{{inputs.parameters.sw_catalogs_destination_folder}}" + - name: git_cred_secret + value: "{{inputs.parameters.git_sw_catalogs_cred_secret}}" + - name: git_volume_name + value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}' + # ------ end of preparations for transaction + + # ------ Transformations + - - name: delete-capi-openstack-cloudconfig + templateRef: + name: capi-cloud-configs-wft + template: delete-capi-openstack-cloudconfig + arguments: + parameters: + # References to required external resources + - name: fleet_volume_name + value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}' + - name: sw_catalogs_volume_name + value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}' + # Specific parameters + - name: openstack_cloud_name + value: "{{inputs.parameters.openstack_cloud_name}}" + - name: mgmt_project_name + value: "{{inputs.parameters.mgmt_project_name}}" + - name: mgmt_cluster_name + value: "{{inputs.parameters.mgmt_cluster_name}}" + # Debug? + - name: debug + value: "{{inputs.parameters.debug}}" + # ------ end of transformations + + # ------ Commit transaction + - - name: push-to-fleet + templateRef: + name: git-wft + template: git-commit-merge-push + arguments: + parameters: + - name: mount_path + value: "/fleet" + - name: repo_folder + value: "{{inputs.parameters.fleet_destination_folder}}" + - name: git_cred_secret + value: "{{inputs.parameters.git_fleet_cred_secret}}" + - name: git_volume_name + value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}' + - name: commit_message + value: "Delete CAPI OpenStack CloudConfig {{inputs.parameters.openstack_cloud_name}}" + - name: main_branch + value: main + - name: contrib_branch + value: osm_contrib + - name: dry_run + value: "{{inputs.parameters.dry_run}}" +# ------ end of commit transaction \ No newline at end of file diff --git a/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-capi-cloudconfig-wft.yaml b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-capi-cloudconfig-wft.yaml new file mode 100644 index 00000000..630f5469 --- /dev/null +++ b/installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-capi-cloudconfig-wft.yaml @@ -0,0 +1,234 @@ +####################################################################################### +# Copyright ETSI Contributors and Others. +# +# 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. +####################################################################################### + +apiVersion: argoproj.io/v1alpha1 +kind: WorkflowTemplate +metadata: + name: full-update-capi-openstack-cloudconfig + namespace: osm-workflows + +spec: + arguments: + parameters: + # Fleet repo + - name: git_fleet_url + - name: fleet_destination_folder + - name: git_fleet_cred_secret + # SW-Catalogs repo + - name: git_sw_catalogs_url + - name: sw_catalogs_destination_folder + - name: git_sw_catalogs_cred_secret + + # Specific parameters + - name: openstack_clouds_yaml_secret_name + value: "openstack-clouds-yaml" + - name: openstack_clouds_yaml_secret_key + value: "clouds.yaml" + - name: openstack_cacert_secret_name + value: "openstack-cacert" + - name: openstack_cacert_secret_key + value: "cacert" + - name: os_auth_url + - name: os_region_name + - name: os_username + - name: openstack_credentials_secret_name + value: "openstack-credentials" + - name: openstack_credentials_secret_key + value: "password" + - name: os_project_id + - name: os_project_domain_id + - name: openstack_cloud_name + - name: age_public_key_mgmt + - name: mgmt_project_name + value: "osm_admin" + - name: mgmt_cluster_name + value: "_management" + # Debug/dry run? + - name: debug + value: "false" + - name: dry_run + value: "false" + + # Cleanup policy + ttlStrategy: + secondsAfterCompletion: 6000 # Time to live after workflow is completed, replaces ttlSecondsAfterFinished + secondsAfterSuccess: 6000 # Time to live after workflow is successful + secondsAfterFailure: 9000 # Time to live after workflow fails + + entrypoint: update-capi-openstack-cloudconfig + + templates: + + # Main template + - name: update-capi-openstack-cloudconfig + inputs: + parameters: + # Fleet repo + - name: git_fleet_url + - name: fleet_destination_folder + - name: git_fleet_cred_secret + # SW-Catalogs repo + - name: git_sw_catalogs_url + - name: sw_catalogs_destination_folder + - name: git_sw_catalogs_cred_secret + # Specific parameters + - name: openstack_clouds_yaml_secret_name + - name: openstack_clouds_yaml_secret_key + - name: openstack_cacert_secret_name + - name: openstack_cacert_secret_key + - name: os_auth_url + - name: os_region_name + - name: os_username + - name: openstack_credentials_secret_name + - name: openstack_credentials_secret_key + - name: os_project_id + - name: os_project_domain_id + - name: openstack_cloud_name + - name: age_public_key_mgmt + - name: mgmt_project_name + - name: mgmt_cluster_name + # Debug/dry run? + - name: debug + value: "false" + - name: dry_run + value: "false" + + steps: + + # ------ Preparations for transaction + - - name: generate-fleet-volume-repo + templateRef: + name: k8s-resources-wft + template: generate-volume + arguments: + parameters: + - name: pvc-size + value: '100Mi' + - name: generate-sw-catalogs-volume-repo + templateRef: + name: k8s-resources-wft + template: generate-volume + arguments: + parameters: + - name: pvc-size + value: '100Mi' + - - name: clone-fleet + templateRef: + name: git-wft + template: git-clone + arguments: + parameters: + - name: mount_path + value: "/fleet" + - name: repo_url + value: "{{inputs.parameters.git_fleet_url}}" + - name: destination_folder + value: "{{inputs.parameters.fleet_destination_folder}}" + - name: git_cred_secret + value: "{{inputs.parameters.git_fleet_cred_secret}}" + - name: git_volume_name + value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}' + - name: clone-sw-catalogs + templateRef: + name: git-wft + template: git-clone + arguments: + parameters: + - name: mount_path + value: "/sw-catalogs" + - name: repo_url + value: "{{inputs.parameters.git_sw_catalogs_url}}" + - name: destination_folder + value: "{{inputs.parameters.sw_catalogs_destination_folder}}" + - name: git_cred_secret + value: "{{inputs.parameters.git_sw_catalogs_cred_secret}}" + - name: git_volume_name + value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}' + # ------ end of preparations for transaction + + # ------ Transformations + - - name: update-capi-openstack-cloudconfig + templateRef: + name: capi-cloud-configs-wft + template: update-capi-openstack-cloudconfig + arguments: + parameters: + # References to required external resources + - name: fleet_volume_name + value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}' + - name: sw_catalogs_volume_name + value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}' + # Specific parameters + - name: openstack_clouds_yaml_secret_name + value: "{{inputs.parameters.openstack_clouds_yaml_secret_name}}" + - name: openstack_clouds_yaml_secret_key + value: "{{inputs.parameters.openstack_clouds_yaml_secret_key}}" + - name: openstack_cacert_secret_name + value: "{{inputs.parameters.openstack_cacert_secret_name}}" + - name: openstack_cacert_secret_key + value: "{{inputs.parameters.openstack_cacert_secret_key}}" + - name: os_auth_url + value: "{{inputs.parameters.os_auth_url}}" + - name: os_region_name + value: "{{inputs.parameters.os_region_name}}" + - name: os_username + value: "{{inputs.parameters.os_username}}" + - name: openstack_credentials_secret_name + value: "{{inputs.parameters.openstack_credentials_secret_name}}" + - name: openstack_credentials_secret_key + value: "{{inputs.parameters.openstack_credentials_secret_key}}" + - name: os_project_id + value: "{{inputs.parameters.os_project_id}}" + - name: os_project_domain_id + value: "{{inputs.parameters.os_project_domain_id}}" + - name: openstack_cloud_name + value: "{{inputs.parameters.openstack_cloud_name}}" + - name: age_public_key_mgmt + value: "{{inputs.parameters.age_public_key_mgmt}}" + - name: mgmt_project_name + value: "{{inputs.parameters.mgmt_project_name}}" + - name: mgmt_cluster_name + value: "{{inputs.parameters.mgmt_cluster_name}}" + # Debug? + - name: debug + value: "{{inputs.parameters.debug}}" + # ------ end of transformations + + # ------ Commit transaction + - - name: push-to-fleet + templateRef: + name: git-wft + template: git-commit-merge-push + arguments: + parameters: + - name: mount_path + value: "/fleet" + - name: repo_folder + value: "{{inputs.parameters.fleet_destination_folder}}" + - name: git_cred_secret + value: "{{inputs.parameters.git_fleet_cred_secret}}" + - name: git_volume_name + value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}' + - name: commit_message + value: "Update CAPI OpenStack CloudConfig {{inputs.parameters.openstack_cloud_name}}" + - name: main_branch + value: main + - name: contrib_branch + value: osm_contrib + - name: dry_run + value: "{{inputs.parameters.dry_run}}" +# ------ end of commit transaction \ No newline at end of file -- 2.25.1