diff --git a/CHANGELOG.md b/CHANGELOG.md index a8f9cb4d..a78a0f80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # v0.3.2 +FEATURE: `zrok controller validate` and `zrok access public validate` will both perform a quick syntax validation on controller and public frontend configuration documents (https://github.com/openziti/zrok/issues/238) + + $ zrok controller validate etc/dev.yml + [ERROR]: controller config validation failed (error loading controller config 'etc/dev.yml': field 'maintenance': field 'registration': field 'expiration_timeout': got [bool], expected [time.Duration]) + CHANGE: `zrok status` no longer shows secrets (secret token, ziti identity) unless the `--secrets` flag is passed (https://github.com/openziti/zrok/issues/243) # v0.3.1 diff --git a/cmd/zrok/accessPublic.go b/cmd/zrok/accessPublic.go index f3353929..a05743f6 100644 --- a/cmd/zrok/accessPublic.go +++ b/cmd/zrok/accessPublic.go @@ -9,8 +9,11 @@ import ( "github.com/spf13/cobra" ) +var accessPublicCmd *accessPublicCommand + func init() { - accessCmd.AddCommand(newAccessPublicCommand().cmd) + accessPublicCmd = newAccessPublicCommand() + accessCmd.AddCommand(accessPublicCmd.cmd) } type accessPublicCommand struct { @@ -29,7 +32,7 @@ func newAccessPublicCommand() *accessPublicCommand { return command } -func (self *accessPublicCommand) run(_ *cobra.Command, args []string) { +func (cmd *accessPublicCommand) run(_ *cobra.Command, args []string) { cfg := publicFrontend.DefaultConfig() if len(args) == 1 { if err := cfg.Load(args[0]); err != nil { diff --git a/cmd/zrok/accessPublicValidate.go b/cmd/zrok/accessPublicValidate.go new file mode 100644 index 00000000..a7de00d5 --- /dev/null +++ b/cmd/zrok/accessPublicValidate.go @@ -0,0 +1,37 @@ +package main + +import ( + "fmt" + "github.com/michaelquigley/cf" + "github.com/openziti/zrok/endpoints/publicFrontend" + "github.com/openziti/zrok/tui" + "github.com/sirupsen/logrus" + "github.com/spf13/cobra" +) + +func init() { + accessPublicCmd.cmd.AddCommand(newAccessPublicValidateCommand().cmd) +} + +type accessPublicValidateCommand struct { + cmd *cobra.Command +} + +func newAccessPublicValidateCommand() *accessPublicValidateCommand { + cmd := &cobra.Command{ + Use: "validate ", + Short: "Validate a zrok access public configuration document", + Args: cobra.ExactArgs(1), + } + command := &accessPublicValidateCommand{cmd: cmd} + cmd.Run = command.run + return command +} + +func (cmd *accessPublicValidateCommand) run(_ *cobra.Command, args []string) { + cfg := publicFrontend.DefaultConfig() + if err := cfg.Load(args[0]); err != nil { + tui.Error(fmt.Sprintf("unable to load configuration '%v'", args[0]), err) + } + logrus.Infof(cf.Dump(cfg, cf.DefaultOptions())) +} diff --git a/cmd/zrok/controller.go b/cmd/zrok/controller.go index cf62688d..6e498797 100644 --- a/cmd/zrok/controller.go +++ b/cmd/zrok/controller.go @@ -7,8 +7,11 @@ import ( "github.com/spf13/cobra" ) +var controllerCmd *controllerCommand + func init() { - rootCmd.AddCommand(newControllerCommand().cmd) + controllerCmd = newControllerCommand() + rootCmd.AddCommand(controllerCmd.cmd) } type controllerCommand struct { diff --git a/cmd/zrok/controllerValidate.go b/cmd/zrok/controllerValidate.go new file mode 100644 index 00000000..a09d106f --- /dev/null +++ b/cmd/zrok/controllerValidate.go @@ -0,0 +1,36 @@ +package main + +import ( + "github.com/michaelquigley/cf" + "github.com/openziti/zrok/controller" + "github.com/openziti/zrok/tui" + "github.com/sirupsen/logrus" + "github.com/spf13/cobra" +) + +func init() { + controllerCmd.cmd.AddCommand(newControllerValidateCommand().cmd) +} + +type controllerValidateCommand struct { + cmd *cobra.Command +} + +func newControllerValidateCommand() *controllerValidateCommand { + cmd := &cobra.Command{ + Use: "validate ", + Short: "Validate a zrok controller configuration document", + Args: cobra.ExactArgs(1), + } + command := &controllerValidateCommand{cmd: cmd} + cmd.Run = command.run + return command +} + +func (cmd *controllerValidateCommand) run(_ *cobra.Command, args []string) { + cfg, err := controller.LoadConfig(args[0]) + if err != nil { + tui.Error("controller config validation failed", err) + } + logrus.Infof(cf.Dump(cfg, cf.DefaultOptions())) +}