本文整理汇总了Golang中github.com/flynn/flynn/pkg/shutdown.Fatal函数的典型用法代码示例。如果您正苦于以下问题:Golang Fatal函数的具体用法?Golang Fatal怎么用?Golang Fatal使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Fatal函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: main
/*
ish: the Inexusable/Insecure/Internet SHell.
*/
func main() {
defer shutdown.Exit()
name := os.Getenv("NAME")
port := os.Getenv("PORT")
addr := ":" + port
if name == "" {
name = "ish-service"
}
l, err := net.Listen("tcp", addr)
if err != nil {
shutdown.Fatal(err)
}
defer l.Close()
hb, err := discoverd.AddServiceAndRegister(name, addr)
if err != nil {
shutdown.Fatal(err)
}
shutdown.BeforeExit(func() { hb.Close() })
http.HandleFunc("/ish", ish)
if err := http.Serve(l, nil); err != nil {
shutdown.Fatal(err)
}
}
开发者ID:devick,项目名称:flynn,代码行数:30,代码来源:main.go
示例2: main
func main() {
logger := log15.New("component", "scheduler")
logger.SetHandler(log15.LvlFilterHandler(log15.LvlInfo, log15.StdoutHandler))
log := logger.New("fn", "main")
log.Info("creating cluster and controller clients")
hc := &http.Client{Timeout: 5 * time.Second}
clusterClient := utils.ClusterClientWrapper(cluster.NewClientWithHTTP(nil, hc))
controllerClient, err := controller.NewClient("", os.Getenv("AUTH_KEY"))
if err != nil {
log.Error("error creating controller client", "err", err)
shutdown.Fatal(err)
}
log.Info("waiting for controller API to come up")
if _, err := discoverd.GetInstances("controller", 5*time.Minute); err != nil {
log.Error("error waiting for controller API", "err", err)
shutdown.Fatal(err)
}
s := NewScheduler(clusterClient, controllerClient, newDiscoverdWrapper(logger), logger)
log.Info("started scheduler", "backoffPeriod", s.backoffPeriod)
go s.startHTTPServer(os.Getenv("PORT"))
if err := s.Run(); err != nil {
shutdown.Fatal(err)
}
shutdown.Exit()
}
开发者ID:eldarion-gondor,项目名称:cli,代码行数:30,代码来源:scheduler.go
示例3: main
func main() {
defer shutdown.Exit()
db := postgres.Wait(&postgres.Conf{
Service: serviceName,
User: "flynn",
Password: os.Getenv("PGPASSWORD"),
Database: "postgres",
}, nil)
api := &pgAPI{db}
router := httprouter.New()
router.POST("/databases", httphelper.WrapHandler(api.createDatabase))
router.DELETE("/databases", httphelper.WrapHandler(api.dropDatabase))
router.GET("/ping", httphelper.WrapHandler(api.ping))
port := os.Getenv("PORT")
if port == "" {
port = "3000"
}
addr := ":" + port
hb, err := discoverd.AddServiceAndRegister(serviceName+"-api", addr)
if err != nil {
shutdown.Fatal(err)
}
shutdown.BeforeExit(func() { hb.Close() })
handler := httphelper.ContextInjector(serviceName+"-api", httphelper.NewRequestLogger(router))
shutdown.Fatal(http.ListenAndServe(addr, handler))
}
开发者ID:imjorge,项目名称:flynn,代码行数:31,代码来源:main.go
示例4: ConfigureNetworking
func (h *jobAPI) ConfigureNetworking(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
log := h.host.log.New("fn", "ConfigureNetworking")
log.Info("decoding config")
config := &host.NetworkConfig{}
if err := httphelper.DecodeJSON(r, config); err != nil {
log.Error("error decoding config", "err", err)
shutdown.Fatal(err)
}
// configure the network before returning a response in case the
// network coordinator requires the bridge to be created (e.g.
// when using flannel with the "alloc" backend)
h.host.networkOnce.Do(func() {
log.Info("configuring network", "subnet", config.Subnet, "mtu", config.MTU, "resolvers", config.Resolvers)
if err := h.host.backend.ConfigureNetworking(config); err != nil {
log.Error("error configuring network", "err", err)
shutdown.Fatal(err)
}
h.host.statusMtx.Lock()
h.host.status.Network = config
h.host.statusMtx.Unlock()
})
}
开发者ID:devick,项目名称:flynn,代码行数:25,代码来源:http.go
示例5: main
func main() {
defer shutdown.Exit()
dsn := &mariadb.DSN{
Host: serviceHost + ":3306",
User: "flynn",
Password: os.Getenv("MYSQL_PWD"),
Database: "mysql",
}
db, err := sql.Open("mysql", dsn.String())
api := &API{db}
router := httprouter.New()
router.POST("/databases", httphelper.WrapHandler(api.createDatabase))
router.DELETE("/databases", httphelper.WrapHandler(api.dropDatabase))
router.GET("/ping", httphelper.WrapHandler(api.ping))
port := os.Getenv("PORT")
if port == "" {
port = "3000"
}
addr := ":" + port
hb, err := discoverd.AddServiceAndRegister(serviceName+"-api", addr)
if err != nil {
shutdown.Fatal(err)
}
shutdown.BeforeExit(func() { hb.Close() })
handler := httphelper.ContextInjector(serviceName+"-api", httphelper.NewRequestLogger(router))
shutdown.Fatal(http.ListenAndServe(addr, handler))
}
开发者ID:yanghongkjxy,项目名称:flynn,代码行数:32,代码来源:main.go
示例6: main
func main() {
defer shutdown.Exit()
api := &API{}
router := httprouter.New()
router.POST("/databases", api.createDatabase)
router.DELETE("/databases", api.dropDatabase)
router.GET("/ping", api.ping)
port := os.Getenv("PORT")
if port == "" {
port = "3000"
}
addr := ":" + port
hb, err := discoverd.AddServiceAndRegister(serviceName+"-api", addr)
if err != nil {
shutdown.Fatal(err)
}
shutdown.BeforeExit(func() { hb.Close() })
handler := httphelper.ContextInjector(serviceName+"-api", httphelper.NewRequestLogger(router))
shutdown.Fatal(http.ListenAndServe(addr, handler))
}
开发者ID:ably-forks,项目名称:flynn,代码行数:25,代码来源:main.go
示例7: main
func main() {
serviceName := os.Getenv("FLYNN_POSTGRES")
if serviceName == "" {
serviceName = "postgres"
}
singleton := os.Getenv("SINGLETON") == "true"
password := os.Getenv("PGPASSWORD")
const dataDir = "/data"
idFile := filepath.Join(dataDir, "instance_id")
idBytes, err := ioutil.ReadFile(idFile)
if err != nil && !os.IsNotExist(err) {
shutdown.Fatalf("error reading instance ID: %s", err)
}
id := string(idBytes)
if len(id) == 0 {
id = random.UUID()
if err := ioutil.WriteFile(idFile, []byte(id), 0644); err != nil {
shutdown.Fatalf("error writing instance ID: %s", err)
}
}
err = discoverd.DefaultClient.AddService(serviceName, &discoverd.ServiceConfig{
LeaderType: discoverd.LeaderTypeManual,
})
if err != nil && !httphelper.IsObjectExistsError(err) {
shutdown.Fatal(err)
}
inst := &discoverd.Instance{
Addr: ":5432",
Meta: map[string]string{pgIdKey: id},
}
hb, err := discoverd.DefaultClient.RegisterInstance(serviceName, inst)
if err != nil {
shutdown.Fatal(err)
}
shutdown.BeforeExit(func() { hb.Close() })
log := log15.New("app", "postgres")
pg := NewPostgres(Config{
ID: id,
Singleton: singleton,
DataDir: filepath.Join(dataDir, "db"),
BinDir: "/usr/lib/postgresql/9.5/bin/",
Password: password,
Logger: log.New("component", "postgres"),
ExtWhitelist: true,
WaitUpstream: true,
SHMType: "posix",
})
dd := sd.NewDiscoverd(discoverd.DefaultClient.Service(serviceName), log.New("component", "discoverd"))
peer := state.NewPeer(inst, id, pgIdKey, singleton, dd, pg, log.New("component", "peer"))
shutdown.BeforeExit(func() { peer.Close() })
go peer.Run()
shutdown.Fatal(ServeHTTP(pg.(*Postgres), peer, hb, log.New("component", "http")))
// TODO(titanous): clean shutdown of postgres
}
开发者ID:ably-forks,项目名称:flynn,代码行数:60,代码来源:main.go
示例8: main
func main() {
defer shutdown.Exit()
apiPort := os.Getenv("PORT")
if apiPort == "" {
apiPort = "5000"
}
logAddr := flag.String("logaddr", ":3000", "syslog input listen address")
apiAddr := flag.String("apiaddr", ":"+apiPort, "api listen address")
flag.Parse()
a := NewAggregator(*logAddr)
if err := a.Start(); err != nil {
shutdown.Fatal(err)
}
shutdown.BeforeExit(a.Shutdown)
listener, err := reuseport.NewReusablePortListener("tcp4", *apiAddr)
if err != nil {
shutdown.Fatal(err)
}
hb, err := discoverd.AddServiceAndRegister("flynn-logaggregator", *logAddr)
if err != nil {
shutdown.Fatal(err)
}
shutdown.BeforeExit(func() { hb.Close() })
shutdown.Fatal(http.Serve(listener, apiHandler(a)))
}
开发者ID:josephwinston,项目名称:flynn,代码行数:31,代码来源:main.go
示例9: main
func main() {
m := NewMain()
if err := m.ParseFlags(os.Args[1:]); err != nil {
shutdown.Fatal(err)
}
if err := m.Run(); err != nil {
shutdown.Fatal(err)
}
<-(chan struct{})(nil)
}
开发者ID:eldarion-gondor,项目名称:cli,代码行数:11,代码来源:main.go
示例10: main
func main() {
defer shutdown.Exit()
grohl.AddContext("app", "controller-scheduler")
grohl.Log(grohl.Data{"at": "start"})
go startHTTPServer()
if period := os.Getenv("BACKOFF_PERIOD"); period != "" {
var err error
backoffPeriod, err = time.ParseDuration(period)
if err != nil {
shutdown.Fatal(err)
}
grohl.Log(grohl.Data{"at": "backoff_period", "period": backoffPeriod.String()})
}
cc, err := controller.NewClient("", os.Getenv("AUTH_KEY"))
if err != nil {
shutdown.Fatal(err)
}
c := newContext(cc, cluster.NewClient())
c.watchHosts()
grohl.Log(grohl.Data{"at": "leaderwait"})
hb, err := discoverd.AddServiceAndRegister("controller-scheduler", ":"+os.Getenv("PORT"))
if err != nil {
shutdown.Fatal(err)
}
shutdown.BeforeExit(func() { hb.Close() })
leaders := make(chan *discoverd.Instance)
stream, err := discoverd.NewService("controller-scheduler").Leaders(leaders)
if err != nil {
shutdown.Fatal(err)
}
for leader := range leaders {
if leader.Addr == hb.Addr() {
break
}
}
if err := stream.Err(); err != nil {
// TODO: handle discoverd errors
shutdown.Fatal(err)
}
stream.Close()
// TODO: handle demotion
grohl.Log(grohl.Data{"at": "leader"})
// TODO: periodic full cluster sync for anti-entropy
c.watchFormations()
}
开发者ID:kuntenz,项目名称:flynn,代码行数:54,代码来源:main.go
示例11: main
func main() {
log := logger.New("fn", "main")
log.Info("creating controller client")
client, err := controller.NewClient("", os.Getenv("AUTH_KEY"))
if err != nil {
log.Error("error creating controller client", "err", err)
shutdown.Fatal(err)
}
log.Info("connecting to postgres")
db := postgres.Wait(nil, schema.PrepareStatements)
shutdown.BeforeExit(func() { db.Close() })
go func() {
status.AddHandler(func() status.Status {
_, err := db.ConnPool.Exec("ping")
if err != nil {
return status.Unhealthy
}
return status.Healthy
})
addr := ":" + os.Getenv("PORT")
hb, err := discoverd.AddServiceAndRegister("controller-worker", addr)
if err != nil {
shutdown.Fatal(err)
}
shutdown.BeforeExit(func() { hb.Close() })
shutdown.Fatal(http.ListenAndServe(addr, nil))
}()
workers := que.NewWorkerPool(
que.NewClient(db.ConnPool),
que.WorkMap{
"deployment": deployment.JobHandler(db, client, logger),
"app_deletion": app_deletion.JobHandler(db, client, logger),
"domain_migration": domain_migration.JobHandler(db, client, logger),
"release_cleanup": release_cleanup.JobHandler(db, client, logger),
"app_garbage_collection": app_garbage_collection.JobHandler(db, client, logger),
},
workerCount,
)
workers.Interval = 5 * time.Second
log.Info("starting workers", "count", workerCount, "interval", workers.Interval)
workers.Start()
shutdown.BeforeExit(func() { workers.Shutdown() })
select {} // block and keep running
}
开发者ID:ably-forks,项目名称:flynn,代码行数:51,代码来源:main.go
示例12: ConfigureNetworking
func (h *jobAPI) ConfigureNetworking(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
config := &host.NetworkConfig{}
if err := httphelper.DecodeJSON(r, config); err != nil {
shutdown.Fatal(err)
}
go h.networkOnce.Do(func() {
if err := h.host.backend.ConfigureNetworking(config); err != nil {
shutdown.Fatal(err)
}
h.statusMtx.Lock()
h.status.Network = config
h.statusMtx.Unlock()
})
}
开发者ID:Detry322,项目名称:flynn,代码行数:16,代码来源:http.go
示例13: ConnectLocal
func (d *DiscoverdManager) ConnectLocal(url string) error {
if d.localConnected() {
return errors.New("host: discoverd is already configured")
}
disc := discoverd.NewClientWithURL(url)
hb, err := disc.AddServiceAndRegisterInstance("flynn-host", d.inst)
if err != nil {
return err
}
d.mtx.Lock()
if d.peer != nil {
d.peer.Close()
}
d.local = hb
d.mtx.Unlock()
d.backend.SetDefaultEnv("DISCOVERD", url)
go func() {
if err := d.mux.Connect(disc, "flynn-logaggregator"); err != nil {
shutdown.Fatal(err)
}
}()
return nil
}
开发者ID:technosophos,项目名称:flynn,代码行数:27,代码来源:discoverd.go
示例14: ConfigureDiscoverd
func (h *Host) ConfigureDiscoverd(config *host.DiscoverdConfig) {
log := h.log.New("fn", "ConfigureDiscoverd")
if config.JobID != "" {
log.Info("persisting discoverd job_id", "job.id", config.JobID)
if err := h.state.SetPersistentSlot("discoverd", config.JobID); err != nil {
log.Error("error assigning discoverd to persistent slot")
}
}
if config.URL != "" && config.DNS != "" {
go h.discoverdOnce.Do(func() {
log.Info("connecting to service discovery", "url", config.URL)
if err := h.discMan.ConnectLocal(config.URL); err != nil {
log.Error("error connecting to service discovery", "err", err)
shutdown.Fatal(err)
}
})
}
h.statusMtx.Lock()
h.status.Discoverd = config
h.backend.SetDiscoverdConfig(h.status.Discoverd)
h.statusMtx.Unlock()
if config.URL != "" {
h.volAPI.ConfigureClusterClient(config.URL)
}
}
开发者ID:imjorge,项目名称:flynn,代码行数:29,代码来源:http.go
示例15: ConfigureDiscoverd
func (h *jobAPI) ConfigureDiscoverd(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
log := h.host.log.New("fn", "ConfigureDiscoverd")
log.Info("decoding config")
var config host.DiscoverdConfig
if err := httphelper.DecodeJSON(r, &config); err != nil {
log.Error("error decoding config", "err", err)
httphelper.Error(w, err)
return
}
log.Info("config decoded", "url", config.URL, "dns", config.DNS)
h.host.statusMtx.Lock()
h.host.status.Discoverd = &config
h.host.statusMtx.Unlock()
if config.URL != "" && config.DNS != "" {
go h.host.discoverdOnce.Do(func() {
log.Info("connecting to service discovery", "url", config.URL)
if err := h.host.discMan.ConnectLocal(config.URL); err != nil {
log.Error("error connecting to service discovery", "err", err)
shutdown.Fatal(err)
}
})
}
}
开发者ID:devick,项目名称:flynn,代码行数:26,代码来源:http.go
示例16: ConfigureNetworking
func (h *Host) ConfigureNetworking(config *host.NetworkConfig) {
log := h.log.New("fn", "ConfigureNetworking")
if config.JobID != "" {
log.Info("persisting flannel job_id", "job.id", config.JobID)
if err := h.state.SetPersistentSlot("flannel", config.JobID); err != nil {
log.Error("error assigning flannel to persistent slot")
}
}
h.networkOnce.Do(func() {
log.Info("configuring network", "subnet", config.Subnet, "mtu", config.MTU, "resolvers", config.Resolvers)
if err := h.backend.ConfigureNetworking(config); err != nil {
log.Error("error configuring network", "err", err)
shutdown.Fatal(err)
}
h.statusMtx.Lock()
h.status.Network = config
h.statusMtx.Unlock()
})
h.statusMtx.Lock()
h.status.Network.JobID = config.JobID
h.backend.SetNetworkConfig(h.status.Network)
h.statusMtx.Unlock()
}
开发者ID:imjorge,项目名称:flynn,代码行数:25,代码来源:http.go
示例17: runClusterMigrateDomain
func runClusterMigrateDomain(args *docopt.Args) error {
client, err := getClusterClient()
if err != nil {
shutdown.Fatal(err)
}
dm := &ct.DomainMigration{
Domain: args.String["<domain>"],
}
release, err := client.GetAppRelease("controller")
if err != nil {
return err
}
dm.OldDomain = release.Env["DEFAULT_ROUTE_DOMAIN"]
if !promptYesNo(fmt.Sprintf("Migrate cluster domain from %q to %q?", dm.OldDomain, dm.Domain)) {
fmt.Println("Aborted")
return nil
}
maxDuration := 2 * time.Minute
fmt.Printf("Migrating cluster domain (this can take up to %s)...\n", maxDuration)
events := make(chan *ct.Event)
stream, err := client.StreamEvents(controller.StreamEventsOptions{
ObjectTypes: []ct.EventType{ct.EventTypeDomainMigration},
}, events)
if err != nil {
return nil
}
defer stream.Close()
if err := client.PutDomain(dm); err != nil {
return err
}
timeout := time.After(maxDuration)
for {
select {
case event, ok := <-events:
if !ok {
return stream.Err()
}
var e *ct.DomainMigrationEvent
if err := json.Unmarshal(event.Data, &e); err != nil {
return err
}
if e.Error != "" {
fmt.Println(e.Error)
}
if e.DomainMigration.FinishedAt != nil {
fmt.Printf("Changed cluster domain from %q to %q\n", dm.OldDomain, dm.Domain)
return nil
}
case <-timeout:
return errors.New("timed out waiting for domain migration to complete")
}
}
}
开发者ID:devick,项目名称:flynn,代码行数:60,代码来源:cluster.go
示例18: mustApp
func mustApp() string {
name, err := app()
if err != nil {
shutdown.Fatal(err)
}
return name
}
开发者ID:josephwinston,项目名称:flynn,代码行数:7,代码来源:main.go
示例19: runCommand
func runCommand(name string, args []string) (err error) {
argv := make([]string, 1, 1+len(args))
argv[0] = name
argv = append(argv, args...)
cmd, ok := commands[name]
if !ok {
return fmt.Errorf("%s is not a flynn command. See 'flynn help'", name)
}
parsedArgs, err := docopt.Parse(cmd.usage, argv, true, "", cmd.optsFirst)
if err != nil {
return err
}
switch f := cmd.f.(type) {
case func(*docopt.Args, *controller.Client) error:
// create client and run command
client, err := getClusterClient()
if err != nil {
shutdown.Fatal(err)
}
return f(parsedArgs, client)
case func(*docopt.Args) error:
return f(parsedArgs)
case func() error:
return f()
case func():
f()
return nil
}
return fmt.Errorf("unexpected command type %T", cmd.f)
}
开发者ID:rikur,项目名称:flynn,代码行数:34,代码来源:main.go
示例20: runCommand
func runCommand(name string, args []string) (err error) {
argv := make([]string, 1, 1+len(args))
argv[0] = name
argv = append(argv, args...)
cmd, ok := commands[name]
if !ok {
return fmt.Errorf("%s is not a flynn command. See 'flynn help'", name)
}
parsedArgs, err := docopt.Parse(cmd.usage, argv, true, "", cmd.optsFirst)
if err != nil {
return err
}
switch f := cmd.f.(type) {
case func(*docopt.Args, *controller.Client) error:
// create client and run command
cluster, err := getCluster()
if err != nil {
shutdown.Fatal(err)
}
var client *controller.Client
if cluster.TLSPin != "" {
pin, err := base64.StdEncoding.DecodeString(cluster.TLSPin)
if err != nil {
log.Fatalln("error decoding tls pin:", err)
}
client, err = controller.NewClientWithConfig(cluster.URL, cluster.Key, controller.Config{Pin: pin})
} else {
client, err = controller.NewClient(cluster.URL, cluster.Key)
}
if err != nil {
shutdown.Fatal(err)
}
return f(parsedArgs, client)
case func(*docopt.Args) error:
return f(parsedArgs)
case func() error:
return f()
case func():
f()
return nil
}
return fmt.Errorf("unexpected command type %T", cmd.f)
}
开发者ID:GrimDerp,项目名称:flynn,代码行数:47,代码来源:main.go
注:本文中的github.com/flynn/flynn/pkg/shutdown.Fatal函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论