1 #######################################################################################
2 # Copyright ETSI Contributors and Others.
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
8 # http://www.apache.org/licenses/LICENSE-2.0
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #######################################################################################
18 apiVersion: argoproj.io/v1alpha1
19 kind: WorkflowTemplate
21 name: full-update-capi-cluster-and-bootstrap-wft
22 namespace: osm-workflows
30 - name: fleet_destination_folder
31 - name: git_fleet_cred_secret
34 - name: git_sw_catalogs_url
35 - name: sw_catalogs_destination_folder
36 - name: git_sw_catalogs_cred_secret
38 # Specific parameters - Generic cluster creation
39 - name: cluster_kustomization_name
41 - name: providerconfig_name
46 ## Specific parameters - CAPI and CAPI Openstack
47 - name: control_plane_vm_size
48 - name: control_plane_node_count
49 - name: openstack_dns_nameservers
50 - name: openstack_external_network_id
51 - name: openstack_failure_domain
52 - name: openstack_ssh_key_name
54 - name: openstack_worker_image_name
55 - name: openstack_control_plane_image_name
56 - name: capo_resources_namespace
58 # Specific parameters - Bootstrap and credentials
59 - name: public_key_mgmt
60 - name: public_key_new_cluster
61 - name: secret_name_private_age_key_for_new_cluster
62 - name: key_name_in_secret
64 # Using `git_fleet_url` instead:
65 # - name: fleet_repo_url
66 # Using `git_sw_catalogs_url` instead:
67 # - name: sw_catalogs_repo_url
68 - name: mgmt_project_name
71 # Advanced parameters - Recommended to keep defaults
72 - name: mgmt_cluster_name
74 - name: base_templates_path
75 value: "cloud-resources/capi"
76 - name: cloned_fleet_folder_name
78 - name: cloned_sw_catalogs_folder_name
79 value: "sw-catalogs-osm"
90 # secondsAfterCompletion: 100 # Time to live after workflow is completed, replaces ttlSecondsAfterFinished
91 # secondsAfterSuccess: 50 # Time to live after workflow is successful
92 # secondsAfterFailure: 50 # Time to live after workflow fails
94 entrypoint: update-cluster-and-bootstrap
98 - name: update-cluster-and-bootstrap
102 - name: git_fleet_url
103 - name: fleet_destination_folder
104 - name: git_fleet_cred_secret
106 - name: git_sw_catalogs_url
107 - name: sw_catalogs_destination_folder
108 - name: git_sw_catalogs_cred_secret
109 # Specific parameters
110 - name: cluster_kustomization_name
112 - name: providerconfig_name
116 - name: public_key_mgmt
117 - name: public_key_new_cluster
118 - name: secret_name_private_age_key_for_new_cluster
119 - name: key_name_in_secret
120 ## CAPI and CAPI Openstack specific parameters
121 - name: control_plane_vm_size
122 - name: control_plane_node_count
123 - name: openstack_dns_nameservers
124 - name: openstack_external_network_id
125 - name: openstack_failure_domain
126 - name: openstack_ssh_key_name
128 - name: openstack_worker_image_name
129 - name: openstack_control_plane_image_name
130 - name: capo_resources_namespace
131 # Other parameters - Recommended to keep defaults
132 # - name: fleet_repo_url
133 # - name: sw_catalogs_repo_url
134 - name: mgmt_project_name
135 # - name: skip_bootstrap
136 # Other parameters - Recommended to keep defaults
137 - name: mgmt_cluster_name
138 - name: base_templates_path
139 - name: cloned_fleet_folder_name
140 - name: cloned_sw_catalogs_folder_name
146 # ------ Preparations for transaction
147 - - name: generate-fleet-volume-repo
149 name: k8s-resources-wft
150 template: generate-volume
155 - name: generate-sw-catalogs-volume-repo
157 name: k8s-resources-wft
158 template: generate-volume
163 - - name: clone-fleet
172 value: "{{inputs.parameters.git_fleet_url}}"
173 - name: destination_folder
174 value: "{{inputs.parameters.fleet_destination_folder}}"
175 - name: git_cred_secret
176 value: "{{inputs.parameters.git_fleet_cred_secret}}"
177 - name: git_volume_name
178 value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
179 - name: clone-sw-catalogs
186 value: "/sw-catalogs"
188 value: "{{inputs.parameters.git_sw_catalogs_url}}"
189 - name: destination_folder
190 value: "{{inputs.parameters.sw_catalogs_destination_folder}}"
191 - name: git_cred_secret
192 value: "{{inputs.parameters.git_sw_catalogs_cred_secret}}"
193 - name: git_volume_name
194 value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}'
195 # ------ end of preparations for transaction
197 # ------ Transformations
198 # Update CAPI cluster in cloud (Openstack)
199 - - name: update-cluster
201 name: cluster-management-wft
202 template: update-capi-openstack-cluster
205 # Volumes with cloned repos
206 - name: fleet_volume_name
207 value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
208 - name: fleet_mount_path
210 - name: sw_catalogs_volume_name
211 value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}'
212 - name: sw_catalogs_mount_path
213 value: "/sw-catalogs"
214 # Specific parameters
215 - name: cluster_kustomization_name
216 value: "{{inputs.parameters.cluster_kustomization_name}}"
218 value: "{{inputs.parameters.cluster_name}}"
220 value: "{{inputs.parameters.vm_size}}"
222 value: "{{inputs.parameters.node_count}}"
224 value: "{{inputs.parameters.k8s_version}}"
225 - name: providerconfig_name
226 value: "{{inputs.parameters.providerconfig_name}}"
227 - name: public_key_mgmt
228 value: "{{inputs.parameters.public_key_mgmt}}"
229 - name: public_key_new_cluster
230 value: "{{inputs.parameters.public_key_new_cluster}}"
231 - name: secret_name_private_age_key_for_new_cluster
232 value: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
233 - name: key_name_in_secret
234 value: "{{inputs.parameters.key_name_in_secret}}"
235 ## CAPI and CAPI Openstack specific parameters
236 - name: control_plane_vm_size
237 value: "{{inputs.parameters.control_plane_vm_size}}"
238 - name: control_plane_node_count
239 value: "{{inputs.parameters.control_plane_node_count}}"
240 - name: openstack_dns_nameservers
241 value: "{{inputs.parameters.openstack_dns_nameservers}}"
242 - name: openstack_external_network_id
243 value: "{{inputs.parameters.openstack_external_network_id}}"
244 - name: openstack_failure_domain
245 value: "{{inputs.parameters.openstack_failure_domain}}"
246 - name: openstack_ssh_key_name
247 value: "{{inputs.parameters.openstack_ssh_key_name}}"
249 value: "{{inputs.parameters.cluster_cni}}"
250 - name: openstack_worker_image_name
251 value: "{{inputs.parameters.openstack_worker_image_name}}"
252 - name: openstack_control_plane_image_name
253 value: "{{inputs.parameters.openstack_control_plane_image_name}}"
254 - name: capo_resources_namespace
255 value: "{{inputs.parameters.capo_resources_namespace}}"
256 ## Fed with `git_fleet_url` to avoid duplicates
257 - name: fleet_repo_url
258 value: "{{inputs.parameters.git_fleet_url}}"
259 ## Fed with `git_sw_catalogs_url` to avoid duplicates
260 - name: sw_catalogs_repo_url
261 value: "{{inputs.parameters.git_sw_catalogs_url}}"
262 - name: mgmt_project_name
263 value: "{{inputs.parameters.mgmt_project_name}}"
264 # - name: skip_bootstrap
265 # value: "{{inputs.parameters.skip_bootstrap}}"
266 # Other parameters - Recommended to keep defaults
267 - name: mgmt_cluster_name
268 value: "{{inputs.parameters.mgmt_cluster_name}}"
269 - name: base_templates_path
270 value: "{{inputs.parameters.base_templates_path}}"
271 - name: cloned_fleet_folder_name
272 value: "{{inputs.parameters.cloned_fleet_folder_name}}"
273 - name: cloned_sw_catalogs_folder_name
274 value: "{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
277 value: "{{inputs.parameters.debug}}"
278 # ------ end of transformations
280 # ------ Commit transaction
281 - - name: push-to-fleet
284 template: git-commit-merge-push
290 value: "{{inputs.parameters.fleet_destination_folder}}"
291 - name: git_cred_secret
292 value: "{{inputs.parameters.git_fleet_cred_secret}}"
293 - name: git_volume_name
294 value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
295 - name: commit_message
296 value: "Update CAPI Openstack cluster {{inputs.parameters.cluster_kustomization_name}} at {{inputs.parameters.providerconfig_name}}"
299 - name: contrib_branch
302 value: "{{inputs.parameters.dry_run}}"
303 # ------ end of commit transaction