-from monitor import reboot
from monitor.common import *
from monitor.model import *
from monitor.wrapper import plc
from monitor.wrapper import plccache
from monitor.wrapper.emailTxt import mailtxt
from monitor.database.info.model import *
+# NOTE: must import this after monitor.database.info.model b/c that imports
+# pcucontro.reboot and blocks this version, if it comes last.
+from monitor import reboot
class SiteInterface(HistorySiteRecord):
@classmethod
# TODO: catch any errors here, and add an ActionRecord that contains
# those errors.
- args = {'loginbase' : self.db.loginbase, 'penalty_level' : self.db.penalty_level}
+ args = {'loginbase' : self.db.loginbase,
+ 'penalty_level' : self.db.penalty_level,
+ 'monitor_hostname' : config.MONITOR_HOSTNAME,
+ 'support_email' : config.support_email,
+ 'plc_name' : config.PLC_NAME,
+ 'plc_hostname' : config.PLC_WWW_HOSTNAME}
args.update(kwargs)
hostname = None
if hasattr(mailtxt, type):
message = getattr(mailtxt, type)
+
+ ccemail = False
+ saveact = True
viart = True
- if 'viart' in kwargs:
+ if 'viart' in kwargs:
+ saveact = kwargs['viart']
viart = kwargs['viart']
+ if 'saveact' in kwargs:
+ saveact = kwargs['saveact']
+
+ if 'ccemail' in kwargs:
+ ccemail = kwargs['ccemail']
+
if viart:
self.getTicketStatus() # get current message status
if self.db.message_status not in ['open', 'new']:
m = Message(message[0] % args, message[1] % args, viart, self.db.message_id)
- contacts = self.getContacts()
+ if ccemail:
+ contacts = [config.exception_email]
+ else:
+ contacts = self.getContacts()
print "sending message: %s to site %s for host %s" % (type, self.db.loginbase, hostname)
# reset to previous status, since a new subject 'opens' RT tickets.
self.setTicketStatus(self.db.message_status)
+ if saveact:
# NOTE: only make a record of it if it's in RT.
act = ActionRecord(loginbase=self.db.loginbase, hostname=hostname, action='notice',
action_type=type, message_id=self.db.message_id)
return
def closeTicket(self):
- # TODO: close the rt ticket before overwriting the message_id
- mailer.closeTicketViaRT(self.db.message_id, "Ticket Closed by Monitor")
- act = ActionRecord(loginbase=self.db.loginbase, action='notice',
- action_type='close_ticket', message_id=self.db.message_id)
- self.db.message_id = 0
- self.db.message_status = "new"
+ if self.db.message_id:
+ mailer.closeTicketViaRT(self.db.message_id, "Ticket Closed by Monitor")
+ act = ActionRecord(loginbase=self.db.loginbase, action='notice',
+ action_type='close_ticket', message_id=self.db.message_id)
+ self.db.message_id = 0
+ self.db.message_status = "new"
def runBootManager(self, hostname):
from monitor import bootman
print "attempting BM reboot of %s" % hostname
- ret = ""
+ ret = "error"
try:
ret = bootman.restore(self, hostname)
err = ""
err = traceback.format_exc()
print err
+ # TODO: keep this record so that the policy.py can identify all
+ # bootmanager_* actions without explicitly listing every kind.
act = ActionRecord(loginbase=self.db.loginbase,
hostname=hostname,
action='reboot',
action_type='bootmanager_restore',
+ error_string="")
+
+ act = ActionRecord(loginbase=self.db.loginbase,
+ hostname=hostname,
+ action='reboot',
+ action_type='bootmanager_' + ret,
error_string=err)
return ret