func New(zkzone *zk.ZkZone, listenAddr string, managerType string) Controller { // mysql cluster config b, err := zkzone.KatewayJobClusterConfig() if err != nil { panic(err) } var mcc = &config.ConfigMysql{} if err = mcc.From(b); err != nil { panic(err) } this := &controller{ quiting: make(chan struct{}), orchestrator: zkzone.NewOrchestrator(), mc: mysql.New(mcc), ListenAddr: listenAddr, Version: gafka.BuildId, } this.ident, err = this.generateIdent() if err != nil { panic(err) } // hostname:95f333fb-731c-9c95-c598-8d6b99a9ec7d p := strings.SplitN(this.ident, ":", 2) this.shortId = fmt.Sprintf("%s:%s", p[0], this.ident[strings.LastIndexByte(this.ident, '-')+1:]) this.setupAuditor() switch managerType { case "mysql": cf := mmysql.DefaultConfig(zkzone.Name()) cf.Refresh = time.Minute * 5 manager.Default = mmysql.New(cf) case "dummy": manager.Default = mdummy.New("") default: panic("unknown manager: " + managerType) } return this }