From a84e620253e339c61e2ce0d9a8c9425680458112 Mon Sep 17 00:00:00 2001 From: MD NADEEM Date: Thu, 17 Dec 2015 08:53:17 +0530 Subject: [PATCH] Claim create CLI support for v1 Change-Id: Id89cb904c29a462e0035dd3ba16b9ebb6344476e --- setup.cfg | 1 + zaqarclient/queues/v1/cli.py | 51 ++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/setup.cfg b/setup.cfg index 7b745b42..b76953ec 100644 --- a/setup.cfg +++ b/setup.cfg @@ -65,6 +65,7 @@ openstack.messaging.v1 = messaging_flavor_update = zaqarclient.queues.v1.cli:UpdateFlavor messaging_flavor_show = zaqarclient.queues.v1.cli:ShowFlavor messaging_flavor_create = zaqarclient.queues.v1.cli:CreateFlavor + claim_create = zaqarclient.queues.v1.cli:CreateClaim openstack.messaging.v2 = queue_list = zaqarclient.queues.v2.cli:ListQueues diff --git a/zaqarclient/queues/v1/cli.py b/zaqarclient/queues/v1/cli.py index 77e63887..97fff84e 100644 --- a/zaqarclient/queues/v1/cli.py +++ b/zaqarclient/queues/v1/cli.py @@ -560,3 +560,54 @@ class ListFlavors(lister.Lister): columns = ("Name", 'Pool', 'Capabilities') return (columns, (utils.get_item_properties(s, columns) for s in data)) + + +class CreateClaim(lister.Lister): + """Create claim and return a list of claimed messages""" + + log = logging.getLogger(__name__ + ".CreateClaim") + + def get_parser(self, prog_name): + parser = super(CreateClaim, self).get_parser(prog_name) + parser.add_argument( + "queue_name", + metavar="", + help="Name of the queue to be claim") + parser.add_argument( + "--ttl", + metavar="", + type=int, + default=300, + help="Time to live in seconds for claim") + parser.add_argument( + "--grace", + metavar="", + type=int, + default=60, + help="The message grace period in seconds") + parser.add_argument( + "--limit", + metavar="", + type=int, + default=10, + help="Claims a set of messages, up to limit") + + return parser + + def take_action(self, parsed_args): + client = _get_client(self, parsed_args) + + kwargs = {} + if parsed_args.ttl is not None: + kwargs["ttl"] = parsed_args.ttl + if parsed_args.grace is not None: + kwargs["grace"] = parsed_args.grace + if parsed_args.limit is not None: + kwargs["limit"] = parsed_args.limit + + queue = client.queue(parsed_args.queue_name, auto_create=False) + keys = ("claim_id", "_id", "ttl", "age", 'body') + columns = ("Claim_ID", "Message_ID", "TTL", "Age", "Messages") + data = queue.claim(**kwargs) + return (columns, + (utils.get_item_properties(s, keys) for s in data))