CLI: support detailed in queue list

Support detailed in queue list in openstackclient.

Change-Id: I0b7c5d40b6e72351d8f114be4e124b76396d7ae9
Closes-Bug: #1679994
This commit is contained in:
wanghao 2017-04-06 08:06:24 +08:00
parent 96370f27ed
commit bd190e8585
5 changed files with 33 additions and 6 deletions

View File

@ -87,6 +87,7 @@ openstack queue list
[--max-width <integer>] [--noindent]
[--quote {all,minimal,none,nonnumeric}]
[--marker <queue_id>] [--limit <limit>]
[--detailed]
List available queues.
@ -98,6 +99,9 @@ List available queues.
``--limit <limit>``
Page size limit.
``--detailed``
If show detailed information of queue.
.. _openstack_queue_set_metadata:

View File

@ -0,0 +1,5 @@
---
features:
- Support 'openstack queue list --detailed' in openstackclient to query the
detailed queue list from Zaqar server. The detailed information includes
queue's Name, Metadata and Href.

View File

@ -85,21 +85,28 @@ class ListQueues(command.Lister):
"--limit",
metavar="<limit>",
help="Page size limit")
parser.add_argument(
"--detailed",
action="store_true",
help="If show detailed information of queue")
return parser
def take_action(self, parsed_args):
client = _get_client(self, parsed_args)
kwargs = {}
columns = ["Name"]
if parsed_args.marker is not None:
kwargs["marker"] = parsed_args.marker
if parsed_args.limit is not None:
kwargs["limit"] = parsed_args.limit
if parsed_args.detailed is not None and parsed_args.detailed:
kwargs["detailed"] = parsed_args.detailed
columns.extend(["Metadata_Dict", "Href"])
data = client.queues(**kwargs)
columns = ("Name", )
return (columns,
(utils.get_item_properties(s, columns) for s in data))
columns = tuple(columns)
return (columns, (utils.get_item_properties(s, columns) for s in data))
class CheckQueueExistence(command.ShowOne):

View File

@ -25,7 +25,8 @@ class Queue(object):
message_module = message
def __init__(self, client, name, auto_create=True, force_create=False):
def __init__(self, client, name, href=None, metadata=None,
auto_create=True, force_create=False):
"""Initialize queue object
:param client: The client object of Zaqar.
@ -46,7 +47,8 @@ class Queue(object):
# NOTE(flaper87) Queue Info
self._name = name
self._metadata = None
self._metadata = metadata
self._href = href
# NOTE(flwang): If force_create is True, then even though auto_create
# is not True, the queue should be created anyway.
@ -57,6 +59,14 @@ class Queue(object):
def name(self):
return self._name
@property
def href(self):
return self._href
@property
def metadata_dict(self):
return dict(self.metadata())
def exists(self):
"""Checks if the queue exists."""
req, trans = self.client._request_and_transport()

View File

@ -90,4 +90,5 @@ class Queue(queues.Queue):
def create_object(parent):
return lambda args: Queue(parent, args["name"], auto_create=False)
return lambda args: Queue(parent, args["name"], href=args.get("href"),
metadata=args.get("metadata"), auto_create=False)