Revision 6321fedb snf-pithos-backend/pithos/backends/lib/hashfiler/radosmapper.py

b/snf-pithos-backend/pithos/backends/lib/hashfiler/radosmapper.py
38 38

  
39 39
CEPH_CONF_FILE = "/etc/ceph/ceph.conf"
40 40

  
41

  
42 41
class RadosMapper(object):
43 42
    """Mapper.
44 43
       Required constructor parameters: mappath, namelen.
......
46 45

  
47 46
    mappool = None
48 47
    namelen = None
48
    rados = None
49
    rados_ctx = None
50

  
51
    @classmethod
52
    def get_rados_ctx(cls, pool):
53
        if cls.rados_ctx is None:
54
            cls.rados = Rados(conffile=CEPH_CONF_FILE)
55
            cls.rados.connect()
56
            cls.rados_ctx = cls.rados.open_ioctx(pool)
57
        return cls.rados_ctx
58

  
49 59

  
50 60
    def __init__(self, **params):
51 61
        self.params = params
52 62
        self.namelen = params['namelen']
53 63
        mappool = params['mappool']
54 64

  
55
        rados = Rados(conffile=CEPH_CONF_FILE)
56
        rados.connect()
57
        ioctx = rados.open_ioctx(mappool)
58

  
59 65
        self.mappool = mappool
60
        self.rados = rados
61
        self.ioctx = ioctx
66
        self.ioctx = RadosMapper.get_rados_ctx(mappool)
62 67

  
63 68
    def _get_rear_map(self, maphash, create=0):
64 69
        name = hexlify(maphash)

Also available in: Unified diff