# 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. from oslo_utils import uuidutils 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 queues 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 conf: CONF object. :type conf: `oslo_config.cfg.CONF` """ queues_module = queues def __init__(self, url=None, version=2, conf=None, session=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', uuidutils.generate_uuid(dashed=False)) self.session = session def queue(self, ref, **kwargs): """Returns a queue instance :param ref: Queue's reference id. :type ref: `six.text_type` :returns: A queue instance :rtype: `queues.Queue` """ return queues.Queue(self, ref, **kwargs) def queues(self, **params): """Gets a list of queues from the server :returns: A list of queues :rtype: `list` """ req, trans = self._request_and_transport() queue_list = core.queue_list(trans, req, **params) count = None if params.get("with_count"): count = queue_list.get("count", None) return iterator._Iterator(self, queue_list, 'queues', self.queues_module.create_object(self)),\ count @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: dict. :returns: A list of subscriptions :rtype: `list` """ req, trans = self._request_and_transport() subscription_list = core.subscription_list(trans, req, queue_name, **params) return iterator._Iterator(self, subscription_list, 'subscriptions', subscription.create_object(self)) def ping(self): """Gets the health status of Zaqar server.""" req, trans = self._request_and_transport() return core.ping(trans, req) @decorators.version(min_version=1.1) def health(self): """Gets the detailed health status of Zaqar server.""" req, trans = self._request_and_transport() return core.health(trans, req) @decorators.version(min_version=1.1) def homedoc(self): """Get the detailed resource doc of Zaqar server""" req, trans = self._request_and_transport() return core.homedoc(trans, req)