Merge "Remove warning displayed from ssh commands in baremetal test"
[multicloud/k8s.git] / kud / tests / cluster1-m3db-installer.sh
1 # /*
2 #  * Copyright 2020 Intel Corporation, Inc
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 implied.
13 #  * See the License for the specific language governing permissions and
14 #  * limitations under the License.
15 #  */
16
17
18 set -o errexit
19 set -o nounset
20 set -o pipefail
21
22
23 source _common_test.sh
24 source _functions.sh
25 source _common.sh
26
27
28 base_url_clm=${base_url_clm:-"http://192.168.121.29:30073/v2"}
29 base_url_ncm=${base_url_ncm:-"http://192.168.121.29:31955/v2"}
30 base_url_orchestrator=${base_url_orchestrator:-"http://192.168.121.29:32447/v2"}
31 base_url_rysnc=${base_url_orchestrator:-"http://192.168.121.29:32002/v2"}
32
33 CSAR_DIR="/opt/csar"
34 csar_id="m3db-cb009bfe-bbee-11e8-9766-525400435678"
35
36 app1_helm_path="$CSAR_DIR/$csar_id/m3db.tar.gz"
37 app1_profile_path="$CSAR_DIR/$csar_id/m3db_profile.tar.gz"
38
39 # ---------BEGIN: SET CLM DATA---------------
40
41 clusterprovidername="collection-m3db-installer-cluster1-provider"
42 clusterproviderdata="$(cat<<EOF
43 {
44   "metadata": {
45     "name": "$clusterprovidername",
46     "description": "description of $clusterprovidername",
47     "userData1": "$clusterprovidername user data 1",
48     "userData2": "$clusterprovidername user data 2"
49   }
50 }
51 EOF
52 )"
53
54 clustername="cluster1"
55 clusterdata="$(cat<<EOF
56 {
57   "metadata": {
58     "name": "$clustername",
59     "description": "description of $clustername",
60     "userData1": "$clustername user data 1",
61     "userData2": "$clustername user data 2"
62   }
63 }
64 EOF
65 )"
66
67 kubeconfigcluster1="/opt/kud/multi-cluster/cluster1/artifacts/admin.conf"
68
69 labelname="LabelCluster2"
70 labeldata="$(cat<<EOF
71 {"label-name": "$labelname"}
72 EOF
73 )"
74
75 #--TODO--Creating provider network and network intents----
76
77 # add the rsync controller entry
78 rsynccontrollername="rsync"
79 rsynccontrollerdata="$(cat<<EOF
80 {
81   "metadata": {
82     "name": "rsync",
83     "description": "description of $rsynccontrollername controller",
84     "userData1": "user data 1 for $rsynccontrollername",
85     "userData2": "user data 2 for $rsynccontrollername"
86   },
87   "spec": {
88     "host": "${rsynccontrollername}",
89     "port": 9041
90   }
91 }
92 EOF
93 )"
94
95 # ------------END: SET CLM DATA--------------
96
97 #-------------BEGIN:SET ORCH DATA------------------
98
99 # define a project
100 projectname="M3dbInstaller-cluster1Old-Project"
101 projectdata="$(cat<<EOF
102 {
103   "metadata": {
104     "name": "$projectname",
105     "description": "description of $projectname controller",
106     "userData1": "$projectname user data 1",
107     "userData2": "$projectname user data 2"
108   }
109 }
110 EOF
111 )"
112
113 # define a composite application
114 m3db_compositeapp_name="OperatorsCompositeApp"
115 compositeapp_version="v1"
116 compositeapp_data="$(cat <<EOF
117 {
118   "metadata": {
119     "name": "${m3db_compositeapp_name}",
120     "description": "description of ${m3db_compositeapp_name}",
121     "userData1": "user data 1 for ${m3db_compositeapp_name}",
122     "userData2": "user data 2 for ${m3db_compositeapp_name}"
123    },
124    "spec":{
125       "version":"${compositeapp_version}"
126    }
127 }
128 EOF
129 )"
130
131
132 # add m3db app into compositeApp
133
134 m3db_app_name="m3db"
135 m3db_helm_chart=${app1_helm_path}
136
137 m3db_app_data="$(cat <<EOF
138 {
139   "metadata": {
140     "name": "${m3db_app_name}",
141     "description": "description for app ${m3db_app_name}",
142     "userData1": "user data 2 for ${m3db_app_name}",
143     "userData2": "user data 2 for ${m3db_app_name}"
144    }
145 }
146 EOF
147 )"
148
149 # Add the composite profile
150 m3db_composite_profile_name="m3db_composite-profile"
151 m3db_composite_profile_data="$(cat <<EOF
152 {
153    "metadata":{
154       "name":"${m3db_composite_profile_name}",
155       "description":"description of ${m3db_composite_profile_name}",
156       "userData1":"user data 1 for ${m3db_composite_profile_name}",
157       "userData2":"user data 2 for ${m3db_composite_profile_name}"
158    }
159 }
160 EOF
161 )"
162
163
164 # Add the m3db profile data into composite profile data
165 m3db_profile_name="m3db-profile"
166 m3db_profile_file=$app1_profile_path
167 m3db_profile_data="$(cat <<EOF
168 {
169    "metadata":{
170       "name":"${m3db_profile_name}",
171       "description":"description of ${m3db_profile_name}",
172       "userData1":"user data 1 for ${m3db_profile_name}",
173       "userData2":"user data 2 for ${m3db_profile_name}"
174    },
175    "spec":{
176       "app-name":  "${m3db_app_name}"
177    }
178 }
179 EOF
180 )"
181
182
183 # define the generic placement intent
184 generic_placement_intent_name="M3db-generic-placement-intent"
185 generic_placement_intent_data="$(cat <<EOF
186 {
187    "metadata":{
188       "name":"${generic_placement_intent_name}",
189       "description":"${generic_placement_intent_name}",
190       "userData1":"${generic_placement_intent_name}",
191       "userData2":"${generic_placement_intent_name}"
192    },
193    "spec":{
194       "logical-cloud":"unused_logical_cloud"
195    }
196 }
197 EOF
198 )"
199
200
201 # define placement intent for m3db as sub-app
202 m3db_placement_intent_name="m3db-placement-intent"
203 m3db_placement_intent_data="$(cat <<EOF
204 {
205    "metadata":{
206       "name":"${m3db_placement_intent_name}",
207       "description":"description of ${m3db_placement_intent_name}",
208       "userData1":"user data 1 for ${m3db_placement_intent_name}",
209       "userData2":"user data 2 for ${m3db_placement_intent_name}"
210    },
211    "spec":{
212       "app-name":"${m3db_app_name}",
213       "intent":{
214          "allOf":[
215             {  "provider-name":"${clusterprovidername}",
216                "cluster-label-name":"${labelname}"
217             }
218          ]
219       }
220    }
221 }
222 EOF
223 )"
224
225
226 # define a deployment intent group
227 release="m3db"
228 deployment_intent_group_name="m3db_deployment_intent_group"
229 deployment_intent_group_data="$(cat <<EOF
230 {
231    "metadata":{
232       "name":"${deployment_intent_group_name}",
233       "description":"descriptiont of ${deployment_intent_group_name}",
234       "userData1":"user data 1 for ${deployment_intent_group_name}",
235       "userData2":"user data 2 for ${deployment_intent_group_name}"
236    },
237    "spec":{
238       "profile":"${m3db_composite_profile_name}",
239       "version":"${release}",
240       "override-values":[]
241    }
242 }
243 EOF
244 )"
245
246 # define the intents to be used by the group
247 deployment_intents_in_group_name="m3db_deploy_intents"
248 deployment_intents_in_group_data="$(cat <<EOF
249 {
250    "metadata":{
251       "name":"${deployment_intents_in_group_name}",
252       "description":"descriptionf of ${deployment_intents_in_group_name}",
253       "userData1":"user data 1 for ${deployment_intents_in_group_name}",
254       "userData2":"user data 2 for ${deployment_intents_in_group_name}"
255    },
256    "spec":{
257       "intent":{
258          "genericPlacementIntent":"${generic_placement_intent_name}"
259       }
260    }
261 }
262 EOF
263 )"
264
265 #---------END: SET ORCH DATA--------------------
266
267 function createOrchestratorData {
268     print_msg "creating controller entries"
269     call_api -d "${rsynccontrollerdata}" "${base_url_orchestrator}/controllers"
270
271
272     print_msg "creating project entry"
273     call_api -d "${projectdata}" "${base_url_orchestrator}/projects"
274
275
276     print_msg "creating m3db composite app entry"
277     call_api -d "${compositeapp_data}" "${base_url_orchestrator}/projects/${projectname}/composite-apps"
278
279     print_msg "adding m3db sub-app to the composite app"
280     call_api -F "metadata=${m3db_app_data}" \
281              -F "file=@${m3db_helm_chart}" \
282              "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/apps"
283
284
285     print_msg "creating m3db composite profile entry"
286     call_api -d "${m3db_composite_profile_data}" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/composite-profiles"
287
288     print_msg "adding m3db sub-app profile to the composite profile"
289     call_api -F "metadata=${m3db_profile_data}" \
290              -F "file=@${m3db_profile_file}" \
291              "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/composite-profiles/${m3db_composite_profile_name}/profiles"
292
293
294
295     print_msg "create the generic placement intent"
296     call_api -d "${generic_placement_intent_data}" \
297              "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/generic-placement-intents"
298     print_msg "add the m3db app placement intent to the generic placement intent"
299     call_api -d "${m3db_placement_intent_data}" \
300              "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/generic-placement-intents/${generic_placement_intent_name}/app-intents"
301
302     print_msg "create the deployment intent group"
303     call_api -d "${deployment_intent_group_data}" \
304              "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/deployment-intent-groups"
305     call_api -d "${deployment_intents_in_group_data}" \
306              "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/intents"
307     print_msg "finished orch data creation"
308 }
309
310 function deleteOrchestratorData {
311
312     # TODO- delete rsync controller and any other controller
313     delete_resource "${base_url_orchestrator}/controllers/${rsynccontrollername}"
314
315     delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/intents/${deployment_intents_in_group_name}"
316     delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}"
317     delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/generic-placement-intents/${generic_placement_intent_name}/app-intents/${m3db_placement_intent_name}"
318
319     delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/generic-placement-intents/${generic_placement_intent_name}"
320
321
322     delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/composite-profiles/${m3db_composite_profile_name}/profiles/${m3db_profile_name}"
323
324
325     delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/composite-profiles/${m3db_composite_profile_name}"
326
327
328     delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/apps/${m3db_app_name}"
329
330
331     delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}"
332
333     delete_resource "${base_url_orchestrator}/projects/${projectname}"
334     print_msg "finished orch data deletion"
335
336 }
337
338 function createClmData {
339     print_msg "Creating cluster provider and cluster"
340     call_api -d "${clusterproviderdata}" "${base_url_clm}/cluster-providers"
341     call_api -H "Content-Type: multipart/form-data" -F "metadata=$clusterdata" -F "file=@$kubeconfigcluster1" "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters"
342     call_api -d "${labeldata}" "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${clustername}/labels"
343
344 }
345
346
347 function deleteClmData {
348     delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${clustername}/labels/${labelname}"
349     delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${clustername}"
350     delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}"
351 }
352
353
354 function createData {
355     createClmData
356     createOrchestratorData
357 }
358
359 function deleteData {
360     deleteClmData
361     deleteOrchestratorData
362 }
363
364 function instantiate {
365     call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/instantiate"
366 }
367
368 function terminateOrchData {
369     call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${m3db_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/terminate"
370 }
371
372
373 # Setup
374 install_deps
375 populate_CSAR_m3db_helm "$csar_id"
376
377 #terminateOrchData
378 deleteData
379 createData
380 instantiate
381
382