Ejemplo n.º 1
0
 def create(self, queue, subscriber, ttl, options, project=None):
     sub_container = utils._subscriber_container(queue, project)
     slug = uuidutils.generate_uuid()
     try:
         utils._put_or_create_container(
             self._client,
             sub_container,
             quote_plus(subscriber),
             contents=slug,
             headers={'x-delete-after': ttl, 'if-none-match': '*'})
     except swiftclient.ClientException as exc:
         if exc.http_status == 412:
             return
         raise
     container = utils._subscription_container(queue, project)
     data = {'id': slug,
             'source': queue,
             'subscriber': subscriber,
             'options': options,
             'ttl': ttl,
             'confirmed': False}
     utils._put_or_create_container(
         self._client, container, slug, contents=jsonutils.dumps(data),
         content_type='application/json', headers={'x-delete-after': ttl})
     return slug
Ejemplo n.º 2
0
 def create(self, queue, subscriber, ttl, options, project=None):
     sub_container = utils._subscriber_container(queue, project)
     slug = uuidutils.generate_uuid()
     try:
         utils._put_or_create_container(self._client,
                                        sub_container,
                                        quote_plus(subscriber),
                                        contents=slug,
                                        headers={
                                            'x-delete-after': ttl,
                                            'if-none-match': '*'
                                        })
     except swiftclient.ClientException as exc:
         if exc.http_status == 412:
             return
         raise
     container = utils._subscription_container(queue, project)
     data = {
         'id': slug,
         'source': queue,
         'subscriber': subscriber,
         'options': options,
         'ttl': ttl,
         'confirmed': False
     }
     utils._put_or_create_container(self._client,
                                    container,
                                    slug,
                                    contents=jsonutils.dumps(data),
                                    content_type='application/json',
                                    headers={'x-delete-after': ttl})
     return slug
Ejemplo n.º 3
0
 def update(self, queue, subscription_id, project=None, **kwargs):
     container = utils._subscription_container(queue, project)
     data = self.get(queue, subscription_id, project)
     data.pop('age')
     ttl = data['ttl']
     if 'subscriber' in kwargs:
         sub_container = utils._subscriber_container(queue, project)
         try:
             self._client.put_object(
                 sub_container,
                 quote_plus(kwargs['subscriber']),
                 contents=subscription_id,
                 headers={'x-delete-after': ttl, 'if-none-match': '*'})
         except swiftclient.ClientException as exc:
             if exc.http_status == 412:
                 raise errors.SubscriptionAlreadyExists()
             raise
         self._client.delete_object(sub_container,
                                    quote_plus(data['subscriber']))
     data.update(kwargs)
     self._client.put_object(container,
                             subscription_id,
                             contents=jsonutils.dumps(data),
                             content_type='application/json',
                             headers={'x-delete-after': ttl})
Ejemplo n.º 4
0
 def update(self, queue, subscription_id, project=None, **kwargs):
     container = utils._subscription_container(queue, project)
     data = self.get(queue, subscription_id, project)
     data.pop('age')
     ttl = data['ttl']
     if 'subscriber' in kwargs:
         sub_container = utils._subscriber_container(queue, project)
         try:
             self._client.put_object(sub_container,
                                     quote_plus(kwargs['subscriber']),
                                     contents=subscription_id,
                                     headers={
                                         'x-delete-after': ttl,
                                         'if-none-match': '*'
                                     })
         except swiftclient.ClientException as exc:
             if exc.http_status == 412:
                 raise errors.SubscriptionAlreadyExists()
             raise
         self._client.delete_object(sub_container,
                                    quote_plus(data['subscriber']))
     data.update(kwargs)
     self._client.put_object(container,
                             subscription_id,
                             contents=jsonutils.dumps(data),
                             content_type='application/json',
                             headers={'x-delete-after': ttl})
Ejemplo n.º 5
0
 def get(self, queue, subscription_id, project=None):
     container = utils._subscription_container(queue, project)
     try:
         headers, data = self._client.get_object(container, subscription_id)
     except swiftclient.ClientException as exc:
         if exc.http_status == 404:
             raise errors.SubscriptionDoesNotExist(subscription_id)
         raise
     return utils._subscription_to_json(data, headers)
Ejemplo n.º 6
0
 def get(self, queue, subscription_id, project=None):
     container = utils._subscription_container(queue, project)
     try:
         headers, data = self._client.get_object(container, subscription_id)
     except swiftclient.ClientException as exc:
         if exc.http_status == 404:
             raise errors.SubscriptionDoesNotExist(subscription_id)
         raise
     return utils._subscription_to_json(data, headers)
Ejemplo n.º 7
0
 def list(self, queue, project=None, marker=None,
          limit=storage.DEFAULT_SUBSCRIPTIONS_PER_PAGE):
     container = utils._subscription_container(queue, project)
     try:
         _, objects = self._client.get_container(container,
                                                 limit=limit,
                                                 marker=marker)
     except swiftclient.ClientException as exc:
         if exc.http_status == 404:
             objects = []
         else:
             raise
     marker_next = {}
     yield utils.SubscriptionListCursor(
         objects, marker_next,
         functools.partial(self._client.get_object, container))
     yield marker_next and marker_next['next']
Ejemplo n.º 8
0
 def list(self, queue, project=None, marker=None,
          limit=storage.DEFAULT_SUBSCRIPTIONS_PER_PAGE):
     container = utils._subscription_container(queue, project)
     try:
         _, objects = self._client.get_container(container,
                                                 limit=limit,
                                                 marker=marker)
     except swiftclient.ClientException as exc:
         if exc.http_status == 404:
             objects = []
         else:
             raise
     marker_next = {}
     yield utils.SubscriptionListCursor(
         objects, marker_next,
         functools.partial(self._client.get_object, container))
     yield marker_next and marker_next['next']
Ejemplo n.º 9
0
 def delete(self, queue, subscription_id, project=None):
     try:
         data = self.get(queue, subscription_id, project)
     except errors.SubscriptionDoesNotExist:
         return
     sub_container = utils._subscriber_container(queue, project)
     try:
         self._client.delete_object(sub_container,
                                    quote_plus(data['subscriber']))
     except swiftclient.ClientException as exc:
         if exc.http_status != 404:
             raise
     container = utils._subscription_container(queue, project)
     try:
         self._client.delete_object(container, subscription_id)
     except swiftclient.ClientException as exc:
         if exc.http_status != 404:
             raise
Ejemplo n.º 10
0
 def delete(self, queue, subscription_id, project=None):
     try:
         data = self.get(queue, subscription_id, project)
     except errors.SubscriptionDoesNotExist:
         return
     sub_container = utils._subscriber_container(queue, project)
     try:
         self._client.delete_object(sub_container,
                                    quote_plus(data['subscriber']))
     except swiftclient.ClientException as exc:
         if exc.http_status != 404:
             raise
     container = utils._subscription_container(queue, project)
     try:
         self._client.delete_object(container, subscription_id)
     except swiftclient.ClientException as exc:
         if exc.http_status != 404:
             raise
Ejemplo n.º 11
0
 def exists(self, queue, subscription_id, project=None):
     container = utils._subscription_container(queue, project)
     return self._client.head_object(container, subscription_id)
Ejemplo n.º 12
0
 def exists(self, queue, subscription_id, project=None):
     container = utils._subscription_container(queue, project)
     return self._client.head_object(container, subscription_id)