summaryrefslogtreecommitdiffhomepage
path: root/cmd
diff options
context:
space:
mode:
authorSteve Shaw <shaw38@gmail.com>2020-10-21 13:25:38 -0400
committerFUJITA Tomonori <fujita.tomonori@gmail.com>2020-11-06 21:15:10 +0900
commit393d82f955cf432fb41871275566e16fc7992e3e (patch)
tree3e5725c51f15264c96f8505d7d33b50436030b3a /cmd
parent01aa3f287bd41a3351396a303e60219b12a15475 (diff)
Adding gRPC support for modified logging level
Signed-off-by: Steve Shaw <shaw38@gmail.com>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/gobgp/common.go8
-rw-r--r--cmd/gobgp/loglevel.go76
-rw-r--r--cmd/gobgp/root.go3
3 files changed, 86 insertions, 1 deletions
diff --git a/cmd/gobgp/common.go b/cmd/gobgp/common.go
index a5dd99cb..0d5a0953 100644
--- a/cmd/gobgp/common.go
+++ b/cmd/gobgp/common.go
@@ -75,6 +75,14 @@ const (
cmdBMP = "bmp"
cmdLargecommunity = "large-community"
cmdSummary = "summary"
+ cmdLogLevel = "log-level"
+ cmdPanic = "panic"
+ cmdFatal = "fatal"
+ cmdError = "error"
+ cmdWarn = "warn"
+ cmdInfo = "info"
+ cmdDebug = "debug"
+ cmdTrace = "trace"
)
const (
diff --git a/cmd/gobgp/loglevel.go b/cmd/gobgp/loglevel.go
new file mode 100644
index 00000000..520437d5
--- /dev/null
+++ b/cmd/gobgp/loglevel.go
@@ -0,0 +1,76 @@
+// Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+// implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import (
+ "fmt"
+
+ api "github.com/osrg/gobgp/api"
+ "github.com/spf13/cobra"
+)
+
+func modLogLevelServer(cmdType string, args []string) error {
+ var level api.SetLogLevelRequest_Level
+
+ switch cmdType {
+ case cmdPanic:
+ level = api.SetLogLevelRequest_PANIC
+ case cmdFatal:
+ level = api.SetLogLevelRequest_FATAL
+ case cmdError:
+ level = api.SetLogLevelRequest_ERROR
+ case cmdWarn:
+ level = api.SetLogLevelRequest_WARN
+ case cmdInfo:
+ level = api.SetLogLevelRequest_INFO
+ case cmdDebug:
+ level = api.SetLogLevelRequest_DEBUG
+ case cmdTrace:
+ level = api.SetLogLevelRequest_TRACE
+ default:
+ return fmt.Errorf("invalid log level: %s", cmdType)
+ }
+ _, err := client.SetLogLevel(ctx, &api.SetLogLevelRequest{Level: level})
+ return err
+}
+
+func newLogLevelCmd() *cobra.Command {
+ logLevelCmd := &cobra.Command{
+ Use: cmdLogLevel,
+ }
+ cmds := []string{
+ cmdPanic,
+ cmdFatal,
+ cmdError,
+ cmdWarn,
+ cmdInfo,
+ cmdDebug,
+ cmdTrace,
+ }
+
+ for _, cmd := range cmds {
+ subCmd := &cobra.Command{
+ Use: cmd,
+ Run: func(cmd *cobra.Command, args []string) {
+ if err := modLogLevelServer(cmd.Use, args); err != nil {
+ exitWithError(err)
+ }
+ },
+ }
+ logLevelCmd.AddCommand(subCmd)
+ }
+ return logLevelCmd
+}
diff --git a/cmd/gobgp/root.go b/cmd/gobgp/root.go
index 539ae2ed..6c90f0ab 100644
--- a/cmd/gobgp/root.go
+++ b/cmd/gobgp/root.go
@@ -100,6 +100,7 @@ func newRootCmd() *cobra.Command {
mrtCmd := newMrtCmd()
rpkiCmd := newRPKICmd()
bmpCmd := newBmpCmd()
- rootCmd.AddCommand(globalCmd, neighborCmd, vrfCmd, policyCmd, monitorCmd, mrtCmd, rpkiCmd, bmpCmd)
+ logLevelCmd := newLogLevelCmd()
+ rootCmd.AddCommand(globalCmd, neighborCmd, vrfCmd, policyCmd, monitorCmd, mrtCmd, rpkiCmd, bmpCmd, logLevelCmd)
return rootCmd
}