Commit a7878db1 authored by Brad Davidson's avatar Brad Davidson Committed by Brad Davidson

Fix etcd-snapshot commands by making setup more consistent.

parent 9a480865
...@@ -15,12 +15,12 @@ import ( ...@@ -15,12 +15,12 @@ import (
func main() { func main() {
app := cmds.NewApp() app := cmds.NewApp()
app.Commands = []cli.Command{ app.Commands = []cli.Command{
cmds.NewEtcdSnapshotCommand(etcdsnapshot.Run, cmds.NewEtcdSnapshotCommand(etcdsnapshot.Save,
cmds.NewEtcdSnapshotSubcommands( cmds.NewEtcdSnapshotSubcommands(
etcdsnapshot.Delete, etcdsnapshot.Delete,
etcdsnapshot.List, etcdsnapshot.List,
etcdsnapshot.Prune, etcdsnapshot.Prune,
etcdsnapshot.Run), etcdsnapshot.Save),
), ),
} }
......
...@@ -47,12 +47,12 @@ func main() { ...@@ -47,12 +47,12 @@ func main() {
cmds.NewKubectlCommand(kubectl.Run), cmds.NewKubectlCommand(kubectl.Run),
cmds.NewCRICTL(crictl.Run), cmds.NewCRICTL(crictl.Run),
cmds.NewCtrCommand(ctr.Run), cmds.NewCtrCommand(ctr.Run),
cmds.NewEtcdSnapshotCommand(etcdsnapshot.Run, cmds.NewEtcdSnapshotCommand(etcdsnapshot.Save,
cmds.NewEtcdSnapshotSubcommands( cmds.NewEtcdSnapshotSubcommands(
etcdsnapshot.Delete, etcdsnapshot.Delete,
etcdsnapshot.List, etcdsnapshot.List,
etcdsnapshot.Prune, etcdsnapshot.Prune,
etcdsnapshot.Run), etcdsnapshot.Save),
), ),
cmds.NewSecretsEncryptCommand(cli.ShowAppHelp, cmds.NewSecretsEncryptCommand(cli.ShowAppHelp,
cmds.NewSecretsEncryptSubcommands( cmds.NewSecretsEncryptSubcommands(
......
...@@ -31,12 +31,12 @@ func main() { ...@@ -31,12 +31,12 @@ func main() {
cmds.NewAgentCommand(agent.Run), cmds.NewAgentCommand(agent.Run),
cmds.NewKubectlCommand(kubectl.Run), cmds.NewKubectlCommand(kubectl.Run),
cmds.NewCRICTL(crictl.Run), cmds.NewCRICTL(crictl.Run),
cmds.NewEtcdSnapshotCommand(etcdsnapshot.Run, cmds.NewEtcdSnapshotCommand(etcdsnapshot.Save,
cmds.NewEtcdSnapshotSubcommands( cmds.NewEtcdSnapshotSubcommands(
etcdsnapshot.Delete, etcdsnapshot.Delete,
etcdsnapshot.List, etcdsnapshot.List,
etcdsnapshot.Prune, etcdsnapshot.Prune,
etcdsnapshot.Run), etcdsnapshot.Save),
), ),
cmds.NewSecretsEncryptCommand(cli.ShowAppHelp, cmds.NewSecretsEncryptCommand(cli.ShowAppHelp,
cmds.NewSecretsEncryptSubcommands( cmds.NewSecretsEncryptSubcommands(
......
...@@ -24,22 +24,27 @@ import ( ...@@ -24,22 +24,27 @@ import (
// commandSetup setups up common things needed // commandSetup setups up common things needed
// for each etcd command. // for each etcd command.
func commandSetup(app *cli.Context, cfg *cmds.Server, sc *server.Config) (string, error) { func commandSetup(app *cli.Context, cfg *cmds.Server, sc *server.Config) error {
gspt.SetProcTitle(os.Args[0]) gspt.SetProcTitle(os.Args[0])
nodeName := app.String("node-name") nodeName := app.String("node-name")
if nodeName == "" { if nodeName == "" {
h, err := os.Hostname() h, err := os.Hostname()
if err != nil { if err != nil {
return "", err return err
} }
nodeName = h nodeName = h
} }
os.Setenv("NODE_NAME", nodeName) os.Setenv("NODE_NAME", nodeName)
dataDir, err := server.ResolveDataDir(cfg.DataDir)
if err != nil {
return err
}
sc.DisableAgent = true sc.DisableAgent = true
sc.ControlConfig.DataDir = cfg.DataDir sc.ControlConfig.DataDir = dataDir
sc.ControlConfig.EtcdSnapshotName = cfg.EtcdSnapshotName sc.ControlConfig.EtcdSnapshotName = cfg.EtcdSnapshotName
sc.ControlConfig.EtcdSnapshotDir = cfg.EtcdSnapshotDir sc.ControlConfig.EtcdSnapshotDir = cfg.EtcdSnapshotDir
sc.ControlConfig.EtcdSnapshotCompress = cfg.EtcdSnapshotCompress sc.ControlConfig.EtcdSnapshotCompress = cfg.EtcdSnapshotCompress
...@@ -56,22 +61,31 @@ func commandSetup(app *cli.Context, cfg *cmds.Server, sc *server.Config) (string ...@@ -56,22 +61,31 @@ func commandSetup(app *cli.Context, cfg *cmds.Server, sc *server.Config) (string
sc.ControlConfig.EtcdS3Insecure = cfg.EtcdS3Insecure sc.ControlConfig.EtcdS3Insecure = cfg.EtcdS3Insecure
sc.ControlConfig.EtcdS3Timeout = cfg.EtcdS3Timeout sc.ControlConfig.EtcdS3Timeout = cfg.EtcdS3Timeout
sc.ControlConfig.Runtime = &config.ControlRuntime{} sc.ControlConfig.Runtime = &config.ControlRuntime{}
sc.ControlConfig.Runtime.ETCDServerCA = filepath.Join(dataDir, "tls", "etcd", "server-ca.crt")
sc.ControlConfig.Runtime.ClientETCDCert = filepath.Join(dataDir, "tls", "etcd", "client.crt")
sc.ControlConfig.Runtime.ClientETCDKey = filepath.Join(dataDir, "tls", "etcd", "client.key")
sc.ControlConfig.Runtime.KubeConfigAdmin = filepath.Join(dataDir, "cred", "admin.kubeconfig")
return server.ResolveDataDir(cfg.DataDir) return nil
} }
// Run is an alias for Save, retained for compatibility reasons.
func Run(app *cli.Context) error { func Run(app *cli.Context) error {
return Save(app)
}
// Save triggers an on-demand etcd snapshot operation
func Save(app *cli.Context) error {
if err := cmds.InitLogging(); err != nil { if err := cmds.InitLogging(); err != nil {
return err return err
} }
return run(app, &cmds.ServerConfig) return save(app, &cmds.ServerConfig)
} }
func run(app *cli.Context, cfg *cmds.Server) error { func save(app *cli.Context, cfg *cmds.Server) error {
var serverConfig server.Config var serverConfig server.Config
dataDir, err := commandSetup(app, cfg, &serverConfig) if err := commandSetup(app, cfg, &serverConfig); err != nil {
if err != nil {
return err return err
} }
...@@ -79,12 +93,7 @@ func run(app *cli.Context, cfg *cmds.Server) error { ...@@ -79,12 +93,7 @@ func run(app *cli.Context, cfg *cmds.Server) error {
return util2.ErrCommandNoArgs return util2.ErrCommandNoArgs
} }
serverConfig.ControlConfig.DataDir = dataDir
serverConfig.ControlConfig.EtcdSnapshotRetention = 0 // disable retention check serverConfig.ControlConfig.EtcdSnapshotRetention = 0 // disable retention check
serverConfig.ControlConfig.Runtime.ETCDServerCA = filepath.Join(dataDir, "tls", "etcd", "server-ca.crt")
serverConfig.ControlConfig.Runtime.ClientETCDCert = filepath.Join(dataDir, "tls", "etcd", "client.crt")
serverConfig.ControlConfig.Runtime.ClientETCDKey = filepath.Join(dataDir, "tls", "etcd", "client.key")
serverConfig.ControlConfig.Runtime.KubeConfigAdmin = filepath.Join(dataDir, "cred", "admin.kubeconfig")
ctx := signals.SetupSignalContext() ctx := signals.SetupSignalContext()
e := etcd.NewETCD() e := etcd.NewETCD()
...@@ -97,7 +106,7 @@ func run(app *cli.Context, cfg *cmds.Server) error { ...@@ -97,7 +106,7 @@ func run(app *cli.Context, cfg *cmds.Server) error {
return err return err
} }
if !initialized { if !initialized {
return fmt.Errorf("etcd database not found in %s", dataDir) return fmt.Errorf("etcd database not found in %s", serverConfig.ControlConfig.DataDir)
} }
cluster := cluster.New(&serverConfig.ControlConfig) cluster := cluster.New(&serverConfig.ControlConfig)
...@@ -125,8 +134,7 @@ func Delete(app *cli.Context) error { ...@@ -125,8 +134,7 @@ func Delete(app *cli.Context) error {
func delete(app *cli.Context, cfg *cmds.Server) error { func delete(app *cli.Context, cfg *cmds.Server) error {
var serverConfig server.Config var serverConfig server.Config
dataDir, err := commandSetup(app, cfg, &serverConfig) if err := commandSetup(app, cfg, &serverConfig); err != nil {
if err != nil {
return err return err
} }
...@@ -135,9 +143,6 @@ func delete(app *cli.Context, cfg *cmds.Server) error { ...@@ -135,9 +143,6 @@ func delete(app *cli.Context, cfg *cmds.Server) error {
return errors.New("no snapshots given for removal") return errors.New("no snapshots given for removal")
} }
serverConfig.ControlConfig.DataDir = dataDir
serverConfig.ControlConfig.Runtime.KubeConfigAdmin = filepath.Join(dataDir, "cred", "admin.kubeconfig")
ctx := signals.SetupSignalContext() ctx := signals.SetupSignalContext()
e := etcd.NewETCD() e := etcd.NewETCD()
if err := e.SetControlConfig(ctx, &serverConfig.ControlConfig); err != nil { if err := e.SetControlConfig(ctx, &serverConfig.ControlConfig); err != nil {
...@@ -174,13 +179,10 @@ func validEtcdListFormat(format string) bool { ...@@ -174,13 +179,10 @@ func validEtcdListFormat(format string) bool {
func list(app *cli.Context, cfg *cmds.Server) error { func list(app *cli.Context, cfg *cmds.Server) error {
var serverConfig server.Config var serverConfig server.Config
dataDir, err := commandSetup(app, cfg, &serverConfig) if err := commandSetup(app, cfg, &serverConfig); err != nil {
if err != nil {
return err return err
} }
serverConfig.ControlConfig.DataDir = dataDir
ctx := signals.SetupSignalContext() ctx := signals.SetupSignalContext()
e := etcd.NewETCD() e := etcd.NewETCD()
if err := e.SetControlConfig(ctx, &serverConfig.ControlConfig); err != nil { if err := e.SetControlConfig(ctx, &serverConfig.ControlConfig); err != nil {
...@@ -241,14 +243,11 @@ func Prune(app *cli.Context) error { ...@@ -241,14 +243,11 @@ func Prune(app *cli.Context) error {
func prune(app *cli.Context, cfg *cmds.Server) error { func prune(app *cli.Context, cfg *cmds.Server) error {
var serverConfig server.Config var serverConfig server.Config
dataDir, err := commandSetup(app, cfg, &serverConfig) if err := commandSetup(app, cfg, &serverConfig); err != nil {
if err != nil {
return err return err
} }
serverConfig.ControlConfig.DataDir = dataDir
serverConfig.ControlConfig.EtcdSnapshotRetention = cfg.EtcdSnapshotRetention serverConfig.ControlConfig.EtcdSnapshotRetention = cfg.EtcdSnapshotRetention
serverConfig.ControlConfig.Runtime.KubeConfigAdmin = filepath.Join(dataDir, "cred", "admin.kubeconfig")
ctx := signals.SetupSignalContext() ctx := signals.SetupSignalContext()
e := etcd.NewETCD() e := etcd.NewETCD()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment