Add verification in case RALs is required by routes

This commit is contained in:
TeoV
2020-07-21 12:14:08 +03:00
committed by Dan Christian Bogos
parent a961d6225d
commit e55b75b622
4 changed files with 20 additions and 12 deletions

View File

@@ -784,7 +784,7 @@ func TestCgrCfgJSONDefaultRouteSCfg(t *testing.T) {
AttributeSConns: []string{},
ResourceSConns: []string{},
StatSConns: []string{},
ResponderSConns: []string{},
RALsConns: []string{},
DefaultRatio: 1,
}
if !reflect.DeepEqual(eSupplSCfg, cgrCfg.routeSCfg) {

View File

@@ -483,6 +483,14 @@ func (cfg *CGRConfig) checkConfigSanity() error {
return fmt.Errorf("<%s> connection with id: <%s> not defined", utils.RouteS, connID)
}
}
for _, connID := range cfg.routeSCfg.RALsConns {
if strings.HasPrefix(connID, utils.MetaInternal) && !cfg.ralsCfg.Enabled {
return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.RALService, utils.RouteS)
}
if _, has := cfg.rpcConns[connID]; !has && !strings.HasPrefix(connID, utils.MetaInternal) {
return fmt.Errorf("<%s> connection with id: <%s> not defined", utils.RouteS, connID)
}
}
}
// Scheduler check connection with CDR Server
if cfg.schedulerCfg.Enabled {

View File

@@ -33,7 +33,7 @@ type RouteSCfg struct {
AttributeSConns []string
ResourceSConns []string
StatSConns []string
ResponderSConns []string
RALsConns []string
DefaultRatio int
NestedFields bool
}
@@ -96,13 +96,13 @@ func (rts *RouteSCfg) loadFromJsonCfg(jsnCfg *RouteSJsonCfg) (err error) {
}
}
if jsnCfg.Rals_conns != nil {
rts.ResponderSConns = make([]string, len(*jsnCfg.Rals_conns))
rts.RALsConns = make([]string, len(*jsnCfg.Rals_conns))
for idx, conn := range *jsnCfg.Rals_conns {
// if we have the connection internal we change the name so we can have internal rpc for each subsystem
if conn == utils.MetaInternal {
rts.ResponderSConns[idx] = utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder)
rts.RALsConns[idx] = utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder)
} else {
rts.ResponderSConns[idx] = conn
rts.RALsConns[idx] = conn
}
}
}
@@ -140,14 +140,14 @@ func (rts *RouteSCfg) AsMapInterface() map[string]interface{} {
attributeSConns[i] = item
}
}
responderSConns := make([]string, len(rts.ResponderSConns))
for i, item := range rts.ResponderSConns {
ralSConns := make([]string, len(rts.RALsConns))
for i, item := range rts.RALsConns {
buf := utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder)
if item == buf {
responderSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaResponder, utils.EmptyString)
ralSConns[i] = strings.ReplaceAll(item, utils.CONCATENATED_KEY_SEP+utils.MetaResponder, utils.EmptyString)
} else {
responderSConns[i] = item
ralSConns[i] = item
}
}
resourceSConns := make([]string, len(rts.ResourceSConns))
@@ -177,7 +177,7 @@ func (rts *RouteSCfg) AsMapInterface() map[string]interface{} {
utils.AttributeSConnsCfg: attributeSConns,
utils.ResourceSConnsCfg: resourceSConns,
utils.StatSConnsCfg: statSConns,
utils.RALsConnsCfg: responderSConns,
utils.RALsConnsCfg: ralSConns,
utils.DefaultRatioCfg: rts.DefaultRatio,
utils.NestedFieldsCfg: rts.NestedFields,
}

View File

@@ -245,7 +245,7 @@ func (rpS *RouteService) costForEvent(ev *utils.CGREvent,
err = nil
}
var rplyVals map[string]interface{}
if err := rpS.connMgr.Call(rpS.cgrcfg.RouteSCfg().ResponderSConns, nil, utils.ResponderGetMaxSessionTimeOnAccounts,
if err := rpS.connMgr.Call(rpS.cgrcfg.RouteSCfg().RALsConns, nil, utils.ResponderGetMaxSessionTimeOnAccounts,
&utils.GetMaxSessionTimeOnAccountsArgs{
Tenant: ev.Tenant,
Subject: subj,
@@ -260,7 +260,7 @@ func (rpS *RouteService) costForEvent(ev *utils.CGREvent,
costData[k] = v
}
rplyVals = make(map[string]interface{}) // reset the map
if err := rpS.connMgr.Call(rpS.cgrcfg.RouteSCfg().ResponderSConns, nil, utils.ResponderGetCostOnRatingPlans,
if err := rpS.connMgr.Call(rpS.cgrcfg.RouteSCfg().RALsConns, nil, utils.ResponderGetCostOnRatingPlans,
&utils.GetCostOnRatingPlansArgs{
Tenant: ev.Tenant,
Account: acnt,