Do not error when a deleted resource is not found
[icn.git] / cmd / bpa-operator / e2etest / bpa_vm_verifier.sh
1 #!/usr/bin/env bash
2 set -eu -o pipefail
3
4 CLUSTER_NAME=cluster-test
5
6 # Get MAC and IP addresses of VMs provisioned by metal3
7 master0=$(virsh net-dhcp-leases baremetal |grep master-0)
8 masterMAC=$(echo $master0 | cut -d " " -f 3)
9 masterIP=$(echo $master0 | cut -d " " -f 5)
10 masterIP="${masterIP%%/*}"
11
12 worker0=$(virsh net-dhcp-leases baremetal |grep worker-0)
13 workerMAC=$(echo $worker0 | cut -d " " -f 3)
14 workerIP=$(echo $worker0 | cut -d " " -f 5)
15 workerIP="${workerIP%%/*}"
16
17 # Create Fake DHCP File
18 mkdir -p /opt/icn/dhcp
19 cat <<EOF > /opt/icn/dhcp/dhcpd.leases
20 # The format of this file is documented in the dhcpd.leases(5) manual page.
21 # This lease file was written by isc-dhcp-4.3.5
22
23 # authoring-byte-order entry is generated, DO NOT DELETE
24 authoring-byte-order little-endian;
25
26 lease ${masterIP} {
27   starts 4 2019/08/08 22:32:49;
28   ends 4 2019/08/08 23:52:49;
29   cltt 4 2019/08/08 22:32:49;
30   binding state active;
31   next binding state free;
32   rewind binding state free;
33   hardware ethernet ${masterMAC};
34   client-hostname "master-0";
35 }
36 lease ${workerIP} {
37   starts 4 2019/08/08 22:32:49;
38   ends 4 2019/08/08 23:52:49;
39   cltt 4 2019/08/08 22:32:49;
40   binding state active;
41   next binding state free;
42   rewind binding state free;
43   hardware ethernet ${workerMAC};
44   client-hostname "worker-0";
45 }
46 EOF
47
48 # Create provisioning CR file for testing
49 cat <<EOF > e2etest/e2e_test_provisioning_cr.yaml
50 apiVersion: bpa.akraino.org/v1alpha1
51 kind: Provisioning
52 metadata:
53   name: e2e-test-provisioning
54   labels:
55     cluster: ${CLUSTER_NAME}
56     owner: c1
57 spec:
58   masters:
59     - master-0:
60         mac-address: ${masterMAC}
61   workers:
62     - worker-0:
63         mac-address: ${workerMAC}
64   KUDPlugins:
65     - emco
66 EOF
67 kubectl apply -f e2etest/e2e_test_provisioning_cr.yaml
68 sleep 5
69
70 #Check Status of kud job pod
71 status="Running"
72
73 while [[ $status == "Running" ]]
74 do
75         echo "KUD install job still running"
76         sleep 2m
77         stats=$(kubectl get pods |grep -i kud-${CLUSTER_NAME})
78         status=$(echo $stats | cut -d " " -f 3)
79 done
80
81 if [[ $status == "Completed" ]];
82 then
83    printf "KUD Install Job completed\n"
84    printf "Checking cluster status\n"
85
86    source ../../env/lib/common.sh
87    KUBECONFIG=--kubeconfig=/opt/kud/multi-cluster/${CLUSTER_NAME}/artifacts/admin.conf
88    APISERVER=$(kubectl ${KUBECONFIG} config view --minify -o jsonpath='{.clusters[0].cluster.server}')
89    TOKEN=$(kubectl ${KUBECONFIG} get secret $(kubectl ${KUBECONFIG} get serviceaccount default -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | base64 --decode )
90    if ! call_api $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure;
91    then
92      printf "\nKubernetes Cluster Install did not complete successfully\n"
93    else
94      printf "\nKubernetes Cluster Install was successful\n"
95    fi
96
97 else
98    printf "KUD Install Job failed\n"
99 fi
100
101
102 #Print logs of Job Pod
103 jobPod=$(kubectl get pods|grep kud-${CLUSTER_NAME})
104 podName=$(echo $jobPod | cut -d " " -f 1)
105 printf "\nNow Printing Job pod logs\n"
106 kubectl logs $podName
107
108 #Teardown Setup
109 printf "\n\nBeginning E2E Test Teardown\n\n"
110 kubectl delete -f e2etest/e2e_test_provisioning_cr.yaml
111 kubectl delete job kud-${CLUSTER_NAME}
112 kubectl delete --ignore-not-found=true configmap ${CLUSTER_NAME}-configmap
113 rm e2etest/e2e_test_provisioning_cr.yaml
114 rm -rf /opt/kud/multi-cluster/${CLUSTER_NAME}
115 rm /opt/icn/dhcp/dhcpd.leases
116 make delete