Merge pull request #938 from jbw976/log-startup-info

log version, arguments and flags at start up
This commit is contained in:
Jared Watts
2017-08-24 14:40:06 -07:00
committed by GitHub
13 changed files with 89 additions and 12 deletions
+1
View File
@@ -62,6 +62,7 @@ TEST_PACKAGES = $(GO_PROJECT)/tests/smoke
# the root go project
GO_PROJECT=github.com/rook/rook
# inject the version number into the golang version package using the -X linker flag
LDFLAGS += -X $(GO_PROJECT)/pkg/version.Version=$(VERSION)
# ====================================================================================
+3 -1
View File
@@ -44,7 +44,7 @@ func init() {
apiCmd.Flags().StringVar(&namespace, "namespace", "", "the namespace in which the api service is running")
addCephFlags(apiCmd)
flags.SetFlagsFromEnv(apiCmd.Flags(), "ROOK")
flags.SetFlagsFromEnv(apiCmd.Flags(), RookEnvVarPrefix)
apiCmd.RunE = startAPI
}
@@ -60,6 +60,8 @@ func startAPI(cmd *cobra.Command, args []string) error {
setLogLevel()
logStartupInfo(apiCmd.Flags())
clientset, _, err := getClientset()
if err != nil {
fmt.Printf("failed to init k8s client. %+v\n", err)
+18 -2
View File
@@ -28,6 +28,7 @@ import (
"github.com/coreos/pkg/capnslog"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
"github.com/rook/rook/pkg/api"
"github.com/rook/rook/pkg/ceph"
@@ -39,6 +40,11 @@ import (
"github.com/rook/rook/pkg/util/exec"
"github.com/rook/rook/pkg/util/flags"
"github.com/rook/rook/pkg/util/proc"
"github.com/rook/rook/pkg/version"
)
const (
RookEnvVarPrefix = "ROOK"
)
var rootCmd = &cobra.Command{
@@ -89,8 +95,8 @@ func init() {
rootCmd.PersistentFlags().StringVar(&logLevelRaw, "log-level", "INFO", "logging level for logging/tracing output (valid values: CRITICAL,ERROR,WARNING,NOTICE,INFO,DEBUG,TRACE)")
// load the environment variables
flags.SetFlagsFromEnv(rootCmd.Flags(), "ROOK")
flags.SetFlagsFromEnv(rootCmd.PersistentFlags(), "ROOK")
flags.SetFlagsFromEnv(rootCmd.Flags(), RookEnvVarPrefix)
flags.SetFlagsFromEnv(rootCmd.PersistentFlags(), RookEnvVarPrefix)
rootCmd.RunE = startJoinCluster
}
@@ -123,6 +129,8 @@ func startJoinCluster(cmd *cobra.Command, args []string) error {
setLogLevel()
logStartupInfo(rootCmd.Flags())
if err := joinCluster(); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
@@ -232,6 +240,14 @@ func setLogLevel() {
capnslog.SetGlobalLogLevel(cfg.logLevel)
}
func logStartupInfo(cmdFlags *pflag.FlagSet) {
// log the version number, arguments, and all final flag values (environment variable overrides
// have already been taken into account)
flagValues := flags.GetFlagsAndValues(cmdFlags, "secret")
logger.Infof("starting Rook %s with arguments '%s'", version.Version, strings.Join(os.Args, " "))
logger.Infof("flag values: %s", strings.Join(flagValues, ", "))
}
func createContext() *clusterd.Context {
executor := &exec.CommandExecutor{}
return &clusterd.Context{
+3 -1
View File
@@ -41,7 +41,7 @@ func init() {
mdsCmd.Flags().StringVar(&mdsKeyring, "mds-keyring", "", "the mds keyring")
addCephFlags(mdsCmd)
flags.SetFlagsFromEnv(mdsCmd.Flags(), "ROOK")
flags.SetFlagsFromEnv(mdsCmd.Flags(), RookEnvVarPrefix)
mdsCmd.RunE = startMDS
}
@@ -54,6 +54,8 @@ func startMDS(cmd *cobra.Command, args []string) error {
setLogLevel()
logStartupInfo(mdsCmd.Flags())
clusterInfo.Monitors = mon.ParseMonEndpoints(cfg.monEndpoints)
config := &mds.Config{
ID: mdsID,
+3 -1
View File
@@ -41,7 +41,7 @@ func init() {
mgrCmd.Flags().StringVar(&mgrKeyring, "mgr-keyring", "", "the mgr keyring")
addCephFlags(mgrCmd)
flags.SetFlagsFromEnv(mgrCmd.Flags(), "ROOK")
flags.SetFlagsFromEnv(mgrCmd.Flags(), RookEnvVarPrefix)
mgrCmd.RunE = startMgr
}
@@ -54,6 +54,8 @@ func startMgr(cmd *cobra.Command, args []string) error {
setLogLevel()
logStartupInfo(mgrCmd.Flags())
clusterInfo.Monitors = mon.ParseMonEndpoints(cfg.monEndpoints)
config := &mgr.Config{
Name: mgrName,
+3 -1
View File
@@ -52,7 +52,7 @@ func init() {
monCmd.Flags().IntVar(&monPort, "port", 0, "port of the monitor")
addCephFlags(monCmd)
flags.SetFlagsFromEnv(monCmd.Flags(), "ROOK")
flags.SetFlagsFromEnv(monCmd.Flags(), RookEnvVarPrefix)
monCmd.RunE = startMon
}
@@ -65,6 +65,8 @@ func startMon(cmd *cobra.Command, args []string) error {
setLogLevel()
logStartupInfo(monCmd.Flags())
if monPort == 0 {
return fmt.Errorf("missing mon port")
}
+3 -1
View File
@@ -37,7 +37,7 @@ https://github.com/rook/rook`,
}
func init() {
flags.SetFlagsFromEnv(operatorCmd.Flags(), "ROOK")
flags.SetFlagsFromEnv(operatorCmd.Flags(), RookEnvVarPrefix)
operatorCmd.RunE = startOperator
}
@@ -46,6 +46,8 @@ func startOperator(cmd *cobra.Command, args []string) error {
setLogLevel()
logStartupInfo(operatorCmd.Flags())
clientset, apiExtClientset, err := getClientset()
if err != nil {
fmt.Printf("failed to get k8s client. %+v", err)
+3 -1
View File
@@ -55,7 +55,7 @@ func addOSDFlags(command *cobra.Command) {
func init() {
addOSDFlags(osdCmd)
addCephFlags(osdCmd)
flags.SetFlagsFromEnv(osdCmd.Flags(), "ROOK")
flags.SetFlagsFromEnv(osdCmd.Flags(), RookEnvVarPrefix)
osdCmd.RunE = startOSD
}
@@ -81,6 +81,8 @@ func startOSD(cmd *cobra.Command, args []string) error {
setLogLevel()
logStartupInfo(osdCmd.Flags())
forceFormat := false
clusterInfo.Monitors = mon.ParseMonEndpoints(cfg.monEndpoints)
agent := osd.NewAgent(dataDevices, usingDeviceFilter, cfg.metadataDevice, cfg.directories, forceFormat,
+3 -1
View File
@@ -43,7 +43,7 @@ func init() {
rgwCmd.Flags().IntVar(&rgwPort, "rgw-port", 0, "rgw port number")
addCephFlags(rgwCmd)
flags.SetFlagsFromEnv(rgwCmd.Flags(), "ROOK")
flags.SetFlagsFromEnv(rgwCmd.Flags(), RookEnvVarPrefix)
rgwCmd.RunE = startRGW
}
@@ -60,6 +60,8 @@ func startRGW(cmd *cobra.Command, args []string) error {
setLogLevel()
logStartupInfo(rgwCmd.Flags())
clusterInfo.Monitors = mon.ParseMonEndpoints(cfg.monEndpoints)
config := &rgw.Config{
ClusterInfo: &clusterInfo,
-3
View File
@@ -31,9 +31,6 @@ import (
func StartJoinCluster(services []*ClusterService, configDir, nodeID, discoveryURL,
etcdMembers string, networkInfo NetworkInfo, configFileOverride string, logLevel capnslog.LogLevel) (*Context, error) {
logger.Infof("Starting cluster. configDir=%s, nodeID=%s, url=%s, members=%s, networkInfo=%+v, configFileOverride=%s, logLevel=%s",
configDir, nodeID, discoveryURL, etcdMembers, networkInfo, configFileOverride, logLevel)
if err := VerifyNetworkInfo(networkInfo); err != nil {
return nil, fmt.Errorf("invalid network info: %+v. %+v", networkInfo, err)
}
+20
View File
@@ -18,6 +18,7 @@ package flags
import (
"fmt"
"os"
"regexp"
"strings"
"github.com/spf13/cobra"
@@ -72,3 +73,22 @@ func SetFlagsFromEnv(flags *pflag.FlagSet, prefix string) error {
return nil
}
// GetFlagsAndValues returns all flags and their values as a slice with elements in the format of
// "--<flag>=<value>"
func GetFlagsAndValues(flags *pflag.FlagSet, excludeFilter string) []string {
var flagValues []string
flags.VisitAll(func(f *pflag.Flag) {
val := f.Value.String()
if excludeFilter != "" {
if matched, _ := regexp.Match(excludeFilter, []byte(f.Name)); matched {
val = "*****"
}
}
flagValues = append(flagValues, fmt.Sprintf("--%s=%s", f.Name, val))
})
return flagValues
}
+28
View File
@@ -73,3 +73,31 @@ func TestUintFlags(t *testing.T) {
err = VerifyRequiredUint64Flags(cmd, []string{"foo", "bar"})
assert.Nil(t, err)
}
func TestGetFlagsAndValues(t *testing.T) {
cmd := &cobra.Command{
Use: "test",
Short: "Creates a test arg",
}
var arg1 string
var arg2 string
cmd.Flags().StringVar(&arg1, "foo-data", "", "test 1")
cmd.Flags().StringVar(&arg2, "bar-secret", "", "test 2")
cmd.Flags().Set("foo-data", "1234")
cmd.Flags().Set("bar-secret", "mypassword")
// get all flags and their values, providing no filter. all of them should be returned.
flagValues := GetFlagsAndValues(cmd.Flags(), "")
assert.Equal(t, 2, len(flagValues))
assert.Contains(t, flagValues, "--foo-data=1234")
assert.Contains(t, flagValues, "--bar-secret=mypassword")
// get all flags and their values, filtering any flags with "secret" in their name.
// the --bar-secret flag should be redacted.
flagValues = GetFlagsAndValues(cmd.Flags(), "secret")
assert.Equal(t, 2, len(flagValues))
assert.Contains(t, flagValues, "--foo-data=1234")
assert.Contains(t, flagValues, "--bar-secret=*****")
}
+1
View File
@@ -15,4 +15,5 @@ limitations under the License.
*/
package version
// Version will be overridden with the current version at build time using the -X linker flag
var Version = "0.0.0"