diff --git a/logging/logging.go b/logging/logging.go index 866646066..302dcea3e 100644 --- a/logging/logging.go +++ b/logging/logging.go @@ -29,6 +29,7 @@ type Level uint32 const ( PanicLevel Level = iota ErrorLevel + VerboseLevel DebugLevel MaxLevel UnknownLevel @@ -44,6 +45,8 @@ func (l Level) String() string { switch l { case PanicLevel: return "panic" + case VerboseLevel: + return "verbose" case ErrorLevel: return "error" case DebugLevel: @@ -76,6 +79,10 @@ func Debugf(format string, a ...interface{}) { Printf(DebugLevel, format, a...) } +func Verbosef(format string, a ...interface{}) { + Printf(VerboseLevel, format, a...) +} + func Errorf(format string, a ...interface{}) error { Printf(ErrorLevel, format, a...) return fmt.Errorf(format, a...) @@ -88,10 +95,16 @@ func Panicf(format string, a ...interface{}) { 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) { case "debug": return DebugLevel + case "verbose": + return VerboseLevel case "error": return ErrorLevel case "panic": @@ -102,7 +115,7 @@ func GetLoggingLevel(levelStr string) Level { } func SetLogLevel(levelStr string) { - level := GetLoggingLevel(levelStr) + level := getLoggingLevel(levelStr) if level < MaxLevel { loggingLevel = level } diff --git a/logging/logging_test.go b/logging/logging_test.go index 797e8fc0a..f7e5e581a 100644 --- a/logging/logging_test.go +++ b/logging/logging_test.go @@ -50,6 +50,8 @@ var _ = Describe("logging operations", func() { Expect(loggingLevel).To(Equal(DebugLevel)) SetLogLevel("Error") Expect(loggingLevel).To(Equal(ErrorLevel)) + SetLogLevel("VERbose") + Expect(loggingLevel).To(Equal(VerboseLevel)) SetLogLevel("PANIC") Expect(loggingLevel).To(Equal(PanicLevel)) }) diff --git a/multus/multus.go b/multus/multus.go index e2e346281..6df458438 100644 --- a/multus/multus.go +++ b/multus/multus.go @@ -229,18 +229,30 @@ func delegateAdd(exec invoke.Exec, ifName string, delegate *types.DelegateNetCon } } - if delegate.ConfListPlugin != false { - result, err := conflistAdd(rt, delegate.Bytes, binDir, exec) + var result cnitypes.Result + var err error + if delegate.ConfListPlugin { + result, err = conflistAdd(rt, delegate.Bytes, binDir, exec) if err != nil { return nil, logging.Errorf("Multus: error in invoke Conflist add - %q: %v", delegate.ConfList.Name, err) } - - return result, nil + } else { + result, err = invoke.DelegateAdd(delegate.Conf.Type, delegate.Bytes, exec) + if err != nil { + return nil, logging.Errorf("Multus: error in invoke Delegate add - %q: %v", delegate.Conf.Type, err) + } } - result, err := invoke.DelegateAdd(delegate.Conf.Type, delegate.Bytes, exec) - if err != nil { - 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 @@ -252,20 +264,29 @@ func delegateDel(exec invoke.Exec, ifName string, delegateConf *types.DelegateNe return logging.Errorf("Multus: error in setting CNI_IFNAME") } - if delegateConf.ConfListPlugin != false { - err := conflistDel(rt, delegateConf.Bytes, binDir, exec) + if logging.GetLoggingLevel() >= logging.VerboseLevel { + 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 { return logging.Errorf("Multus: error in invoke Conflist Del - %q: %v", delegateConf.ConfList.Name, err) } - - return err + } else { + 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) + } } - 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 nil + return err } func delPlugins(exec invoke.Exec, argIfname string, delegates []*types.DelegateNetConf, lastIdx int, rt *libcni.RuntimeConf, binDir string) error {