summaryrefslogtreecommitdiffstats
path: root/nfvbenchvm/dib/build-image.sh
diff options
context:
space:
mode:
authorahothan <ahothan@cisco.com>2019-05-31 15:06:39 -0700
committerahothan <ahothan@cisco.com>2019-06-08 08:15:57 -0700
commit14ef61de6946048e98ce74c911435faf25395b8c (patch)
tree34cee0672dfc0697a71753a26122f806d083d472 /nfvbenchvm/dib/build-image.sh
parent4453818e3af2143e099a5f578c4a73b25abbfe58 (diff)
Update VM build3.4.0
build VM to adapt to new ci/cd workflow. The VM image is built on gerrit verify when the image is not present in google storage. It is not uploaded yet on google storage. The build + upload of the new VM image is done after the review is merged. For details on how this is done, refer to ./jjb/nfvbench/nfvbench.yaml in the opnfv releng repository. Change-Id: I147d4ee6d101e9f2a7cf55fadd637c7fc89467a0 Signed-off-by: ahothan <ahothan@cisco.com>
Diffstat (limited to 'nfvbenchvm/dib/build-image.sh')
-rwxr-xr-xnfvbenchvm/dib/build-image.sh89
1 files changed, 63 insertions, 26 deletions
diff --git a/nfvbenchvm/dib/build-image.sh b/nfvbenchvm/dib/build-image.sh
index b021484..9acb028 100755
--- a/nfvbenchvm/dib/build-image.sh
+++ b/nfvbenchvm/dib/build-image.sh
@@ -5,6 +5,25 @@
# The following packages must be installed prior to using this script:
# sudo apt-get -y install python-virtualenv qemu-utils kpartx
+usage() {
+ echo "Usage: $0 [-v]"
+ echo " -v verify only (build but do not push to google storage)"
+ exit 1
+}
+
+# Takes only 1 optional argument
+if [ $# -gt 1 ]; then
+ usage
+fi
+verify_only=0
+
+if [ $# -eq 1 ]; then
+ if [ $1 = "-v" ]; then
+ verify_only=1
+ else
+ usage
+ fi
+fi
set -e
# Artifact URL
@@ -15,49 +34,67 @@ __version__=0.8
image_name=nfvbenchvm_centos-$__version__
# if image exists skip building
+echo "Checking if image exists in google storage..."
if command -v gsutil >/dev/null; then
if gsutil -q stat gs://$gs_url/$image_name.qcow2; then
echo "Image already exists at http://$gs_url/$image_name.qcow2"
+ echo "Build is skipped"
exit 0
fi
+ echo "Image does not exist in google storage, starting build..."
+ echo
else
echo "Cannot check image availability in OPNFV artifact repository (gsutil not available)"
fi
-# install diskimage-builder
-if [ -d dib-venv ]; then
- . dib-venv/bin/activate
+# check if image is already built locally
+if [ -f $image_name.qcow2 ]; then
+ echo "Image $image_name.qcow2 already exists locally"
else
- virtualenv dib-venv
- . dib-venv/bin/activate
- pip install diskimage-builder
-fi
-# Add nfvbenchvm_centos elements directory to the DIB elements path
-export ELEMENTS_PATH=`pwd`/elements
+ # install diskimage-builder
+ if [ -d dib-venv ]; then
+ . dib-venv/bin/activate
+ else
+ virtualenv dib-venv
+ . dib-venv/bin/activate
+ pip install diskimage-builder
+ 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
-# 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"
-# 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
-# Configure VPP REPO
-export DIB_YUM_REPO_CONF=$ELEMENTS_PATH/nfvbenchvm/fdio-release.repo
+ # Use ELRepo to have latest kernel
+ export DIB_USE_ELREPO_KERNEL=True
-# Use ELRepo to have latest kernel
-export DIB_USE_ELREPO_KERNEL=True
+ echo "Building $image_name.qcow2..."
+ time disk-image-create -o $image_name centos7 nfvbenchvm
+fi
-echo "Building $image_name.qcow2..."
-time disk-image-create -o $image_name centos7 nfvbenchvm
ls -l $image_name.qcow2
-if command -v gsutil >/dev/null; then
- echo "Uploading $image_name.qcow2..."
- gsutil cp $image_name.qcow2 gs://$gs_url/$image_name.qcow2
- echo "You can access to image at http://$gs_url/$image_name.qcow2"
+
+if [ $verify_only -eq 1 ]; then
+ echo "Image verification SUCCESS"
+ echo "NO upload to google storage (-v)"
else
- echo "Cannot upload new image to the OPNFV artifact repository (gsutil not available)"
+ if command -v gsutil >/dev/null; then
+ echo "Uploading $image_name.qcow2..."
+ gsutil cp $image_name.qcow2 gs://$gs_url/$image_name.qcow2
+ echo "You can access to image at http://$gs_url/$image_name.qcow2"
+ else
+ echo "Cannot upload new image to the OPNFV artifact repository (gsutil not available)"
+ exit 1
+ fi
fi