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