diff --git a/pkg/cli/cmds/server.go b/pkg/cli/cmds/server.go index 9ebc003349..5746ac59d6 100644 --- a/pkg/cli/cmds/server.go +++ b/pkg/cli/cmds/server.go @@ -1,6 +1,8 @@ package cmds import ( + "context" + "github.com/rancher/k3s/pkg/daemons/config" "github.com/rancher/k3s/pkg/version" "github.com/rancher/spur/cli" @@ -55,7 +57,7 @@ type Server struct { ClusterInit bool ClusterReset bool EncryptSecrets bool - StartupHooks []func(config.Control) error + StartupHooks []func(context.Context, config.Control) error } var ServerConfig Server diff --git a/pkg/server/server.go b/pkg/server/server.go index 90019ff6c1..12bb4a0cc2 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -61,7 +61,9 @@ func StartServer(ctx context.Context, config *Config) error { } for _, hook := range config.StartupHooks { - hook(config.ControlConfig) + if err := hook(ctx, config.ControlConfig); err != nil { + return errors.Wrap(err, "startup hook") + } } ip := net2.ParseIP(config.ControlConfig.BindAddress) diff --git a/pkg/server/types.go b/pkg/server/types.go index b92f11330a..69f96389e1 100644 --- a/pkg/server/types.go +++ b/pkg/server/types.go @@ -1,6 +1,8 @@ package server import ( + "context" + "github.com/rancher/k3s/pkg/daemons/config" ) @@ -10,5 +12,5 @@ type Config struct { ControlConfig config.Control Rootless bool SupervisorPort int - StartupHooks []func(config.Control) error + StartupHooks []func(context.Context, config.Control) error }