Example #1
0
 def add_node(self, node, backup_store=None):
     self.nodes.append(node)
     self.hash_ring = HashRing(self.nodes)
     if backup_store is not None:
         self.backup_stores[node] = backup_store
     else:
         backup_stores_path = getattr(self, 'backup_stores_path')
         if backup_stores_path is not None:
             path = os.path.join(backup_stores_path, node.replace(':', '_'))
             if not os.path.exists(path):
                 os.makedirs(path)
             self.backup_stores[node] = Node(path, size=512 * 1024)
Example #2
0
    def remove_node(self, node):
        self.nodes.remove(node)
        self.hash_ring = HashRing(self.nodes)

        backup_store = self.backup_stores[node]
        obj = backup_store.get()
        while obj is not None:
            self.local_store.put(obj)
            obj = backup_store.get()

        backup_store.shutdown()
        del self.backup_stores[node]
Example #3
0
    def __init__(self,
                 nodes,
                 local_node=None,
                 rpc_server=None,
                 local_store=None,
                 backup_stores=None,
                 copies=1):
        self.nodes = nodes
        self.local_node = local_node
        self.local_store = local_store
        self.rpc_server = rpc_server
        self.backup_stores = backup_stores
        self.hash_ring = HashRing(self.nodes)
        self.copies = max(min(len(self.nodes) - 1, copies), 0)

        if rpc_server is not None and \
            self.local_store is not None and \
            self.backup_stores is not None:
            self._register_rpc()
 def __init__(self, nodes, copies=1):
     self.nodes = nodes
     self.hash_ring = HashRing(self.nodes)
     self.copies = max(min(len(self.nodes) - 1, copies), 0)
     self.mq = MessageQueue(nodes, copies=copies)
Example #5
0
 def add_node(self, addr):
     if addr not in self.nodes:
         self.nodes.append(addr)
         self.hash_ring = HashRing(self.nodes)
Example #6
0
 def remove_node(self, addr):
     if addr in self.nodes:
         self.nodes.remove(addr)
         self.hash_ring = HashRing(self.nodes)
Example #7
0
 def __init__(self, addrs, copies=1):
     self.nodes = list(addrs)
     self.hash_ring = HashRing(self.nodes)
     self.copies = min(copies, len(self.nodes) - 1)