Update VM build 81/67981/3 3.4.0
authorahothan <ahothan@cisco.com>
Fri, 31 May 2019 22:06:39 +0000 (15:06 -0700)
committerahothan <ahothan@cisco.com>
Sat, 8 Jun 2019 15:15:57 +0000 (08:15 -0700)
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>
docs/development/building/build.rst
docs/release/release-notes/release-notes.rst
nfvbenchvm/dib/build-image.sh
nfvbenchvm/dib/verify-image.sh [new file with mode: 0644]

index 52a8a0e..e195add 100644 (file)
@@ -39,8 +39,10 @@ The version strings to change are located in 2 files:
 
 Building and uploading the VM image
 -----------------------------------
-The VM image is built and uploaded to Google storage from the CI/CD whenever the
-commit text of a gerrit review contains the word "buildvm".
+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.
 
@@ -61,7 +63,7 @@ NFVbench code has changed:
 VM code has changed:
 
 - update VM version in the 2 locations
-- commit VM changes with gerrit and add "buildvm" in your commit message to trigger VM build and publish to google storage
+- commit VM changes with gerrit to trigger VM build and publication to google storage
 - apply a new semver tag to trigger the container image build/publication
 
 To increase the TRex version:
index 6feeffe..1dea9ac 100644 (file)
@@ -4,6 +4,16 @@
 
 RELEASE NOTES
 +++++++++++++
+Release 3.3.0
+=============
+
+Major release highlights:
+
+- VxLAN support
+- test VM can now have idle interfaces
+- test VM can be launched with multiqueue enabled
+- upgrade to TRex v2.56
+
 
 Release 2.0
 ===========
index b021484..9acb028 100755 (executable)
@@ -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
diff --git a/nfvbenchvm/dib/verify-image.sh b/nfvbenchvm/dib/verify-image.sh
new file mode 100644 (file)
index 0000000..0a2090d
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/bash
+#
+# A shell script to verify that a VM image is present in google storage
+# If not present in google storage, verify it is present locally
+# If not present locally, build it but do not uplaod to google storage
+
+bash build-image.sh -v