mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-23 21:31:00 +02:00
Change-Id: Iacf2ca8f8467dc91e696ace5ed30412f7869110a (cherry picked from commit 2b8bcbcd3d0e3e66ee2bc681f0f1dfbb0e2a218f)
93 lines
2.3 KiB
Bash
Executable File
93 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -xe
|
|
|
|
VM_TYPE=${1:-dev}
|
|
USE_STRATUM=${USE_STRATUM:-false}
|
|
STRATUM_BMV2_TAR=${STRATUM_BMV2_TAR-unknown}
|
|
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
|
|
function wait_vm_shutdown {
|
|
set +x
|
|
while vboxmanage showvminfo $1 | grep -c "running (since"; do
|
|
echo "Waiting for VM to shutdown..."
|
|
sleep 1
|
|
done
|
|
sleep 2
|
|
set -x
|
|
}
|
|
|
|
function wait_for_tcp_port {
|
|
set +x
|
|
while ! nc -z $1 $2; do
|
|
echo "Waiting for TCP port $2 on $1 to be open..."
|
|
sleep 1
|
|
done
|
|
sleep 2
|
|
set -x
|
|
}
|
|
|
|
rm -rf ./tmp
|
|
if [[ ${VM_TYPE} = "tutorial" ]]
|
|
then
|
|
bazel build //:onos
|
|
bazel build //:onos-package-admin
|
|
rm -rf ~/.m2/repository/org/onosproject
|
|
cd ${ONOS_ROOT}
|
|
onos-publish -l
|
|
cd ${DIR}
|
|
mkdir -p ./tmp
|
|
cp ../../../bazel-bin/onos.tar.gz ./tmp/onos.tar.gz
|
|
cp ../../../bazel-bin/onos-admin.tar.gz ./tmp/onos-admin.tar.gz
|
|
cp ../mininet/bmv2.py ./tmp/bmv2.py
|
|
mv ~/.m2/repository/org/onosproject ./tmp/artifacts
|
|
if [[ ${USE_STRATUM} = true ]]
|
|
then
|
|
cp ${STRATUM_BMV2_TAR} ./tmp/stratum_bmv2.tar.gz
|
|
fi
|
|
fi
|
|
|
|
# Initial provisioning if necessary.
|
|
USE_STRATUM=${USE_STRATUM} vagrant up ${VM_TYPE}
|
|
|
|
rm -rf ./tmp
|
|
|
|
SSH_PORT=`vagrant port --guest 22 ${VM_TYPE}`
|
|
VB_UUID=`cat .vagrant/machines/${VM_TYPE}/virtualbox/id`
|
|
|
|
if [[ ${VM_TYPE} = "dev" ]]
|
|
then
|
|
# Take snapshot before cleanup for local use
|
|
# e.g. to avoid re-building P4 tools from scratch
|
|
vboxmanage controlvm ${VB_UUID} acpipowerbutton
|
|
wait_vm_shutdown ${VB_UUID}
|
|
VBoxManage snapshot ${VB_UUID} take "pre-cleanup"
|
|
vagrant up ${VM_TYPE}
|
|
# SSH port forwarding might change after vagrant up.
|
|
SSH_PORT=`vagrant port --guest 22 ${VM_TYPE}`
|
|
wait_for_tcp_port 127.0.0.1 ${SSH_PORT}
|
|
fi
|
|
|
|
# Cleanup
|
|
sshpass -p 'rocks' \
|
|
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \
|
|
-p ${SSH_PORT} sdn@127.0.0.1 "bash /vagrant/ova-cleanup.sh"
|
|
sleep 5
|
|
vboxmanage controlvm ${VB_UUID} acpipowerbutton
|
|
wait_vm_shutdown ${VB_UUID}
|
|
|
|
# Remove vagrant shared folder
|
|
vboxmanage sharedfolder remove ${VB_UUID} -name "vagrant"
|
|
|
|
rm -f onos-p4-${VM_TYPE}.ova
|
|
vboxmanage export ${VB_UUID} -o onos-p4-${VM_TYPE}.ova
|
|
|
|
if [[ ${VM_TYPE} = "dev" ]]
|
|
then
|
|
sleep 1
|
|
vboxmanage snapshot ${VB_UUID} restore pre-cleanup
|
|
sleep 1
|
|
vboxmanage snapshot ${VB_UUID} delete pre-cleanup
|
|
fi
|