support for Utah Cloudlab
reliability fixes

Change-Id: I1067592bd1b24241a3ccec76c7a53d22eafb3724
diff --git a/scripts/cord-in-a-box.sh b/scripts/cord-in-a-box.sh
index ea03c5f..e2dc08c 100755
--- a/scripts/cord-in-a-box.sh
+++ b/scripts/cord-in-a-box.sh
@@ -69,7 +69,7 @@
   then
     mkdir $CORDDIR && cd $CORDDIR
 
-   
+
     git config --global user.name 'Test User'
     git config --global user.email 'test@null.com'
     git config --global color.ui false
@@ -106,25 +106,42 @@
     sudo mv /usr/local/etc/emulab/watchdog /usr/local/etc/emulab/watchdog-disabled
   fi
 
-  if [ -e /usr/testbed/bin/mkextrafs ]
+  # Mount extra space, if haven't already
+  if [ ! -d /mnt/extra ]
   then
-    sudo mkdir -p /mnt/extra
-
-    # Sometimes this command fails on the first try
-    sudo /usr/testbed/bin/mkextrafs -r /dev/sdb -qf "/mnt/extra/" || sudo /usr/testbed/bin/mkextrafs -r /dev/sdb -qf "/mnt/extra/"
-
-    # Check that the mount succeeded (sometimes mkextrafs succeeds but device not mounted)
-    mount | grep sdb || (echo "ERROR: mkextrafs failed, exiting!" && exit 1)
-
-    # we'll replace /var/lib/libvirt/images with a symlink below
-    [ -d /var/lib/libvirt/images/ ] && [ ! -h /var/lib/libvirt/images ] && sudo rmdir /var/lib/libvirt/images
-
-    sudo mkdir -p /mnt/extra/libvirt_images
-    if [ ! -e /var/lib/libvirt/images ]
+    # for NVME SSD on Utah Cloudlab, not supported by mkextrafs
+    if $(df | grep -q nvme0n1p1) && [ -e /usr/testbed/bin/mkextrafs ]
     then
-      sudo ln -s /mnt/extra/libvirt_images /var/lib/libvirt/images
+      sudo mkdir -p /mnt/extra
+
+      # set partition type of 4th partition to Linux, ignore errors
+      echo -e "t\n4\n82\np\nw\nq" | sudo fdisk /dev/nvme0n1 || true
+
+      sudo mkfs.ext4 /dev/nvme0n1p4
+      echo "/dev/nvme0n1p4 /mnt/extra/ ext4 defaults 0 0" | sudo tee -a /etc/fstab
+      sudo mount /mnt/extra
+      mount | grep nvme0n1p4 || (echo "ERROR: NVME mkfs/mount failed, exiting!" && exit 1)
+
+    elif [ -e /usr/testbed/bin/mkextrafs ]  # if on Clemson/Wisconsin Cloudlab
+    then
+      sudo mkdir -p /mnt/extra
+
+      # Sometimes this command fails on the first try
+      sudo /usr/testbed/bin/mkextrafs -r /dev/sdb -qf "/mnt/extra/" || sudo /usr/testbed/bin/mkextrafs -r /dev/sdb -qf "/mnt/extra/"
+
+      # Check that the mount succeeded (sometimes mkextrafs succeeds but device not mounted)
+      mount | grep sdb || (echo "ERROR: mkextrafs failed, exiting!" && exit 1)
     fi
   fi
+
+  # replace /var/lib/libvirt/images with a symlink
+  [ -d /var/lib/libvirt/images/ ] && [ ! -h /var/lib/libvirt/images ] && sudo rmdir /var/lib/libvirt/images
+  sudo mkdir -p /mnt/extra/libvirt_images
+
+  if [ ! -e /var/lib/libvirt/images ]
+  then
+    sudo ln -s /mnt/extra/libvirt_images /var/lib/libvirt/images
+  fi
 }
 
 function elk_up() {
@@ -143,7 +160,7 @@
   fi
 
   sudo chmod +x build/elk-logger/logstash_tail
-  build/elk-logger/logstash_tail --file install.out --hostport 10.100.198.222:5617 & 
+  build/elk-logger/logstash_tail --file install.out --hostport 10.100.198.222:5617 &
 }
 
 function vagrant_vms_up() {