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