// standardHttp starts serving standard HTTP (api/web) requests, to be used by normal clients func standardHttp(discovery bool) { m := martini.Classic() if config.Config.HTTPAuthUser != "" { m.Use(auth.Basic(config.Config.HTTPAuthUser, config.Config.HTTPAuthPassword)) } // Render html templates from templates directory m.Use(render.Renderer(render.Options{ Directory: "resources", Layout: "templates/layout", HTMLContentType: "text/html", })) m.Use(martini.Static("resources/public")) log.Info("Starting HTTP") if discovery { go orchestrator.ContinuousDiscovery() } http.API.RegisterRequests(m) http.Web.RegisterRequests(m) // Serve m.Run() }
// agentsHttp startes serving agents API requests func agentsHttp() { m := martini.Classic() m.Use(render.Renderer()) log.Info("Starting agents HTTP") go orchestrator.ContinuousAgentsPoll() http.AgentsAPI.RegisterRequests(m) // Serve nethttp.ListenAndServe(":3001", m) }
// main is the application's entry point. It will either spawn a CLI or HTTP itnerfaces. func main() { configFile := flag.String("config", "", "config file name") command := flag.String("c", "", "command (discover|forget|continuous|move-up|move-below|begin-maintenance|end-maintenance|clusters|topology)") instance := flag.String("i", "", "instance, host:port") sibling := flag.String("s", "", "sibling instance, host:port") owner := flag.String("owner", "", "operation owner") reason := flag.String("reason", "", "operation reason") discovery := flag.Bool("discovery", true, "auto discovery mode") verbose := flag.Bool("verbose", false, "verbose") debug := flag.Bool("debug", false, "debug mode (very verbose)") stack := flag.Bool("stack", false, "add stack trace upon error") flag.Parse() log.SetLevel(log.ERROR) if *verbose { log.SetLevel(log.INFO) } if *debug { log.SetLevel(log.DEBUG) } if *stack { log.SetPrintStackTrace(*stack) } log.Info("starting") if len(*configFile) > 0 { config.ForceRead(*configFile) } else { config.Read("/etc/orchestrator.conf.json", "conf/orchestrator.conf.json", "orchestrator.conf.json") } switch { case len(flag.Args()) == 0 || flag.Arg(0) == "cli": app.Cli(*command, *instance, *sibling, *owner, *reason) case flag.Arg(0) == "http": app.Http(*discovery) default: log.Error("Usage: orchestrator --options... [cli|http]") } }