+ # check if image is already built locally
+ if [ -f $1.qcow2 ]; then
+ echo "Image $1.qcow2 already exists locally"
+ else
+ # install diskimage-builder
+ if [ -d dib-venv ]; then
+ . dib-venv/bin/activate
+ else
+ python3 -m venv dib-venv
+ . dib-venv/bin/activate
+ pip install diskimage-builder==3.16.0
+ fi
+
+ # Add nfvbenchvm_centos elements directory to the DIB elements path
+ export ELEMENTS_PATH=`pwd`/elements
+
+ # canned user/password for direct login
+ export DIB_DEV_USER_USERNAME=nfvbench
+ export DIB_DEV_USER_PASSWORD=nfvbench
+ export DIB_DEV_USER_PWDLESS_SUDO=Y
+
+ # Set the data sources to have ConfigDrive only
+ export DIB_CLOUD_INIT_DATASOURCES="ConfigDrive"
+
+ # Configure VPP REPO
+ export DIB_YUM_REPO_CONF=$ELEMENTS_PATH/nfvbenchvm/fdio-release.repo
+
+ # Use ELRepo to have latest kernel
+ # only for loop vm image
+ if [ $1 = $loopvm_image_name ]; then
+ export DIB_USE_ELREPO_KERNEL=True
+ export DIB_DEV_IMAGE=loopvm
+ else
+ export DIB_USE_ELREPO_KERNEL=False
+ export DIB_DEV_IMAGE=generator
+ # get current git branch to build image with current code
+ export GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
+ # retrieve TREX_VER from Dockerfile
+ export TREX_VER=$(awk '/ENV TREX_VER/ {print $3}' ../../docker/Dockerfile | sed 's/"//g' | sed 's/\r//g')
+ fi
+
+ # Specify CentOS version
+ export DIB_RELEASE=7
+
+ # Debug on error: if an error occurs during the build, disk-image-create
+ # will drop us in a Bash inside the chroot, and we will be able to inspect
+ # the current state of the image.
+ if [[ "${DEBUG}" == "yes" ]]; then
+ export break=after-error
+ fi
+
+ echo "Building $1.qcow2..."
+ time disk-image-create -o $1 centos nfvbenchvm
+ fi