From 32109bf52cfa414e6f1a44bb4231af69f82a2e7f Mon Sep 17 00:00:00 2001 From: Rahul M Chheda Date: Tue, 30 Jun 2020 02:18:34 +0530 Subject: [PATCH] Added logic to Validate unsupported Flags for non-default logging format Signed-off-by: Rahul M Chheda --- .../src/k8s.io/component-base/logs/options.go | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/staging/src/k8s.io/component-base/logs/options.go b/staging/src/k8s.io/component-base/logs/options.go index fedd67fab27..4d8d85d3421 100644 --- a/staging/src/k8s.io/component-base/logs/options.go +++ b/staging/src/k8s.io/component-base/logs/options.go @@ -50,12 +50,34 @@ func NewOptions() *Options { } } -// Validate check LogFormat in registry or not +// Validate verifies if any unsupported flag is set +// for non-default logging format func (o *Options) Validate() []error { - if _, err := o.Get(); err != nil { - return []error{fmt.Errorf("unsupported log format: %s", o.LogFormat)} + errs := []error{} + if o.LogFormat != defaultLogFormat { + allFlags := unsupportedLoggingFlags() + for _, fname := range allFlags { + if flagIsSet(fname) { + errs = append(errs, fmt.Errorf("Non-default logging format doesn't honor flag: %s\n", fname)) + } + } } - return nil + if _, err := o.Get(); err != nil { + errs = append(errs, fmt.Errorf("unsupported log format: %s", o.LogFormat)) + } + return errs +} + +func flagIsSet(name string) bool { + f := flag.Lookup(name) + if f != nil { + return f.DefValue != f.Value.String() + } + pf := pflag.Lookup(name) + if pf != nil { + return pf.DefValue != pf.Value.String() + } + panic("failed to lookup unsupported log flag") } // AddFlags add logging-format flag