Add e2e script for Virtlet VM provisioning
[icn.git] / cmd / bpa-operator / e2etest / bpa_virtletvm_verifier.sh
1 #!/bin/bash
2
3 printf "\n\nStart Virtlet VM provisioning E2E test\n\n"
4
5 TUNING_DIR="/tmp/tuning_dir"
6 CNI_PLUGINS="cni-plugins-linux-amd64-v0.8.2.tgz"
7 if !(wget https://github.com/containernetworking/plugins/releases/download/v0.8.2/$CNI_PLUGINS -P $TUNING_DIR 2>/dev/null); then
8     echo "Error downloading cni plugins for Virtlet VM provisioning"
9     exit 1
10 fi
11
12 pushd $TUNING_DIR
13 if [ -f $CNI_PLUGINS ]; then
14     tar -xzvf $CNI_PLUGINS > /dev/null
15     if [ -f "tuning" ]; then
16         cp "tuning" "/opt/cni/bin/"
17         echo "Updated the tuning plugin"
18     else
19         echo "Error finding the latest tuning plugin"
20         rm -rf $TUNING_DIR
21         exit 1
22     fi
23     rm -rf $TUNING_DIR
24 fi
25 popd
26
27 # create flannel-vm net-attach-def
28 kubectl apply -f ../deploy/netattachdef-flannel-vm.yaml -n kube-system
29
30 # generate user ssh key
31 if [ ! -f "/root/.ssh/id_rsa.pub" ]; then
32     ssh-keygen -f /root/.ssh/id_rsa -P ""
33 fi
34
35 # create virtlet vm
36 key=$(cat /root/.ssh/id_rsa.pub)
37 cp ../deploy/virtlet-deployment-sample.yaml virtlet_test_vm.yaml
38 sed -i "s|\$ssh_key|${key}|" virtlet_test_vm.yaml
39 kubectl create -f virtlet_test_vm.yaml
40
41 status=""
42 while [[ $status != "Running" ]]
43 do
44         stats=$(kubectl get pods |grep -i virtlet-deployment)
45         status=$(echo $stats | cut -d " " -f 3)
46         if [[ $status == "Err"* ]]; then
47                 echo "Error creating Virtlet VM, test incomplete"
48                 kubectl delete -f virtlet_test_vm.yaml
49                 exit 1
50         fi
51 done
52
53 sleep 3
54 echo "Virtlet VM is ready for provisioning"
55
56 printf "\nkubectl get pods $(kubectl get pods |grep -i virtlet-deployment | awk '{print $1}') -o json\n"
57 podjson=$(kubectl get pods $(kubectl get pods |grep -i virtlet-deployment | awk '{print $1}') -o json)
58 printf "\n$podjson\n\n"
59
60 # create provisioning cr
61 kubectl apply -f e2e_virtletvm_test_provisioning_cr.yaml
62
63 sleep 2m
64
65 status="Running"
66
67 while [[ $status == "Running" ]]
68 do
69         stats=$(kubectl get pods |grep -i kud-cluster-vm)
70         status=$(echo $stats | cut -d " " -f 3)
71         echo "KUD install job still running"
72         sleep 2m
73 done
74
75 if [[ $status == "Completed" ]]; then
76    printf "KUD Install completed successfully\n"
77 else
78    printf "KUD Install failed\n"
79 fi
80
81 printf "\nPrinting kud-cluster-vm job logs....\n\n"
82 kudjob=$(kubectl get pods | grep -i kud-cluster-vm | awk '{print $1}')
83 printf "$(kubectl logs $kudjob)\n"
84
85 printf "\n\nBeginning E2E VM Test Teardown\n\n"
86
87 kubectl delete -f e2e_virtletvm_test_provisioning_cr.yaml
88 kubectl delete job kud-cluster-vm
89 kubectl delete configmap cluster-vm-configmap
90 kubectl delete -f virtlet_test_vm.yaml