From bd190e858573ef57881fea706d368057575881dc Mon Sep 17 00:00:00 2001 From: wanghao Date: Thu, 6 Apr 2017 08:06:24 +0800 Subject: [PATCH] CLI: support detailed in queue list Support detailed in queue list in openstackclient. Change-Id: I0b7c5d40b6e72351d8f114be4e124b76396d7ae9 Closes-Bug: #1679994 --- doc/source/command/queue.rst | 4 ++++ ...pport-detailed-queue-list-0335b3ebde115bfd.yaml | 5 +++++ zaqarclient/queues/v1/cli.py | 13 ++++++++++--- zaqarclient/queues/v1/queues.py | 14 ++++++++++++-- zaqarclient/queues/v2/queues.py | 3 ++- 5 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 releasenotes/notes/support-detailed-queue-list-0335b3ebde115bfd.yaml diff --git a/doc/source/command/queue.rst b/doc/source/command/queue.rst index 4f0a3631..07039dee 100644 --- a/doc/source/command/queue.rst +++ b/doc/source/command/queue.rst @@ -87,6 +87,7 @@ openstack queue list [--max-width ] [--noindent] [--quote {all,minimal,none,nonnumeric}] [--marker ] [--limit ] + [--detailed] List available queues. @@ -98,6 +99,9 @@ List available queues. ``--limit `` Page size limit. +``--detailed`` + If show detailed information of queue. + .. _openstack_queue_set_metadata: diff --git a/releasenotes/notes/support-detailed-queue-list-0335b3ebde115bfd.yaml b/releasenotes/notes/support-detailed-queue-list-0335b3ebde115bfd.yaml new file mode 100644 index 00000000..fec87382 --- /dev/null +++ b/releasenotes/notes/support-detailed-queue-list-0335b3ebde115bfd.yaml @@ -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. diff --git a/zaqarclient/queues/v1/cli.py b/zaqarclient/queues/v1/cli.py index 39ade193..d43d3fc6 100644 --- a/zaqarclient/queues/v1/cli.py +++ b/zaqarclient/queues/v1/cli.py @@ -85,21 +85,28 @@ class ListQueues(command.Lister): "--limit", metavar="", 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): diff --git a/zaqarclient/queues/v1/queues.py b/zaqarclient/queues/v1/queues.py index f182137f..718fbb9a 100644 --- a/zaqarclient/queues/v1/queues.py +++ b/zaqarclient/queues/v1/queues.py @@ -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() diff --git a/zaqarclient/queues/v2/queues.py b/zaqarclient/queues/v2/queues.py index 72cebe1b..77385ee6 100644 --- a/zaqarclient/queues/v2/queues.py +++ b/zaqarclient/queues/v2/queues.py @@ -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)