Adding cluster meta data and saving in etcd
[multicloud/k8s.git] / kud / tests / plugin_fw.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_id=cc009bfe-bbee-11e8-9766-525400435678
32 rb_name="vfw"
33 rb_version="plugin_test"
34 chart_name="firewall"
35 profile_name="test_profile"
36 release_name="test-release"
37 namespace="plugin-tests-namespace"
38 cloud_region_id="kud"
39 cloud_region_owner="localhost"
40
41 # Setup
42 install_deps
43 populate_CSAR_fw_rbdefinition "$csar_id"
44
45 print_msg "Registering resource bundle"
46 payload="$(cat <<EOF
47 {
48     "rb-name": "${rb_name}",
49     "rb-version": "${rb_version}",
50     "chart-name": "${chart_name}"
51 }
52 EOF
53 )"
54 call_api -d "${payload}" "${base_url}/rb/definition"
55
56 print_msg "Uploading resource bundle content"
57 call_api --data-binary "@${CSAR_DIR}/${csar_id}/rb_definition.tar.gz" \
58          "${base_url}/rb/definition/${rb_name}/${rb_version}/content"
59
60 print_msg "Registering rb's profile"
61 payload="$(cat <<EOF
62 {
63     "rb-name": "${rb_name}",
64     "rb-version": "${rb_version}",
65     "profile-name": "${profile_name}",
66     "release-name": "${release_name}",
67     "namespace": "${namespace}"
68 }
69 EOF
70 )"
71 call_api -d "${payload}" "${base_url}/rb/definition/${rb_name}/${rb_version}/profile"
72
73 print_msg "Uploading profile data"
74 call_api --data-binary "@${CSAR_DIR}/${csar_id}/rb_profile.tar.gz" \
75          "${base_url}/rb/definition/${rb_name}/${rb_version}/profile/${profile_name}/content"
76
77 print_msg "Setup cloud data"
78 payload="$(cat <<EOF
79 {
80     "cloud-region": "$cloud_region_id",
81     "cloud-owner": "$cloud_region_owner"
82 }
83 EOF
84 )"
85 call_api -F "metadata=$payload" \
86          -F "file=@$kubeconfig_path" \
87          "${base_url}/connectivity-info" >/dev/null #massive output
88
89 print_msg "Creating vFW VNF Instance"
90 payload="$(cat <<EOF
91 {
92     "rb-name": "${rb_name}",
93     "rb-version": "${rb_version}",
94     "profile-name": "${profile_name}",
95     "cloud-region": "${cloud_region_id}"
96 }
97 EOF
98 )"
99 response="$(call_api -d "${payload}" "${base_url}/instance")"
100 echo "$response"
101 vnf_id="$(jq -r '.id' <<< "${response}")"
102
103 print_msg "Validating VNF instance"
104 # Check if all pods are up
105 wait_for_pod -n "${namespace}" -l app=sink
106 wait_for_pod -n "${namespace}" -l app=firewall
107 wait_for_pod -n "${namespace}" -l app=packetgen
108 # TODO: Provide some health check to verify vFW work
109
110 print_msg "Waiting for VNF instances"
111 sleep 480
112
113 print_msg "Retrieving VNF details"
114 call_api "${base_url}/instance/${vnf_id}"
115
116
117 #Teardown
118 print_msg "Deleting VNF Instance"
119 delete_resource "${base_url}/instance/${vnf_id}"
120
121 print_msg "Deleting Profile"
122 delete_resource "${base_url}/rb/definition/${rb_name}/${rb_version}/profile/${profile_name}"
123
124 print_msg "Deleting Resource Bundle"
125 delete_resource "${base_url}/rb/definition/${rb_name}/${rb_version}"
126
127 print_msg "Deleting ${cloud_region_id} cloud region connection"
128 delete_resource "${base_url}/connectivity-info/${cloud_region_id}"