3 # Copyright (c) 2004 The Trustees of Princeton University (Trustees).
5 # Stephen Soltesz <soltesz@cs.princeton.edu>
7 # $Id: monitor.py,v 1.7 2007/07/03 19:59:02 soltesz Exp $
11 from monitor_policy import *
15 api = plc.PLC(auth.auth, auth.plc)
19 l_nodes = api.GetNodes(hostname)
21 raise Exception("No such host: %s" % hostname)
23 l_blacklist = soltesz.if_cached_else(1, "l_blacklist", lambda : [])
24 l_ticket_blacklist = soltesz.if_cached_else(1,"l_ticket_blacklist",lambda : [])
26 l_nodes = filter(lambda x : not x['hostname'] in l_blacklist, l_nodes)
28 raise Exception("Host removed via blacklist: %s" % hostname)
30 ad_dbTickets = soltesz.if_cached_else_refresh(True, False, "ad_dbTickets", lambda : None)
31 if ad_dbTickets == None:
32 raise Exception("Could not find cached dbTickets")
35 merge = Merge( [node['hostname'] for node in l_nodes])
36 record_list = merge.run()
38 rt = RT(record_list, ad_dbTickets, l_ticket_blacklist)
39 record_list = rt.run()
41 diag = Diagnose(record_list)
42 diagnose_out = diag.run()
45 action = Action(diagnose_out)
53 if __name__ == '__main__':