summaryrefslogtreecommitdiff
path: root/glanceclient/v2/shell.py
diff options
context:
space:
mode:
authorErno Kuvaja <jokke@usr.fi>2021-07-09 10:41:22 +0100
committerAbhishek Kekane <akekane@redhat.com>2022-02-22 16:39:33 +0000
commit62f4f67d1d3f1ad74418d1e8cd5bb946cc8425d9 (patch)
tree64a005802f6e5b7f85fe3bbe1679069e2da592b5 /glanceclient/v2/shell.py
parent63bb03a145a7003a7e9ba40dd325995986fa953a (diff)
downloadpython-glanceclient-62f4f67d1d3f1ad74418d1e8cd5bb946cc8425d9.tar.gz
Add support for Cache API
This change provides support for the Cache API changes and deprecation path for glance-cache-manage command. Change-Id: I6fca9bbe6bc0bd9b14d8dba685405838131160af
Diffstat (limited to 'glanceclient/v2/shell.py')
-rw-r--r--glanceclient/v2/shell.py71
1 files changed, 71 insertions, 0 deletions
diff --git a/glanceclient/v2/shell.py b/glanceclient/v2/shell.py
index 05fc464..be627f5 100644
--- a/glanceclient/v2/shell.py
+++ b/glanceclient/v2/shell.py
@@ -23,6 +23,7 @@ from glanceclient._i18n import _
from glanceclient.common import progressbar
from glanceclient.common import utils
from glanceclient import exc
+from glanceclient.v2 import cache
from glanceclient.v2 import image_members
from glanceclient.v2 import image_schema
from glanceclient.v2 import images
@@ -1479,6 +1480,76 @@ def do_md_tag_list(gc, args):
utils.print_list(tags, columns, field_settings=column_settings)
+@utils.arg('--target', default='both',
+ choices=cache.TARGET_VALUES,
+ help=_('Specify which target you want to clear'))
+def do_cache_clear(gc, args):
+ """Clear all images from cache, queue or both"""
+ if not gc.endpoint_provided:
+ utils.exit("Direct server endpoint needs to be provided. Do not use "
+ "loadbalanced or catalog endpoints.")
+ try:
+ gc.cache.clear(args.target)
+ except exc.HTTPForbidden:
+ msg = _("You are not permitted to delete image(s) "
+ "from cache.")
+ utils.print_err(msg)
+ except exc.HTTPException as e:
+ msg = _("'%s': Unable to delete image(s) from cache." % e)
+ utils.print_err(msg)
+
+
+@utils.arg('id', metavar='<IMAGE_ID>', nargs='+',
+ help=_('ID of image(s) to delete from cache/queue.'))
+def do_cache_delete(gc, args):
+ """Delete image from cache/caching queue."""
+ if not gc.endpoint_provided:
+ utils.exit("Direct server endpoint needs to be provided. Do not use "
+ "loadbalanced or catalog endpoints.")
+
+ for args_id in args.id:
+ try:
+ gc.cache.delete(args_id)
+ except exc.HTTPForbidden:
+ msg = _("You are not permitted to delete the image '%s' "
+ "from cache." % args_id)
+ utils.print_err(msg)
+ except exc.HTTPException as e:
+ msg = _("'%s': Unable to delete image '%s' from cache."
+ % (e, args_id))
+ utils.print_err(msg)
+
+
+def do_cache_list(gc, args):
+ """Get cache state."""
+ if not gc.endpoint_provided:
+ utils.exit("Direct server endpoint needs to be provided. Do not use "
+ "loadbalanced or catalog endpoints.")
+ cached_images = gc.cache.list()
+ utils.print_cached_images(cached_images)
+
+
+@utils.arg('id', metavar='<IMAGE_ID>', nargs='+',
+ help=_('ID of image(s) to queue for caching.'))
+def do_cache_queue(gc, args):
+ """Queue image(s) for caching."""
+ if not gc.endpoint_provided:
+ utils.exit("Direct server endpoint needs to be provided. Do not use "
+ "loadbalanced or catalog endpoints.")
+
+ for args_id in args.id:
+ try:
+ gc.cache.queue(args_id)
+ except exc.HTTPForbidden:
+ msg = _("You are not permitted to queue the image '%s' "
+ "for caching." % args_id)
+ utils.print_err(msg)
+ except exc.HTTPException as e:
+ msg = _("'%s': Unable to queue image '%s' for caching."
+ % (e, args_id))
+ utils.print_err(msg)
+
+
@utils.arg('--sort-key', default='status',
choices=tasks.SORT_KEY_VALUES,
help=_('Sort task list by specified field.'))