dovetail: docker running method improvement 99/25599/3
authorMatthewLi <matthew.lijun@huawei.com>
Wed, 7 Dec 2016 07:32:05 +0000 (02:32 -0500)
committerMatthewLi <matthew.lijun@huawei.com>
Wed, 7 Dec 2016 08:32:00 +0000 (03:32 -0500)
JIRA: DOVETAIL-152

Change-Id: Ib0ab73278b4a6dad83323647728fc2769cee3839
Signed-off-by: MatthewLi <matthew.lijun@huawei.com>
jjb/dovetail/dovetail-cleanup.sh
jjb/dovetail/dovetail-run.sh

index 297222b..f215278 100755 (executable)
@@ -1,20 +1,21 @@
 #!/bin/bash
+
 [[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
 
 echo "Cleaning up docker containers/images..."
 # Remove previous running containers if exist
 if [[ ! -z $(docker ps -a | grep opnfv/dovetail) ]]; then
     echo "Removing existing opnfv/dovetail containers..."
-    docker ps -a | grep opnfv/dovetail | awk '{print $1}' | xargs docker rm -f >$redirect
+    docker ps -a | grep opnfv/dovetail | awk '{print $1}' | xargs docker rm -f >${redirect}
 fi
 
 # Remove existing images if exist
 if [[ ! -z $(docker images | grep opnfv/dovetail) ]]; then
     echo "Docker images to remove:"
-    docker images | head -1 && docker images | grep opnfv/dovetail
+    docker images | head -1 && docker images | grep opnfv/dovetail >${redirect}
     image_tags=($(docker images | grep opnfv/dovetail | awk '{print $2}'))
     for tag in "${image_tags[@]}"; do
         echo "Removing docker image opnfv/dovetail:$tag..."
-        docker rmi opnfv/dovetail:$tag >$redirect
+        docker rmi opnfv/dovetail:$tag >${redirect}
     done
 fi
index 9186347..a41a989 100755 (executable)
@@ -22,7 +22,7 @@ if [[ ${INSTALLER_TYPE} == 'apex' ]]; then
 elif [[ ${INSTALLER_TYPE} == 'joid' ]]; then
     # If production lab then creds may be retrieved dynamically
     # creds are on the jumphost, always in the same folder
-    labconfig="-v $LAB_CONFIG/admin-openrc:/home/opnfv/openrc"
+    labconfig="-v $LAB_CONFIG/admin-openrc:/home/opnfv/functest/conf/openstack.creds"
     # If dev lab, credentials may not be the default ones, just provide a path to put them into docker
     # replace the default one by the customized one provided by jenkins config
 fi
@@ -32,25 +32,44 @@ if ! sudo iptables -C FORWARD -j RETURN 2> ${redirect} || ! sudo iptables -L FOR
     sudo iptables -I FORWARD -j RETURN
 fi
 
-opts="--privileged=true --rm"
+opts="--privileged=true -id"
 envs="-e CI_DEBUG=${CI_DEBUG} \
       -e INSTALLER_TYPE=${INSTALLER_TYPE} \
       -e INSTALLER_IP=${INSTALLER_IP} \
       -e DEPLOY_SCENARIO=${DEPLOY_SCENARIO} \
-      -e DEPLOY_TYPE=${DEPLOY_TYPE} \
-      -v /var/run/docker.sock:/var/run/docker.sock \
-      -v /home/opnfv/dovetail/results:/home/opnfv/dovetail/results"
+      -e DEPLOY_TYPE=${DEPLOY_TYPE}"
+results_envs="-v /var/run/docker.sock:/var/run/docker.sock \
+              -v /home/opnfv/dovetail/results:/home/opnfv/dovetail/results"
 
 # Pull the image with correct tag
 echo "Dovetail: Pulling image opnfv/dovetail:${DOCKER_TAG}"
 docker pull opnfv/dovetail:$DOCKER_TAG >$redirect
 
-# Run docker
-echo "Dovetail: docker running..."
-sudo docker run ${opts} ${envs} ${labconfig} ${sshkey} opnfv/dovetail:${DOCKER_TAG} \
-"python ${DOVETAIL_REPO_DIR}/dovetail/run.py --testsuite ${TESTSUITE}"
+cmd="sudo docker run ${opts} ${envs} ${results_envs} ${labconfig} ${sshkey} \
+     opnfv/dovetail:${DOCKER_TAG} /bin/bash"
+echo "Dovetail: running docker run command: ${cmd}"
+${cmd} >${redirect}
+sleep 5
+container_id=$(docker ps | grep "opnfv/dovetail:${DOCKER_TAG}" | awk '{print $1}' | head -1)
+echo "Container ID=${container_id}"
+if [ -z ${container_id} ]; then
+    echo "Cannot find opnfv/dovetail container ID ${container_id}. Please check if it is existing."
+    docker ps -a
+    exit 1
+fi
+echo "COntainer Start: docker start ${container_id}"
+docker start ${container_id}
+sleep 5
+docker ps >${redirect}
+if [ $(docker ps | grep "opnfv/dovetail:${DOCKER_TAG}" | wc -l) == 0 ]; then
+    echo "The container opnfv/dovetail with ID=${container_id} has not been properly started. Exiting..."
+    exit 1
+fi
+
+exec_cmd="python ${DOVETAIL_REPO_DIR}/dovetail/run.py --testsuite ${TESTSUITE}"
+echo "Container exec command: ${exec_cmd}"
+docker exec ${container_id} ${exec_cmd}
 
-echo "Dovetail: store results..."
 sudo cp -r ${DOVETAIL_REPO_DIR}/results ./
 #To make sure the file owner is jenkins, for the copied results files in the above line
 #if not, there will be error when next time to wipe workspace