b7daa2f3a4
Update traefik dependencies (docker/docker and related) - Update dependencies - Fix compilation problems - Remove vdemeester/docker-events (in docker api now) - Remove `integration/vendor` - Use `testImport` - update some deps. - regenerate the lock from scratch (after a `glide cc`)
81 lines
1.9 KiB
Go
81 lines
1.9 KiB
Go
package project
|
|
|
|
import (
|
|
"bytes"
|
|
|
|
"github.com/Sirupsen/logrus"
|
|
"github.com/docker/libcompose/project/events"
|
|
)
|
|
|
|
var (
|
|
infoEvents = map[events.EventType]bool{
|
|
events.ServiceDeleteStart: true,
|
|
events.ServiceDelete: true,
|
|
events.ServiceDownStart: true,
|
|
events.ServiceDown: true,
|
|
events.ServiceStopStart: true,
|
|
events.ServiceStop: true,
|
|
events.ServiceKillStart: true,
|
|
events.ServiceKill: true,
|
|
events.ServiceCreateStart: true,
|
|
events.ServiceCreate: true,
|
|
events.ServiceStartStart: true,
|
|
events.ServiceStart: true,
|
|
events.ServiceRestartStart: true,
|
|
events.ServiceRestart: true,
|
|
events.ServiceUpStart: true,
|
|
events.ServiceUp: true,
|
|
events.ServicePauseStart: true,
|
|
events.ServicePause: true,
|
|
events.ServiceUnpauseStart: true,
|
|
events.ServiceUnpause: true,
|
|
}
|
|
)
|
|
|
|
type defaultListener struct {
|
|
project *Project
|
|
listenChan chan events.Event
|
|
upCount int
|
|
}
|
|
|
|
// NewDefaultListener create a default listener for the specified project.
|
|
func NewDefaultListener(p *Project) chan<- events.Event {
|
|
l := defaultListener{
|
|
listenChan: make(chan events.Event),
|
|
project: p,
|
|
}
|
|
go l.start()
|
|
return l.listenChan
|
|
}
|
|
|
|
func (d *defaultListener) start() {
|
|
for event := range d.listenChan {
|
|
buffer := bytes.NewBuffer(nil)
|
|
if event.Data != nil {
|
|
for k, v := range event.Data {
|
|
if buffer.Len() > 0 {
|
|
buffer.WriteString(", ")
|
|
}
|
|
buffer.WriteString(k)
|
|
buffer.WriteString("=")
|
|
buffer.WriteString(v)
|
|
}
|
|
}
|
|
|
|
if event.EventType == events.ServiceUp {
|
|
d.upCount++
|
|
}
|
|
|
|
logf := logrus.Debugf
|
|
|
|
if infoEvents[event.EventType] {
|
|
logf = logrus.Infof
|
|
}
|
|
|
|
if event.ServiceName == "" {
|
|
logf("Project [%s]: %s %s", d.project.Name, event.EventType, buffer.Bytes())
|
|
} else {
|
|
logf("[%d/%d] [%s]: %s %s", d.upCount, d.project.ServiceConfigs.Len(), event.ServiceName, event.EventType, buffer.Bytes())
|
|
}
|
|
}
|
|
}
|