Add 'verbose' option to logging minimum information (#275)

This change address #274 to add 'verbose option which outputs
minimum information (for usual runs with a bit information than
'error').
This commit is contained in:
Tomofumi Hayashi 2019-03-08 01:00:46 +09:00 committed by Doug Smith
parent 102cfc349d
commit 61416cbd40
3 changed files with 54 additions and 18 deletions

View File

@ -29,6 +29,7 @@ type Level uint32
const ( const (
PanicLevel Level = iota PanicLevel Level = iota
ErrorLevel ErrorLevel
VerboseLevel
DebugLevel DebugLevel
MaxLevel MaxLevel
UnknownLevel UnknownLevel
@ -44,6 +45,8 @@ func (l Level) String() string {
switch l { switch l {
case PanicLevel: case PanicLevel:
return "panic" return "panic"
case VerboseLevel:
return "verbose"
case ErrorLevel: case ErrorLevel:
return "error" return "error"
case DebugLevel: case DebugLevel:
@ -76,6 +79,10 @@ func Debugf(format string, a ...interface{}) {
Printf(DebugLevel, format, a...) Printf(DebugLevel, format, a...)
} }
func Verbosef(format string, a ...interface{}) {
Printf(VerboseLevel, format, a...)
}
func Errorf(format string, a ...interface{}) error { func Errorf(format string, a ...interface{}) error {
Printf(ErrorLevel, format, a...) Printf(ErrorLevel, format, a...)
return fmt.Errorf(format, a...) return fmt.Errorf(format, a...)
@ -88,10 +95,16 @@ func Panicf(format string, a ...interface{}) {
Printf(PanicLevel, "========= Stack trace output end ========") Printf(PanicLevel, "========= Stack trace output end ========")
} }
func GetLoggingLevel(levelStr string) Level { func GetLoggingLevel() Level {
return loggingLevel
}
func getLoggingLevel(levelStr string) Level {
switch strings.ToLower(levelStr) { switch strings.ToLower(levelStr) {
case "debug": case "debug":
return DebugLevel return DebugLevel
case "verbose":
return VerboseLevel
case "error": case "error":
return ErrorLevel return ErrorLevel
case "panic": case "panic":
@ -102,7 +115,7 @@ func GetLoggingLevel(levelStr string) Level {
} }
func SetLogLevel(levelStr string) { func SetLogLevel(levelStr string) {
level := GetLoggingLevel(levelStr) level := getLoggingLevel(levelStr)
if level < MaxLevel { if level < MaxLevel {
loggingLevel = level loggingLevel = level
} }

View File

@ -50,6 +50,8 @@ var _ = Describe("logging operations", func() {
Expect(loggingLevel).To(Equal(DebugLevel)) Expect(loggingLevel).To(Equal(DebugLevel))
SetLogLevel("Error") SetLogLevel("Error")
Expect(loggingLevel).To(Equal(ErrorLevel)) Expect(loggingLevel).To(Equal(ErrorLevel))
SetLogLevel("VERbose")
Expect(loggingLevel).To(Equal(VerboseLevel))
SetLogLevel("PANIC") SetLogLevel("PANIC")
Expect(loggingLevel).To(Equal(PanicLevel)) Expect(loggingLevel).To(Equal(PanicLevel))
}) })

View File

@ -229,19 +229,31 @@ func delegateAdd(exec invoke.Exec, ifName string, delegate *types.DelegateNetCon
} }
} }
if delegate.ConfListPlugin != false { var result cnitypes.Result
result, err := conflistAdd(rt, delegate.Bytes, binDir, exec) var err error
if delegate.ConfListPlugin {
result, err = conflistAdd(rt, delegate.Bytes, binDir, exec)
if err != nil { if err != nil {
return nil, logging.Errorf("Multus: error in invoke Conflist add - %q: %v", delegate.ConfList.Name, err) return nil, logging.Errorf("Multus: error in invoke Conflist add - %q: %v", delegate.ConfList.Name, err)
} }
} else {
return result, nil result, err = invoke.DelegateAdd(delegate.Conf.Type, delegate.Bytes, exec)
}
result, err := invoke.DelegateAdd(delegate.Conf.Type, delegate.Bytes, exec)
if err != nil { if err != nil {
return nil, logging.Errorf("Multus: error in invoke Delegate add - %q: %v", delegate.Conf.Type, err) return nil, logging.Errorf("Multus: error in invoke Delegate add - %q: %v", delegate.Conf.Type, err)
} }
}
if logging.GetLoggingLevel() >= logging.VerboseLevel {
data, _ := json.Marshal(result)
var confName string
if delegate.ConfListPlugin {
confName = delegate.ConfList.Name
} else {
confName = delegate.Conf.Name
}
logging.Verbosef("Add: %s:%s:%s:%s %s", rt.Args[1][1], rt.Args[2][1], confName, rt.IfName, string(data))
}
return result, nil return result, nil
} }
@ -252,20 +264,29 @@ func delegateDel(exec invoke.Exec, ifName string, delegateConf *types.DelegateNe
return logging.Errorf("Multus: error in setting CNI_IFNAME") return logging.Errorf("Multus: error in setting CNI_IFNAME")
} }
if delegateConf.ConfListPlugin != false { if logging.GetLoggingLevel() >= logging.VerboseLevel {
err := conflistDel(rt, delegateConf.Bytes, binDir, exec) var confName string
if delegateConf.ConfListPlugin {
confName = delegateConf.ConfList.Name
} else {
confName = delegateConf.Conf.Name
}
logging.Verbosef("Del: %s:%s:%s:%s %s", rt.Args[1][1], rt.Args[2][1], confName, rt.IfName, string(delegateConf.Bytes))
}
var err error
if delegateConf.ConfListPlugin {
err = conflistDel(rt, delegateConf.Bytes, binDir, exec)
if err != nil { if err != nil {
return logging.Errorf("Multus: error in invoke Conflist Del - %q: %v", delegateConf.ConfList.Name, err) return logging.Errorf("Multus: error in invoke Conflist Del - %q: %v", delegateConf.ConfList.Name, err)
} }
} else {
return err if err = invoke.DelegateDel(delegateConf.Conf.Type, delegateConf.Bytes, exec); err != nil {
}
if err := invoke.DelegateDel(delegateConf.Conf.Type, delegateConf.Bytes, exec); err != nil {
return logging.Errorf("Multus: error in invoke Delegate del - %q: %v", delegateConf.Conf.Type, err) return logging.Errorf("Multus: error in invoke Delegate del - %q: %v", delegateConf.Conf.Type, err)
} }
}
return nil return err
} }
func delPlugins(exec invoke.Exec, argIfname string, delegates []*types.DelegateNetConf, lastIdx int, rt *libcni.RuntimeConf, binDir string) error { func delPlugins(exec invoke.Exec, argIfname string, delegates []*types.DelegateNetConf, lastIdx int, rt *libcni.RuntimeConf, binDir string) error {