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  }