54e012f47cb40aa498109e23e69993c985bd4cc3
[osm/devops.git] /
1 #######################################################################################
2 # Copyright ETSI Contributors and Others.
3 #
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
7 #
8 #    http://www.apache.org/licenses/LICENSE-2.0
9 #
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
13 # implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #######################################################################################
17
18 apiVersion: argoproj.io/v1alpha1
19 kind: WorkflowTemplate
20 metadata:
21   name: full-bootstrap-cluster-wft
22   namespace: osm-workflows
23
24 spec:
25   arguments:
26     parameters:
27
28     # Fleet repo
29     - name: git_fleet_url
30     - name: fleet_destination_folder
31     - name: git_fleet_cred_secret
32
33     # SW-Catalogs repo
34     - name: git_sw_catalogs_url
35     - name: sw_catalogs_destination_folder
36     - name: git_sw_catalogs_cred_secret
37
38     # Specific parameters - Bootstrap
39     - name: cluster_name
40     - name: cluster_kustomization_name
41     - name: public_key_mgmt
42     - name: public_key_new_cluster
43     - name: secret_name_private_age_key_for_new_cluster
44     - name: key_name_in_secret
45       value: "agekey"
46
47     # Recommended to keep this default
48     - name: imported_cluster
49       value: "true"
50
51     # Debug/dry run?
52     - name: debug
53       value: "false"
54     - name: dry_run
55       value: "false"
56
57
58   # # Cleanup policy
59   # ttlStrategy:
60   #   secondsAfterCompletion: 100 # Time to live after workflow is completed, replaces ttlSecondsAfterFinished
61   #   secondsAfterSuccess: 50     # Time to live after workflow is successful
62   #   secondsAfterFailure: 50     # Time to live after workflow fails
63
64   entrypoint: bootstrap-cluster
65
66   templates:
67
68   # Main template
69   - name: bootstrap-cluster
70     inputs:
71       parameters:
72       # Git repos
73       - name: git_fleet_url
74       - name: fleet_destination_folder
75       - name: git_fleet_cred_secret
76       - name: git_sw_catalogs_url
77       - name: sw_catalogs_destination_folder
78       - name: git_sw_catalogs_cred_secret
79
80       # Specific parameters - Bootstrap
81       - name: cluster_name
82       - name: cluster_kustomization_name
83       - name: public_key_mgmt
84       - name: public_key_new_cluster
85       - name: secret_name_private_age_key_for_new_cluster
86       - name: key_name_in_secret
87       - name: imported_cluster
88
89       # Debugging
90       - name: debug
91       - name: dry_run
92     steps:
93
94     # ------ Preparations for transaction
95     - - name: generate-fleet-volume-repo
96         templateRef:
97           name: k8s-resources-wft
98           template: generate-volume
99         arguments:
100           parameters:
101             - name: pvc-size
102               value: '100Mi'
103       - name: generate-sw-catalogs-volume-repo
104         templateRef:
105           name: k8s-resources-wft
106           template: generate-volume
107         arguments:
108           parameters:
109             - name: pvc-size
110               value: '100Mi'
111     - - name: clone-fleet
112         templateRef:
113           name: git-wft
114           template: git-clone
115         arguments:
116           parameters:
117           - name: mount_path
118             value: "/fleet"
119           - name: repo_url
120             value: "{{inputs.parameters.git_fleet_url}}"
121           - name: destination_folder
122             value: "{{inputs.parameters.fleet_destination_folder}}"
123           - name: git_cred_secret
124             value: "{{inputs.parameters.git_fleet_cred_secret}}"
125           - name: git_volume_name
126             value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
127       - name: clone-sw-catalogs
128         templateRef:
129           name: git-wft
130           template: git-clone
131         arguments:
132           parameters:
133           - name: mount_path
134             value: "/sw-catalogs"
135           - name: repo_url
136             value: "{{inputs.parameters.git_sw_catalogs_url}}"
137           - name: destination_folder
138             value: "{{inputs.parameters.sw_catalogs_destination_folder}}"
139           - name: git_cred_secret
140             value: "{{inputs.parameters.git_sw_catalogs_cred_secret}}"
141           - name: git_volume_name
142             value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}'
143     # ------ end of preparations for transaction
144
145     # ------ Transformations
146     # Bootstrap the remote cluster
147     - - name: bootstrap-cluster
148         templateRef:
149           name: cluster-management-wft
150           template: bootstrap-remote-cluster
151         arguments:
152           parameters:
153           # Volumes with cloned repos
154           - name: fleet_volume_name
155             value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
156           - name: fleet_mount_path
157             value: "/fleet"
158           - name: sw_catalogs_volume_name
159             value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}'
160           - name: sw_catalogs_mount_path
161             value: "/sw-catalogs"
162
163           # Specific parameters
164           - name: cluster_name
165             value: "{{inputs.parameters.cluster_name}}"
166           - name: cluster_kustomization_name
167             value: "{{inputs.parameters.cluster_kustomization_name}}"
168           - name: public_key_mgmt
169             value: "{{inputs.parameters.public_key_mgmt}}"
170           - name: public_key_new_cluster
171             value: "{{inputs.parameters.public_key_new_cluster}}"
172           - name: secret_name_private_age_key_for_new_cluster
173             value: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
174           - name: key_name_in_secret
175             value: "{{inputs.parameters.key_name_in_secret}}"
176           - name: fleet_repo_url
177             value: "{{inputs.parameters.git_fleet_url}}"
178           - name: sw_catalogs_repo_url
179             value: "{{inputs.parameters.git_sw_catalogs_url}}"
180           - name: imported_cluster
181             value: "{{inputs.parameters.imported_cluster}}"
182     # ------ end of transformations
183
184     # ------ Commit transaction
185     - - name: push-to-fleet
186         templateRef:
187           name: git-wft
188           template: git-commit-merge-push
189         arguments:
190           parameters:
191           - name: mount_path
192             value: "/fleet"
193           - name: repo_folder
194             value: "{{inputs.parameters.fleet_destination_folder}}"
195           - name: git_cred_secret
196             value: "{{inputs.parameters.git_fleet_cred_secret}}"
197           - name: git_volume_name
198             value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
199           - name: commit_message
200             value: "Bootstrap imported cluster {{inputs.parameters.cluster_kustomization_name}}"
201           - name: main_branch
202             value: main
203           - name: contrib_branch
204             value: osm_contrib
205           - name: dry_run
206             value: "{{inputs.parameters.dry_run}}"
207 # ------ end of commit transaction