in server/server.go [55:98]
func NewServer(cfg *config.Config) (*Server, error) {
var persist engine.Engine
var err error
sessionID := helper.GenerateSessionID(cfg.Addr)
storageType := strings.ToLower(cfg.StorageType)
switch storageType {
case "etcd":
logger.Get().Info("Use Etcd as store")
persist, err = etcd.New(sessionID, cfg.Etcd)
case "zookeeper":
logger.Get().Info("Use Zookeeper as store")
persist, err = zookeeper.New(sessionID, cfg.Zookeeper)
case "raft":
logger.Get().Info("Use Raft as store")
persist, err = raft.New(cfg.Raft)
case "consul":
logger.Get().Info("Use Consul as store")
persist, err = consul.New(sessionID, cfg.Consul)
default:
logger.Get().Info("Use Etcd as default store")
persist, err = etcd.New(sessionID, cfg.Etcd)
}
if err != nil {
return nil, err
}
if persist == nil {
return nil, fmt.Errorf("no found any store config")
}
clusterStore := store.NewClusterStore(persist)
ctrl, err := controller.New(clusterStore, cfg.Controller)
if err != nil {
return nil, err
}
gin.SetMode(gin.ReleaseMode)
return &Server{
store: clusterStore,
controller: ctrl,
config: cfg,
engine: gin.New(),
}, nil
}