3 """ Syndicate configurator. """
10 from threading import Thread
15 logger.log('syndicate plugin starting up...')
17 def syndicate_op(op, mountpoint, syndicate_ip):
19 #syndicate_ip="www.vicci.org"
21 logger.log("Syndicate: Http op %s on url %s to host %s" % (op, mountpoint, syndicate_ip))
24 conn = httplib.HTTPSConnection(syndicate_ip, timeout=60)
25 conn.request(op, mountpoint)
26 r1 = conn.getresponse()
28 logger.log_exc("Exception when contacting syndicate sliver", "Syndicate")
30 if (r1.status / 100) != 2:
31 logger.log("Syndicate: Error: Got http result %d on %s" % (r1.status, mountpoint))
37 def enable_syndicate_mount(sliver, mountpoint, syndicate_ip):
38 if not os.path.exists(mountpoint):
42 logger.log_exc("failed to mkdir syndicate mountpoint", "Syndicate")
45 syndicate_op("PUT", mountpoint, syndicate_ip)
47 def disable_syndicate_mount(sliver, mountpoint, syndicate_ip):
48 syndicate_op("DELETE", mountpoint, syndicate_ip)
50 if os.path.exists(mountpoint):
54 logger.log_exc("failed to delete syndicate mountpoint", "Syndicate")
56 def GetSlivers(data, conf = None, plc = None):
57 node_id = tools.node_id()
59 if 'slivers' not in data:
60 logger.log_missing_data("syndicate.GetSlivers",'slivers')
63 syndicate_sliver = None
64 for sliver in data['slivers']:
65 if sliver['name'] == "princeton_syndicate":
66 syndicate_sliver = sliver
68 if not syndicate_sliver:
69 logger.log("Syndicate: no princeton_syndicate sliver on this node. aborting.")
72 syndicate_ip = tools.get_sliver_ip("princeton_syndicate")
74 logger.log("Syndicate: unable to get syndicate sliver ip. aborting.")
77 for sliver in data['slivers']:
78 enable_syndicate = False
80 # build a dict of attributes, because it's more convenient
82 for attribute in sliver['attributes']:
83 attributes[attribute['tagname']] = attribute['value']
85 sliver_name = sliver['name']
86 syndicate_mountpoint = os.path.join("/vservers", sliver_name, "syndicate")
87 enable_syndicate = attributes.get("enable_syndicate", False)
88 has_syndicate = os.path.exists(syndicate_mountpoint)
90 if enable_syndicate and (not has_syndicate):
91 logger.log("Syndicate: enabling syndicate for %s" % sliver_name)
92 #enable_syndicate_mount(sliver, syndicate_mountpoint, syndicate_ip)
93 t = Thread(target=enable_syndicate_mount, args=(sliver, syndicate_mountpoint, syndicate_ip))
96 elif (not enable_syndicate) and (has_syndicate):
97 logger.log("Syndicate: disabling syndicate for %s" % sliver_name)
98 #disable_syndicate_mount(sliver, syndicate_mountpoint, syndicate_ip)
99 t = Thread(target=disable_syndicate_mount, args=(sliver, syndicate_mountpoint, syndicate_ip))