cmd/nodeadm/config/check.go (42 lines of code) (raw):
package config
import (
"github.com/integrii/flaggy"
"go.uber.org/zap"
"github.com/aws/eks-hybrid/internal/cli"
"github.com/aws/eks-hybrid/internal/configprovider"
"github.com/aws/eks-hybrid/internal/node"
)
type fileCmd struct {
cmd *flaggy.Subcommand
configSource string
}
func NewCheckCommand() cli.Command {
file := fileCmd{}
file.cmd = flaggy.NewSubcommand("check")
file.cmd.Description = "Verify configuration"
file.cmd.String(&file.configSource, "c", "config-source", "Source of node configuration. The format is a URI with supported schemes: [file, imds].")
return &file
}
func (c *fileCmd) Flaggy() *flaggy.Subcommand {
return c.cmd
}
func (c *fileCmd) Run(log *zap.Logger, opts *cli.GlobalOptions) error {
log.Info("Checking configuration", zap.String("source", c.configSource))
provider, err := configprovider.BuildConfigProvider(c.configSource)
if err != nil {
return err
}
_, err = provider.Provide()
if err != nil {
return err
}
nodeProvider, err := node.NewNodeProvider(c.configSource, []string{}, log)
if err != nil {
return err
}
if err := nodeProvider.ValidateConfig(); err != nil {
return err
}
log.Info("Configuration is valid")
return nil
}