Use docker image id instead of tag to remove yardstick Docker image with tag:<None> 15/31315/4
authorJingLu5 <lvjing5@huawei.com>
Wed, 22 Mar 2017 07:07:21 +0000 (07:07 +0000)
committerJingLu5 <lvjing5@huawei.com>
Fri, 24 Mar 2017 01:56:54 +0000 (01:56 +0000)
JIRA: RELENG-194

Now, in CI, bottlenecks job will pull yardstick Docker image again, which may
cause the tag of the Docker image previous used by Yardstick changed to 'None'.
Using 'None' tag to remove Docker image will cause error.

Change-Id: I5c63c6c515ede5da4f6a40be6bb22fa6771f8f09
Signed-off-by: JingLu5 <lvjing5@huawei.com>
jjb/yardstick/yardstick-cleanup.sh

index 4e6f7d6..51455b5 100755 (executable)
@@ -1,6 +1,20 @@
 #!/bin/bash
 [[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null"
 
+# Remove containers along with image opnfv/yardstick*:<none>
+dangling_images=($(docker images -f "dangling=true" | grep opnfv/yardstick | awk '{print $3}'))
+if [[ -n ${dangling_images} ]]; then
+    echo "Removing opnfv/yardstick:<none> images and their containers..."
+    for image_id in "${dangling_images[@]}"; do
+        echo "      Removing image_id: $image_id and its containers"
+        containers=$(docker ps -a | grep $image_id | awk '{print $1}')
+        if [[ -n "$containers" ]];then
+            docker rm -f $containers >${redirect}
+        fi
+        docker rmi $image_id >${redirect}
+    done
+fi
+
 echo "Cleaning up docker containers/images..."
 # Remove previous running containers if exist
 if [[ ! -z $(docker ps -a | grep opnfv/yardstick) ]]; then
@@ -17,6 +31,6 @@ if [[ ! -z $(docker images | grep opnfv/yardstick) ]]; then
     for tag in "${image_tags[@]}"; do
         echo "Removing docker image opnfv/yardstick:$tag..."
         docker rmi opnfv/yardstick:$tag >$redirect
-
     done
 fi
+