func New(prefix string, peers []string, timeout time.Duration, ctx context.Context) (*traefik, error) { ec, er := ezd.New(peers, timeout) if er != nil { return nil, er } t := &traefik{ prefix: prefix, Context: ctx, Client: ec, } t.Mkdir(path.Join(prefix, "frontends")) t.Mkdir(path.Join(prefix, "backends")) return t, nil }
func main() { app.Version(version) command := kingpin.MustParse(app.Parse(os.Args[1:])) logger.Configure(*logLevel, "[runchef] ", os.Stdout) switch command { case enable.FullCommand(): cli, er := ezd.New(etcdEp, etcdTo) if er != nil { logger.Fatalf(er.Error()) } if reason, ok := cli.Get(disableKey); ok == nil { if er := cli.Delete(disableKey); er != nil { logger.Fatalf(er.Error()) } logger.Infof("Chef is now enabled! (Was disabled with reason: %s)", reason) } else { logger.Infof("Chef is already enabled.") } case disable.FullCommand(): cli, er := ezd.New(etcdEp, etcdTo) if er != nil { logger.Fatalf(er.Error()) } if reason, ok := cli.Get(disableKey); ok == nil { logger.Infof("Chef is already disabled with reason: %s", reason) } else { if er := cli.Set(disableKey, *disableReason); er != nil { logger.Fatalf(er.Error()) } logger.Infof("Chef disabled with reason: %s", *disableReason) } case shell.FullCommand(): c := *shellImage if len(*shellContainer) > 0 { c = *shellContainer *pullImage = false } if er := runShell(c, *shellCache, *pullImage); er != nil { logger.Fatalf(er.Error()) } case client.FullCommand(): c := *clientImage if len(*clientContainer) > 0 { c = *clientContainer *pullImage = false } cli, er := ezd.New(etcdEp, etcdTo) if er != nil { logger.Fatalf(er.Error()) } if reason, ok := cli.Get(disableKey); ok == nil { logger.Infof("Chef is disabled: %v", reason) os.Exit(0) } defer cleanupChef() newClientRB(filepath.Join(*chefDir, "client.rb"), *clientName, *clientEnv, *sslVerify).write() if er := runChef(c, *clientCache, *clientEnv, *clientRunlist, *clientForceFmt, *clientLocal, *pullImage); er != nil { logger.Fatalf(er.Error()) } } }