set -o nounset
set -o pipefail
-APEX_PKGS="common undercloud opendaylight-sfc onos"
+APEX_PKGS="common undercloud onos"
+IPV6_FLAG=False
# log info to console
echo "Starting the Apex virtual deployment."
sudo yum -y install wget
fi
-if [[ $BUILD_DIRECTORY == *verify* ]]; then
+if [[ "$BUILD_DIRECTORY" == *verify* || "$BUILD_DIRECTORY" == *csit* ]]; then
# Build is from a verify, use local build artifacts (not RPMs)
cd $WORKSPACE/../${BUILD_DIRECTORY}
WORKSPACE=$(pwd)
fi
# source the file so we get OPNFV vars
source opnfv.properties
- RPM_INSTALL_PATH=$(echo $OPNFV_RPM_URL | sed 's/'"$(basename $OPNFV_RPM_URL)"'//')
- RPM_LIST=$RPM_INSTALL_PATH/$(basename $OPNFV_RPM_URL)
+ RPM_INSTALL_PATH=$(echo "http://"$OPNFV_RPM_URL | sed 's/\/'"$(basename $OPNFV_RPM_URL)"'//')
+ RPM_LIST=${RPM_INSTALL_PATH}/$(basename $OPNFV_RPM_URL)
fi
fi
if [ -z "$DEPLOY_SCENARIO" ]; then
echo "Deploy scenario not set!"
exit 1
+elif [[ "$DEPLOY_SCENARIO" == *gate* ]]; then
+ echo "Detecting Gating scenario..."
+ if [ -z "$GERRIT_EVENT_COMMENT_TEXT" ]; then
+ echo "ERROR: Gate job triggered without comment!"
+ exit 1
+ else
+ DEPLOY_SCENARIO=$(echo ${GERRIT_EVENT_COMMENT_TEXT} | grep start-gate-scenario | grep -Eo 'os-.*$')
+ if [ -z "$DEPLOY_SCENARIO" ]; then
+ echo "ERROR: Unable to detect scenario in Gerrit Comment!"
+ echo "Format of comment to trigger gate should be 'start-gate-scenario: <scenario>'"
+ exit 1
+ else
+ echo "Gate scenario detected: ${DEPLOY_SCENARIO}"
+ fi
+ fi
fi
-# use local build for verify
-if [[ "$BUILD_DIRECTORY" == *verify* ]]; then
+# use local build for verify and csit promote
+if [[ "$BUILD_DIRECTORY" == *verify* || "$BUILD_DIRECTORY" == *csit* ]]; then
if [ ! -e "${WORKSPACE}/build/lib" ]; then
ln -s ${WORKSPACE}/lib ${WORKSPACE}/build/lib
fi
DEPLOY_SETTINGS_DIR="${WORKSPACE}/config/deploy"
NETWORK_SETTINGS_DIR="${WORKSPACE}/config/network"
DEPLOY_CMD="$(pwd)/deploy.sh"
- RESOURCES="${WORKSPACE}/build/images/"
+ RESOURCES="${WORKSPACE}/.build/"
CONFIG="${WORKSPACE}/build"
LIB="${WORKSPACE}/lib"
# Make sure python34 deps are installed
fi
done
+ # Make sure jinja2 is installed
+ for python_pkg in jinja2; do
+ if ! python3.4 -c "import $python_pkg"; then
+ echo "$python_pkg package not found for python3.4, attempting to install..."
+ if ! sudo easy_install-3.4 $python_pkg; then
+ echo -e "Failed to install $python_pkg package for python3.4"
+ exit 1
+ fi
+ fi
+ done
+
+ # Make sure ipxe-roms-qemu package is updated to latest.
+ # This package is needed for multi virtio nic PXE boot in virtual environment.
+ sudo yum update -y ipxe-roms-qemu
+
if [ -z ${PYTHONPATH:-} ]; then
export PYTHONPATH=${WORKSPACE}/lib/python
else
DEPLOY_CMD="CONFIG=${CONFIG} RESOURCES=${RESOURCES} LIB=${LIB} ${DEPLOY_CMD}"
if [ "$OPNFV_CLEAN" == 'yes' ]; then
- if [[ "$BUILD_DIRECTORY" == *verify* ]]; then
- sudo CONFIG=${CONFIG} LIB=${LIB} ./clean.sh
+ if sudo test -e '/root/inventory/pod_settings.yaml'; then
+ clean_opts='-i /root/inventory/pod_settings.yaml'
+ else
+ clean_opts=''
+ fi
+ if [[ "$BUILD_DIRECTORY" == *verify* || "$BUILD_DIRECTORY" == *csit* ]]; then
+ sudo CONFIG=${CONFIG} LIB=${LIB} ./clean.sh ${clean_opts}
else
- sudo CONFIG=${CONFIG} LIB=${LIB} opnfv-clean
+ sudo CONFIG=${CONFIG} LIB=${LIB} opnfv-clean ${clean_opts}
fi
fi
+if echo ${DEPLOY_SCENARIO} | grep ipv6; then
+ IPV6_FLAG=True
+ DEPLOY_SCENARIO=$(echo ${DEPLOY_SCENARIO} | sed 's/-ipv6//')
+ echo "INFO: IPV6 Enabled"
+fi
+
echo "Deploy Scenario set to ${DEPLOY_SCENARIO}"
DEPLOY_FILE="${DEPLOY_SETTINGS_DIR}/${DEPLOY_SCENARIO}.yaml"
if [[ "$JOB_NAME" == *virtual* ]]; then
# settings for virtual deployment
- NETWORK_FILE="${NETWORK_SETTINGS_DIR}/network_settings.yaml"
+ if [ "$IPV6_FLAG" == "True" ]; then
+ NETWORK_FILE="${NETWORK_SETTINGS_DIR}/network_settings_v6.yaml"
+ elif echo ${DEPLOY_SCENARIO} | grep fdio; then
+ NETWORK_FILE="${NETWORK_SETTINGS_DIR}/network_settings_vpp.yaml"
+ else
+ NETWORK_FILE="${NETWORK_SETTINGS_DIR}/network_settings.yaml"
+ fi
DEPLOY_CMD="${DEPLOY_CMD} -v"
+ if [[ "${DEPLOY_SCENARIO}" =~ fdio|ovs ]]; then
+ DEPLOY_CMD="${DEPLOY_CMD} --virtual-ram 14"
+ fi
+ if [[ "$JOB_NAME" == *csit* ]]; then
+ DEPLOY_CMD="${DEPLOY_CMD} -e csit-environment.yaml --virtual-computes 2"
+ fi
else
# settings for bare metal deployment
- NETWORK_FILE="/root/network/network_settings.yaml"
+ if [ "$IPV6_FLAG" == "True" ]; then
+ NETWORK_FILE="/root/network/network_settings_v6.yaml"
+ elif [[ "$JOB_NAME" == *master* ]]; then
+ NETWORK_FILE="/root/network/network_settings-master.yaml"
+ else
+ NETWORK_FILE="/root/network/network_settings.yaml"
+ fi
INVENTORY_FILE="/root/inventory/pod_settings.yaml"
- if [ ! -e "$INVENTORY_FILE" ]; then
+ if ! sudo test -e "$INVENTORY_FILE"; then
echo "ERROR: Required settings file missing: Inventory settings file ${INVENTORY_FILE}"
+ exit 1
fi
# include inventory file for bare metal deployment
DEPLOY_CMD="${DEPLOY_CMD} -i ${INVENTORY_FILE}"
fi
# Check that network settings file exists
-if [ ! -e "$NETWORK_FILE" ]; then
- echo "ERROR: Required settings file missing for Network Settings"
- echo "Network settings file: ${NETWORK_FILE}"
+if ! sudo test -e "$NETWORK_FILE"; then
+ echo "ERROR: Required settings file missing: Network Settings file ${NETWORK_FILE}"
exit 1
fi
# start deployment
sudo ${DEPLOY_CMD} -d ${DEPLOY_FILE} -n ${NETWORK_FILE} --debug
+if [[ "$JOB_NAME" == *csit* ]]; then
+ echo "CSIT job: setting host route for floating ip routing"
+ # csit route to allow docker container to reach floating ips
+ UNDERCLOUD=$(sudo virsh domifaddr undercloud | grep -Eo "[0-9\.]+{3}[0-9]+")
+ if sudo route | grep 192.168.37.128 > /dev/null; then
+ sudo route del -net 192.168.37.128 netmask 255.255.255.128
+ fi
+ sudo route add -net 192.168.37.128 netmask 255.255.255.128 gw ${UNDERCLOUD}
+fi
+
echo
echo "--------------------------------------------------------"
echo "Done!"