summaryrefslogtreecommitdiffstats
path: root/src/spdk/scripts/vagrant/create_vhost_vm.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/spdk/scripts/vagrant/create_vhost_vm.sh')
-rwxr-xr-xsrc/spdk/scripts/vagrant/create_vhost_vm.sh132
1 files changed, 132 insertions, 0 deletions
diff --git a/src/spdk/scripts/vagrant/create_vhost_vm.sh b/src/spdk/scripts/vagrant/create_vhost_vm.sh
new file mode 100755
index 000000000..5ad416c3b
--- /dev/null
+++ b/src/spdk/scripts/vagrant/create_vhost_vm.sh
@@ -0,0 +1,132 @@
+#!/usr/bin/env bash
+
+# create_vhost_vm.sh
+#
+# Creates a virtual machine image used as a dependency for running vhost tests
+
+set -e
+
+VAGRANT_TARGET="$PWD"
+
+DIR="$(cd "$(dirname $0)" && pwd)"
+SPDK_DIR="$(cd "${DIR}/../../" && pwd)"
+USE_SSH_DIR=""
+MOVE_TO_DEFAULT_DIR=false
+INSTALL_DEPS=false
+
+# The command line help
+display_help() {
+ echo
+ echo " Usage: ${0##*/} <distro>"
+ echo
+ echo " distro = <ubuntu16 | ubuntu18 | fedora31> "
+ echo
+ echo " --use-ssh-dir=<dir path> Use existing spdk_vhost_id_rsa keys from specified directory"
+ echo " for setting up SSH key pair on VM"
+ echo " --install-deps Install SPDK build dependencies on VM. Needed by some of the"
+ echo " vhost and vhost initiator tests. Default: false."
+ echo " --move-to-default-dir Move generated files to default directories used by vhost test scripts."
+ echo " Default: false."
+ echo " --http-proxy Default: \"${SPDK_VAGRANT_HTTP_PROXY}\""
+ echo " -h help"
+ echo
+ echo " Examples:"
+ echo
+}
+
+while getopts ":h-:" opt; do
+ case "${opt}" in
+ -)
+ case "${OPTARG}" in
+ use-ssh-dir=*) USE_SSH_DIR="${OPTARG#*=}" ;;
+ move-to-default-dir) MOVE_TO_DEFAULT_DIR=true ;;
+ install-deps) INSTALL_DEPS=true ;;
+ http-proxy=*)
+ http_proxy=$OPTARG
+ https_proxy=$http_proxy
+ SPDK_VAGRANT_HTTP_PROXY="${http_proxy}"
+ ;;
+ *)
+ echo " Invalid argument -$OPTARG" >&2
+ echo " Try \"$0 -h\"" >&2
+ exit 1
+ ;;
+ esac
+ ;;
+ h)
+ display_help >&2
+ exit 0
+ ;;
+ *)
+ echo " Invalid argument: -$OPTARG" >&2
+ echo " Try: \"$0 -h\"" >&2
+ exit 1
+ ;;
+ esac
+done
+export SPDK_DIR
+export SPDK_VAGRANT_HTTP_PROXY
+export INSTALL_DEPS
+
+shift "$((OPTIND - 1))" # Discard the options and sentinel --
+
+SPDK_VAGRANT_DISTRO="$*"
+
+case "${SPDK_VAGRANT_DISTRO}" in
+ ubuntu16)
+ export SPDK_VAGRANT_DISTRO
+ ;;
+ ubuntu18)
+ export SPDK_VAGRANT_DISTRO
+ ;;
+ fedora31)
+ export SPDK_VAGRANT_DISTRO
+ ;;
+ *)
+ echo " Invalid argument \"${SPDK_VAGRANT_DISTRO}\""
+ echo " Try: \"$0 -h\"" >&2
+ exit 1
+ ;;
+esac
+
+mkdir -vp "${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}"
+cp ${DIR}/Vagrantfile_vhost_vm ${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}/Vagrantfile
+
+# Copy or generate SSH keys to the VM
+mkdir -vp "${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}/ssh_keys"
+
+if [[ -n $USE_SSH_DIR ]]; then
+ cp ${USE_SSH_DIR}/spdk_vhost_id_rsa* "${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}/ssh_keys"
+else
+ ssh-keygen -f "${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}/ssh_keys/spdk_vhost_id_rsa" -N "" -q
+fi
+export SPDK_VAGRANT_SSH_KEY="${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}/ssh_keys/spdk_vhost_id_rsa"
+
+pushd "${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}"
+if [ -n "${http_proxy}" ]; then
+ export http_proxy
+ export https_proxy
+ if vagrant plugin list | grep -q vagrant-proxyconf; then
+ echo "vagrant-proxyconf already installed... skipping"
+ else
+ vagrant plugin install vagrant-proxyconf
+ fi
+fi
+VBoxManage setproperty machinefolder "${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}"
+vagrant up
+vagrant halt
+VBoxManage setproperty machinefolder default
+
+# Convert Vbox .vmkd image to qcow2
+vmdk_img=$(find ${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO} -name "*.vmdk")
+qemu-img convert -f vmdk -O qcow2 ${vmdk_img} ${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}/vhost_vm_image.qcow2
+
+if $MOVE_TO_DEFAULT_DIR; then
+ sudo mkdir -p /home/sys_sgsw
+ sudo mv -f ${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}/vhost_vm_image.qcow2 /home/sys_sgsw/vhost_vm_image.qcow2
+ sudo mv -f ${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}/ssh_keys/spdk_vhost_id_rsa* ~/.ssh/
+fi
+
+echo ""
+echo " SUCCESS!"
+echo ""