# Copyright (c) 2013 Red Hat, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. import uuid from zaqarclient.common import decorators from zaqarclient.queues.v1 import client from zaqarclient.queues.v1 import iterator from zaqarclient.queues.v2 import core from zaqarclient.queues.v2 import subscription class Client(client.Client): """Client base class :param url: Zaqar's instance base url. :type url: `six.text_type` :param version: API Version pointing to. :type version: `int` :param options: Extra options: - client_uuid: Custom client uuid. A new one will be generated, if not passed. - auth_opts: Authentication options: - backend - options :type options: `dict` """ def __init__(self, url=None, version=2, conf=None): self.conf = conf or {} self.api_url = url self.api_version = version self.auth_opts = self.conf.get('auth_opts', {}) self.client_uuid = self.conf.get('client_uuid', uuid.uuid4().hex) @decorators.version(min_version=2) def subscription(self, queue_name, **kwargs): """Returns a subscription instance :param queue_name: Name of the queue to subscribe to. :type queue_name: `six.text_type` :returns: A subscription instance :rtype: `subscription.Subscription` """ return subscription.Subscription(self, queue_name, **kwargs) @decorators.version(min_version=2) def subscriptions(self, queue_name, **params): """Gets a list of subscriptions from the server :param params: Filters to use for getting subscriptions :type params: **kwargs dict. :returns: A list of subscriptions :rtype: `list` """ req, trans = self._request_and_transport() subscription_list = core.subscription_list(trans, req, queue_name, **params) for s in subscription_list['subscriptions']: s['queue_name'] = queue_name return iterator._Iterator(self, subscription_list, 'subscriptions', subscription.create_object(self))