mirror of https://github.com/shunfei/cronsun
40 lines
946 B
Go
40 lines
946 B
Go
package node
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"gopkg.in/mgo.v2/bson"
|
|
|
|
"github.com/shunfei/cronsun"
|
|
"github.com/shunfei/cronsun/conf"
|
|
"github.com/shunfei/cronsun/log"
|
|
)
|
|
|
|
func (n *Node) executCsctlCmd(key, value []byte) error {
|
|
cmd := &cronsun.CsctlCmd{}
|
|
err := json.Unmarshal(value, cmd)
|
|
if err != nil {
|
|
log.Warnf("invalid csctl command[%s] value[%s], err: %s", string(key), string(value), err.Error())
|
|
return err
|
|
}
|
|
|
|
if cronsun.NodeCmdMax <= cmd.Cmd || cmd.Cmd <= cronsun.NodeCmdUnknown {
|
|
log.Warnf("invalid csctl command[%s] value[%s], err: %s", string(key), string(value))
|
|
return cronsun.InvalidNodeCmdErr
|
|
}
|
|
|
|
switch cmd.Cmd {
|
|
case cronsun.NodeCmdRmOld:
|
|
n.rmOld()
|
|
}
|
|
|
|
log.Infof("%s execute csctl command[%s] success", n.String(), cmd.Cmd.String())
|
|
return nil
|
|
}
|
|
|
|
func (n *Node) rmOld() {
|
|
// remove old version(< 0.3.0) node info
|
|
cronsun.RemoveNode(bson.M{"_id": n.IP})
|
|
cronsun.DefalutClient.Delete(conf.Config.Node + n.IP)
|
|
}
|