1
1
package cmd
2
2
3
3
import (
4
+ "log"
4
5
"os"
5
6
"strings"
6
7
@@ -10,11 +11,11 @@ import (
10
11
"github.com/spf13/viper"
11
12
12
13
"github.com/bpineau/kube-alert/config"
13
- "github.com/bpineau/kube-alert/pkg/log"
14
+ klog "github.com/bpineau/kube-alert/pkg/log"
14
15
"github.com/bpineau/kube-alert/pkg/run"
15
16
)
16
17
17
- const AppName = "kube-alert"
18
+ const appName = "kube-alert"
18
19
19
20
var (
20
21
cfgFile string
@@ -30,14 +31,14 @@ var (
30
31
31
32
// rootCmd represents the base command when called without any subcommands
32
33
rootCmd = & cobra.Command {
33
- Use : AppName ,
34
+ Use : appName ,
34
35
Short : "Monitor pods" ,
35
36
Long : "Monitor pods and alert on failure" ,
36
37
37
38
Run : func (cmd * cobra.Command , args []string ) {
38
39
config := & config.AlertConfig {
39
40
DryRun : viper .GetBool ("dry-run" ),
40
- Logger : log .New (viper .GetString ("log.level" ), viper .GetString ("log.server" ), viper .GetString ("log.output" )),
41
+ Logger : klog .New (viper .GetString ("log.level" ), viper .GetString ("log.server" ), viper .GetString ("log.output" )),
41
42
DdAppKey : viper .GetString ("datadog.app-key" ),
42
43
DdApiKey : viper .GetString ("datadog.api-key" ),
43
44
HealthPort : viper .GetInt ("healthcheck-port" ),
@@ -58,44 +59,64 @@ func Execute() {
58
59
func init () {
59
60
cobra .OnInitialize (initConfig )
60
61
61
- defaultCfg := "/etc/" + AppName + "/" + AppName + ".yaml"
62
+ defaultCfg := "/etc/" + appName + "/" + appName + ".yaml"
62
63
rootCmd .PersistentFlags ().StringVarP (& cfgFile , "config" , "c" , defaultCfg , "configuration file" )
63
64
64
65
rootCmd .PersistentFlags ().StringVarP (& apiServer , "api-server" , "s" , "" , "kube api server url" )
65
- viper .BindPFlag ("api-server" , rootCmd .PersistentFlags ().Lookup ("api-server" ))
66
+ if err := viper .BindPFlag ("api-server" , rootCmd .PersistentFlags ().Lookup ("api-server" )); err != nil {
67
+ log .Fatal ("Failed to bind cli argument:" , err )
68
+ }
66
69
67
70
rootCmd .PersistentFlags ().StringVarP (& kubeConf , "kube-config" , "k" , "" , "kube config path" )
68
- viper .BindPFlag ("kube-config" , rootCmd .PersistentFlags ().Lookup ("kube-config" ))
69
- viper .BindEnv ("kube-config" , "KUBECONFIG" )
71
+ if err := viper .BindPFlag ("kube-config" , rootCmd .PersistentFlags ().Lookup ("kube-config" )); err != nil {
72
+ log .Fatal ("Failed to bind cli argument:" , err )
73
+ }
74
+ if err := viper .BindEnv ("kube-config" , "KUBECONFIG" ); err != nil {
75
+ log .Fatal ("Failed to bind cli argument:" , err )
76
+ }
70
77
71
78
rootCmd .PersistentFlags ().BoolVarP (& dryRun , "dry-run" , "d" , false , "dry-run mode" )
72
- viper .BindPFlag ("dry-run" , rootCmd .PersistentFlags ().Lookup ("dry-run" ))
79
+ if err := viper .BindPFlag ("dry-run" , rootCmd .PersistentFlags ().Lookup ("dry-run" )); err != nil {
80
+ log .Fatal ("Failed to bind cli argument:" , err )
81
+ }
73
82
74
83
rootCmd .PersistentFlags ().StringVarP (& logLevel , "log-level" , "v" , "debug" , "log level" )
75
- viper .BindPFlag ("log.level" , rootCmd .PersistentFlags ().Lookup ("log-level" ))
84
+ if err := viper .BindPFlag ("log.level" , rootCmd .PersistentFlags ().Lookup ("log-level" )); err != nil {
85
+ log .Fatal ("Failed to bind cli argument:" , err )
86
+ }
76
87
77
88
rootCmd .PersistentFlags ().StringVarP (& logOutput , "log-output" , "l" , "stderr" , "log output" )
78
- viper .BindPFlag ("log.output" , rootCmd .PersistentFlags ().Lookup ("log-output" ))
89
+ if err := viper .BindPFlag ("log.output" , rootCmd .PersistentFlags ().Lookup ("log-output" )); err != nil {
90
+ log .Fatal ("Failed to bind cli argument:" , err )
91
+ }
79
92
80
93
rootCmd .PersistentFlags ().StringVarP (& logServer , "log-server" , "r" , "" , "log server (if using syslog)" )
81
- viper .BindPFlag ("log.server" , rootCmd .PersistentFlags ().Lookup ("log-server" ))
94
+ if err := viper .BindPFlag ("log.server" , rootCmd .PersistentFlags ().Lookup ("log-server" )); err != nil {
95
+ log .Fatal ("Failed to bind cli argument:" , err )
96
+ }
82
97
83
98
rootCmd .PersistentFlags ().StringVarP (& ddAppKey , "datadog-app-key" , "a" , "" , "datadog app key" )
84
- viper .BindPFlag ("datadog.app-key" , rootCmd .PersistentFlags ().Lookup ("datadog-app-key" ))
99
+ if err := viper .BindPFlag ("datadog.app-key" , rootCmd .PersistentFlags ().Lookup ("datadog-app-key" )); err != nil {
100
+ log .Fatal ("Failed to bind cli argument:" , err )
101
+ }
85
102
86
103
rootCmd .PersistentFlags ().StringVarP (& ddApiKey , "datadog-api-key" , "i" , "" , "datadog api key" )
87
- viper .BindPFlag ("datadog.api-key" , rootCmd .PersistentFlags ().Lookup ("datadog-api-key" ))
104
+ if err := viper .BindPFlag ("datadog.api-key" , rootCmd .PersistentFlags ().Lookup ("datadog-api-key" )); err != nil {
105
+ log .Fatal ("Failed to bind cli argument:" , err )
106
+ }
88
107
89
108
rootCmd .PersistentFlags ().IntVarP (& healthP , "healthcheck-port" , "p" , 0 , "port for answering healthchecks" )
90
- viper .BindPFlag ("healthcheck-port" , rootCmd .PersistentFlags ().Lookup ("healthcheck-port" ))
109
+ if err := viper .BindPFlag ("healthcheck-port" , rootCmd .PersistentFlags ().Lookup ("healthcheck-port" )); err != nil {
110
+ log .Fatal ("Failed to bind cli argument:" , err )
111
+ }
91
112
}
92
113
93
114
func initConfig () {
94
115
viper .SetConfigType ("yaml" )
95
- viper .SetConfigName (AppName )
116
+ viper .SetConfigName (appName )
96
117
97
118
// all possible config file paths, by priority
98
- viper .AddConfigPath ("/etc/" + AppName + "/" )
119
+ viper .AddConfigPath ("/etc/" + appName + "/" )
99
120
if home , err := homedir .Dir (); err == nil {
100
121
viper .AddConfigPath (home )
101
122
}
0 commit comments