Replace virtlet with kubevirt in plugin_fw_v2
[multicloud/k8s.git] / kud / tests / plugin_eaa.sh
1 #!/bin/bash
2 # SPDX-license-identifier: Apache-2.0
3 ##############################################################################
4 # Copyright (c) 2018
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9 ##############################################################################
10
11 set -o errexit
12 set -o nounset
13 set -o pipefail
14 #set -o xtrace
15
16 source _common_test.sh
17 source _functions.sh
18 source _common.sh
19
20 if [ ${1:+1} ]; then
21     if [ "$1" == "--external" ]; then
22         master_ip=$(kubectl cluster-info | grep "Kubernetes master" | \
23             awk -F ":" '{print $2}' | awk -F "//" '{print $2}')
24         onap_svc_node_port=30498
25         base_url="http://$master_ip:$onap_svc_node_port/v1"
26     fi
27 fi
28
29 base_url=${base_url:-"http://localhost:9015/v1"}
30 kubeconfig_path="$HOME/.kube/config"
31 csar_eaa_id=8030a02a-7253-11ea-bc55-0242ac130003
32 csar_sample_app_id=150da0b3-aa8c-481e-b661-2620b810765e
33 rb_eaa_name="eaa"
34 rb_sample_app_name="sample_app"
35 rb_version="plugin_test"
36 chart_eaa_name="eaa"
37 chart_sample_app_name="sample-app"
38 profile_eaa_name="test_eaa_profile"
39 profile_sample_app_name="test_sample_app_profile"
40 release_name="test-release"
41 namespace_eaa="openness"
42 namespace_sample_app="default"
43 cloud_region_id="kud"
44 cloud_region_owner="localhost"
45
46 # Setup
47 install_deps
48 populate_CSAR_eaa_rbdefinition "$csar_eaa_id"
49
50 print_msg "Registering resource bundle for EAA"
51 payload="$(cat <<EOF
52 {
53     "rb-name": "${rb_eaa_name}",
54     "rb-version": "${rb_version}",
55     "chart-name": "${chart_eaa_name}"
56 }
57 EOF
58 )"
59 call_api -d "${payload}" "${base_url}/rb/definition"
60
61 print_msg "Uploading resource bundle content for EAA"
62 call_api --data-binary "@${CSAR_DIR}/${csar_eaa_id}/rb_definition.tar.gz" \
63          "${base_url}/rb/definition/${rb_eaa_name}/${rb_version}/content"
64
65 print_msg "Registering rb's profile for EAA"
66 payload="$(cat <<EOF
67 {
68     "rb-name": "${rb_eaa_name}",
69     "rb-version": "${rb_version}",
70     "profile-name": "${profile_eaa_name}",
71     "release-name": "${release_name}",
72     "namespace": "${namespace_eaa}"
73 }
74 EOF
75 )"
76 call_api -d "${payload}" "${base_url}/rb/definition/${rb_eaa_name}/${rb_version}/profile"
77
78 print_msg "Uploading profile data for EAA"
79 call_api --data-binary "@${CSAR_DIR}/${csar_eaa_id}/rb_profile.tar.gz" \
80          "${base_url}/rb/definition/${rb_eaa_name}/${rb_version}/profile/${profile_eaa_name}/content"
81
82 print_msg "Setup cloud data"
83 payload="$(cat <<EOF
84 {
85     "cloud-region": "$cloud_region_id",
86     "cloud-owner": "$cloud_region_owner"
87 }
88 EOF
89 )"
90 call_api -F "metadata=$payload" \
91          -F "file=@$kubeconfig_path" \
92          "${base_url}/connectivity-info" >/dev/null #massive output
93
94 print_msg "Creating EAA"
95 payload="$(cat <<EOF
96 {
97     "rb-name": "${rb_eaa_name}",
98     "rb-version": "${rb_version}",
99     "profile-name": "${profile_eaa_name}",
100     "cloud-region": "${cloud_region_id}"
101 }
102 EOF
103 )"
104 response="$(call_api -d "${payload}" "${base_url}/instance")"
105 echo "$response"
106 vnf_eaa_id="$(jq -r '.id' <<< "${response}")"
107
108 wait_for_deployment eaa 1
109
110 #Create sample producer and sample consumer
111 populate_CSAR_eaa_sample_app_rbdefinition "$csar_sample_app_id"
112
113 print_msg "Registering resource bundle for Sample App"
114 payload="$(cat <<EOF
115 {
116     "rb-name": "${rb_sample_app_name}",
117     "rb-version": "${rb_version}",
118     "chart-name": "${chart_sample_app_name}"
119 }
120 EOF
121 )"
122 call_api -d "${payload}" "${base_url}/rb/definition"
123
124 print_msg "Uploading resource bundle content for Sample App"
125 call_api --data-binary "@${CSAR_DIR}/${csar_sample_app_id}/rb_definition.tar.gz" \
126          "${base_url}/rb/definition/${rb_sample_app_name}/${rb_version}/content"
127
128 print_msg "Registering rb's profile for Sample App"
129 payload="$(cat <<EOF
130 {
131     "rb-name": "${rb_sample_app_name}",
132     "rb-version": "${rb_version}",
133     "profile-name": "${profile_sample_app_name}",
134     "release-name": "${release_name}",
135     "namespace": "${namespace_sample_app}"
136 }
137 EOF
138 )"
139 call_api -d "${payload}" "${base_url}/rb/definition/${rb_sample_app_name}/${rb_version}/profile"
140
141 print_msg "Uploading profile data for Sample App"
142 call_api --data-binary "@${CSAR_DIR}/${csar_sample_app_id}/rb_profile.tar.gz" \
143          "${base_url}/rb/definition/${rb_sample_app_name}/${rb_version}/profile/${profile_sample_app_name}/content"
144
145 print_msg "Creating Sample Apps: producer and consumer"
146 payload="$(cat <<EOF
147 {
148     "rb-name": "${rb_sample_app_name}",
149     "rb-version": "${rb_version}",
150     "profile-name": "${profile_sample_app_name}",
151     "cloud-region": "${cloud_region_id}"
152 }
153 EOF
154 )"
155 response="$(call_api -d "${payload}" "${base_url}/instance")"
156 echo "$response"
157 vnf_sample_app_id="$(jq -r '.id' <<< "${response}")"
158
159 wait_for_deployment producer 1
160 wait_for_deployment consumer 1
161
162 print_msg "Validating EAA is running"
163 kubectl get --namespace=${namespace_eaa} pods | grep eaa
164
165 print_msg "Validating sample producer and sample consumer are running"
166 kubectl get --namespace=${namespace_sample_app}  pods | grep producer
167 kubectl get --namespace=${namespace_sample_app} pods | grep consumer
168
169 print_msg "Validating logs of EAA"
170 EAA=`kubectl get --namespace=${namespace_eaa} pods | grep eaa | awk '{print $1}'`
171 kubectl logs --namespace=${namespace_eaa}  ${EAA}
172
173 print_msg "Validating logs of sample producer and sample consumer"
174 # sleep 5 seconds to let producer and consumer generate some logs
175 sleep 5
176 PRODUCER=`kubectl get --namespace=${namespace_sample_app} pods | grep producer | awk '{print $1}'`
177 CONSUMER=`kubectl get --namespace=${namespace_sample_app} pods | grep consumer | awk '{print $1}'`
178 kubectl logs --namespace=${namespace_sample_app} ${PRODUCER}
179 kubectl logs --namespace=${namespace_sample_app} ${CONSUMER}
180
181 print_msg "Retrieving EAA details"
182 call_api "${base_url}/instance/${vnf_eaa_id}"
183
184 print_msg "Retrieving Sample App details"
185 call_api "${base_url}/instance/${vnf_sample_app_id}"
186
187 #Teardown
188 print_msg "Deleting sample apps: producer and consumer"
189 delete_resource "${base_url}/instance/${vnf_sample_app_id}"
190
191 print_msg "Deleting Profile for sample app"
192 delete_resource "${base_url}/rb/definition/${rb_sample_app_name}/${rb_version}/profile/${profile_sample_app_name}"
193
194 print_msg "Deleting Resource Bundle for sample app"
195 delete_resource "${base_url}/rb/definition/${rb_sample_app_name}/${rb_version}"
196
197 print_msg "Deleting EAA"
198 delete_resource "${base_url}/instance/${vnf_eaa_id}"
199
200 print_msg "Deleting Profile for EAA"
201 delete_resource "${base_url}/rb/definition/${rb_eaa_name}/${rb_version}/profile/${profile_eaa_name}"
202
203 print_msg "Deleting Resource Bundle for EAA"
204 delete_resource "${base_url}/rb/definition/${rb_eaa_name}/${rb_version}"
205
206 print_msg "Deleting ${cloud_region_id} cloud region connection"
207 delete_resource "${base_url}/connectivity-info/${cloud_region_id}"