aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ansible/roles/destroy/tasks/cleanup_images.yml2
-rw-r--r--doc/operating-kolla.rst2
-rwxr-xr-xtools/cleanup-images74
-rw-r--r--tools/releasenotes/notes/add-cleanup-images-cli-options-dd5c43fcc683b8e0.yaml6
4 files changed, 76 insertions, 8 deletions
diff --git a/ansible/roles/destroy/tasks/cleanup_images.yml b/ansible/roles/destroy/tasks/cleanup_images.yml
index 83ecb6863..ea8f8715c 100644
--- a/ansible/roles/destroy/tasks/cleanup_images.yml
+++ b/ansible/roles/destroy/tasks/cleanup_images.yml
@@ -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
diff --git a/doc/operating-kolla.rst b/doc/operating-kolla.rst
index f8285682d..fd6506cb3 100644
--- a/doc/operating-kolla.rst
+++ b/doc/operating-kolla.rst
@@ -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
diff --git a/tools/cleanup-images b/tools/cleanup-images
index 255c33791..5d2c30f2a 100755
--- a/tools/cleanup-images
+++ b/tools/cleanup-images
@@ -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
diff --git a/tools/releasenotes/notes/add-cleanup-images-cli-options-dd5c43fcc683b8e0.yaml b/tools/releasenotes/notes/add-cleanup-images-cli-options-dd5c43fcc683b8e0.yaml
new file mode 100644
index 000000000..59ada4baf
--- /dev/null
+++ b/tools/releasenotes/notes/add-cleanup-images-cli-options-dd5c43fcc683b8e0.yaml
@@ -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.