Add cli options to cleanup-images

Allow remove all kolla images
Allow remove specific kolla version images
Allow remove dangling images
Allow remove single images, all images matched

Usage examples:
   * cleanup-images --all
     - Remove all kolla images
   * cleanup-images --image-version 4.0.0
     - Remove all images matching 4.0.0 kolla_version
   * cleanup-images --dangling
     - Remove all dangling images
   * cleanup-images --image nova
     - Remove all nova images
   * cleanup-images --image nova-scheduler
     - Only remove nova-scheduler image

Implements: blueprint add-cleanup-images-cli-options
Change-Id: I997272098879350e13e0ac00762ae3485e618355
This commit is contained in:
Eduardo Gonzalez 2017-02-09 12:46:30 +00:00
parent e26f9f876d
commit f6f99db4a2
4 changed files with 76 additions and 8 deletions

View File

@ -1,5 +1,5 @@
---
- name: Removing Kolla images
command: /tmp/kolla-cleanup/tools/cleanup-images
command: /tmp/kolla-cleanup/tools/cleanup-images --all
when:
- destroy_include_images | bool

View File

@ -79,7 +79,7 @@ triggered on the Docker host when the neutron-agents containers are launched.
This can be useful when you want to do a new clean deployment, particularly one
changing the network topology.
``tools/cleanup-images`` is used to remove all Docker images built by Kolla
``tools/cleanup-images --all`` is used to remove all Docker images built by Kolla
from the local Docker cache.
``kolla-ansible -i INVENTORY deploy`` is used to deploy and start all Kolla

View File

@ -6,11 +6,73 @@ cd "$(dirname "$REAL_PATH")/.."
. tools/validate-docker-execute.sh
KOLLA_IMAGES=$(docker images -a --filter "label=kolla_version" --format "{{.ID}}")
function process_cmd {
if [[ -z "$KOLLA_IMAGES" ]]; then
echo "No images to cleanup, exit now."
exit 0
fi
if [[ -z "$KOLLA_IMAGES" ]]; then
echo "No images to cleanup, exit now."
exit 0
fi
$CMD
docker rmi -f $@ $KOLLA_IMAGES
if [[ $? -ne 0 ]]; then
echo "Command failed $CMD"
exit 1
fi
}
function usage {
cat <<EOF
Usage: $0 COMMAND [options]
Options:
--all, -a Remove all kolla images
--dangling Remove orphaned images
--help, -h Show this usage information
--image, -i <image> Delete selected images
--image-version <image_version> Set Kolla image version
EOF
}
SHORT_OPTS="ahi:"
LONG_OPTS="all,dangling,help,image:,image-version:"
ARGS=$(getopt -o "${SHORT_OPTS}" -l "${LONG_OPTS}" --name "$0" -- "$@") || { usage >&2; exit 2; }
eval set -- "$ARGS"
case "$1" in
(--all|-a)
KOLLA_IMAGES="$(docker images -a --filter "label=kolla_version" --format "{{.ID}}")"
shift
;;
(--dangling)
KOLLA_IMAGES="$(docker images -a --filter dangling=true --format "{{.ID}}")"
shift
;;
(--image|-i)
KOLLA_IMAGES="$(docker images -a --filter "label=kolla_version" --format "{{.Repository}}\t{{.ID}}" | grep -E "$2" | awk '{print $2}')"
shift 2
;;
(--image-version)
KOLLA_IMAGES="$(docker images -a --filter "label=kolla_version=${2}" --format "{{.ID}}")"
shift 2
;;
(--help|-h)
usage
shift
exit 0
;;
(--)
shift
break
;;
esac
CMD="docker rmi -f $@ $KOLLA_IMAGES"
process_cmd

View File

@ -0,0 +1,6 @@
---
features:
- |
Cleanup-images support advanced features such as remove all kolla
images, remove dangling images, delete user selected images and
remove images from specific kolla_version.