github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/model/event/task_event.go (about) 1 package event 2 3 import ( 4 "time" 5 6 "github.com/mongodb/grip" 7 ) 8 9 const ( 10 // resource type 11 ResourceTypeTask = "TASK" 12 13 // event types 14 TaskCreated = "TASK_CREATED" 15 TaskDispatched = "TASK_DISPATCHED" 16 TaskUndispatched = "TASK_UNDISPATCHED" 17 TaskStarted = "TASK_STARTED" 18 TaskFinished = "TASK_FINISHED" 19 TaskRestarted = "TASK_RESTARTED" 20 TaskActivated = "TASK_ACTIVATED" 21 TaskDeactivated = "TASK_DEACTIVATED" 22 TaskAbortRequest = "TASK_ABORT_REQUEST" 23 TaskScheduled = "TASK_SCHEDULED" 24 ) 25 26 // implements Data 27 type TaskEventData struct { 28 // necessary for IsValid 29 ResourceType string `bson:"r_type" json:"resource_type"` 30 HostId string `bson:"h_id,omitempty" json:"host_id,omitempty"` 31 UserId string `bson:"u_id,omitempty" json:"user_id,omitempty"` 32 Status string `bson:"s,omitempty" json:"status,omitempty"` 33 Timestamp time.Time `bson:"ts,omitempty" json:"timestamp,omitempty"` 34 } 35 36 func (self TaskEventData) IsValid() bool { 37 return self.ResourceType == ResourceTypeTask 38 } 39 40 func LogTaskEvent(taskId string, eventType string, eventData TaskEventData) { 41 eventData.ResourceType = ResourceTypeTask 42 event := Event{ 43 Timestamp: time.Now(), 44 ResourceId: taskId, 45 EventType: eventType, 46 Data: DataWrapper{eventData}, 47 } 48 49 logger := NewDBEventLogger(AllLogCollection) 50 if err := logger.LogEvent(event); err != nil { 51 grip.Errorf("Error logging task event: %+v", err) 52 } 53 } 54 55 func LogTaskCreated(taskId string) { 56 LogTaskEvent(taskId, TaskCreated, TaskEventData{}) 57 } 58 59 func LogTaskDispatched(taskId, hostId string) { 60 LogTaskEvent(taskId, TaskDispatched, TaskEventData{HostId: hostId}) 61 } 62 63 func LogTaskUndispatched(taskId, hostId string) { 64 LogTaskEvent(taskId, TaskUndispatched, TaskEventData{HostId: hostId}) 65 } 66 67 func LogTaskStarted(taskId string) { 68 LogTaskEvent(taskId, TaskStarted, TaskEventData{}) 69 } 70 71 func LogTaskFinished(taskId string, hostId, status string) { 72 LogTaskEvent(taskId, TaskFinished, TaskEventData{Status: status}) 73 LogHostEvent(hostId, EventTaskFinished, HostEventData{TaskStatus: status, TaskId: taskId}) 74 } 75 76 func LogTaskRestarted(taskId string, userId string) { 77 LogTaskEvent(taskId, TaskRestarted, TaskEventData{UserId: userId}) 78 } 79 80 func LogTaskActivated(taskId string, userId string) { 81 LogTaskEvent(taskId, TaskActivated, TaskEventData{UserId: userId}) 82 } 83 84 func LogTaskDeactivated(taskId string, userId string) { 85 LogTaskEvent(taskId, TaskDeactivated, TaskEventData{UserId: userId}) 86 } 87 88 func LogTaskAbortRequest(taskId string, userId string) { 89 LogTaskEvent(taskId, TaskAbortRequest, 90 TaskEventData{UserId: userId}) 91 } 92 93 func LogTaskScheduled(taskId string, scheduledTime time.Time) { 94 LogTaskEvent(taskId, TaskScheduled, 95 TaskEventData{Timestamp: scheduledTime}) 96 }