Skip to content

Commit 74f9f60

Browse files
author
Christian González Di Antonio
committed
improved
1 parent 3b1120f commit 74f9f60

File tree

3 files changed

+43
-7
lines changed

3 files changed

+43
-7
lines changed

cmd/metrics.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ func init() {
9595

9696
func getCmd(cmd *cobra.Command, args []string) {
9797

98-
ReadAndValidateConfFromFiles()
98+
ReadAndValidateMetricsFromFiles()
9999

100100
startTime, endTime, period := metrics.GetTimeStamps(time.Now(), conf.Application.MetricStatPeriod, conf.Application.MetricTimeWindow)
101101
log.Debugf("Start Time: %s", startTime.Format(time.RFC3339))

cmd/root.go

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func init() {
8282
log.Error(err)
8383
}
8484

85-
rootCmd.PersistentFlags().StringSliceVar(&conf.Application.MetricsFiles, "metricsFiles", nil, "Metrics files, example: --metricsFiles ~/tmp/queries/m1.yaml --metricsFiles ~/tmp/queries/m2.yml")
85+
rootCmd.PersistentFlags().StringSliceVar(&conf.Application.MetricsFiles, "metricsFiles", []string{"metrics.yaml"}, "Metrics files, example: --metricsFiles ~/tmp/queries/m1.yaml --metricsFiles ~/tmp/queries/m2.yml")
8686
if err := viper.BindPFlag("application.metricsFiles", rootCmd.PersistentFlags().Lookup("metricsFiles")); err != nil {
8787
log.Error(err)
8888
}
@@ -218,6 +218,22 @@ func ReadAndValidateConfFromFiles() {
218218
}
219219
}
220220

221+
// this will be used for every commands that needs conf in files
222+
func ReadAndValidateMetricsFromFiles() {
223+
// Read env vars equals as the mapstructure defined into the config.go
224+
viper.AutomaticEnv()
225+
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
226+
227+
loadFromMetricsFiles(&conf)
228+
validateMetricsQueries(&conf)
229+
230+
// expose all the configuration, just to check
231+
if conf.Server.Debug {
232+
log.Debug(conf.ToJSON())
233+
// log.VersionInfo(conf.ToYAML())
234+
}
235+
}
236+
221237
// Unmarshall Yaml files into c config structure
222238
func loadFromConfigFiles(c *config.All) {
223239
// Config files to be load
@@ -227,6 +243,12 @@ func loadFromConfigFiles(c *config.All) {
227243
}
228244

229245
for _, file := range files {
246+
247+
if !fileExists(file) {
248+
log.Warnf("The file %s doesn't exist, I will try to use configuration values from flags or ENV vars", file)
249+
break
250+
}
251+
230252
log.Infof("Reading configuration file: %s", file)
231253

232254
// fileNameNoExt := strings.TrimSuffix(file, filepath.Ext(file))
@@ -263,17 +285,17 @@ func loadFromMetricsFiles(c *config.All) {
263285
metricsQueries := MergeMetricsFiles(c.Application.MetricsFiles)
264286

265287
if err := viper.MergeConfigMap(metricsQueries); err != nil {
266-
log.Errorf("Error merging MetricsQueries read from files into config structure: %s", err.Error())
288+
log.Fatalf("Error merging MetricsQueries read from files into config structure, check your metrics queries: %s", err.Error())
267289
}
268290

269291
if len(c.Application.MetricsFiles) > 0 {
270-
log.Debugf("Filling configuration structure from file: %s", c.Application.MetricsFiles)
292+
log.Debugf("Filling configuration structure from metrics queries file: %s", c.Application.MetricsFiles)
271293
err := viper.Unmarshal(&c)
272294
if err != nil {
273-
log.Errorf("Unable to unmarshal viper config into config struct, %s", err.Error())
295+
log.Fatalf("Unable to unmarshal Metrics queries files into config struct, %s", err.Error())
274296
}
275297
} else {
276-
log.Errorf("Metrics configuration file: \"%v\" doesn't exist", c.Application.MetricsFiles)
298+
log.Fatal("Metrics queries files don't provided, you need to provide at least one to continue")
277299
}
278300
}
279301

@@ -282,8 +304,12 @@ func MergeMetricsFiles(files []string) map[string]interface{} {
282304
var resultValues map[string]interface{}
283305
for _, file := range files {
284306

307+
if !fileExists(file) {
308+
log.Fatalf("The file %s does not exist, you need to provide valid metrics queries file", file)
309+
}
310+
285311
fileExt := strings.ToLower(filepath.Ext(file)[1:])
286-
log.Infof("Reading configuration file: %s", file)
312+
log.Infof("Reading metrics queries file: %s", file)
287313
log.Debugf("File type: %s", fileExt)
288314

289315
var override map[string]interface{}
@@ -328,3 +354,11 @@ func validateMetricsQueries(c *config.All) {
328354
log.Fatal("Metrics Queries are empty, you need to defined at least one metric in metrics file")
329355
}
330356
}
357+
358+
func fileExists(filename string) bool {
359+
info, err := os.Stat(filename)
360+
if os.IsNotExist(err) {
361+
return false
362+
}
363+
return !info.IsDir()
364+
}

internal/awshelper/session.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ func NewSession(c *config.AWS) *session.Session {
3737
awsSession := &session.Session{}
3838
awsSession.Config = &awsConf
3939

40+
log.Debug("Creating AWS Session")
41+
4042
// Case 1: When config.AWS structure is empty, use default credentials chain providers
4143
// Trying to use default credential provider chain to find AWS credentials
4244
// 1. Environment variables.

0 commit comments

Comments
 (0)