Skip to content

Commit 6474fb5

Browse files
committed
Merge branch 'thorhs-exit_on_config_parse_failure'
2 parents 61a512c + 5e164cd commit 6474fb5

File tree

12 files changed

+86
-60
lines changed

12 files changed

+86
-60
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
# Changelog
22
Newest updates are at the top of this file.
33

4+
### Apr 15 2021
5+
* Don't check for QMGR name unless config parse was a success
6+
47
### Apr 8 2021
58
* Update Dockerfile.run to move default configuration params to environment variables
69

cmd/mq_aws/config.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ var cfy mqExporterConfigYaml
5050
/*
5151
initConfig parses the command line parameters.
5252
*/
53-
func initConfig() {
53+
func initConfig() error {
5454

5555
var err error
5656

@@ -104,4 +104,6 @@ func initConfig() {
104104
log.Errorln("Warning: Data from 'RESET QSTATS' has been requested.")
105105
log.Errorln("Ensure no other monitoring applications are also using that command.")
106106
}
107+
108+
return err
107109
}

cmd/mq_aws/main.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,25 +36,28 @@ var discoverConfig mqmetric.DiscoverConfig
3636

3737
func main() {
3838
var err error
39+
var d time.Duration
3940

4041
cf.PrintInfo("IBM MQ metrics exporter for AWS CloudWatch monitoring", BuildStamp, GitCommit, BuildPlatform)
4142

42-
initConfig()
43+
err = initConfig()
4344

44-
if config.cf.QMgrName == "" {
45+
if err == nil && config.cf.QMgrName == "" {
4546
log.Errorln("Must provide a queue manager name to connect to.")
4647
os.Exit(72)
4748
}
4849

49-
interval := config.ci.Interval
50-
d, err := time.ParseDuration(interval)
51-
if err != nil || d.Seconds() <= 1 {
52-
log.Errorln("Invalid value or too short for interval parameter: ", err)
53-
os.Exit(1)
54-
}
50+
if err == nil {
51+
interval := config.ci.Interval
52+
d, err := time.ParseDuration(interval)
53+
if err != nil || d.Seconds() <= 1 {
54+
log.Errorln("Invalid value or too short for interval parameter: ", err)
55+
os.Exit(1)
56+
}
5557

56-
// Connect and open standard queues
57-
err = mqmetric.InitConnection(config.cf.QMgrName, config.cf.ReplyQ, &config.cf.CC)
58+
// Connect and open standard queues
59+
err = mqmetric.InitConnection(config.cf.QMgrName, config.cf.ReplyQ, &config.cf.CC)
60+
}
5861
if err == nil {
5962
log.Infoln("Connected to queue manager ", config.cf.QMgrName)
6063
} else {

cmd/mq_coll/config.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ var cfy mqExporterConfigYaml
4949
/*
5050
initConfig parses the command line parameters.
5151
*/
52-
func initConfig() {
52+
func initConfig() error {
5353

5454
cf.InitConfig(&config.cf)
5555

@@ -91,4 +91,6 @@ func initConfig() {
9191
} else {
9292
config.hostlabel = config.hostname
9393
}
94+
95+
return err
9496
}

cmd/mq_coll/main.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,26 @@ var discoverConfig mqmetric.DiscoverConfig
3636

3737
func main() {
3838
var err error
39+
var d time.Duration
3940

4041
cf.PrintInfo("IBM MQ metrics exporter for collectd", BuildStamp, GitCommit, BuildPlatform)
4142

42-
initConfig()
43+
err = initConfig()
4344

44-
if config.cf.QMgrName == "" {
45+
if err == nil && config.cf.QMgrName == "" {
4546
log.Errorln("Must provide a queue manager name to connect to.")
4647
os.Exit(72)
4748
}
48-
d, err := time.ParseDuration(config.interval)
49-
if err != nil || d.Seconds() <= 1 {
50-
log.Errorln("Invalid or too short value for interval parameter: ", err)
51-
os.Exit(1)
52-
}
49+
if err == nil {
50+
d, err = time.ParseDuration(config.interval)
51+
if err != nil || d.Seconds() <= 1 {
52+
log.Errorln("Invalid or too short value for interval parameter: ", err)
53+
os.Exit(1)
54+
}
5355

54-
// Connect and open standard queues
55-
err = mqmetric.InitConnection(config.cf.QMgrName, config.cf.ReplyQ, &config.cf.CC)
56+
// Connect and open standard queues
57+
err = mqmetric.InitConnection(config.cf.QMgrName, config.cf.ReplyQ, &config.cf.CC)
58+
}
5659
if err == nil {
5760
log.Infoln("Connected to queue manager ", config.cf.QMgrName)
5861
} else {

cmd/mq_influx/main.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,23 +38,26 @@ var discoverConfig mqmetric.DiscoverConfig
3838
func main() {
3939
var err error
4040
var c client.Client
41+
var d time.Duration
4142

4243
cf.PrintInfo("IBM MQ metrics exporter for InfluxDB monitoring", BuildStamp, GitCommit, BuildPlatform)
4344

4445
err = initConfig()
4546

46-
if config.cf.QMgrName == "" {
47+
if err == nil && config.cf.QMgrName == "" {
4748
log.Errorln("Must provide a queue manager name to connect to.")
4849
os.Exit(72)
4950
}
50-
d, err := time.ParseDuration(config.ci.Interval)
51-
if err != nil || d.Seconds() <= 1 {
52-
log.Errorln("Invalid or too short value for interval parameter: ", err)
53-
os.Exit(1)
54-
}
51+
if err == nil {
52+
d, err = time.ParseDuration(config.ci.Interval)
53+
if err != nil || d.Seconds() <= 1 {
54+
log.Errorln("Invalid or too short value for interval parameter: ", err)
55+
os.Exit(1)
56+
}
5557

56-
// Connect and open standard queues
57-
err = mqmetric.InitConnection(config.cf.QMgrName, config.cf.ReplyQ, &config.cf.CC)
58+
// Connect and open standard queues
59+
err = mqmetric.InitConnection(config.cf.QMgrName, config.cf.ReplyQ, &config.cf.CC)
60+
}
5861
if err == nil {
5962
log.Infoln("Connected to queue manager ", config.cf.QMgrName)
6063
} else {

cmd/mq_json/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func initConfig() error {
5151

5252
cf.AddParm(&config.interval, "10s", cf.CP_STR, "ibmmq.interval", "json", "interval", "How long between each collection")
5353

54-
cf.ParseParms()
54+
err = cf.ParseParms()
5555

5656
if err == nil {
5757
if config.cf.ConfigFile != "" {

cmd/mq_json/main.go

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -51,29 +51,33 @@ func printInfo(title string, stamp string, commit string, buildPlatform string)
5151

5252
func main() {
5353
var err error
54+
var d time.Duration
5455

55-
initConfig()
56+
err = initConfig()
5657

5758
printInfo("Starting IBM MQ metrics exporter for JSON", BuildStamp, GitCommit, BuildPlatform)
5859

59-
if config.cf.QMgrName == "" {
60+
if err == nil && config.cf.QMgrName == "" {
6061
log.Errorln("Must provide a queue manager name to connect to.")
6162
os.Exit(72)
6263
}
63-
d, err := time.ParseDuration(config.interval)
64-
if err != nil || d.Seconds() <= 1 {
65-
log.Errorln("Invalid or too short value for interval parameter: ", err)
66-
os.Exit(1)
67-
}
64+
if err == nil {
65+
d, err = time.ParseDuration(config.interval)
66+
if err != nil || d.Seconds() <= 1 {
67+
log.Errorln("Invalid or too short value for interval parameter: ", err)
68+
os.Exit(1)
69+
}
6870

69-
if config.cf.CC.UseResetQStats {
70-
log.Warnln("Warning: Data from 'RESET QSTATS' has been requested. Ensure no other monitoring applications are also using that command.")
71-
}
71+
if config.cf.CC.UseResetQStats {
72+
log.Warnln("Warning: Data from 'RESET QSTATS' has been requested. Ensure no other monitoring applications are also using that command.")
73+
}
74+
75+
log.Infoln("Starting IBM MQ metrics exporter for JSON")
7276

73-
log.Infoln("Starting IBM MQ metrics exporter for JSON")
77+
// Connect and open standard queues
78+
err = mqmetric.InitConnection(config.cf.QMgrName, config.cf.ReplyQ, &config.cf.CC)
79+
}
7480

75-
// Connect and open standard queues
76-
err = mqmetric.InitConnection(config.cf.QMgrName, config.cf.ReplyQ, &config.cf.CC)
7781
if err == nil {
7882
log.Infoln("Connected to queue manager ", config.cf.QMgrName)
7983
} else {

cmd/mq_opentsdb/config.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ var cfy mqExporterConfigYaml
5252
/*
5353
initConfig parses the command line parameters.
5454
*/
55-
func initConfig() {
55+
func initConfig() error {
5656
var err error
5757

5858
cf.InitConfig(&config.cf)
@@ -63,7 +63,7 @@ func initConfig() {
6363
cf.AddParm(&config.ci.MaxPoints, 30, cf.CP_INT, "ibmmq.maxPoints", "opentsdb", "maxPoints", "Maximum number of points to include in each write to the server")
6464
cf.AddParm(&config.ci.MetricPrefix, "ibmmq", cf.CP_STR, "ibmmq.seriesPrefix", "opentsdb", "seriesPrefix", "Prefix for all the MQ metric series")
6565

66-
cf.ParseParms()
66+
err = cf.ParseParms()
6767

6868
if err == nil {
6969
if config.cf.ConfigFile != "" {
@@ -81,6 +81,7 @@ func initConfig() {
8181
}
8282
}
8383
}
84+
8485
if err == nil {
8586
cf.InitLog(config.cf)
8687
}
@@ -103,4 +104,6 @@ func initConfig() {
103104
log.Errorln("Warning: Data from 'RESET QSTATS' has been requested.")
104105
log.Errorln("Ensure no other monitoring applications are also using that command.")
105106
}
107+
108+
return err
106109
}

cmd/mq_opentsdb/main.go

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,28 +36,31 @@ var discoverConfig mqmetric.DiscoverConfig
3636

3737
func main() {
3838
var err error
39+
var d time.Duration
3940

4041
cf.PrintInfo("IBM MQ metrics exporter for OpenTSDB monitoring", BuildStamp, GitCommit, BuildPlatform)
4142

42-
initConfig()
43+
err = initConfig()
4344

44-
if config.cf.QMgrName == "" {
45+
if err == nil && config.cf.QMgrName == "" {
4546
log.Errorln("Must provide a queue manager name to connect to.")
4647
os.Exit(72)
4748
}
4849

49-
interval := config.ci.Interval
50-
if !strings.HasSuffix(interval, "s") {
51-
interval += "s"
52-
}
53-
d, err := time.ParseDuration(interval)
54-
if err != nil || d.Seconds() <= 1 {
55-
log.Errorln("Invalid or too short value for interval parameter: ", err)
56-
os.Exit(1)
57-
}
50+
if err == nil {
51+
interval := config.ci.Interval
52+
if !strings.HasSuffix(interval, "s") {
53+
interval += "s"
54+
}
55+
d, err = time.ParseDuration(interval)
56+
if err != nil || d.Seconds() <= 1 {
57+
log.Errorln("Invalid or too short value for interval parameter: ", err)
58+
os.Exit(1)
59+
}
5860

59-
// Connect and open standard queues
60-
err = mqmetric.InitConnection(config.cf.QMgrName, config.cf.ReplyQ, &config.cf.CC)
61+
// Connect and open standard queues
62+
err = mqmetric.InitConnection(config.cf.QMgrName, config.cf.ReplyQ, &config.cf.CC)
63+
}
6164
if err == nil {
6265
log.Infoln("Connected to queue manager ", config.cf.QMgrName)
6366
} else {

0 commit comments

Comments
 (0)