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-create-openshift-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 - Openshift
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: skip_bootstrap
74 - name: mgmt_cluster_name
76 - name: base_templates_path
77 value: "cloud-resources/capi"
78 - name: cloned_fleet_folder_name
80 - name: cloned_sw_catalogs_folder_name
81 value: "sw-catalogs-osm"
92 # secondsAfterCompletion: 100 # Time to live after workflow is completed, replaces ttlSecondsAfterFinished
93 # secondsAfterSuccess: 50 # Time to live after workflow is successful
94 # secondsAfterFailure: 50 # Time to live after workflow fails
96 entrypoint: create-cluster-and-bootstrap
100 - name: create-cluster-and-bootstrap
104 - name: git_fleet_url
105 - name: fleet_destination_folder
106 - name: git_fleet_cred_secret
108 - name: git_sw_catalogs_url
109 - name: sw_catalogs_destination_folder
110 - name: git_sw_catalogs_cred_secret
111 # Specific parameters
112 - name: cluster_kustomization_name
114 - name: providerconfig_name
118 - name: public_key_mgmt
119 - name: public_key_new_cluster
120 - name: secret_name_private_age_key_for_new_cluster
121 - name: key_name_in_secret
122 ## Openshift specific parameters
123 - name: control_plane_vm_size
124 - name: control_plane_node_count
125 - name: openstack_dns_nameservers
126 - name: openstack_external_network_id
127 - name: openstack_failure_domain
128 - name: openstack_ssh_key_name
130 - name: openstack_worker_image_name
131 - name: openstack_control_plane_image_name
132 - name: capo_resources_namespace
133 # Other parameters - Recommended to keep defaults
134 # - name: fleet_repo_url
135 # - name: sw_catalogs_repo_url
136 - name: mgmt_project_name
137 - name: skip_bootstrap
138 - name: mgmt_cluster_name
139 - name: base_templates_path
140 - name: cloned_fleet_folder_name
141 - name: cloned_sw_catalogs_folder_name
142 ## EKS only (otherwise, ignored)
143 - name: cluster_iam_role
144 - name: cluster_private_subnets_id
145 - name: cluster_public_subnets_id
146 - name: cluster_subnets_configmap_name
152 # ------ Preparations for transaction
153 - - name: generate-fleet-volume-repo
155 name: k8s-resources-wft
156 template: generate-volume
161 - name: generate-sw-catalogs-volume-repo
163 name: k8s-resources-wft
164 template: generate-volume
169 - - name: clone-fleet
178 value: "{{inputs.parameters.git_fleet_url}}"
179 - name: destination_folder
180 value: "{{inputs.parameters.fleet_destination_folder}}"
181 - name: git_cred_secret
182 value: "{{inputs.parameters.git_fleet_cred_secret}}"
183 - name: git_volume_name
184 value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
185 - name: clone-sw-catalogs
192 value: "/sw-catalogs"
194 value: "{{inputs.parameters.git_sw_catalogs_url}}"
195 - name: destination_folder
196 value: "{{inputs.parameters.sw_catalogs_destination_folder}}"
197 - name: git_cred_secret
198 value: "{{inputs.parameters.git_sw_catalogs_cred_secret}}"
199 - name: git_volume_name
200 value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}'
201 # ------ end of preparations for transaction
203 # ------ Transformations
204 # Create CAPI cluster in cloud (Openstack)
205 - - name: create-cluster
207 name: cluster-management-wft
208 template: create-capi-openstack-cluster
211 # Volumes with cloned repos
212 - name: fleet_volume_name
213 value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
214 - name: fleet_mount_path
216 - name: sw_catalogs_volume_name
217 value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}'
218 - name: sw_catalogs_mount_path
219 value: "/sw-catalogs"
220 # Specific parameters
221 - name: cluster_kustomization_name
222 value: "{{inputs.parameters.cluster_kustomization_name}}"
224 value: "{{inputs.parameters.cluster_name}}"
226 value: "{{inputs.parameters.vm_size}}"
228 value: "{{inputs.parameters.node_count}}"
230 value: "{{inputs.parameters.k8s_version}}"
231 - name: providerconfig_name
232 value: "{{inputs.parameters.providerconfig_name}}"
233 - name: public_key_mgmt
234 value: "{{inputs.parameters.public_key_mgmt}}"
235 - name: public_key_new_cluster
236 value: "{{inputs.parameters.public_key_new_cluster}}"
237 - name: secret_name_private_age_key_for_new_cluster
238 value: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
239 - name: key_name_in_secret
240 value: "{{inputs.parameters.key_name_in_secret}}"
241 ## CAPI and CAPI Openstack specific parameters
242 - name: control_plane_vm_size
243 value: "{{inputs.parameters.control_plane_vm_size}}"
244 - name: control_plane_node_count
245 value: "{{inputs.parameters.control_plane_node_count}}"
246 - name: openstack_dns_nameservers
247 value: "{{inputs.parameters.openstack_dns_nameservers}}"
248 - name: openstack_external_network_id
249 value: "{{inputs.parameters.openstack_external_network_id}}"
250 - name: openstack_failure_domain
251 value: "{{inputs.parameters.openstack_failure_domain}}"
252 - name: openstack_ssh_key_name
253 value: "{{inputs.parameters.openstack_ssh_key_name}}"
255 value: "{{inputs.parameters.cluster_cni}}"
256 - name: openstack_worker_image_name
257 value: "{{inputs.parameters.openstack_worker_image_name}}"
258 - name: openstack_control_plane_image_name
259 value: "{{inputs.parameters.openstack_control_plane_image_name}}"
260 - name: capo_resources_namespace
261 value: "{{inputs.parameters.capo_resources_namespace}}"
262 ## Fed with `git_fleet_url` to avoid duplicates
263 - name: fleet_repo_url
264 value: "{{inputs.parameters.git_fleet_url}}"
265 ## Fed with `git_sw_catalogs_url` to avoid duplicates
266 - name: sw_catalogs_repo_url
267 value: "{{inputs.parameters.git_sw_catalogs_url}}"
268 - name: mgmt_project_name
269 value: "{{inputs.parameters.mgmt_project_name}}"
270 - name: skip_bootstrap
271 value: "{{inputs.parameters.skip_bootstrap}}"
272 # Other parameters - Recommended to keep defaults
273 - name: mgmt_cluster_name
274 value: "{{inputs.parameters.mgmt_cluster_name}}"
275 - name: base_templates_path
276 value: "{{inputs.parameters.base_templates_path}}"
277 - name: cloned_fleet_folder_name
278 value: "{{inputs.parameters.cloned_fleet_folder_name}}"
279 - name: cloned_sw_catalogs_folder_name
280 value: "{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
283 value: "{{inputs.parameters.debug}}"
284 # ------ end of transformations
286 # ------ Commit transaction
287 - - name: push-to-fleet
290 template: git-commit-merge-push
296 value: "{{inputs.parameters.fleet_destination_folder}}"
297 - name: git_cred_secret
298 value: "{{inputs.parameters.git_fleet_cred_secret}}"
299 - name: git_volume_name
300 value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
301 - name: commit_message
302 value: "Create CAPI Openstack cluster {{inputs.parameters.cluster_kustomization_name}} at {{inputs.parameters.providerconfig_name}}"
305 - name: contrib_branch
308 value: "{{inputs.parameters.dry_run}}"
309 # ------ end of commit transaction