Carmelo Cascone | d661507 | 2017-12-15 00:53:43 -0800 | [diff] [blame] | 1 | #!/usr/bin/env bash |
| 2 | |
| 3 | set -xe |
| 4 | |
Carmelo Cascone | c5569c2 | 2018-04-18 10:09:15 +0900 | [diff] [blame] | 5 | VM_TYPE=${P4_VM_TYPE:-dev} |
| 6 | |
Carmelo Cascone | 57defd3 | 2018-05-11 14:34:01 -0700 | [diff] [blame] | 7 | function wait_vm_shutdown { |
| 8 | set +x |
| 9 | while vboxmanage showvminfo $1 | grep -c "running (since" |
| 10 | do |
| 11 | echo "Waiting for VM to shutdown..." |
| 12 | sleep 1 |
| 13 | done |
| 14 | sleep 2 |
| 15 | set -x |
| 16 | } |
| 17 | |
Carmelo Cascone | d661507 | 2017-12-15 00:53:43 -0800 | [diff] [blame] | 18 | # Remove references to the existing vagrant-built VM (if any). |
| 19 | # We want to build a new one from scratch, not start an existing one. |
| 20 | rm -rf .vagrant/ |
Carmelo Cascone | d661507 | 2017-12-15 00:53:43 -0800 | [diff] [blame] | 21 | vagrant up |
| 22 | |
| 23 | SSH_PORT=`vagrant port --guest 22` |
| 24 | VB_UUID=`cat .vagrant/machines/default/virtualbox/id` |
Carmelo Cascone | 57defd3 | 2018-05-11 14:34:01 -0700 | [diff] [blame] | 25 | VMDK_PATH=`VBoxManage showvminfo ${VB_UUID} --machinereadable | grep vmdk | cut -d'=' -f2` |
Carmelo Cascone | d661507 | 2017-12-15 00:53:43 -0800 | [diff] [blame] | 26 | |
Carmelo Cascone | 57defd3 | 2018-05-11 14:34:01 -0700 | [diff] [blame] | 27 | # Take snapshot before cleanup for local use |
| 28 | # e.g. to avoid re-building P4 tools from scratch |
| 29 | vboxmanage controlvm ${VB_UUID} acpipowerbutton |
| 30 | wait_vm_shutdown ${VB_UUID} |
| 31 | VBoxManage snapshot ${VB_UUID} take "pre-cleanup" |
| 32 | |
| 33 | # Cleanup |
| 34 | vagrant up |
Carmelo Cascone | d661507 | 2017-12-15 00:53:43 -0800 | [diff] [blame] | 35 | sshpass -p 'rocks' \ |
| 36 | ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ |
| 37 | -p ${SSH_PORT} sdn@127.0.0.1 "bash /vagrant/pre-ova-cleanup.sh" |
Carmelo Cascone | d661507 | 2017-12-15 00:53:43 -0800 | [diff] [blame] | 38 | sleep 5 |
Carmelo Cascone | 4f985cd | 2018-02-11 17:36:42 -0800 | [diff] [blame] | 39 | vboxmanage controlvm ${VB_UUID} acpipowerbutton |
Carmelo Cascone | 57defd3 | 2018-05-11 14:34:01 -0700 | [diff] [blame] | 40 | wait_vm_shutdown ${VB_UUID} |
Carmelo Cascone | d661507 | 2017-12-15 00:53:43 -0800 | [diff] [blame] | 41 | |
| 42 | # Remove vagrant shared folder |
| 43 | vboxmanage sharedfolder remove ${VB_UUID} -name "vagrant" |
| 44 | |
Carmelo Cascone | 57defd3 | 2018-05-11 14:34:01 -0700 | [diff] [blame] | 45 | rm -f onos-p4-${VM_TYPE}.ova |
Carmelo Cascone | c5569c2 | 2018-04-18 10:09:15 +0900 | [diff] [blame] | 46 | vboxmanage export ${VB_UUID} -o onos-p4-${VM_TYPE}.ova |
Carmelo Cascone | 57defd3 | 2018-05-11 14:34:01 -0700 | [diff] [blame] | 47 | |
| 48 | sleep 1 |
| 49 | vboxmanage snapshot ${VB_UUID} restore pre-cleanup |
| 50 | sleep 1 |
| 51 | vboxmanage snapshot ${VB_UUID} delete pre-cleanup |