From 393d82f955cf432fb41871275566e16fc7992e3e Mon Sep 17 00:00:00 2001 From: Steve Shaw Date: Wed, 21 Oct 2020 13:25:38 -0400 Subject: Adding gRPC support for modified logging level Signed-off-by: Steve Shaw --- cmd/gobgp/common.go | 8 ++++++ cmd/gobgp/loglevel.go | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++ cmd/gobgp/root.go | 3 +- 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 cmd/gobgp/loglevel.go (limited to 'cmd') 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 } -- cgit v1.2.3