Fix incorrect SSH port when generating P4 VM

Change-Id: I649433e2fcaa3c935bd6ebe61240e1645ace8d77
diff --git a/tools/dev/p4vm/export-ova.sh b/tools/dev/p4vm/export-ova.sh
index 6507849..81f6d03 100755
--- a/tools/dev/p4vm/export-ova.sh
+++ b/tools/dev/p4vm/export-ova.sh
@@ -6,8 +6,7 @@
 
 function wait_vm_shutdown {
     set +x
-    while vboxmanage showvminfo $1 | grep -c "running (since"
-    do
+    while vboxmanage showvminfo $1 | grep -c "running (since"; do
     echo "Waiting for VM to shutdown..."
     sleep 1
     done
@@ -15,6 +14,16 @@
     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
+}
+
 # Remove references to the existing vagrant-built VM (if any).
 # We want to build a new one from scratch, not start an existing one.
 rm -rf .vagrant/
@@ -22,7 +31,6 @@
 
 SSH_PORT=`vagrant port --guest 22`
 VB_UUID=`cat .vagrant/machines/default/virtualbox/id`
-VMDK_PATH=`VBoxManage showvminfo ${VB_UUID} --machinereadable | grep vmdk | cut -d'=' -f2`
 
 # Take snapshot before cleanup for local use
 # e.g. to avoid re-building P4 tools from scratch
@@ -32,6 +40,9 @@
 
 # Cleanup
 vagrant up
+# SSH port forwarding might change after vagrant up.
+SSH_PORT=`vagrant port --guest 22`
+wait_for_tcp_port 127.0.0.1 ${SSH_PORT}
 sshpass -p 'rocks' \
     ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \
     -p ${SSH_PORT} sdn@127.0.0.1 "bash /vagrant/pre-ova-cleanup.sh"