Statistics
| Branch: | Tag: | Revision:

root / snf-common / synnefo / lib / amqp.py @ 5f6ad491

History | View | Annotate | Download (2.4 kB)

1 597e7eba Christos Stavrakakis
# Copyright 2012 GRNET S.A. All rights reserved.
2 597e7eba Christos Stavrakakis
#
3 597e7eba Christos Stavrakakis
# Redistribution and use in source and binary forms, with or
4 597e7eba Christos Stavrakakis
# without modification, are permitted provided that the following
5 597e7eba Christos Stavrakakis
# conditions are met:
6 597e7eba Christos Stavrakakis
#
7 597e7eba Christos Stavrakakis
#   1. Redistributions of source code must retain the above
8 597e7eba Christos Stavrakakis
#      copyright notice, this list of conditions and the following
9 597e7eba Christos Stavrakakis
#      disclaimer.
10 597e7eba Christos Stavrakakis
#
11 597e7eba Christos Stavrakakis
#   2. Redistributions in binary form must reproduce the above
12 597e7eba Christos Stavrakakis
#      copyright notice, this list of conditions and the following
13 597e7eba Christos Stavrakakis
#      disclaimer in the documentation and/or other materials
14 597e7eba Christos Stavrakakis
#      provided with the distribution.
15 597e7eba Christos Stavrakakis
#
16 597e7eba Christos Stavrakakis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 597e7eba Christos Stavrakakis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 597e7eba Christos Stavrakakis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 597e7eba Christos Stavrakakis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 597e7eba Christos Stavrakakis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 597e7eba Christos Stavrakakis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 597e7eba Christos Stavrakakis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 597e7eba Christos Stavrakakis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 597e7eba Christos Stavrakakis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 597e7eba Christos Stavrakakis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 597e7eba Christos Stavrakakis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 597e7eba Christos Stavrakakis
# POSSIBILITY OF SUCH DAMAGE.
28 597e7eba Christos Stavrakakis
#
29 597e7eba Christos Stavrakakis
# The views and conclusions contained in the software and
30 597e7eba Christos Stavrakakis
# documentation are those of the authors and should not be
31 597e7eba Christos Stavrakakis
# interpreted as representing official policies, either expressed
32 597e7eba Christos Stavrakakis
# or implied, of GRNET S.A.
33 597e7eba Christos Stavrakakis
34 597e7eba Christos Stavrakakis
""" Module implementing connection and communication with an AMQP broker.
35 597e7eba Christos Stavrakakis

36 db400d82 Christos Stavrakakis
AMQP Client's instatiated by this module silenty detect connection failures and
37 597e7eba Christos Stavrakakis
try to reconnect to any available broker. Also publishing takes advantage of
38 597e7eba Christos Stavrakakis
publisher-confirms in order to guarantee that messages are properly delivered
39 597e7eba Christos Stavrakakis
to the broker.
40 597e7eba Christos Stavrakakis

41 597e7eba Christos Stavrakakis
"""
42 597e7eba Christos Stavrakakis
43 597e7eba Christos Stavrakakis
from synnefo import settings
44 597e7eba Christos Stavrakakis
45 db400d82 Christos Stavrakakis
if settings.AMQP_BACKEND == 'puka':
46 db400d82 Christos Stavrakakis
    from amqp_puka import AMQPPukaClient as Client
47 db400d82 Christos Stavrakakis
elif settings.AMQP_BACKEND == 'haigha':
48 db400d82 Christos Stavrakakis
    from amqp_haigha import AMQPHaighaClient as Client
49 db400d82 Christos Stavrakakis
else:
50 db400d82 Christos Stavrakakis
    raise Exception('Unknown Backend %s' % settings.AMQP_BACKEND)
51 597e7eba Christos Stavrakakis
52 597e7eba Christos Stavrakakis
53 db400d82 Christos Stavrakakis
class AMQPClient(object):
54 597e7eba Christos Stavrakakis
    """
55 597e7eba Christos Stavrakakis
    AMQP generic client implementing most of the basic AMQP operations.
56 597e7eba Christos Stavrakakis

57 db400d82 Christos Stavrakakis
    This class will create an object of AMQPPukaClient or AMQPHaigha client
58 db400d82 Christos Stavrakakis
    depending on AMQP_BACKEND setting
59 597e7eba Christos Stavrakakis
    """
60 db400d82 Christos Stavrakakis
    def __new__(cls, *args, **kwargs):
61 db400d82 Christos Stavrakakis
        return Client(*args, **kwargs)