func node_lost_handler(event models.AppEvent, ctxt string) (models.AppEvent, error) { //worry about the node only if the node in active state state, err := skyringutils.GetNodeStateById(ctxt, event.NodeId) if state == models.NODE_STATE_ACTIVE && err == nil { if err := skyringutils.Update_node_status_byId(ctxt, event.NodeId, models.NODE_STATUS_ERROR); err != nil { return event, err } } event.Name = skyring.EventTypes["NODE_STATE_CHANGED"] event.Message = fmt.Sprintf("Host: %s lost contact", event.NodeName) event.EntityId = event.NodeId event.Severity = models.ALARM_STATUS_MAJOR event.NotificationEntity = models.NOTIFICATION_ENTITY_HOST event.Notify = true util.AppendServiceToNode(bson.M{"nodeid": event.NodeId}, models.SkyringServices[1], models.STATUS_DOWN, ctxt) if err := update_alarm_count(event, ctxt); err != nil { logger.Get().Error("%s-could not update alarm"+ " count for event: %s", ctxt, event.EventId.String()) return event, err } app := skyring.GetApp() if err := app.RouteProviderEvents(ctxt, event); err != nil { logger.Get().Error("%s-Event:%s could not be handled for node: %s. error: %v", ctxt, event.Name, event.NodeName, err) } return event, nil }
func node_appeared_handler(event models.AppEvent, ctxt string) (models.AppEvent, error) { //worry about the node only if the node in active state state, err := skyringutils.GetNodeStateById(ctxt, event.NodeId) if state == models.NODE_STATE_ACTIVE && err == nil { if err := skyringutils.Update_node_status_byId(ctxt, event.NodeId, models.NODE_STATUS_OK); err != nil { return event, err } } event.Name = skyring.EventTypes["NODE_STATE_CHANGED"] event.Message = fmt.Sprintf("Host: %s gained contact", event.NodeName) event.EntityId = event.NodeId event.Severity = models.ALARM_STATUS_CLEARED event.NotificationEntity = models.NOTIFICATION_ENTITY_HOST event.Notify = true util.AppendServiceToNode(bson.M{"nodeid": event.NodeId}, models.SkyringServices[1], models.STATUS_UP, ctxt) if err := update_alarm_count(event, ctxt); err != nil { logger.Get().Error("%s-could not update alarm"+ " count for event: %s", ctxt, event.EventId.String()) return event, err } return event, nil }