X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FBootNotifyOwners.py;h=3564814bacff0a24dc381d1510de34afe2a33eee;hb=83fe6b6b3571d190b525e46d30b0df05e552d76e;hp=958bf9f050363267066e1204ca43fef212de167b;hpb=8c0ae6e3e6c872da288c4b4cc2fe017f18e70f20;p=plcapi.git diff --git a/PLC/Methods/BootNotifyOwners.py b/PLC/Methods/BootNotifyOwners.py index 958bf9f..3564814 100644 --- a/PLC/Methods/BootNotifyOwners.py +++ b/PLC/Methods/BootNotifyOwners.py @@ -1,11 +1,12 @@ -from PLC.Debug import log -from PLC.Faults import * +# $Id$ +# $URL$ from PLC.Method import Method from PLC.Parameter import Parameter, Mixed -from PLC.Auth import Auth, BootAuth +from PLC.Auth import Auth, BootAuth, SessionAuth +from PLC.Nodes import Node, Nodes from PLC.Messages import Message, Messages -from PLC.Persons import Person, Persons -from PLC.Sites import Site, Sites + +from PLC.Boot import notify_owners class BootNotifyOwners(Method): """ @@ -18,7 +19,7 @@ class BootNotifyOwners(Method): roles = ['node'] accepts = [ - BootAuth(), + Auth(), Message.fields['message_id'], Parameter(int, "Notify PIs"), Parameter(int, "Notify technical contacts"), @@ -28,45 +29,6 @@ class BootNotifyOwners(Method): returns = Parameter(int, '1 if successful') def call(self, auth, message_id, include_pis, include_techs, include_support): - messages = Messages(self.api, [message_id], enabled = True) - if not messages: - print >> log, "No such message template '%s'" % message_id - return 1 - message = messages[0] - - if not self.api.config.PLC_MAIL_ENABLED: - return 1 - - from_addr = {} - from_addr[self.api.config.PLC_MAIL_SUPPORT_ADDRESS] = \ - "%s %s" % ('Planetlab', 'Support') - recipients = {} - - if self.api.config.PLC_MAIL_BOOT_ADDRESS: - recipients[self.api.config.PLC_MAIL_BOOT_ADDRESS] = "Boot Messages" - - if include_support and self.api.config.PLC_MAIL_SUPPORT_ADDRESS: - recipients[self.api.config.PLC_MAIL_SUPPORT_ADDRESS] = self.api.config.PLC_NAME + " Support" - - if include_pis or include_techs: - sites = Sites(self.api, [self.caller['site_id']]) - if not sites: - raise PLCAPIError, "No site associated with node" - site = sites[0] - - persons = Persons(self.api, site['person_ids']) - for person in persons: - if include_pis and 'pi' in person['roles'] or \ - include_techs and 'tech' in person['roles']: - recipients[person['email']] = person['first_name'] + " " + person['last_name'] - - subject = message['subject'] - template = message['template'] - - # Send email - self.api.mailer.mail(recipients, None, from_addr, subject, template) - - # Logging variables - self.message = "Node sent message %s to contacts" - + assert isinstance(self.caller, Node) + notify_owners(self, self.caller, message_id, include_pis, include_techs, include_support) return 1