github.com/fanux/shipyard@v0.0.0-20161009071005-6515ce223235/controller/manager/handler.go (about) 1 package manager 2 3 import ( 4 "fmt" 5 6 log "github.com/Sirupsen/logrus" 7 "github.com/samalba/dockerclient" 8 "github.com/shipyard/shipyard" 9 "github.com/shipyard/shipyard/utils" 10 ) 11 12 type ( 13 EventHandler struct { 14 Manager Manager 15 } 16 ) 17 18 func (h *EventHandler) Handle(e *dockerclient.Event) error { 19 log.Infof("event: date=%d status=%s container=%s", e.Time, e.Status, e.ID[:12]) 20 h.logDockerEvent(e) 21 return nil 22 } 23 24 func (h *EventHandler) logDockerEvent(e *dockerclient.Event) error { 25 info, err := h.Manager.Container(e.ID) 26 if err != nil { 27 return err 28 } 29 30 ts, err := utils.FromUnixTimestamp(e.Time) 31 if err != nil { 32 return err 33 } 34 35 evt := &shipyard.Event{ 36 Type: e.Status, 37 Message: fmt.Sprintf("action=%s container=%s", 38 e.Status, e.ID[:12]), 39 Time: *ts, 40 ContainerInfo: info, 41 Tags: []string{"docker"}, 42 } 43 if err := h.Manager.SaveEvent(evt); err != nil { 44 return err 45 } 46 return nil 47 }