X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=test-docker%2Ftest-gen-devops.sh;h=3b85166fed7572d54df445e0ae520b7ebaa412d4;hb=6774898f3d83b6c348d6d93e1f5ed0ee7a7b88ef;hp=3d04c1f8ee9df7f9da7eed0bbac3f3055102af28;hpb=57dadcfd0fcf3c8e933602e2fb57f32658d9c845;p=osm%2FRO.git diff --git a/test-docker/test-gen-devops.sh b/test-docker/test-gen-devops.sh index 3d04c1f8..3b85166f 100755 --- a/test-docker/test-gen-devops.sh +++ b/test-docker/test-gen-devops.sh @@ -17,8 +17,17 @@ # contact with: nfvlabs@tid.es ## -# Generates the debian packages; and then generates a docker image base on Dockerfile-devops and update a -# running docker stack with the generated image +[[ "$*" == *--help* ]] && echo \ +"This script tests docker build based on debian packages. It generates a docker image bases on Dockerfile-devops, " \ +"prints package information and if desired updates OSM RO docker with the generated image. +Generated packages are stored at './temp' folder. +Options: + --help show this help + --no-cache Use if found problems looking for packages + --update Use to update OSM, RO docker with this image" && exit 0 + +[[ "$*" == *--no-cache* ]] && no_cache="--no-cache" || no_cache="" +[[ "$*" == *--update* ]] && update_osm="k8s" || update_osm="" HERE=$(dirname $(readlink -f ${BASH_SOURCE[0]})) export RO_BASE=$(dirname $HERE) @@ -29,11 +38,11 @@ rm -rf $HERE/temp/* find $RO_BASE -name "*.pyc" -exec rm {} ";" mkdir -p $HERE/temp -echo -e "\n\n[STAGE 1] Builind dockerfile userd for the package generation" +echo -e "\n\n[STAGE 1] Building dockerfile used for the package generation" docker build $RO_BASE -f $RO_BASE/Dockerfile -t opensourcemano/ro_pkg sleep 2 -echo "[STAGE 1.1] Generting packages inside docker ro_pkg" +echo "[STAGE 1.1] Generating packages inside docker ro_pkg" docker run -d --name ro_pkg opensourcemano/ro_pkg bash -c 'sleep 3600' docker cp $RO_BASE ro_pkg:/RO docker exec ro_pkg bash -c 'cd /RO; ./devops-stages/stage-build.sh' @@ -44,23 +53,33 @@ echo $deb_files echo -e "\n\n[STAGE 1.2] Print package information and copy to '$HERE/temp/'" # print package information and copy to "$HERE/temp/" for deb_file in $deb_files ; do - echo; echo; echo - echo $deb_file info: - echo "===========================" - docker cp ro_pkg:/RO/deb_dist/$deb_file $HERE/temp/ - dpkg -I $HERE/temp/$(basename $deb_file) + echo; echo; echo + echo $deb_file info: + echo "===========================" + docker cp ro_pkg:/RO/deb_dist/$deb_file $HERE/temp/ + dpkg -I $HERE/temp/$(basename $deb_file) done # docker rm -f ro_pkg echo -e "\n\n[STAGE 2] Building docker image opensourcemano/ro:py3_devops based on debian packages" -docker build $HERE -f $HERE/Dockerfile-devops -t opensourcemano/ro:py3_devops || +docker build $HERE -f $HERE/Dockerfile-devops -t opensourcemano/ro:py3_devops $no_cache || ! echo "error generating devops dockerfile" >&2 || exit 1 + +[[ -z "$update_osm" ]] && exit 0 sleep 2 -# docker run -d --name ro_devops opensourcemano/ro:py3_devops -# docker run -ti exec ro_devops ro tenant-list || ! echo "Cannot exec ro client to get server tenants" >&2 || exit 1 echo -e "\n\n[STAGE 3] Update service osm_ro with generated docker image" -docker service update osm_ro --force --image opensourcemano/ro:py3_devops -sleep 2 -docker container prune -f +# try docker swarm. If fails try kebernetes +if docker service update osm_ro --force --image opensourcemano/ro:py3_devops 2>/dev/null +then + sleep 2 + docker container prune -f +elif kubectl -n osm patch deployment ro --patch \ + '{"spec": {"template": {"spec": {"containers": [{"name": "ro", "image": "opensourcemano/ro:py3_devops"}]}}}}' +then + kubectl -n osm scale deployment ro --replicas=0 + kubectl -n osm scale deployment ro --replicas=1 +else + echo "Cannot update OSM" && exit 1 +fi docker service logs osm_ro