OPENSTACKRC="/var/snap/microstack/common/etc/microstack.rc"
REGISTRY="localhost:32000"
ROOTDIR="$( cd "${DIR}/../../" &> /dev/null && pwd)"
+OSM_TESTS_IMAGE_TAG="devel"
function check_arguments(){
while [ $# -gt 0 ] ; do
--registry) REGISTRY="$2" && shift;;
--robot-local-mounts) ROBOT_LOCAL=YES ;;
--run-tests) TESTS=YES ;;
+ --vim-vca) VIM_VCA="$2" && shift;;
+ --osm-tests-image-tag) OSM_TESTS_IMAGE_TAG="$2" && shift;;
stage-2) STAGE_2='stage_2 ${TARGET_MODULE}' ;;
stage-3) STAGE_3='stage_3 ${TARGET_MODULE}' ;;
registry-push) REGISTRY_PUSH='local_registry_push ${TARGET_MODULE}' ;;
OPTIONS:
--help display this help message
--debug enable set -x for this script
- --install-local-regitstry install and enable Microk8s local registry on port 32000
+ --install-local-registry install and enable Microk8s local registry on port 32000
--install-microstack install Microstack and configure to run robot tests
--install-qhttpd install QHTTPD as an HTTP server on port ${HTTPPORT}
--kubecfg path to kubecfg.yaml (uses Charmed OSM by default)
--openstackrc path to Openstack RC file (uses Microstack by default)
--registry use this alternate docker registry
--run-tests run stage 2 tests
+ --vim-vca name of the a vca registered in OSM to use in the VIM account
+ --osm-tests-image-tag tag to be used in the osm/tests docker image
stage-2 run the stage 2 build
stage-3 run the stage 3 build
registry-push push to the local registry
EOF
}
+function print_section() {
+ echo "$@"
+}
+
function install_local_registry() {
sudo snap install microk8s --classic
microk8s status --wait-ready
}
function stage_2() {
- cat << EOF
-=======================================================================================
-Performing Stage 2
-=======================================================================================
-EOF
+ print_section "Performing Stage 2"
MODULES="common devops IM LCM MON N2VC NBI NG-UI osmclient PLA POL RO tests"
if [ ! -z ${1} ] ; then
POSSIBLE_MODULES=$(echo ${1} | sed "s/,/ /g")
done
MODULES=${POSSIBLE_MODULES}
else
- cat << EOF
-=======================================================================================
-Cleaning HTTP Directory for full build
-=======================================================================================
-EOF
+ print_section "Cleaning HTTP Directory for full build"
rm -fv ${HTTPDDIR}/*.deb
fi
echo "Directory ${ROOTDIR}/${MODULE} does not exist"
exit 1
fi
- cat << EOF
-=======================================================================================
-Building ${MODULE}
-=======================================================================================
-EOF
+ print_section "Building ${MODULE}"
cd ${MODULE}
find . -name '*.deb' -exec rm -v {} \;
docker build ${NO_CACHE} -t ${MODULE,,}-stage2 .
useradd -o -u $(id -u) -d /build -r -g $USER $USER ;
runuser $USER -c devops-stages/${STAGE}"
if [ $? -ne 0 ] ; then
- cat << EOF
-=======================================================================================
-Failed to build ${MODULE}
-=======================================================================================
-EOF
+ print_section "Failed to build ${MODULE}"
exit 1
fi
done
}
function stage_3() {
- cat << EOF
-=======================================================================================
-Performing Stage 3
-=======================================================================================
-EOF
+ print_section "Performing Stage 3"
MODULES=$(_find_module_dockerfile $1)
BUILD_ARGS=""
HOSTIP=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+')
echo "Directory ${ROOTDIR}/${MODULE} does not exist"
exit 1
fi
- cat << EOF
-=======================================================================================
-Building ${MODULE}
-=======================================================================================
-EOF
+ print_section "Building ${MODULE}"
cd ${MODULE}
MODULE=${MODULE,,}
docker build ${NO_CACHE} -t opensourcemano/${MODULE}:devel ${BUILD_ARGS} .
if [ $? -ne 0 ] ; then
- cat << EOF
-=======================================================================================
-Failed to build ${MODULE}
-=======================================================================================
-EOF
+ print_section "Failed to build ${MODULE}"
exit 1
fi
done
}
function local_registry_push() {
- cat << EOF
-=======================================================================================
-Pushing to local registry
-=======================================================================================
-EOF
+ print_section "Pushing to local registry"
cd "${ROOTDIR}/devops/docker"
MODULES=`find . -name Dockerfile -printf '%h\n' |sed 's|\./||' |sort |tr '\n' ' '`
if [ ! -z ${1} ] ; then
export PROMETHEUS_HOSTNAME=$(juju config -m osm prometheus site_url | sed "s/http.*\?:\/\///")
export PROMETHEUS_PORT=80
export JUJU_PASSWORD=`juju gui 2>&1 | grep password | awk '{print $2}'`
- export HOSTIP=$(echo $PROMETHEUS_HOSTNAME | sed "s/prometheus.//" | sed "s/.xip.io//")
+ export HOSTIP=$(echo $PROMETHEUS_HOSTNAME | sed "s/prometheus.//" | sed "s/.nip.io//")
rm robot-systest.cfg
for line in `env | grep "^OS_" | sort` ; do echo $line >> robot-systest.cfg ; done
cat << EOF > robot.etc.hosts
127.0.0.1 localhost
-${HOSTIP} prometheus.${HOSTIP}.xip.io nbi.${HOSTIP}.xip.io
+${HOSTIP} prometheus.${HOSTIP}.nip.io nbi.${HOSTIP}.nip.io
EOF
cat << EOF > clouds.yaml
clouds:
EOF
VIM_AUTH_URL=$(osm vim-show osm | grep vim_url | awk '{print $4}' | tr -d \")
- if [ ! -z ${VIM_AUTH_URL} -a "$OS_AUTH_URL" != "${VIM_AUTH_URL}" ] ; then
+ if [[ ! -z ${VIM_AUTH_URL} && "$OS_AUTH_URL" != "${VIM_AUTH_URL}" ]] ; then
echo "Deleting existing VIM osm as auth URLs have changed"
osm vim-delete osm
fi
if ! osm vim-show osm &> /dev/null ; then
echo "Creating VIM osm"
- osm vim-create --name osm --user "$OS_USERNAME" --password "$OS_PASSWORD" \
+ if [ -v VIM_VCA ]; then
+ VCA_OPT="--vca $VIM_VCA"
+ fi
+ osm vim-create --name osm $VCA_OPT --user "$OS_USERNAME" --password "$OS_PASSWORD" \
--auth_url "$OS_AUTH_URL" --tenant "$OS_USERNAME" --account_type openstack \
--config='{use_floating_ip: True,
management_network_name: osm-ext}'
-v "${ROOTDIR}/tests/robot-systest/lib":${LOCAL_MOUNT_1} \
-v "${ROOTDIR}/tests/robot-systest/resources":${LOCAL_MOUNT_2} \
-v "${ROOTDIR}/tests/robot-systest/testsuite":${LOCAL_MOUNT_3} \
- opensourcemano/tests:devel
+ opensourcemano/tests:$OSM_TESTS_IMAGE_TAG
}
function update_osm_module() {