From f77518160239e7f4052172066c634a8f74228d5a Mon Sep 17 00:00:00 2001 From: adragusin Date: Thu, 23 Jan 2020 17:49:46 +0200 Subject: [PATCH] Added checkConfig flag at cgr-engine --- cmd/cgr-engine/cgr-engine.go | 7 +++++++ config/configsanity.go | 9 +++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/cmd/cgr-engine/cgr-engine.go b/cmd/cgr-engine/cgr-engine.go index 4360ae2c5..576faf2bc 100644 --- a/cmd/cgr-engine/cgr-engine.go +++ b/cmd/cgr-engine/cgr-engine.go @@ -44,6 +44,7 @@ var ( cgrEngineFlags = flag.NewFlagSet("cgr-engine", flag.ContinueOnError) cfgPath = cgrEngineFlags.String("config_path", utils.CONFIG_PATH, "Configuration directory path.") version = cgrEngineFlags.Bool("version", false, "Prints the application version.") + checkConfig = cgrEngineFlags.Bool("check_config", false, "Verify the config without starting the engine") pidFile = cgrEngineFlags.String("pid", "", "Write pid file") httpPprofPath = cgrEngineFlags.String("httprof_path", "", "http address used for program profiling") cpuProfDir = cgrEngineFlags.String("cpuprof_dir", "", "write cpu profile to files") @@ -367,6 +368,12 @@ func main() { if *nodeID != utils.EmptyString { cfg.GeneralCfg().NodeID = *nodeID } + if *checkConfig { + if err := cfg.CheckConfigSanity(); err != nil { + fmt.Println(err) + } + return + } config.SetCgrConfig(cfg) // Share the config object // init syslog diff --git a/config/configsanity.go b/config/configsanity.go index 63783d08c..ba50032b2 100644 --- a/config/configsanity.go +++ b/config/configsanity.go @@ -26,6 +26,11 @@ import ( "github.com/cgrates/cgrates/utils" ) +// Exported in cgr-engine +func (cfg *CGRConfig) CheckConfigSanity() error { + return cfg.checkConfigSanity() +} + func (cfg *CGRConfig) checkConfigSanity() error { // Rater checks if cfg.ralsCfg.Enabled { @@ -298,7 +303,7 @@ func (cfg *CGRConfig) checkConfigSanity() error { return fmt.Errorf("<%s> not enabled but requested by <%s> HTTPAgent Template.", utils.SessionS, httpAgentCfg.ID) } if _, has := cfg.rpcConns[connID]; !has && !strings.HasPrefix(connID, utils.MetaInternal) { - return fmt.Errorf("HTTPAgent Templae with ID <%s> has connection with id: <%s> not defined", httpAgentCfg.ID, connID) + return fmt.Errorf("<%s> Template with ID <%s> has connection with id: <%s> not defined", utils.HTTPAgent, httpAgentCfg.ID, connID) } } if !utils.SliceHasMember([]string{utils.MetaUrl, utils.MetaXml}, httpAgentCfg.RequestPayload) { @@ -475,7 +480,7 @@ func (cfg *CGRConfig) checkConfigSanity() error { if cfg.dispatcherSCfg.Enabled { for _, connID := range cfg.dispatcherSCfg.AttributeSConns { if strings.HasPrefix(connID, utils.MetaInternal) && !cfg.attributeSCfg.Enabled { - return fmt.Errorf("<%s> not enabled but requested by <%s> component", utils.AttributeS, utils.DispatcherS) + return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.AttributeS, utils.DispatcherS) } if _, has := cfg.rpcConns[connID]; !has && !strings.HasPrefix(connID, utils.MetaInternal) { return fmt.Errorf("<%s> Connection with id: <%s> not defined", utils.DispatcherS, connID)