From 87b6dca365fdcd1567424d4cdcf374d85c46af9f Mon Sep 17 00:00:00 2001 From: TeoV Date: Wed, 10 Jun 2020 11:53:32 +0300 Subject: [PATCH] Add connection from CDRs to EEs in config --- config/cdrscfg.go | 12 ++++++++++++ config/config_defaults.go | 1 + config/config_json_test.go | 1 + config/config_test.go | 1 + config/configsanity.go | 8 ++++++++ config/libconfig_json.go | 1 + 6 files changed, 24 insertions(+) diff --git a/config/cdrscfg.go b/config/cdrscfg.go index e48c10215..2f902ae51 100644 --- a/config/cdrscfg.go +++ b/config/cdrscfg.go @@ -36,6 +36,7 @@ type CdrsCfg struct { StatSConns []string OnlineCDRExports []string // list of CDRE templates to use for real-time CDR exports SchedulerConns []string + EEsConns []string } //loadFromJsonCfg loads Cdrs config from JsonCfg @@ -129,6 +130,17 @@ func (cdrscfg *CdrsCfg) loadFromJsonCfg(jsnCdrsCfg *CdrsJsonCfg) (err error) { } } + if jsnCdrsCfg.Ees_conns != nil { + cdrscfg.EEsConns = make([]string, len(*jsnCdrsCfg.Ees_conns)) + for idx, connID := range *jsnCdrsCfg.Ees_conns { + // if we have the connection internal we change the name so we can have internal rpc for each subsystem + if connID == utils.MetaInternal { + cdrscfg.EEsConns[idx] = utils.ConcatenatedKey(utils.MetaInternal, utils.MetaEEs) + } else { + cdrscfg.EEsConns[idx] = connID + } + } + } return nil } diff --git a/config/config_defaults.go b/config/config_defaults.go index 72cc00362..6b104cf29 100755 --- a/config/config_defaults.go +++ b/config/config_defaults.go @@ -274,6 +274,7 @@ const CGRATES_CFG_JSON = ` "stats_conns": [], // connections to StatS for CDR reporting, empty to disable stats functionality: <""|*internal|$rpc_conns_id> "online_cdr_exports":[], // list of CDRE profiles to use for real-time CDR exports "scheduler_conns": [], // connections to SchedulerS in case of *dynaprepaid request + "ees_conns": [], // connections to EventExporter }, diff --git a/config/config_json_test.go b/config/config_json_test.go index af5deac23..8ce952b5f 100755 --- a/config/config_json_test.go +++ b/config/config_json_test.go @@ -570,6 +570,7 @@ func TestDfCdrsJsonCfg(t *testing.T) { Stats_conns: &[]string{}, Online_cdr_exports: &[]string{}, Scheduler_conns: &[]string{}, + Ees_conns: &[]string{}, } if cfg, err := dfCgrJsonCfg.CdrsJsonCfg(); err != nil { t.Error(err) diff --git a/config/config_test.go b/config/config_test.go index 73fd9b13b..61dc42461 100755 --- a/config/config_test.go +++ b/config/config_test.go @@ -428,6 +428,7 @@ func TestCgrCfgJSONDefaultsCDRS(t *testing.T) { ThresholdSConns: []string{}, StatSConns: []string{}, SchedulerConns: []string{}, + EEsConns: []string{}, } if !reflect.DeepEqual(eCdrsCfg, cgrCfg.cdrsCfg) { t.Errorf("Expecting: %+v , received: %+v", eCdrsCfg, cgrCfg.cdrsCfg) diff --git a/config/configsanity.go b/config/configsanity.go index c046b900e..32852dcf9 100644 --- a/config/configsanity.go +++ b/config/configsanity.go @@ -98,6 +98,14 @@ func (cfg *CGRConfig) checkConfigSanity() error { return fmt.Errorf("<%s> cannot find CDR export template with ID: <%s>", utils.CDRs, cdrePrfl) } } + for _, connID := range cfg.cdrsCfg.EEsConns { + if strings.HasPrefix(connID, utils.MetaInternal) && !cfg.eesCfg.Enabled { + return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.EEs, utils.CDRs) + } + if _, has := cfg.rpcConns[connID]; !has && !strings.HasPrefix(connID, utils.MetaInternal) { + return fmt.Errorf("<%s> connection with id: <%s> not defined", utils.CDRs, connID) + } + } for prfl, cdre := range cfg.CdreProfiles { for _, field := range cdre.Fields { if field.Type != utils.META_NONE && field.Path == utils.EmptyString { diff --git a/config/libconfig_json.go b/config/libconfig_json.go index df2c0f3f8..1676b10f7 100755 --- a/config/libconfig_json.go +++ b/config/libconfig_json.go @@ -151,6 +151,7 @@ type CdrsJsonCfg struct { Stats_conns *[]string Online_cdr_exports *[]string Scheduler_conns *[]string + Ees_conns *[]string } // Cdre config section