github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/notify/task_failure_handler.go (about) 1 package notify 2 3 import ( 4 "github.com/evergreen-ci/evergreen" 5 "github.com/evergreen-ci/evergreen/model/task" 6 "github.com/evergreen-ci/evergreen/web" 7 "github.com/mongodb/grip" 8 ) 9 10 // Handler for task failure notifications. Implements NotificationHandler from 11 // notification_handler.go. 12 type TaskFailureHandler struct { 13 TaskNotificationHandler 14 Name string 15 } 16 17 func (self *TaskFailureHandler) GetNotifications(ae *web.App, key *NotificationKey) ([]Email, error) { 18 var emails []Email 19 preface := mciFailurePreface 20 if key.NotificationRequester == evergreen.PatchVersionRequester { 21 preface = patchFailurePreface 22 } 23 triggeredNotifications, err := self.getRecentlyFinishedTasksWithStatus(key, 24 evergreen.TaskFailed, preface, failureSubject) 25 if err != nil { 26 return nil, err 27 } 28 29 for _, triggered := range triggeredNotifications { 30 email, err := self.TemplateNotification(ae, &triggered) 31 if err != nil { 32 grip.Warningf("template error with task failure notification for '%s': %s", 33 triggered.Current.Id, err.Error()) 34 continue 35 } 36 37 emails = append(emails, email) 38 } 39 40 return emails, nil 41 } 42 43 func (self *TaskFailureHandler) TemplateNotification(ae *web.App, notification *TriggeredTaskNotification) (Email, error) { 44 changeInfo, err := self.GetChangeInfo(notification) 45 if err != nil { 46 return nil, err 47 } 48 return self.templateNotification(ae, notification, changeInfo) 49 } 50 51 func (self *TaskFailureHandler) GetChangeInfo( 52 notification *TriggeredTaskNotification) ([]ChangeInfo, error) { 53 return self.constructChangeInfo([]task.Task{*notification.Current}, ¬ification.Key) 54 }