225 lines
5.6 KiB
Go
225 lines
5.6 KiB
Go
|
// Package events holds event structures, methods and functions.
|
||
|
package events
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
// Notifier defines the methods an event notifier should have.
|
||
|
type Notifier interface {
|
||
|
Notify(eventType EventType, serviceName string, data map[string]string)
|
||
|
}
|
||
|
|
||
|
// Emitter defines the methods an event emitter should have.
|
||
|
type Emitter interface {
|
||
|
AddListener(c chan<- Event)
|
||
|
}
|
||
|
|
||
|
// Event holds project-wide event informations.
|
||
|
type Event struct {
|
||
|
EventType EventType
|
||
|
ServiceName string
|
||
|
Data map[string]string
|
||
|
}
|
||
|
|
||
|
// ContainerEvent holds attributes of container events.
|
||
|
type ContainerEvent struct {
|
||
|
Service string `json:"service"`
|
||
|
Event string `json:"event"`
|
||
|
ID string `json:"id"`
|
||
|
Time time.Time `json:"time"`
|
||
|
Attributes map[string]string `json:"attributes"`
|
||
|
Type string `json:"type"`
|
||
|
}
|
||
|
|
||
|
// EventType defines a type of libcompose event.
|
||
|
type EventType int
|
||
|
|
||
|
// Definitions of libcompose events
|
||
|
const (
|
||
|
NoEvent = EventType(iota)
|
||
|
|
||
|
ContainerCreated = EventType(iota)
|
||
|
ContainerStarted = EventType(iota)
|
||
|
|
||
|
ServiceAdd = EventType(iota)
|
||
|
ServiceUpStart = EventType(iota)
|
||
|
ServiceUpIgnored = EventType(iota)
|
||
|
ServiceUp = EventType(iota)
|
||
|
ServiceCreateStart = EventType(iota)
|
||
|
ServiceCreate = EventType(iota)
|
||
|
ServiceDeleteStart = EventType(iota)
|
||
|
ServiceDelete = EventType(iota)
|
||
|
ServiceDownStart = EventType(iota)
|
||
|
ServiceDown = EventType(iota)
|
||
|
ServiceRestartStart = EventType(iota)
|
||
|
ServiceRestart = EventType(iota)
|
||
|
ServicePullStart = EventType(iota)
|
||
|
ServicePull = EventType(iota)
|
||
|
ServiceKillStart = EventType(iota)
|
||
|
ServiceKill = EventType(iota)
|
||
|
ServiceStartStart = EventType(iota)
|
||
|
ServiceStart = EventType(iota)
|
||
|
ServiceBuildStart = EventType(iota)
|
||
|
ServiceBuild = EventType(iota)
|
||
|
ServicePauseStart = EventType(iota)
|
||
|
ServicePause = EventType(iota)
|
||
|
ServiceUnpauseStart = EventType(iota)
|
||
|
ServiceUnpause = EventType(iota)
|
||
|
ServiceStopStart = EventType(iota)
|
||
|
ServiceStop = EventType(iota)
|
||
|
ServiceRunStart = EventType(iota)
|
||
|
ServiceRun = EventType(iota)
|
||
|
|
||
|
VolumeAdd = EventType(iota)
|
||
|
NetworkAdd = EventType(iota)
|
||
|
|
||
|
ProjectDownStart = EventType(iota)
|
||
|
ProjectDownDone = EventType(iota)
|
||
|
ProjectCreateStart = EventType(iota)
|
||
|
ProjectCreateDone = EventType(iota)
|
||
|
ProjectUpStart = EventType(iota)
|
||
|
ProjectUpDone = EventType(iota)
|
||
|
ProjectDeleteStart = EventType(iota)
|
||
|
ProjectDeleteDone = EventType(iota)
|
||
|
ProjectRestartStart = EventType(iota)
|
||
|
ProjectRestartDone = EventType(iota)
|
||
|
ProjectReload = EventType(iota)
|
||
|
ProjectReloadTrigger = EventType(iota)
|
||
|
ProjectKillStart = EventType(iota)
|
||
|
ProjectKillDone = EventType(iota)
|
||
|
ProjectStartStart = EventType(iota)
|
||
|
ProjectStartDone = EventType(iota)
|
||
|
ProjectBuildStart = EventType(iota)
|
||
|
ProjectBuildDone = EventType(iota)
|
||
|
ProjectPauseStart = EventType(iota)
|
||
|
ProjectPauseDone = EventType(iota)
|
||
|
ProjectUnpauseStart = EventType(iota)
|
||
|
ProjectUnpauseDone = EventType(iota)
|
||
|
ProjectStopStart = EventType(iota)
|
||
|
ProjectStopDone = EventType(iota)
|
||
|
)
|
||
|
|
||
|
func (e EventType) String() string {
|
||
|
var m string
|
||
|
switch e {
|
||
|
case ContainerCreated:
|
||
|
m = "Created container"
|
||
|
case ContainerStarted:
|
||
|
m = "Started container"
|
||
|
|
||
|
case ServiceAdd:
|
||
|
m = "Adding"
|
||
|
case ServiceUpStart:
|
||
|
m = "Starting"
|
||
|
case ServiceUpIgnored:
|
||
|
m = "Ignoring"
|
||
|
case ServiceUp:
|
||
|
m = "Started"
|
||
|
case ServiceCreateStart:
|
||
|
m = "Creating"
|
||
|
case ServiceCreate:
|
||
|
m = "Created"
|
||
|
case ServiceDeleteStart:
|
||
|
m = "Deleting"
|
||
|
case ServiceDelete:
|
||
|
m = "Deleted"
|
||
|
case ServiceStopStart:
|
||
|
m = "Stopping"
|
||
|
case ServiceStop:
|
||
|
m = "Stopped"
|
||
|
case ServiceDownStart:
|
||
|
m = "Stopping"
|
||
|
case ServiceDown:
|
||
|
m = "Stopped"
|
||
|
case ServiceRestartStart:
|
||
|
m = "Restarting"
|
||
|
case ServiceRestart:
|
||
|
m = "Restarted"
|
||
|
case ServicePullStart:
|
||
|
m = "Pulling"
|
||
|
case ServicePull:
|
||
|
m = "Pulled"
|
||
|
case ServiceKillStart:
|
||
|
m = "Killing"
|
||
|
case ServiceKill:
|
||
|
m = "Killed"
|
||
|
case ServiceStartStart:
|
||
|
m = "Starting"
|
||
|
case ServiceStart:
|
||
|
m = "Started"
|
||
|
case ServiceBuildStart:
|
||
|
m = "Building"
|
||
|
case ServiceBuild:
|
||
|
m = "Built"
|
||
|
case ServiceRunStart:
|
||
|
m = "Executing"
|
||
|
case ServiceRun:
|
||
|
m = "Executed"
|
||
|
case ServicePauseStart:
|
||
|
m = "Pausing"
|
||
|
case ServicePause:
|
||
|
m = "Paused"
|
||
|
case ServiceUnpauseStart:
|
||
|
m = "Unpausing"
|
||
|
case ServiceUnpause:
|
||
|
m = "Unpaused"
|
||
|
|
||
|
case ProjectDownStart:
|
||
|
m = "Stopping project"
|
||
|
case ProjectDownDone:
|
||
|
m = "Project stopped"
|
||
|
case ProjectStopStart:
|
||
|
m = "Stopping project"
|
||
|
case ProjectStopDone:
|
||
|
m = "Project stopped"
|
||
|
case ProjectCreateStart:
|
||
|
m = "Creating project"
|
||
|
case ProjectCreateDone:
|
||
|
m = "Project created"
|
||
|
case ProjectUpStart:
|
||
|
m = "Starting project"
|
||
|
case ProjectUpDone:
|
||
|
m = "Project started"
|
||
|
case ProjectDeleteStart:
|
||
|
m = "Deleting project"
|
||
|
case ProjectDeleteDone:
|
||
|
m = "Project deleted"
|
||
|
case ProjectRestartStart:
|
||
|
m = "Restarting project"
|
||
|
case ProjectRestartDone:
|
||
|
m = "Project restarted"
|
||
|
case ProjectReload:
|
||
|
m = "Reloading project"
|
||
|
case ProjectReloadTrigger:
|
||
|
m = "Triggering project reload"
|
||
|
case ProjectKillStart:
|
||
|
m = "Killing project"
|
||
|
case ProjectKillDone:
|
||
|
m = "Project killed"
|
||
|
case ProjectStartStart:
|
||
|
m = "Starting project"
|
||
|
case ProjectStartDone:
|
||
|
m = "Project started"
|
||
|
case ProjectBuildStart:
|
||
|
m = "Building project"
|
||
|
case ProjectBuildDone:
|
||
|
m = "Project built"
|
||
|
case ProjectPauseStart:
|
||
|
m = "Pausing project"
|
||
|
case ProjectPauseDone:
|
||
|
m = "Project paused"
|
||
|
case ProjectUnpauseStart:
|
||
|
m = "Unpausing project"
|
||
|
case ProjectUnpauseDone:
|
||
|
m = "Project unpaused"
|
||
|
}
|
||
|
|
||
|
if m == "" {
|
||
|
m = fmt.Sprintf("EventType: %d", int(e))
|
||
|
}
|
||
|
|
||
|
return m
|
||
|
}
|