emit a custom event when a node dies or comes back

Signed-off-by: mountkin <mountkin@gmail.com>
This commit is contained in:
mountkin 2015-01-14 10:05:00 +08:00
parent a3f0c1643f
commit 7d4bbcd59a
1 changed files with 20 additions and 0 deletions

View File

@ -238,6 +238,9 @@ func (n *Node) refreshLoop() {
}
if err != nil {
if n.healthy {
n.emitCustomEvent("node_die")
}
n.healthy = false
log.Errorf("[%s/%s] Flagging node as dead. Updated state failed: %v", n.ID, n.Name, err)
} else {
@ -245,12 +248,29 @@ func (n *Node) refreshLoop() {
log.Infof("[%s/%s] Node came back to life. Hooray!", n.ID, n.Name)
n.client.StopAllMonitorEvents()
n.client.StartMonitorEvents(n.handler)
n.emitCustomEvent("node_comes_back")
}
n.healthy = true
}
}
}
func (n *Node) emitCustomEvent(event string) {
// If there is no event handler registered, abort right now.
if n.eventHandler == nil {
return
}
ev := &Event{
Event: dockerclient.Event{
Status: event,
From: "swarm",
Time: time.Now().Unix(),
},
Node: n,
}
n.eventHandler.Handle(ev)
}
// Return the sum of memory reserved by containers.
func (n *Node) ReservedMemory() int64 {
var r int64 = 0