diff --git a/config/filterscfg.go b/config/filterscfg.go index 06b0a0050..6c4ead602 100644 --- a/config/filterscfg.go +++ b/config/filterscfg.go @@ -18,7 +18,11 @@ along with this program. If not, see package config -import "github.com/cgrates/cgrates/utils" +import ( + "strings" + + "github.com/cgrates/cgrates/utils" +) type FilterSCfg struct { StatSConns []string @@ -67,10 +71,39 @@ func (fSCfg *FilterSCfg) loadFromJsonCfg(jsnCfg *FilterSJsonCfg) (err error) { } func (fSCfg *FilterSCfg) AsMapInterface() (initialMP map[string]interface{}) { - initialMP = map[string]interface{}{ - utils.StatSConnsCfg: fSCfg.StatSConns, - utils.ResourceSConnsCfg: fSCfg.ResourceSConns, - utils.ApierSConnsCfg: fSCfg.ApierSConns, + initialMP = make(map[string]interface{}) + if fSCfg.StatSConns != nil { + statSConns := make([]string, len(fSCfg.StatSConns)) + for i, item := range fSCfg.StatSConns { + if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStatS) { + statSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaStatS, utils.EmptyString) + } else { + statSConns[i] = item + } + } + initialMP[utils.StatSConnsCfg] = statSConns + } + if fSCfg.ResourceSConns != nil { + resourceSConns := make([]string, len(fSCfg.ResourceSConns)) + for i, item := range fSCfg.ResourceSConns { + if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources) { + resourceSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaResources, utils.EmptyString) + } else { + resourceSConns[i] = item + } + } + initialMP[utils.ResourceSConnsCfg] = resourceSConns + } + if fSCfg.ApierSConns != nil { + apierConns := make([]string, len(fSCfg.ApierSConns)) + for i, item := range fSCfg.ApierSConns { + if item == utils.ConcatenatedKey(utils.MetaInternal, utils.MetaApier) { + apierConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaApier, utils.EmptyString) + } else { + apierConns[i] = item + } + } + initialMP[utils.ApierSConnsCfg] = apierConns } return } diff --git a/config/filterscfg_test.go b/config/filterscfg_test.go index 60ec428fc..ff658a020 100644 --- a/config/filterscfg_test.go +++ b/config/filterscfg_test.go @@ -26,14 +26,14 @@ import ( func TestFilterSCfgloadFromJsonCfg(t *testing.T) { cfgJSONS := &FilterSJsonCfg{ - Stats_conns: &[]string{utils.MetaInternal}, - Resources_conns: &[]string{utils.MetaInternal}, - Apiers_conns: &[]string{utils.MetaInternal}, + Stats_conns: &[]string{utils.MetaInternal, "*conn1"}, + Resources_conns: &[]string{utils.MetaInternal, "*conn1"}, + Apiers_conns: &[]string{utils.MetaInternal, "*conn1"}, } expected := &FilterSCfg{ - StatSConns: []string{"*internal:*stats"}, - ResourceSConns: []string{"*internal:*resources"}, - ApierSConns: []string{"*internal:*apier"}, + StatSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStats), "*conn1"}, + ResourceSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources), "*conn1"}, + ApierSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaApier), "*conn1"}, } if jsnCfg, err := NewDefaultCGRConfig(); err != nil { t.Error(err) @@ -47,21 +47,21 @@ func TestFilterSCfgloadFromJsonCfg(t *testing.T) { func TestFilterSCfgAsMapInterface(t *testing.T) { cfgJSONStr := `{ "filters": { - "stats_conns": ["*localhost"], - "resources_conns": ["*conn1", "*conn2"], + "stats_conns": ["*internal:*stats", "*conn1"], + "resources_conns": ["*internal:*resources", "*conn1"], + "apiers_conns": ["*internal:*apier", "*conn1"], }, }` eMap := map[string]interface{}{ - utils.StatSConnsCfg: []string{utils.MetaLocalHost}, - utils.ResourceSConnsCfg: []string{"*conn1", "*conn2"}, - utils.ApierSConnsCfg: []string{}, + utils.StatSConnsCfg: []string{utils.MetaInternal, "*conn1"}, + utils.ResourceSConnsCfg: []string{utils.MetaInternal, "*conn1"}, + utils.ApierSConnsCfg: []string{utils.MetaInternal, "*conn1"}, } if cgrCfg, err := NewCGRConfigFromJsonStringWithDefaults(cfgJSONStr); err != nil { t.Error(err) } else if rcv := cgrCfg.filterSCfg.AsMapInterface(); !reflect.DeepEqual(rcv, eMap) { t.Errorf("Expected %+v, received %+v", eMap, rcv) } - } func TestFilterSCfgAsMapInterface2(t *testing.T) {