github.com/justinjmoses/evergreen@v0.0.0-20170530173719-1d50e381ff0d/service/event_log.go (about)

     1  package service
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  	"strings"
     7  
     8  	"github.com/evergreen-ci/evergreen/db"
     9  	"github.com/evergreen-ci/evergreen/model/event"
    10  	"github.com/evergreen-ci/evergreen/model/user"
    11  	"github.com/gorilla/mux"
    12  )
    13  
    14  func (uis *UIServer) fullEventLogs(w http.ResponseWriter, r *http.Request) {
    15  	resourceType := strings.ToUpper(mux.Vars(r)["resource_type"])
    16  	resourceId := mux.Vars(r)["resource_id"]
    17  	u := GetUser(r)
    18  	projCtx := MustHaveProjectContext(r)
    19  
    20  	var eventQuery db.Q
    21  	switch resourceType {
    22  	case event.ResourceTypeTask:
    23  		eventQuery = event.MostRecentTaskEvents(resourceId, 100)
    24  	case event.ResourceTypeScheduler:
    25  		eventQuery = event.RecentSchedulerEvents(resourceId, 500)
    26  	case event.ResourceTypeHost:
    27  		if u == nil {
    28  			uis.RedirectToLogin(w, r)
    29  			return
    30  		}
    31  		eventQuery = event.MostRecentHostEvents(resourceId, 5000)
    32  	case event.ResourceTypeDistro:
    33  		if u == nil {
    34  			uis.RedirectToLogin(w, r)
    35  			return
    36  		}
    37  		eventQuery = event.MostRecentDistroEvents(resourceId, 200)
    38  	default:
    39  		http.Error(w, fmt.Sprintf("Unknown resource: %v", resourceType), http.StatusBadRequest)
    40  		return
    41  	}
    42  
    43  	loggedEvents, err := event.Find(event.AllLogCollection, eventQuery)
    44  	if err != nil {
    45  		uis.LoggedError(w, r, http.StatusInternalServerError, err)
    46  		return
    47  	}
    48  
    49  	uis.WriteHTML(w, http.StatusOK, struct {
    50  		ProjectData projectContext
    51  		User        *user.DBUser
    52  		Data        []event.Event
    53  	}{projCtx, u, loggedEvents}, "base", "event_log.html", "base_angular.html")
    54  }