Download

Documentation

Community

Development

Ticket #8: autodiscovery5

File autodiscovery5, 2.2 KB (added by redduck666, 4 months ago)
Line 
1diff --git a/pydra_server/cluster/master/auto_discovery.py b/pydra_server/cluster/master/auto_discovery.py
2index edd230e..76b7437 100644
3--- a/pydra_server/cluster/master/auto_discovery.py
4+++ b/pydra_server/cluster/master/auto_discovery.py
5@@ -21,7 +21,7 @@ from dbus.mainloop.glib import DBusGMainLoop
6 import dbus, avahi
7 
8 from pydra_server.cluster.module import Module
9-from pydra_server.models import pydraSettings
10+from pydra_server.models import pydraSettings, Node
11 
12 # init logging
13 import logging
14@@ -61,7 +61,7 @@ class AutoDiscoveryModule(Module):
15 
16                 # add the node (without the restart)
17                 Node.objects.create(host=args[7], port=args[8])
18-                self.connect()
19+                self.emit('NODE_ADDED')
20             else:
21                 self.known_nodes.add((args[7], args[8]))
22 
23@@ -94,11 +94,11 @@ class AutoDiscoveryModule(Module):
24         sbrowser.connect_to_signal("ItemNew", node_found)
25 
26 
27-    def list_known_nodes(self, _):
28+    def list_known_nodes(self):
29         """
30         list know_nodes
31         """
32         # cast to list, doesn't seem to digest set
33-        return list(self.master.known_nodes)
34+        return list(self.known_nodes)
35 
36 
37diff --git a/pydra_server/cluster/master/node_connection_manager.py b/pydra_server/cluster/master/node_connection_manager.py
38index 10c6fbc..da48276 100644
39--- a/pydra_server/cluster/master/node_connection_manager.py
40+++ b/pydra_server/cluster/master/node_connection_manager.py
41@@ -86,6 +86,7 @@ class NodeConnectionManager(Module):
42 
43         self._listeners = {
44             'MANAGER_INIT':self.connect,
45+            'NODE_ADDED':self.connect, #trigger the reconnection procedure when a node is added
46             'NODE_CREATED':self.connect_node,
47             'NODE_UPDATED':self.connect_node,
48         }
49@@ -151,7 +152,7 @@ class NodeConnectionManager(Module):
50                 if i.id not in self.nodes:
51                     self.nodes[i.id] = i
52                 if (i.host, i.port) in self.known_nodes:
53-                    self.known_nodes.discard((i.host, i.port))
54+                    self.manager.get_shared('known_nodes').discard((i.host, i.port))
55 
56             logger.info("Connecting to nodes")
57             connections = []