Feature 11049. CAPI cluster management in Openstack. Add ArgoWF templates for VIM... 68/15368/2
authorgarciadeblas <gerardo.garciadeblas@telefonica.com>
Fri, 29 Aug 2025 11:22:33 +0000 (13:22 +0200)
committergarciadeblas <gerardo.garciadeblas@telefonica.com>
Mon, 1 Sep 2025 12:16:11 +0000 (14:16 +0200)
Change-Id: I54d64fd5bf1e66c46bc19c2cb142fad659ec8647
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/building-blocks/capi-cloud-configs-wft.yaml [new file with mode: 0644]
installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-create-capi-cloudconfig-wft.yaml [new file with mode: 0644]
installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-delete-capi-cloudconfig-wft.yaml [new file with mode: 0644]
installers/flux/templates/sw-catalogs/infra-configs/osm-workflows/templates/wf-templates/canned-operations/full-update-capi-cloudconfig-wft.yaml [new file with mode: 0644]

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 (file)
index 0000000..df6aed6
--- /dev/null
@@ -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 (file)
index 0000000..c251e9d
--- /dev/null
@@ -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 (file)
index 0000000..798cf20
--- /dev/null
@@ -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 (file)
index 0000000..630f546
--- /dev/null
@@ -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