Adds the ability to sort images with multiple keys

Adds client code to consume API modified in change
Ib7a6aeb2df3bc5d23fe8e070290b5bfcab00c0f5

Extends CLI for v2 with multiple sort keys
Example:
glance --os-image-api-version 2 image-list --sort-key name --sort-key size

Implements-blueprint: glance-sorting-enhancements
Change-Id: If79779a4c52c8dc5c4f39192d3d247335a76ba24
DocImpact
Closes-Bug: 1221274
This commit is contained in:
Mike Fedosin
2014-09-11 16:58:45 +04:00
parent cc4c402f09
commit fc79467ff6
4 changed files with 139 additions and 3 deletions
+12
View File
@@ -16,6 +16,7 @@
from glanceclient.common import progressbar
from glanceclient.common import utils
from glanceclient import exc
from glanceclient.v2 import images
from glanceclient.v2 import tasks
import json
import os
@@ -124,6 +125,12 @@ def do_image_update(gc, args):
help='Displays images that match the checksum.')
@utils.arg('--tag', metavar='<TAG>', action='append',
help="Filter images by a user-defined tag.")
@utils.arg('--sort-key', default=[], action='append',
choices=images.SORT_KEY_VALUES,
help='Sort image list by specified fields.')
@utils.arg('--sort-dir', default='asc',
choices=images.SORT_DIR_VALUES,
help='Sort image list in specified direction.')
def do_image_list(gc, args):
"""List images you can access."""
filter_keys = ['visibility', 'member_status', 'owner', 'checksum', 'tag']
@@ -141,6 +148,11 @@ def do_image_list(gc, args):
kwargs['limit'] = args.limit
if args.page_size is not None:
kwargs['page_size'] = args.page_size
if args.sort_key:
kwargs['sort_key'] = args.sort_key
else:
kwargs['sort_key'] = ['name']
kwargs['sort_dir'] = args.sort_dir
images = gc.images.list(**kwargs)
columns = ['ID', 'Name']