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 09806959..bdf321ac 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)