Extending molecule test to playbooks

Review should also execute molecule tests for ansible/test/play-xxx when anything in /ansible/test has been changed

Change-Id: I9a106a1c141b1053db6ac892e2dcecd4e646fd5b
Issue-ID: OOM-1801
Signed-off-by: Mateusz Pilat <m.pilat@partner.samsung.com>
diff --git a/ansible/test/bin/ci-molecule.sh b/ansible/test/bin/ci-molecule.sh
index be598a4..7859c8d 100755
--- a/ansible/test/bin/ci-molecule.sh
+++ b/ansible/test/bin/ci-molecule.sh
@@ -30,7 +30,7 @@
 LOCAL_PATH=$(readlink -f "$SCRIPT_DIR")
 
 ROLE_PATH=$1
-MOLECULE_CONTAINER=${MOLECULE_CONTAINER:-true}
+MOLECULE_CONTAINER=${MOLECULE_CONTAINER:-false}
 
 echo "Build all pre-build images"
 ${LOCAL_PATH}/../images/docker/build-all.sh
diff --git a/ansible/test/bin/install-molecule.sh b/ansible/test/bin/install-molecule.sh
index f5350df..72b0793 100755
--- a/ansible/test/bin/install-molecule.sh
+++ b/ansible/test/bin/install-molecule.sh
@@ -33,7 +33,7 @@
 VENV_PATH=${VENV_PATH:-~/molecule_venv}
 
 # Create virtual env
-python3 -m venv ${VENV_PATH}
+python3.6 -m venv ${VENV_PATH}
 
 # Activate virtual env
 source ${VENV_PATH}/bin/activate
diff --git a/ansible/test/molecule-docker/Dockerfile b/ansible/test/molecule-docker/Dockerfile
index 6181731..5c2343c 100644
--- a/ansible/test/molecule-docker/Dockerfile
+++ b/ansible/test/molecule-docker/Dockerfile
@@ -14,7 +14,7 @@
     addgroup -g ${GROUP_ID} ${DOCKER_USER} && \
     adduser -D -u ${USER_ID} -G ${DOCKER_USER} ${DOCKER_USER} && \
     # Add user to same docker group as in docker_host to be able to use docker driver as sudo
-    groupadd docker-host -g ${DOCKER_GROUP_ID} && \
+    groupadd docker-host -f -g ${DOCKER_GROUP_ID} && \
     usermod -aG ${DOCKER_GROUP_ID} ${DOCKER_USER} \
 ;fi
 
diff --git a/offline-installer-review.sh b/offline-installer-review.sh
index ab327ad..3530d8f 100755
--- a/offline-installer-review.sh
+++ b/offline-installer-review.sh
@@ -1,5 +1,4 @@
 #! /usr/bin/env bash
-
 #   COPYRIGHT NOTICE STARTS HERE
 #
 #   Copyright 2018 © Samsung Electronics Co., Ltd.
@@ -17,45 +16,80 @@
 #   limitations under the License.
 #
 #   COPYRIGHT NOTICE ENDS HERE
+###############################################################################
+# This script performs Jenkins Change Verification for ONAP Offline Installer #
+# No parameters are expected                                                  #
+###############################################################################
 
-### This script performs Jenkins Change Verification for ONAP Offline Installer
-# No parameters are expected
-###
-#######################################################################
-#                           MAIN                                      #
-#######################################################################
+function prep_ubuntu_16_04_for_molecule() {
+  sudo killall apt apt-get
+  sudo apt-get --assume-yes install software-properties-common
+  sudo add-apt-repository  --yes  ppa:deadsnakes/ppa
+  sudo apt update
+  sudo apt install --assume-yes python3.6
+  sudo apt install --assume-yes python3.6-venv
+}
+
+function run_molecule() {
+  prep_ubuntu_16_04_for_molecule
+  local roles=("$@")
+  local MOLECULE_RC
+  for role in ${roles[@]}
+    do
+      if `find ${role} -name molecule.yml | grep -q '.*'`; then
+        ./ansible/test/bin/ci-molecule.sh ${role}
+        MOLECULE_RC=$?
+        if [ ${MOLECULE_RC} -ne "0" ]; then FAILED_ROLES+=(${role}); fi
+      else
+        echo "[WARNING] ---------- THERE ARE NO TESTS DEFINED FOR  ${role} ----------"
+      fi
+  done
+}
+
+#######################################################################$
+#                           MAIN                                      #$
+#######################################################################$
+FAILED_ROLES=()
+
+#if ansible role was changed$$
+ROLE_CHANGES=(`git diff  HEAD^ HEAD --name-only | grep "ansible/role" | cut -f 1-3 -d "/" | sort -u`)
+if [ -z "${ROLE_CHANGES}" ];  then
+  echo "NO ANSIBLE ROLE TESTS REQUIRED"
+else
+  run_molecule "${ROLE_CHANGES[@]}"
+fi
+
 #if ansible was changed
 
-    if `git diff  HEAD^ HEAD --name-only | grep -q "ansible/test"`;
-        then echo "TO DO: FULL ANSIBLE TEST" ;
-    else
-      ROLE_CHANGES=(`git diff  HEAD^ HEAD --name-only | grep "ansible/role" | cut -f 1-3 -d "/" | sort | uniq`)
-      if [ -z "${ROLE_CHANGES}" ];  then
-        echo "NO ANSIBLE TESTS REQUIRED"
-      else
-        for i in ${ROLE_CHANGES[@]}
-        do
-          sudo ./ansible/test/bin/ci-molecule.sh ${i}
-          MOLECULE_RC=$?
-          if [ ${MOLECULE_RC} -ne "0" ]; then echo "MOLECULE TEST FAILED FOR ${i};";exit 1; fi
-        done
-      fi
-    fi
-
+if `git diff  HEAD^ HEAD --name-only | grep -q "ansible/test"`; then
+  PLAYBOOKS=(`find ansible/test -name "play-*"`)
+  run_molecule "${PLAYBOOKS[@]}"
+else
+  echo "NO FULL ANSIBLE TEST REQUIRED";
+fi
 
 #if build was changed
 
-    if `git diff  HEAD^ HEAD --name-only | grep -q "build"`;
-        then echo "TO DO: BUILD TEST" ;
-    else
-        echo "NO BUILD TEST REQUIRED"
-    fi
+if `git diff  HEAD^ HEAD --name-only | grep -q "build"`; then
+  echo "TO DO: BUILD TEST" ;
+else
+  echo "NO BUILD TEST REQUIRED"
+fi
 
 #if documentation was changed
 
-    if `git diff  HEAD^ HEAD --name-only | grep -q "docs"`;
-        then echo "TO DO: DOC TEST";
-    else
-        echo "NO DOC TEST REQUIRED"
-    fi
+if `git diff  HEAD^ HEAD --name-only | grep -q "docs"`; then
+  echo "TO DO: DOC TEST";
+else
+  echo "NO DOC TEST REQUIRED"
+fi
+
+#SUMMARY RESULTS
+
+if [ -z ${FAILED_ROLES}  ]; then
+  echo "All verification steps passed"
+else
+  echo "Verification failed for ${FAILED_ROLES[*]}"
+  exit 1
+fi