adding sort_key/sort_dir to details
This commit is contained in:
parent
e7b96f4dd3
commit
336ec70c67
22
bin/glance
22
bin/glance
@ -426,7 +426,6 @@ def _images_index(client, filters, limit, print_header=False, **kwargs):
|
|||||||
if kwarg in kwargs:
|
if kwarg in kwargs:
|
||||||
parameters[kwarg] = kwargs[kwarg]
|
parameters[kwarg] = kwargs[kwarg]
|
||||||
|
|
||||||
|
|
||||||
images = client.get_images(**parameters)
|
images = client.get_images(**parameters)
|
||||||
|
|
||||||
if not images:
|
if not images:
|
||||||
@ -454,7 +453,6 @@ def _images_index(client, filters, limit, print_header=False, **kwargs):
|
|||||||
return SUCCESS
|
return SUCCESS
|
||||||
|
|
||||||
parameters['marker'] = images[-1]['id']
|
parameters['marker'] = images[-1]['id']
|
||||||
print parameters
|
|
||||||
return _images_index(client, **parameters)
|
return _images_index(client, **parameters)
|
||||||
|
|
||||||
|
|
||||||
@ -485,17 +483,19 @@ fields are treated as image metadata properties"""
|
|||||||
print_header=True)
|
print_header=True)
|
||||||
|
|
||||||
|
|
||||||
def _images_details(client, filters, limit, marker=None, print_header=False):
|
def _images_details(client, filters, limit, print_header=False, **kwargs):
|
||||||
"""Driver function for images_details"""
|
"""Driver function for images_details"""
|
||||||
kwargs = {
|
parameters = {
|
||||||
"filters": filters,
|
"filters": filters,
|
||||||
"limit": limit,
|
"limit": limit,
|
||||||
}
|
}
|
||||||
|
|
||||||
if marker is not None:
|
optional_kwargs = ['marker', 'sort_key', 'sort_dir']
|
||||||
kwargs["marker"] = marker
|
for kwarg in optional_kwargs:
|
||||||
|
if kwarg in kwargs:
|
||||||
|
parameters[kwarg] = kwargs[kwarg]
|
||||||
|
|
||||||
images = client.get_images_detailed(**kwargs)
|
images = client.get_images_detailed(**parameters)
|
||||||
|
|
||||||
if len(images) == 0:
|
if len(images) == 0:
|
||||||
return SUCCESS
|
return SUCCESS
|
||||||
@ -511,8 +511,8 @@ def _images_details(client, filters, limit, marker=None, print_header=False):
|
|||||||
not user_confirm("Fetch next page?", True):
|
not user_confirm("Fetch next page?", True):
|
||||||
return SUCCESS
|
return SUCCESS
|
||||||
|
|
||||||
next_marker = images[-1]['id']
|
parameters["marker"] = images[-1]['id']
|
||||||
return _images_details(client, filters, limit, marker=next_marker)
|
return _images_details(client, **parameters)
|
||||||
|
|
||||||
|
|
||||||
@catch_error('show details')
|
@catch_error('show details')
|
||||||
@ -530,11 +530,15 @@ fields are treated as image metadata properties"""
|
|||||||
filters = get_image_filters_from_args(args)
|
filters = get_image_filters_from_args(args)
|
||||||
limit = options.limit
|
limit = options.limit
|
||||||
marker = options.marker
|
marker = options.marker
|
||||||
|
sort_key = options.sort_key
|
||||||
|
sort_dir = options.sort_dir
|
||||||
|
|
||||||
return _images_details(client,
|
return _images_details(client,
|
||||||
filters,
|
filters,
|
||||||
limit,
|
limit,
|
||||||
marker=marker,
|
marker=marker,
|
||||||
|
sort_key=sort_key,
|
||||||
|
sort_dir=sort_dir,
|
||||||
print_header=True)
|
print_header=True)
|
||||||
|
|
||||||
|
|
||||||
|
@ -98,6 +98,9 @@ a brief help message, like so::
|
|||||||
-p PORT, --port=PORT Port the Glance API host listens on. Default: 9292
|
-p PORT, --port=PORT Port the Glance API host listens on. Default: 9292
|
||||||
--limit=LIMIT Page size to use while requesting image metadata
|
--limit=LIMIT Page size to use while requesting image metadata
|
||||||
--marker=MARKER Image index after which to begin pagination
|
--marker=MARKER Image index after which to begin pagination
|
||||||
|
--sort_key=KEY Sort results by this image attribute.
|
||||||
|
--sort_dir=[desc|asc]
|
||||||
|
Sort results in this direction.
|
||||||
-f, --force Prevent select actions from requesting user
|
-f, --force Prevent select actions from requesting user
|
||||||
confirmation
|
confirmation
|
||||||
--dry-run Don't actually execute the command, just print output
|
--dry-run Don't actually execute the command, just print output
|
||||||
@ -326,6 +329,11 @@ restricted to returning a maximum number of results. Without the 'force'
|
|||||||
option, the user will be prompted before each page of results is fetched
|
option, the user will be prompted before each page of results is fetched
|
||||||
from the API.
|
from the API.
|
||||||
|
|
||||||
|
Results from index and details commands may be ordered using the 'sort_key'
|
||||||
|
and 'sort_dir' options. Any image attribute may be used for 'sort_key',
|
||||||
|
while only 'asc' or 'desc' are allowed for 'sort_dir'.
|
||||||
|
|
||||||
|
|
||||||
The ``details`` command
|
The ``details`` command
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
|
@ -477,9 +477,9 @@ class TestBinGlance(functional.FunctionalTest):
|
|||||||
_add_cmd = "bin/glance --port=%d add is_public=True" % self.api_port
|
_add_cmd = "bin/glance --port=%d add is_public=True" % self.api_port
|
||||||
_add_args = [
|
_add_args = [
|
||||||
"name=Name1 disk_format=ami container_format=ami",
|
"name=Name1 disk_format=ami container_format=ami",
|
||||||
"name=Name2 disk_format=vhd container_format=ovf",
|
"name=Name4 disk_format=vhd container_format=ovf",
|
||||||
"name=Name3 disk_format=ami container_format=ami",
|
"name=Name3 disk_format=ami container_format=ami",
|
||||||
"name=Name4 disk_format=ami container_format=ami",
|
"name=Name2 disk_format=ami container_format=ami",
|
||||||
"name=Name5 disk_format=vhd container_format=ovf",
|
"name=Name5 disk_format=vhd container_format=ovf",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -496,10 +496,44 @@ class TestBinGlance(functional.FunctionalTest):
|
|||||||
|
|
||||||
self.assertEqual(0, exitcode)
|
self.assertEqual(0, exitcode)
|
||||||
image_lines = out.split("\n")[2:-1]
|
image_lines = out.split("\n")[2:-1]
|
||||||
print out
|
|
||||||
self.assertEqual(5, len(image_lines))
|
self.assertEqual(5, len(image_lines))
|
||||||
self.assertTrue(image_lines[0].startswith('1'))
|
self.assertTrue(image_lines[0].startswith('1'))
|
||||||
self.assertTrue(image_lines[1].startswith('2'))
|
self.assertTrue(image_lines[1].startswith('4'))
|
||||||
self.assertTrue(image_lines[2].startswith('3'))
|
self.assertTrue(image_lines[2].startswith('3'))
|
||||||
self.assertTrue(image_lines[3].startswith('4'))
|
self.assertTrue(image_lines[3].startswith('2'))
|
||||||
self.assertTrue(image_lines[4].startswith('5'))
|
self.assertTrue(image_lines[4].startswith('5'))
|
||||||
|
|
||||||
|
# 3. Sort by name asc with a marker
|
||||||
|
cmd = "--sort_key=name --sort_dir=asc --marker=4"
|
||||||
|
exitcode, out, err = execute("%s %s" % (index_cmd, cmd))
|
||||||
|
|
||||||
|
self.assertEqual(0, exitcode)
|
||||||
|
image_lines = out.split("\n")[2:-1]
|
||||||
|
self.assertEqual(3, len(image_lines))
|
||||||
|
self.assertTrue(image_lines[0].startswith('3'))
|
||||||
|
self.assertTrue(image_lines[1].startswith('2'))
|
||||||
|
self.assertTrue(image_lines[2].startswith('5'))
|
||||||
|
|
||||||
|
# 4. Sort by container_format desc
|
||||||
|
cmd = "--sort_key=container_format --sort_dir=desc"
|
||||||
|
exitcode, out, err = execute("%s %s" % (index_cmd, cmd))
|
||||||
|
|
||||||
|
self.assertEqual(0, exitcode)
|
||||||
|
image_lines = out.split("\n")[2:-1]
|
||||||
|
self.assertEqual(5, len(image_lines))
|
||||||
|
self.assertTrue(image_lines[0].startswith('5'))
|
||||||
|
self.assertTrue(image_lines[1].startswith('2'))
|
||||||
|
self.assertTrue(image_lines[2].startswith('4'))
|
||||||
|
self.assertTrue(image_lines[3].startswith('3'))
|
||||||
|
self.assertTrue(image_lines[4].startswith('1'))
|
||||||
|
|
||||||
|
# 5. Sort by name asc with a marker (details)
|
||||||
|
cmd = "--sort_key=name --sort_dir=asc --marker=4"
|
||||||
|
exitcode, out, err = execute("%s %s" % (details_cmd, cmd))
|
||||||
|
|
||||||
|
self.assertEqual(0, exitcode)
|
||||||
|
image_lines = out.split("\n")[1:-1]
|
||||||
|
self.assertEqual(30, len(image_lines))
|
||||||
|
self.assertTrue(image_lines[1].startswith('Id: 3'))
|
||||||
|
self.assertTrue(image_lines[11].startswith('Id: 2'))
|
||||||
|
self.assertTrue(image_lines[21].startswith('Id: 5'))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user