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