2 # * Copyright 2020 Intel Corporation, Inc
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 implied.
13 # * See the License for the specific language governing permissions and
14 # * limitations under the License.
23 source _common_test.sh
28 base_url_clm=${base_url_clm:-"http://192.168.121.29:32551/v2"}
29 base_url_ncm=${base_url_ncm:-"http://192.168.121.29:31406/v2"}
30 base_url_orchestrator=${base_url_orchestrator:-"http://192.168.121.29:30356/v2"}
31 base_url_rysnc=${base_url_orchestrator:-"http://192.168.121.29:31751/v2"}
33 csar_id="cb009bfe-bbee-11e8-9766-525400435678"
36 app1_helm_path="$CSAR_DIR/$csar_id/prometheus-operator.tar.gz"
37 app1_profile_path="$CSAR_DIR/$csar_id/prometheus-operator_profile.tar.gz"
38 app2_helm_path="$CSAR_DIR/$csar_id/collectd.tar.gz"
39 app2_profile_path="$CSAR_DIR/$csar_id/collectd_profile.tar.gz"
40 app3_helm_path="$CSAR_DIR/$csar_id/m3db.tar.gz"
41 app3_profile_path="$CSAR_DIR/$csar_id/m3db_profile.tar.gz"
44 # ---------BEGIN: SET CLM DATA---------------
46 clusterprovidername="collection-cluster-provider"
47 clusterproviderdata="$(cat<<EOF
50 "name": "$clusterprovidername",
51 "description": "description of $clusterprovidername",
52 "userData1": "$clusterprovidername user data 1",
53 "userData2": "$clusterprovidername user data 2"
60 clusterdata="$(cat<<EOF
63 "name": "$clustername",
64 "description": "description of $clustername",
65 "userData1": "$clustername user data 1",
66 "userData2": "$clustername user data 2"
72 kubeconfigedge1="/opt/kud/multi-cluster/edge1/artifacts/admin.conf"
76 {"label-name": "$labelname"}
81 clusterdata2="$(cat<<EOF
84 "name": "$clustername2",
85 "description": "description of $clustername2",
86 "userData1": "$clustername2 user data 1",
87 "userData2": "$clustername2 user data 2"
93 kubeconfigedge2="/opt/kud/multi-cluster/edge2/artifacts/admin.conf"
96 labeldata2="$(cat<<EOF
97 {"label-name": "$labelname2"}
101 clustername3="cluster1"
102 clusterdata3="$(cat<<EOF
105 "name": "$clustername3",
106 "description": "description of $clustername3",
107 "userData1": "$clustername3 user data 1",
108 "userData2": "$clustername3 user data 2"
114 kubeconfigcluster1="/opt/kud/multi-cluster/cluster1/artifacts/admin.conf"
116 labelname3="LabelForCluster1"
117 labeldata3="$(cat<<EOF
118 {"label-name": "$labelname3"}
122 #--TODO--Creating provider network and network intents----
124 # add the rsync controller entry
125 rsynccontrollername="rsync"
126 rsynccontrollerdata="$(cat<<EOF
130 "description": "description of $rsynccontrollername controller",
131 "userData1": "user data 1 for $rsynccontrollername",
132 "userData2": "user data 2 for $rsynccontrollername"
135 "host": "${rsynccontrollername}",
142 # ------------END: SET CLM DATA--------------
145 #-------------BEGIN:SET ORCH DATA------------------
148 projectname="TestProject"
149 projectdata="$(cat<<EOF
152 "name": "$projectname",
153 "description": "description of $projectname controller",
154 "userData1": "$projectname user data 1",
155 "userData2": "$projectname user data 2"
161 # define a composite application
162 collection_compositeapp_name="CollectionCompositeApp"
163 compositeapp_version="v1"
164 compositeapp_data="$(cat <<EOF
167 "name": "${collection_compositeapp_name}",
168 "description": "description of ${collection_compositeapp_name}",
169 "userData1": "user data 1 for ${collection_compositeapp_name}",
170 "userData2": "user data 2 for ${collection_compositeapp_name}"
173 "version":"${compositeapp_version}"
179 # add app entries for the prometheus app into
182 prometheus_app_name="prometheus-operator"
183 prometheus_helm_chart=${app1_helm_path}
185 prometheus_app_data="$(cat <<EOF
188 "name": "${prometheus_app_name}",
189 "description": "description for app ${prometheus_app_name}",
190 "userData1": "user data 2 for ${prometheus_app_name}",
191 "userData2": "user data 2 for ${prometheus_app_name}"
197 # add app entries for the collectd app into
200 collectd_app_name="collectd"
201 collectd_helm_chart=${app2_helm_path}
203 collectd_app_data="$(cat <<EOF
206 "name": "${collectd_app_name}",
207 "description": "description for app ${collectd_app_name}",
208 "userData1": "user data 2 for ${collectd_app_name}",
209 "userData2": "user data 2 for ${collectd_app_name}"
215 # add app entries for the m3db app into
219 m3db_helm_chart=${app3_helm_path}
221 m3db_app_data="$(cat <<EOF
224 "name": "${m3db_app_name}",
225 "description": "description for app ${m3db_app_name}",
226 "userData1": "user data 2 for ${m3db_app_name}",
227 "userData2": "user data 2 for ${m3db_app_name}"
233 # Add the composite profile
234 collection_composite_profile_name="collection_composite-profile"
235 collection_composite_profile_data="$(cat <<EOF
238 "name":"${collection_composite_profile_name}",
239 "description":"description of ${collection_composite_profile_name}",
240 "userData1":"user data 1 for ${collection_composite_profile_name}",
241 "userData2":"user data 2 for ${collection_composite_profile_name}"
247 # Add the prometheus profile data into collection profile data
248 prometheus_profile_name="prometheus-profile"
249 prometheus_profile_file=$app1_profile_path
250 prometheus_profile_data="$(cat <<EOF
253 "name":"${prometheus_profile_name}",
254 "description":"description of ${prometheus_profile_name}",
255 "userData1":"user data 1 for ${prometheus_profile_name}",
256 "userData2":"user data 2 for ${prometheus_profile_name}"
259 "app-name": "${prometheus_app_name}"
265 # Add the collectd profile data into collection profile data
266 collectd_profile_name="collectd-profile"
267 collectd_profile_file=$app2_profile_path
268 collectd_profile_data="$(cat <<EOF
271 "name":"${collectd_profile_name}",
272 "description":"description of ${collectd_profile_name}",
273 "userData1":"user data 1 for ${collectd_profile_name}",
274 "userData2":"user data 2 for ${collectd_profile_name}"
277 "app-name": "${collectd_app_name}"
283 # Add the m3db profile data into collection profile data
284 m3db_profile_name="m3db-profile"
285 m3db_profile_file=$app3_profile_path
286 m3db_profile_data="$(cat <<EOF
289 "name":"${m3db_profile_name}",
290 "description":"description of ${m3db_profile_name}",
291 "userData1":"user data 1 for ${m3db_profile_name}",
292 "userData2":"user data 2 for ${m3db_profile_name}"
295 "app-name": "${m3db_app_name}"
301 # define the generic placement intent
302 generic_placement_intent_name="generic-placement-intent"
303 generic_placement_intent_data="$(cat <<EOF
306 "name":"${generic_placement_intent_name}",
307 "description":"${generic_placement_intent_name}",
308 "userData1":"${generic_placement_intent_name}",
309 "userData2":"${generic_placement_intent_name}"
312 "logical-cloud":"unused_logical_cloud"
318 # define app placement intent for prometheus
319 prometheus_placement_intent_name="prometheus-placement-intent"
320 prometheus_placement_intent_data="$(cat <<EOF
323 "name":"${prometheus_placement_intent_name}",
324 "description":"description of ${prometheus_placement_intent_name}",
325 "userData1":"user data 1 for ${prometheus_placement_intent_name}",
326 "userData2":"user data 2 for ${prometheus_placement_intent_name}"
329 "app-name":"${prometheus_app_name}",
332 { "provider-name":"${clusterprovidername}",
333 "cluster-label-name":"${labelname}"
342 # define app placement intent for collectd
343 collectd_placement_intent_name="collectd-placement-intent"
344 collectd_placement_intent_data="$(cat <<EOF
347 "name":"${collectd_placement_intent_name}",
348 "description":"description of ${collectd_placement_intent_name}",
349 "userData1":"user data 1 for ${collectd_placement_intent_name}",
350 "userData2":"user data 2 for ${collectd_placement_intent_name}"
353 "app-name":"${collectd_app_name}",
356 { "provider-name":"${clusterprovidername}",
357 "cluster-label-name":"${labelname}"
366 # define app placement intent for m3db
367 m3db_placement_intent_name="m3db-placement-intent"
368 m3db_placement_intent_data="$(cat <<EOF
371 "name":"${m3db_placement_intent_name}",
372 "description":"description of ${m3db_placement_intent_name}",
373 "userData1":"user data 1 for ${m3db_placement_intent_name}",
374 "userData2":"user data 2 for ${m3db_placement_intent_name}"
377 "app-name":"${m3db_app_name}",
380 { "provider-name":"${clusterprovidername}",
381 "cluster-label-name":"${labelname3}"
390 # define a deployment intent group
392 deployment_intent_group_name="collection_deployment_intent_group"
393 deployment_intent_group_data="$(cat <<EOF
396 "name":"${deployment_intent_group_name}",
397 "description":"descriptiont of ${deployment_intent_group_name}",
398 "userData1":"user data 1 for ${deployment_intent_group_name}",
399 "userData2":"user data 2 for ${deployment_intent_group_name}"
402 "profile":"${collection_composite_profile_name}",
403 "version":"${release}",
410 # define the intents to be used by the group
411 deployment_intents_in_group_name="collection_deploy_intents"
412 deployment_intents_in_group_data="$(cat <<EOF
415 "name":"${deployment_intents_in_group_name}",
416 "description":"descriptionf of ${deployment_intents_in_group_name}",
417 "userData1":"user data 1 for ${deployment_intents_in_group_name}",
418 "userData2":"user data 2 for ${deployment_intents_in_group_name}"
422 "genericPlacementIntent":"${generic_placement_intent_name}"
430 #---------END: SET ORCH DATA--------------------
433 function createOrchestratorData {
435 print_msg "creating controller entries"
436 call_api -d "${rsynccontrollerdata}" "${base_url_orchestrator}/controllers"
437 print_msg "creating project entry"
438 call_api -d "${projectdata}" "${base_url_orchestrator}/projects"
440 print_msg "creating collection composite app entry"
441 call_api -d "${compositeapp_data}" "${base_url_orchestrator}/projects/${projectname}/composite-apps"
443 print_msg "adding prometheus app to the composite app"
444 call_api -F "metadata=${prometheus_app_data}" \
445 -F "file=@${prometheus_helm_chart}" \
446 "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/apps"
448 print_msg "adding collectd app to the composite app"
449 call_api -F "metadata=${collectd_app_data}" \
450 -F "file=@${collectd_helm_chart}" \
451 "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/apps"
454 print_msg "adding m3db app to the composite app"
455 call_api -F "metadata=${m3db_app_data}" \
456 -F "file=@${m3db_helm_chart}" \
457 "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/apps"
459 print_msg "creating collection composite profile entry"
460 call_api -d "${collection_composite_profile_data}" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/composite-profiles"
462 print_msg "adding prometheus app profiles to the composite profile"
463 call_api -F "metadata=${prometheus_profile_data}" \
464 -F "file=@${prometheus_profile_file}" \
465 "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/composite-profiles/${collection_composite_profile_name}/profiles"
467 print_msg "adding collectd app profiles to the composite profile"
468 call_api -F "metadata=${collectd_profile_data}" \
469 -F "file=@${collectd_profile_file}" \
470 "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/composite-profiles/${collection_composite_profile_name}/profiles"
472 print_msg "adding m3db app profiles to the composite profile"
473 call_api -F "metadata=${m3db_profile_data}" \
474 -F "file=@${m3db_profile_file}" \
475 "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/composite-profiles/${collection_composite_profile_name}/profiles"
477 print_msg "create the generic placement intent"
478 call_api -d "${generic_placement_intent_data}" \
479 "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/generic-placement-intents"
481 print_msg "add the prometheus app placement intent to the generic placement intent"
482 call_api -d "${prometheus_placement_intent_data}" \
483 "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/generic-placement-intents/${generic_placement_intent_name}/app-intents"
485 print_msg "add the collectd app placement intent to the generic placement intent"
486 call_api -d "${collectd_placement_intent_data}" \
487 "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/generic-placement-intents/${generic_placement_intent_name}/app-intents"
489 print_msg "add the collectd app placement intent to the generic placement intent"
490 call_api -d "${m3db_placement_intent_data}" \
491 "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/generic-placement-intents/${generic_placement_intent_name}/app-intents"
494 print_msg "create the deployment intent group"
495 call_api -d "${deployment_intent_group_data}" \
496 "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/deployment-intent-groups"
497 call_api -d "${deployment_intents_in_group_data}" \
498 "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/intents"
502 function deleteOrchestratorData {
503 # TODO- delete rsync controller and any other controller
504 delete_resource "${base_url_orchestrator}/controllers/${rsynccontrollername}"
506 delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/intents/${deployment_intents_in_group_name}"
507 delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}"
508 delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/generic-placement-intents/${generic_placement_intent_name}/app-intents/${prometheus_placement_intent_name}"
509 delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/generic-placement-intents/${generic_placement_intent_name}/app-intents/${collectd_placement_intent_name}"
511 delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/generic-placement-intents/${generic_placement_intent_name}/app-intents/${m3db_placement_intent_name}"
513 delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/generic-placement-intents/${generic_placement_intent_name}"
515 delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/composite-profiles/${collection_composite_profile_name}/profiles/${prometheus_profile_name}"
516 delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/composite-profiles/${collection_composite_profile_name}/profiles/${collectd_profile_name}"
518 delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/composite-profiles/${collection_composite_profile_name}/profiles/${m3db_profile_name}"
520 delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/composite-profiles/${collection_composite_profile_name}"
522 delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/apps/${prometheus_app_name}"
524 delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/apps/${collectd_app_name}"
526 delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/apps/${m3db_app_name}"
528 delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}"
529 delete_resource "${base_url_orchestrator}/projects/${projectname}"
533 function createClmData {
534 print_msg "Creating cluster provider and cluster"
535 call_api -d "${clusterproviderdata}" "${base_url_clm}/cluster-providers"
537 call_api -H "Content-Type: multipart/form-data" -F "metadata=$clusterdata" -F "file=@$kubeconfigedge1" "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters"
539 call_api -H "Content-Type: multipart/form-data" -F "metadata=$clusterdata2" -F "file=@$kubeconfigedge2" "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters"
541 call_api -H "Content-Type: multipart/form-data" -F "metadata=$clusterdata3" -F "file=@$kubeconfigcluster1" "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters"
543 call_api -d "${labeldata}" "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${clustername}/labels"
545 call_api -d "${labeldata2}" "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${clustername2}/labels"
547 call_api -d "${labeldata3}" "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${clustername3}/labels"
550 function deleteClmData {
552 delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${clustername}/labels/${labelname}"
553 delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${clustername2}/labels/${labelname2}"
554 delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${clustername3}/labels/${labelname3}"
556 delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${clustername}"
557 delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${clustername2}"
558 delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${clustername3}"
560 delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}"
563 function createData {
565 createOrchestratorData
567 function deleteData {
569 deleteOrchestratorData
571 # function ApplyNcmData {
572 # call_api -d "{ }" "${base_url_ncm}/cluster-providers/${clusterprovidername}/clusters/${clustername}/apply"
573 # call_api -d "{ }" "${base_url_ncm}/cluster-providers/${clusterprovidername}/clusters/${clustername2}/apply"
576 # function terminateNcmData {
577 # call_api -d "{ }" "${base_url_ncm}/cluster-providers/${clusterprovidername}/clusters/${clustername}/terminate"
578 # call_api -d "{ }" "${base_url_ncm}/cluster-providers/${clusterprovidername}/clusters/${clustername2}/terminate"
581 function instantiate {
582 # call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/approve"
583 call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${collection_compositeapp_name}/${compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/instantiate"
588 populate_CSAR_composite_app_helm "$csar_id"