X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=blacklist.py;h=8704b59f685bb63e125db7adca38eb16cf817457;hb=refs%2Fheads%2F2.0;hp=c96dc89641d48ea841d204f6fe800b0fab2b9841;hpb=6496f5b4a0220e4055fee76c97f92293f9559117;p=monitor.git diff --git a/blacklist.py b/blacklist.py index c96dc89..8704b59 100755 --- a/blacklist.py +++ b/blacklist.py @@ -4,8 +4,8 @@ import os import sys import string import time -import database -import plc +from monitor import database +from monitor.database.info.model import * import getopt def usage(): @@ -13,38 +13,61 @@ def usage(): def main(): + loginbase = False + try: - longopts = ["delete=", "help"] - (opts, argv) = getopt.getopt(sys.argv[1:], "d:h", longopts) + longopts = ["delete=", "loginbase", "help"] + (opts, argv) = getopt.getopt(sys.argv[1:], "d:lh", longopts) except getopt.GetoptError, err: print "Error: " + err.msg sys.exit(1) - l_blacklist = database.if_cached_else(1, "l_blacklist", lambda : []) + hostnames_q = BlacklistRecord.getHostnameBlacklist() + loginbases_q = BlacklistRecord.getLoginbaseBlacklist() + hostnames = [ h.hostname for h in hostnames_q ] + loginbases = [ h.loginbase for h in loginbases_q ] for (opt, optval) in opts: if opt in ["-d", "--delete"]: - i = int(optval) - del l_blacklist[i] + i = optval + bl = BlacklistRecord.get_by(hostname=i) + bl.delete() + elif opt in ["-l", "--loginbase"]: + loginbase = True else: usage() sys.exit(0) i_cnt = 0 - for i in l_blacklist: - print i_cnt, " ", i - i_cnt += 1 + if not loginbase: + for i in hostnames: + print i + i_cnt += 1 + else: + for i in loginbases: + print i + i_cnt += 1 + + while 1: line = sys.stdin.readline() if not line: break line = line.strip() - if not line in l_blacklist: - l_blacklist.append(line) + if line not in hostnames and line not in loginbases: + if loginbase: + bl = BlacklistRecord(loginbase=line) + else: + bl = BlacklistRecord(hostname=line) + bl.flush() + i_cnt += 1 - print "Total %d nodes in blacklist" % (len(l_blacklist)) - database.dbDump("l_blacklist") + session.flush() + if loginbase: + print "Total %d loginbases in blacklist" % (i_cnt) + else: + print "Total %d nodes in blacklist" % (i_cnt) if __name__ == '__main__': import os