mirror of
https://github.com/ClusterCockpit/cc-metric-collector.git
synced 2024-12-25 15:09:05 +01:00
Use Golang duration parser for 'interval' and 'duration'
in main config
This commit is contained in:
parent
ee4bd558f1
commit
8abedac0fe
4
.github/ci-config.json
vendored
4
.github/ci-config.json
vendored
@ -3,6 +3,6 @@
|
|||||||
"collectors" : ".github/ci-collectors.json",
|
"collectors" : ".github/ci-collectors.json",
|
||||||
"receivers" : ".github/ci-receivers.json",
|
"receivers" : ".github/ci-receivers.json",
|
||||||
"router" : ".github/ci-router.json",
|
"router" : ".github/ci-router.json",
|
||||||
"interval": 5,
|
"interval": "5s",
|
||||||
"duration": 1
|
"duration": "1s"
|
||||||
}
|
}
|
||||||
|
@ -22,8 +22,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type CentralConfigFile struct {
|
type CentralConfigFile struct {
|
||||||
Interval int `json:"interval"`
|
Interval string `json:"interval"`
|
||||||
Duration int `json:"duration"`
|
Duration string `json:"duration"`
|
||||||
CollectorConfigFile string `json:"collectors"`
|
CollectorConfigFile string `json:"collectors"`
|
||||||
RouterConfigFile string `json:"router"`
|
RouterConfigFile string `json:"router"`
|
||||||
SinkConfigFile string `json:"sinks"`
|
SinkConfigFile string `json:"sinks"`
|
||||||
@ -173,16 +173,36 @@ func mainFunc() int {
|
|||||||
cclog.Error("Error reading configuration file ", rcfg.CliArgs["configfile"], ": ", err.Error())
|
cclog.Error("Error reading configuration file ", rcfg.CliArgs["configfile"], ": ", err.Error())
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
if rcfg.ConfigFile.Interval <= 0 || time.Duration(rcfg.ConfigFile.Interval)*time.Second <= 0 {
|
|
||||||
|
// Properly use duration parser with inputs like '60s', '5m' or similar
|
||||||
|
if len(rcfg.ConfigFile.Interval) > 0 {
|
||||||
|
t, err := time.ParseDuration(rcfg.ConfigFile.Interval)
|
||||||
|
if err != nil {
|
||||||
|
cclog.Error("Configuration value 'interval' no valid duration")
|
||||||
|
}
|
||||||
|
rcfg.Interval = t
|
||||||
|
if rcfg.Interval == 0 {
|
||||||
cclog.Error("Configuration value 'interval' must be greater than zero")
|
cclog.Error("Configuration value 'interval' must be greater than zero")
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
rcfg.Interval = time.Duration(rcfg.ConfigFile.Interval) * time.Second
|
}
|
||||||
if rcfg.ConfigFile.Duration <= 0 || time.Duration(rcfg.ConfigFile.Duration)*time.Second <= 0 {
|
|
||||||
|
// Properly use duration parser with inputs like '60s', '5m' or similar
|
||||||
|
if len(rcfg.ConfigFile.Duration) > 0 {
|
||||||
|
t, err := time.ParseDuration(rcfg.ConfigFile.Duration)
|
||||||
|
if err != nil {
|
||||||
|
cclog.Error("Configuration value 'duration' no valid duration")
|
||||||
|
}
|
||||||
|
rcfg.Duration = t
|
||||||
|
if rcfg.Duration == 0 {
|
||||||
cclog.Error("Configuration value 'duration' must be greater than zero")
|
cclog.Error("Configuration value 'duration' must be greater than zero")
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
rcfg.Duration = time.Duration(rcfg.ConfigFile.Duration) * time.Second
|
}
|
||||||
|
if rcfg.Duration > rcfg.Interval {
|
||||||
|
cclog.Error("The interval should be greater than duration")
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
if len(rcfg.ConfigFile.RouterConfigFile) == 0 {
|
if len(rcfg.ConfigFile.RouterConfigFile) == 0 {
|
||||||
cclog.Error("Metric router configuration file must be set")
|
cclog.Error("Metric router configuration file must be set")
|
||||||
@ -271,7 +291,7 @@ func mainFunc() int {
|
|||||||
|
|
||||||
// Wait until one tick has passed. This is a workaround
|
// Wait until one tick has passed. This is a workaround
|
||||||
if rcfg.CliArgs["once"] == "true" {
|
if rcfg.CliArgs["once"] == "true" {
|
||||||
x := 1.2 * float64(rcfg.ConfigFile.Interval)
|
x := 1.2 * float64(rcfg.Interval)
|
||||||
time.Sleep(time.Duration(int(x)) * time.Second)
|
time.Sleep(time.Duration(int(x)) * time.Second)
|
||||||
shutdownSignal <- os.Interrupt
|
shutdownSignal <- os.Interrupt
|
||||||
}
|
}
|
||||||
|
12
config.json
12
config.json
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"sinks": "sinks.json",
|
"sinks": "./sinks.json",
|
||||||
"collectors" : "collectors.json",
|
"collectors" : "./collectors.json",
|
||||||
"receivers" : "receivers.json",
|
"receivers" : "./receivers.json",
|
||||||
"router" : "router.json",
|
"router" : "./router.json",
|
||||||
"interval": 10,
|
"interval": "10s",
|
||||||
"duration": 1
|
"duration": "1s"
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user