#!/usr/bin/python
-import soltesz
+import database
import plc
-import auth
-api = plc.PLC(auth.auth, auth.plc)
+api = plc.getAuthAPI()
import mailer
import time
from nodecommon import *
from const import *
+import util.file
+import config
def gethostlist(hostlist_file):
- import config
- return config.getListFromFile(hostlist_file)
+ return util.file.getListFromFile(hostlist_file)
#nodes = api.GetNodes({'peer_id' : None}, ['hostname'])
#return [ n['hostname'] for n in nodes ]
# condition/penalty is applied, move to the next phase.
-fb = soltesz.dbLoad("findbad")
+fb = database.dbLoad("findbad")
class RT(object):
def __init__(self, ticket_id = None):
db = "persistflags"
try:
- pm = soltesz.dbLoad(db)
+ pm = database.dbLoad(db)
except:
- soltesz.dbDump(db, {})
- pm = soltesz.dbLoad(db)
+ database.dbDump(db, {})
+ pm = database.dbLoad(db)
#print pm
if id in pm:
obj = pm[id]
Recent.__init__(self, withintime)
def save(self):
- pm = soltesz.dbLoad(self.db)
+ pm = database.dbLoad(self.db)
pm[self.id] = self
- soltesz.dbDump(self.db, pm)
+ database.dbDump(self.db, pm)
def resetFlag(self, name):
self.__setattr__(name, False)
db = "persistmessages"
try:
- pm = soltesz.dbLoad(db)
+ pm = database.dbLoad(db)
except:
- soltesz.dbDump(db, {})
- pm = soltesz.dbLoad(db)
+ database.dbDump(db, {})
+ pm = database.dbLoad(db)
#print pm
if id in pm:
self.actiontracker.setRecent()
#print "recording object for persistance"
- pm = soltesz.dbLoad(self.db)
+ pm = database.dbLoad(self.db)
pm[self.id] = self
- soltesz.dbDump(self.db, pm)
+ database.dbDump(self.db, pm)
else:
# NOTE: only send a new message every week, regardless.
print "Not sending to host b/c not within window of %s days" % (self.actiontracker.withintime // 60*60*24)
try:
if 'reset' in kwargs and kwargs['reset'] == True:
- soltesz.dbDump(db, {})
- pm = soltesz.dbLoad(db)
+ database.dbDump(db, {})
+ pm = database.dbLoad(db)
except:
- soltesz.dbDump(db, {})
- pm = soltesz.dbLoad(db)
+ database.dbDump(db, {})
+ pm = database.dbLoad(db)
#print pm
if id in pm:
try:
if 'reset' in kwargs and kwargs['reset'] == True:
- soltesz.dbDump(db, {})
- pm = soltesz.dbLoad(db)
+ database.dbDump(db, {})
+ pm = database.dbLoad(db)
except:
- soltesz.dbDump(db, {})
- pm = soltesz.dbLoad(db)
+ database.dbDump(db, {})
+ pm = database.dbLoad(db)
#print pm
if id in pm:
self.id = id
def save(self):
- pm = soltesz.dbLoad(self.db)
+ pm = database.dbLoad(self.db)
pm[self.id] = self
- soltesz.dbDump(self.db, pm)
+ database.dbDump(self.db, pm)
class Target:
def __init__(self, hostname, data):
self.hostname = hostname
self.data = data
- self.plcdb_hn2lb = soltesz.dbLoad("plcdb_hn2lb")
+ self.plcdb_hn2lb = database.dbLoad("plcdb_hn2lb")
self.loginbase = self.plcdb_hn2lb[self.hostname]
return
def getDaysDown(cls, diag_record):
daysdown = -1
if diag_record['comonstats']['uptime'] != "null":
- #print "uptime %s" % (int(float(diag_record['comonstats']['uptime'])) // (60*60*24))
daysdown = - int(float(diag_record['comonstats']['uptime'])) // (60*60*24)
- elif diag_record['comonstats']['sshstatus'] != "null":
- daysdown = int(diag_record['comonstats']['sshstatus']) // (60*60*24)
- elif diag_record['comonstats']['lastcotop'] != "null":
- daysdown = int(diag_record['comonstats']['lastcotop']) // (60*60*24)
+ #elif diag_record['comonstats']['sshstatus'] != "null":
+ # daysdown = int(diag_record['comonstats']['sshstatus']) // (60*60*24)
+ #elif diag_record['comonstats']['lastcotop'] != "null":
+ # daysdown = int(diag_record['comonstats']['lastcotop']) // (60*60*24)
else:
now = time.time()
last_contact = diag_record['plcnode']['last_contact']
getDaysDown = classmethod(getDaysDown)
def getStrDaysDown(cls, diag_record):
- daysdown = cls.getDaysDown(diag_record)
- if daysdown > 0:
- return "%d days down"%daysdown
- elif daysdown == -1:
- return "Unknown number of days"
+ daysdown = "unknown"
+ last_contact = diag_record['plcnode']['last_contact']
+ date_created = diag_record['plcnode']['date_created']
+
+ if diag_record['comonstats']['uptime'] != "null" and \
+ diag_record['comonstats']['uptime'] != "-1":
+ daysdown = int(float(diag_record['comonstats']['uptime'])) // (60*60*24)
+ daysdown = "%d days up" % daysdown
+
+ elif last_contact is None:
+ if date_created is not None:
+ now = time.time()
+ diff = now - date_created
+ daysdown = diff // (60*60*24)
+ daysdown = "Never contacted PLC, created %s days ago" % daysdown
+ else:
+ daysdown = "Never contacted PLC"
else:
- return "%d days up"% -daysdown
+ now = time.time()
+ diff = now - last_contact
+ daysdown = diff // (60*60*24)
+ daysdown = "%s days down" % daysdown
+ return daysdown
getStrDaysDown = classmethod(getStrDaysDown)
+ #def getStrDaysDown(cls, diag_record):
+ # daysdown = cls.getDaysDown(diag_record)
+ # if daysdown > 0:
+ # return "%d days down"%daysdown
+ # elif daysdown == -1:
+ # return "Never online"
+ # else:
+ # return "%d days up"% -daysdown
+ #getStrDaysDown = classmethod(getStrDaysDown)
+
def takeAction(self):
pp = PersistSitePenalty(self.hostname, 0, db='persistpenalty_hostnames')
if 'improvement' in self.data['stage'] or self.improved():
return message
def getContacts(self):
- from config import config
- #print "policy"
- config = config()
-
roles = self.data['email']
if not config.mail and not config.debug and config.bcc:
self.ticket.closeTicket()
def exempt_from_penalties(self):
- bl = soltesz.dbLoad("l_blacklist")
+ bl = database.dbLoad("l_blacklist")
return self.hostname in bl
def penalties(self):
if __name__ == "__main__":
#r = RT()
- #r.email("test", "body of test message", ['soltesz@cs.princeton.edu'])
+ #r.email("test", "body of test message", ['database@cs.princeton.edu'])
#from emailTxt import mailtxt
print "loaded"
- #soltesz.dbDump("persistmessages", {});
+ #database.dbDump("persistmessages", {});
#args = {'url_list': 'http://www.planet-lab.org/bootcds/planet1.usb\n','hostname': 'planet1','hostname_list': ' blahblah - days down\n'}
#m = PersistMessage("blue", "test 1", mailtxt.newdown_one[1] % args, True)
#m.send(['soltesz@cs.utk.edu'])