4 # Mark Huang <mlhuang@cs.princeton.edu>
5 # Copyright (C) 2007 The Trustees of Princeton University
10 from PLC.Faults import *
11 from PLC.Debug import log
12 from PLC.Messages import Message, Messages
13 from PLC.Persons import Person, Persons
14 from PLC.Sites import Site, Sites
15 from PLC.sendmail import sendmail
17 def notify_owners(method, node, message_id,
18 include_pis = False, include_techs = False, include_support = False,
20 messages = Messages(method.api, [message_id], enabled = True)
22 print >> log, "No such message template '%s'" % message_id
28 if method.api.config.PLC_MAIL_BOOT_ADDRESS:
29 To.append(("Boot Messages", method.api.config.PLC_MAIL_BOOT_ADDRESS))
31 if include_support and method.api.config.PLC_MAIL_SUPPORT_ADDRESS:
32 To.append(("%s Support" % method.api.config.PLC_NAME,
33 method.api.config.PLC_MAIL_SUPPORT_ADDRESS))
35 if include_pis or include_techs:
36 sites = Sites(method.api, [node['site_id']])
38 raise PLCAPIError, "No site associated with node"
41 persons = Persons(method.api, site['person_ids'])
42 for person in persons:
43 if include_pis and 'pi' in person['roles'] or \
44 include_techs and 'tech' in person['roles']:
45 To.append(("%s %s" % (person['first_name'], person['last_name']), person['email']))
48 params = {'node_id': node['node_id'],
49 'hostname': node['hostname'],
50 'PLC_WWW_HOST': method.api.config.PLC_WWW_HOST,
51 'PLC_WWW_SSL_PORT': method.api.config.PLC_WWW_SSL_PORT,
54 sendmail(method.api, To = To,
55 Subject = message['subject'] % params,
56 Body = message['template'] % params)
59 method.object_type = "Node"
60 method.object_ids = [node['node_id']]
61 method.message = "Sent message %s" % message_id