diff --git a/apier/v1/apier.go b/apier/v1/apier.go
index fd0c3ce4f..23b1647ad 100644
--- a/apier/v1/apier.go
+++ b/apier/v1/apier.go
@@ -33,7 +33,6 @@ import (
"github.com/cgrates/cgrates/guardian"
"github.com/cgrates/cgrates/scheduler"
"github.com/cgrates/cgrates/utils"
- "github.com/cgrates/rpcclient"
)
// SchedulerGeter used to avoid ciclic dependency
@@ -47,13 +46,10 @@ type ApierV1 struct {
DataManager *engine.DataManager
Config *config.CGRConfig
Responder *engine.Responder
- CDRs rpcclient.ClientConnector // FixMe: populate it from cgr-engine
- SchedulerService SchedulerGeter // Need to have them capitalize so we can export in V2
+ SchedulerService SchedulerGeter // Need to have them capitalize so we can export in V2
HTTPPoster *engine.HTTPPoster
FilterS *engine.FilterS //Used for CDR Exporter
- CacheS rpcclient.ClientConnector
- SchedulerS rpcclient.ClientConnector
- AttributeS rpcclient.ClientConnector
+ ConnMgr *engine.ConnManager
}
// Call implements rpcclient.ClientConnector interface for internal RPC
@@ -220,8 +216,8 @@ func (apiv1 *ApierV1) LoadDestination(attrs AttrLoadDestination, reply *string)
return utils.NewErrMandatoryIeMissing("TPid")
}
dbReader, err := engine.NewTpReader(apiv1.DataManager.DataDB(), apiv1.StorDb,
- attrs.TPid, apiv1.Config.GeneralCfg().DefaultTimezone,
- apiv1.CacheS, apiv1.SchedulerS)
+ attrs.TPid, apiv1.Config.GeneralCfg().DefaultTimezone, apiv1.Config.ApierCfg().CachesConns,
+ apiv1.Config.ApierCfg().SchedulerConns)
if err != nil {
return utils.NewErrServerError(err)
}
@@ -249,7 +245,7 @@ func (apiv1 *ApierV1) LoadRatingPlan(attrs AttrLoadRatingPlan, reply *string) er
}
dbReader, err := engine.NewTpReader(apiv1.DataManager.DataDB(), apiv1.StorDb,
attrs.TPid, apiv1.Config.GeneralCfg().DefaultTimezone,
- apiv1.CacheS, apiv1.SchedulerS)
+ apiv1.Config.ApierCfg().CachesConns, apiv1.Config.ApierCfg().SchedulerConns)
if err != nil {
return utils.NewErrServerError(err)
}
@@ -269,7 +265,7 @@ func (apiv1 *ApierV1) LoadRatingProfile(attrs utils.TPRatingProfile, reply *stri
}
dbReader, err := engine.NewTpReader(apiv1.DataManager.DataDB(), apiv1.StorDb,
attrs.TPid, apiv1.Config.GeneralCfg().DefaultTimezone,
- apiv1.CacheS, apiv1.SchedulerS)
+ apiv1.Config.ApierCfg().CachesConns, apiv1.Config.ApierCfg().SchedulerConns)
if err != nil {
return utils.NewErrServerError(err)
}
@@ -292,7 +288,7 @@ func (apiv1 *ApierV1) LoadSharedGroup(attrs AttrLoadSharedGroup, reply *string)
}
dbReader, err := engine.NewTpReader(apiv1.DataManager.DataDB(), apiv1.StorDb,
attrs.TPid, apiv1.Config.GeneralCfg().DefaultTimezone,
- apiv1.CacheS, apiv1.SchedulerS)
+ apiv1.Config.ApierCfg().CachesConns, apiv1.Config.ApierCfg().SchedulerConns)
if err != nil {
return utils.NewErrServerError(err)
}
@@ -318,7 +314,7 @@ func (apiv1 *ApierV1) LoadTariffPlanFromStorDb(attrs AttrLoadTpFromStorDb, reply
}
dbReader, err := engine.NewTpReader(apiv1.DataManager.DataDB(), apiv1.StorDb,
attrs.TPid, apiv1.Config.GeneralCfg().DefaultTimezone,
- apiv1.CacheS, apiv1.SchedulerS)
+ apiv1.Config.ApierCfg().CachesConns, apiv1.Config.ApierCfg().SchedulerConns)
if err != nil {
return utils.NewErrServerError(err)
}
@@ -348,7 +344,7 @@ func (apiv1 *ApierV1) LoadTariffPlanFromStorDb(attrs AttrLoadTpFromStorDb, reply
if err := dbReader.ReloadCache(caching, true, attrs.ArgDispatcher); err != nil {
return utils.NewErrServerError(err)
}
- if apiv1.SchedulerS != nil {
+ if len(apiv1.Config.ApierCfg().SchedulerConns) != 0 {
utils.Logger.Info("ApierV1.LoadTariffPlanFromStorDb, reloading scheduler.")
if err := dbReader.ReloadScheduler(true); err != nil {
return utils.NewErrServerError(err)
@@ -810,7 +806,7 @@ func (apiv1 *ApierV1) LoadAccountActions(attrs utils.TPAccountActions, reply *st
}
dbReader, err := engine.NewTpReader(apiv1.DataManager.DataDB(), apiv1.StorDb,
attrs.TPid, apiv1.Config.GeneralCfg().DefaultTimezone,
- apiv1.CacheS, apiv1.SchedulerS)
+ apiv1.Config.ApierCfg().CachesConns, apiv1.Config.ApierCfg().SchedulerConns)
if err != nil {
return utils.NewErrServerError(err)
}
@@ -848,7 +844,7 @@ func (apiv1 *ApierV1) LoadTariffPlanFromFolder(attrs utils.AttrLoadTpFromFolder,
loader, err := engine.NewTpReader(apiv1.DataManager.DataDB(),
engine.NewFileCSVStorage(utils.CSV_SEP, attrs.FolderPath, attrs.Recursive),
"", apiv1.Config.GeneralCfg().DefaultTimezone,
- apiv1.CacheS, apiv1.SchedulerS)
+ apiv1.Config.ApierCfg().CachesConns, apiv1.Config.ApierCfg().SchedulerConns)
if err != nil {
return utils.NewErrServerError(err)
}
@@ -881,7 +877,7 @@ func (apiv1 *ApierV1) LoadTariffPlanFromFolder(attrs utils.AttrLoadTpFromFolder,
if err := loader.ReloadCache(caching, true, attrs.ArgDispatcher); err != nil {
return utils.NewErrServerError(err)
}
- if apiv1.SchedulerS != nil {
+ if len(apiv1.Config.ApierCfg().SchedulerConns) != 0 {
utils.Logger.Info("ApierV1.LoadTariffPlanFromFolder, reloading scheduler.")
if err := loader.ReloadScheduler(true); err != nil {
return utils.NewErrServerError(err)
@@ -913,7 +909,7 @@ func (apiv1 *ApierV1) RemoveTPFromFolder(attrs utils.AttrLoadTpFromFolder, reply
// create the TpReader
loader, err := engine.NewTpReader(apiv1.DataManager.DataDB(),
engine.NewFileCSVStorage(utils.CSV_SEP, attrs.FolderPath, attrs.Recursive), "", apiv1.Config.GeneralCfg().DefaultTimezone,
- apiv1.CacheS, apiv1.SchedulerS)
+ apiv1.Config.ApierCfg().CachesConns, apiv1.Config.ApierCfg().SchedulerConns)
if err != nil {
return utils.NewErrServerError(err)
}
@@ -946,7 +942,7 @@ func (apiv1 *ApierV1) RemoveTPFromFolder(attrs utils.AttrLoadTpFromFolder, reply
if err := loader.ReloadCache(caching, true, attrs.ArgDispatcher); err != nil {
return utils.NewErrServerError(err)
}
- if apiv1.SchedulerS != nil {
+ if len(apiv1.Config.ApierCfg().SchedulerConns) != 0 {
utils.Logger.Info("ApierV1.RemoveTPFromFolder, reloading scheduler.")
if err := loader.ReloadScheduler(true); err != nil {
return utils.NewErrServerError(err)
@@ -966,7 +962,7 @@ func (apiv1 *ApierV1) RemoveTPFromStorDB(attrs AttrLoadTpFromStorDb, reply *stri
}
dbReader, err := engine.NewTpReader(apiv1.DataManager.DataDB(), apiv1.StorDb,
attrs.TPid, apiv1.Config.GeneralCfg().DefaultTimezone,
- apiv1.CacheS, apiv1.SchedulerS)
+ apiv1.Config.ApierCfg().CachesConns, apiv1.Config.ApierCfg().SchedulerConns)
if err != nil {
return utils.NewErrServerError(err)
}
@@ -997,7 +993,7 @@ func (apiv1 *ApierV1) RemoveTPFromStorDB(attrs AttrLoadTpFromStorDb, reply *stri
if err := dbReader.ReloadCache(caching, true, attrs.ArgDispatcher); err != nil {
return utils.NewErrServerError(err)
}
- if apiv1.SchedulerS != nil {
+ if len(apiv1.Config.ApierCfg().SchedulerConns) != 0 {
utils.Logger.Info("ApierV1.RemoveTPFromStorDB, reloading scheduler.")
if err := dbReader.ReloadScheduler(true); err != nil {
return utils.NewErrServerError(err)
@@ -1268,23 +1264,27 @@ func (apiv1 *ApierV1) CallCache(cacheOpt string, args utils.ArgsGetCacheItem) (e
case utils.META_NONE:
return
case utils.MetaReload:
- if err = apiv1.CacheS.Call(utils.CacheSv1ReloadCache, utils.AttrReloadCacheWithArgDispatcher{
- AttrReloadCache: composeArgsReload(args)}, &reply); err != nil {
+ if err = apiv1.ConnMgr.Call(apiv1.Config.ApierCfg().CachesConns,
+ utils.CacheSv1ReloadCache, utils.AttrReloadCacheWithArgDispatcher{
+ AttrReloadCache: composeArgsReload(args)}, &reply); err != nil {
return err
}
case utils.MetaLoad:
- if err = apiv1.CacheS.Call(utils.CacheSv1LoadCache, utils.AttrReloadCacheWithArgDispatcher{
- AttrReloadCache: composeArgsReload(args)}, &reply); err != nil {
+ if err = apiv1.ConnMgr.Call(apiv1.Config.ApierCfg().CachesConns,
+ utils.CacheSv1LoadCache, utils.AttrReloadCacheWithArgDispatcher{
+ AttrReloadCache: composeArgsReload(args)}, &reply); err != nil {
return err
}
case utils.MetaRemove:
- if err = apiv1.CacheS.Call(utils.CacheSv1RemoveItem,
+ if err = apiv1.ConnMgr.Call(apiv1.Config.ApierCfg().CachesConns,
+ utils.CacheSv1RemoveItem,
&utils.ArgsGetCacheItemWithArgDispatcher{ArgsGetCacheItem: args}, &reply); err != nil {
return err
}
case utils.MetaClear:
- if err = apiv1.CacheS.Call(utils.CacheSv1FlushCache, utils.AttrReloadCacheWithArgDispatcher{
- AttrReloadCache: composeArgsReload(args)}, &reply); err != nil {
+ if err = apiv1.ConnMgr.Call(apiv1.Config.ApierCfg().CachesConns,
+ utils.CacheSv1FlushCache, utils.AttrReloadCacheWithArgDispatcher{
+ AttrReloadCache: composeArgsReload(args)}, &reply); err != nil {
return err
}
}
@@ -1373,24 +1373,6 @@ func (apiv1 *ApierV1) GetRatingPlanIDs(args utils.TenantArgWithPaginator, attrPr
return nil
}
-// SetAttributeSConnection sets the new connection to the attribute service
-// only used on reload
-func (apiv1 *ApierV1) SetAttributeSConnection(attrS rpcclient.ClientConnector) {
- apiv1.AttributeS = attrS
-}
-
-// SetCacheSConnection sets the new connection to the cache service
-// only used on reload
-func (apiv1 *ApierV1) SetCacheSConnection(chS rpcclient.ClientConnector) {
- apiv1.CacheS = chS
-}
-
-// SetSchedulerSConnection sets the new connection to the scheduler service
-// only used on reload
-func (apiv1 *ApierV1) SetSchedulerSConnection(schS rpcclient.ClientConnector) {
- apiv1.SchedulerS = schS
-}
-
// SetStorDB sets the new connection for StorDB
// only used on reload
func (apiv1 *ApierV1) SetStorDB(storDB engine.StorDB) {
diff --git a/apier/v1/cdre.go b/apier/v1/cdre.go
index 63b7071ba..3df76855e 100644
--- a/apier/v1/cdre.go
+++ b/apier/v1/cdre.go
@@ -148,7 +148,7 @@ func (api *ApierV1) ExportCdrsToFile(attr utils.AttrExpFileCdrs, reply *utils.Ex
filePath, utils.META_NONE, exportID, exportTemplate.Synchronous,
exportTemplate.Attempts, fieldSep,
api.Config.GeneralCfg().HttpSkipTlsVerify, api.HTTPPoster,
- api.AttributeS, api.FilterS)
+ api.Config.ApierCfg().AttributeSConns, api.FilterS)
if err != nil {
return utils.NewErrServerError(err)
}
@@ -288,7 +288,7 @@ func (api *ApierV1) ExportCDRs(arg ArgExportCDRs, reply *RplExportedCDRs) (err e
filePath, utils.META_NONE, exportID,
synchronous, attempts, fieldSep,
api.Config.GeneralCfg().HttpSkipTlsVerify,
- api.HTTPPoster, api.AttributeS, api.FilterS)
+ api.HTTPPoster, api.Config.ApierCfg().AttributeSConns, api.FilterS)
if err != nil {
return utils.NewErrServerError(err)
}
diff --git a/apier/v2/apier.go b/apier/v2/apier.go
index 94e7143c0..055635277 100644
--- a/apier/v2/apier.go
+++ b/apier/v2/apier.go
@@ -57,7 +57,7 @@ func (apiv2 *ApierV2) LoadRatingProfile(attrs AttrLoadRatingProfile, reply *stri
tpRpf := &utils.TPRatingProfile{TPid: attrs.TPid}
dbReader, err := engine.NewTpReader(apiv2.DataManager.DataDB(), apiv2.StorDb,
attrs.TPid, apiv2.Config.GeneralCfg().DefaultTimezone,
- apiv2.CacheS, apiv2.SchedulerS)
+ apiv2.Config.ApierCfg().CachesConns, apiv2.Config.ApierCfg().SchedulerConns)
if err != nil {
return utils.NewErrServerError(err)
}
@@ -80,7 +80,7 @@ func (apiv2 *ApierV2) LoadAccountActions(attrs AttrLoadAccountActions, reply *st
}
dbReader, err := engine.NewTpReader(apiv2.DataManager.DataDB(), apiv2.StorDb,
attrs.TPid, apiv2.Config.GeneralCfg().DefaultTimezone,
- apiv2.CacheS, apiv2.SchedulerS)
+ apiv2.Config.ApierCfg().CachesConns, apiv2.Config.ApierCfg().SchedulerConns)
if err != nil {
return utils.NewErrServerError(err)
}
@@ -113,7 +113,7 @@ func (apiv2 *ApierV2) LoadTariffPlanFromFolder(attrs utils.AttrLoadTpFromFolder,
}
loader, err := engine.NewTpReader(apiv2.DataManager.DataDB(),
engine.NewFileCSVStorage(utils.CSV_SEP, attrs.FolderPath, attrs.Recursive), "", apiv2.Config.GeneralCfg().DefaultTimezone,
- apiv2.CacheS, apiv2.SchedulerS)
+ apiv2.Config.ApierCfg().CachesConns, apiv2.Config.ApierCfg().SchedulerConns)
if err != nil {
return utils.NewErrServerError(err)
}
@@ -144,7 +144,7 @@ func (apiv2 *ApierV2) LoadTariffPlanFromFolder(attrs utils.AttrLoadTpFromFolder,
if err := loader.ReloadCache(caching, true, attrs.ArgDispatcher); err != nil {
return utils.NewErrServerError(err)
}
- if apiv2.SchedulerS != nil {
+ if len(apiv2.Config.ApierCfg().SchedulerConns) != 0 {
utils.Logger.Info("ApierV2.LoadTariffPlanFromFolder, reloading scheduler.")
if err := loader.ReloadScheduler(true); err != nil {
return utils.NewErrServerError(err)
diff --git a/apier/v2/cdre.go b/apier/v2/cdre.go
index f31694604..b61715079 100644
--- a/apier/v2/cdre.go
+++ b/apier/v2/cdre.go
@@ -105,7 +105,7 @@ func (apiv2 *ApierV2) ExportCdrsToFile(attr AttrExportCdrsToFile, reply *utils.E
cdrexp, err := engine.NewCDRExporter(cdrs, exportTemplate, exportFormat,
filePath, utils.META_NONE, exportID, exportTemplate.Synchronous,
exportTemplate.Attempts, fieldSep, apiv2.Config.GeneralCfg().HttpSkipTlsVerify,
- apiv2.HTTPPoster, apiv2.AttributeS, apiv2.FilterS)
+ apiv2.HTTPPoster, apiv2.Config.ApierCfg().AttributeSConns, apiv2.FilterS)
if err != nil {
return utils.NewErrServerError(err)
}
diff --git a/cmd/cgr-engine/cgr-engine.go b/cmd/cgr-engine/cgr-engine.go
index ad7d19494..7b1877c6d 100644
--- a/cmd/cgr-engine/cgr-engine.go
+++ b/cmd/cgr-engine/cgr-engine.go
@@ -498,6 +498,11 @@ func main() {
internalStatSChan := make(chan rpcclient.RpcClientConnection, 1) // needed to avod cyclic dependency
internalResourceSChan := make(chan rpcclient.RpcClientConnection, 1) // needed to avod cyclic dependency
internalSupplierSChan := make(chan rpcclient.RpcClientConnection, 1) // needed to avod cyclic dependency
+ internalSchedulerSChan := make(chan rpcclient.RpcClientConnection, 1) // needed to avod cyclic dependency
+ internalRALsChan := make(chan rpcclient.RpcClientConnection, 1) // needed to avod cyclic dependency
+ internalResponderChan := make(chan rpcclient.RpcClientConnection, 1) // needed to avod cyclic dependency
+ internalAPIerV1Chan := make(chan rpcclient.RpcClientConnection, 1) // needed to avod cyclic dependency
+ internalAPIerV2Chan := make(chan rpcclient.RpcClientConnection, 1) // needed to avod cyclic dependency
// init CacheS
cacheS := initCacheS(internalCacheSChan, server, dmService.GetDM(), exitChan)
@@ -512,8 +517,7 @@ func main() {
srvManager := servmanager.NewServiceManager(cfg, exitChan)
connManager := services.NewConnManagerService(cfg, map[string]chan rpcclient.RpcClientConnection{
//utils.AnalyzerSv1: anz.GetIntenternalChan(),
- //utils.ApierV1: rals.GetAPIv1().GetIntenternalChan(),
- //utils.ApierV2: rals.GetAPIv2().GetIntenternalChan(),
+ utils.ConcatenatedKey(utils.MetaInternal, utils.MetaApier): internalAPIerV1Chan,
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes): internalAttributeSChan,
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches): internalCacheSChan,
//utils.CDRsV1: cdrS.GetIntenternalChan(),
@@ -521,17 +525,17 @@ func main() {
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaChargers): internalChargerSChan,
utils.GuardianSv1: internalGuardianSChan,
//utils.LoaderSv1: ldrs.GetIntenternalChan(),
- utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources): internalResourceSChan,
- //utils.Responder: rals.GetResponder().GetIntenternalChan(),
- //utils.SchedulerSv1: schS.GetIntenternalChan(),
- utils.ConcatenatedKey(utils.MetaInternal, utils.MetaSessionS): internalSessionSChan,
- utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStatS): internalStatSChan,
- //utils.SupplierSv1: supS.GetIntenternalChan(),
+ utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources): internalResourceSChan,
+ utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder): internalResponderChan,
+ utils.ConcatenatedKey(utils.MetaInternal, utils.MetaScheduler): internalSchedulerSChan,
+ utils.ConcatenatedKey(utils.MetaInternal, utils.MetaSessionS): internalSessionSChan,
+ utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStatS): internalStatSChan,
+ utils.ConcatenatedKey(utils.MetaInternal, utils.MetaSuppliers): internalSupplierSChan,
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds): internalThresholdSChan,
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaServiceManager): internalServeManagerChan,
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaConfig): internalConfigChan,
utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCore): internalCoreSv1Chan,
- //utils.RALsV1: rals.GetIntenternalChan(),
+ utils.ConcatenatedKey(utils.MetaInternal, utils.MetaRALs): internalRALsChan,
})
attrS := services.NewAttributeService(cfg, dmService, cacheS, filterSChan, server, internalAttributeSChan)
@@ -543,12 +547,16 @@ func main() {
internalStatSChan, connManager.GetConnMgr())
reS := services.NewResourceService(cfg, dmService, cacheS, filterSChan, server,
internalResourceSChan, connManager.GetConnMgr())
- supS := services.NewSupplierService(cfg, dmService, cacheS, filterSChan, server, internalSupplierSChan, connManager.GetConnMgr())
- schS := services.NewSchedulerService(cfg, dmService, cacheS, filterSChan, server, internalCDRServerChan, dspS.GetIntenternalChan())
+ supS := services.NewSupplierService(cfg, dmService, cacheS, filterSChan, server,
+ internalSupplierSChan, connManager.GetConnMgr())
+
+ schS := services.NewSchedulerService(cfg, dmService, cacheS, filterSChan,
+ server, internalSchedulerSChan, connManager.GetConnMgr())
+
rals := services.NewRalService(cfg, dmService, storDBService, cacheS, filterSChan, server,
- tS.GetIntenternalChan(), stS.GetIntenternalChan(), internalCacheSChan,
- schS.GetIntenternalChan(), attrS.GetIntenternalChan(), dspS.GetIntenternalChan(),
- schS, exitChan)
+ internalRALsChan, internalResponderChan, internalAPIerV1Chan, internalAPIerV2Chan,
+ schS, exitChan, connManager.GetConnMgr())
+
cdrS := services.NewCDRServer(cfg, dmService, storDBService, filterSChan, server, internalCDRServerChan,
chrS.GetIntenternalChan(), rals.GetResponder().GetIntenternalChan(),
attrS.GetIntenternalChan(), tS.GetIntenternalChan(),
diff --git a/cmd/cgr-loader/cgr-loader.go b/cmd/cgr-loader/cgr-loader.go
index e81249167..5d8e096c2 100755
--- a/cmd/cgr-loader/cgr-loader.go
+++ b/cmd/cgr-loader/cgr-loader.go
@@ -24,7 +24,6 @@ import (
"log"
"os"
"strings"
- "time"
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/engine"
@@ -84,12 +83,6 @@ var (
`Separator for csv file (by default "," is used)`)
recursive = cgrLoaderFlags.Bool("recursive", false, "Loads data from folder recursive.")
- fromStorDB = cgrLoaderFlags.Bool("from_stordb", false, "Load the tariff plan from storDb to dataDb")
- toStorDB = cgrLoaderFlags.Bool("to_stordb", false, "Import the tariff plan from files to storDb")
- rpcEncoding = cgrLoaderFlags.String("rpc_encoding", utils.MetaJSON, "RPC encoding used <*gob|*json>")
- cacheSAddress = cgrLoaderFlags.String("caches_address", dfltCfg.LoaderCgrCfg().CachesConns[0].Address,
- "CacheS component to contact for cache reloads, empty to disable automatic cache reloads")
- schedulerAddress = cgrLoaderFlags.String("scheduler_address", dfltCfg.LoaderCgrCfg().SchedulerConns[0].Address, "")
importID = cgrLoaderFlags.String("import_id", "", "Uniquely identify an import/load, postpended to some automatic fields")
timezone = cgrLoaderFlags.String("timezone", "", `Timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>`)
@@ -99,12 +92,10 @@ var (
apiKey = cgrLoaderFlags.String("api_key", "", "Api Key used to comosed ArgDispatcher")
routeID = cgrLoaderFlags.String("route_id", "", "RouteID used to comosed ArgDispatcher")
- err error
- dm *engine.DataManager
- storDb engine.LoadStorage
- cacheS rpcclient.ClientConnector
- schedulerS rpcclient.ClientConnector
- loader engine.LoadReader
+ err error
+ dm *engine.DataManager
+ storDb engine.LoadStorage
+ loader engine.LoadReader
)
func main() {
@@ -198,29 +189,30 @@ func main() {
ldrCfg.LoaderCgrCfg().FieldSeparator = rune((*fieldSep)[0])
}
- if *cacheSAddress != dfltCfg.LoaderCgrCfg().CachesConns[0].Address {
- ldrCfg.LoaderCgrCfg().CachesConns = make([]*config.RemoteHost, 0)
- if *cacheSAddress != "" {
- ldrCfg.LoaderCgrCfg().CachesConns = append(ldrCfg.LoaderCgrCfg().CachesConns,
- &config.RemoteHost{
- Address: *cacheSAddress,
- Transport: *rpcEncoding,
- })
- }
- }
-
- if *schedulerAddress != dfltCfg.LoaderCgrCfg().SchedulerConns[0].Address {
- ldrCfg.LoaderCgrCfg().SchedulerConns = make([]*config.RemoteHost, 0)
- if *schedulerAddress != "" {
- ldrCfg.LoaderCgrCfg().SchedulerConns = append(ldrCfg.LoaderCgrCfg().SchedulerConns,
- &config.RemoteHost{Address: *schedulerAddress})
- }
- }
-
- if len(ldrCfg.LoaderCgrCfg().CachesConns) != 0 &&
- *rpcEncoding != dfltCfg.LoaderCgrCfg().CachesConns[0].Transport {
- ldrCfg.LoaderCgrCfg().CachesConns[0].Transport = *rpcEncoding
- }
+ // DON"T FORGET TO UPDATE CGR_LOADER WITH CACHEID AND SCHEDID
+ //if *cacheSAddress != dfltCfg.LoaderCgrCfg().CachesConns[0].Address {
+ // ldrCfg.LoaderCgrCfg().CachesConns = make([]*config.RemoteHost, 0)
+ // if *cacheSAddress != "" {
+ // ldrCfg.LoaderCgrCfg().CachesConns = append(ldrCfg.LoaderCgrCfg().CachesConns,
+ // &config.RemoteHost{
+ // Address: *cacheSAddress,
+ // Transport: *rpcEncoding,
+ // })
+ // }
+ //}
+ //
+ //if *schedulerAddress != dfltCfg.LoaderCgrCfg().SchedulerConns[0].Address {
+ // ldrCfg.LoaderCgrCfg().SchedulerConns = make([]*config.RemoteHost, 0)
+ // if *schedulerAddress != "" {
+ // ldrCfg.LoaderCgrCfg().SchedulerConns = append(ldrCfg.LoaderCgrCfg().SchedulerConns,
+ // &config.RemoteHost{Address: *schedulerAddress})
+ // }
+ //}
+ //
+ //if len(ldrCfg.LoaderCgrCfg().CachesConns) != 0 &&
+ // *rpcEncoding != dfltCfg.LoaderCgrCfg().CachesConns[0].Transport {
+ // ldrCfg.LoaderCgrCfg().CachesConns[0].Transport = *rpcEncoding
+ //}
if *importID == "" {
*importID = utils.UUIDSha1Prefix()
@@ -320,36 +312,8 @@ func main() {
loader = engine.NewFileCSVStorage(ldrCfg.LoaderCgrCfg().FieldSeparator, *dataPath, *recursive)
}
- if len(ldrCfg.LoaderCgrCfg().CachesConns) != 0 { // Init connection to CacheS so we can reload it's data
- if cacheS, err = rpcclient.NewRPCClient(utils.TCP,
- ldrCfg.LoaderCgrCfg().CachesConns[0].Address,
- ldrCfg.LoaderCgrCfg().CachesConns[0].TLS, ldrCfg.TlsCfg().ClientKey,
- ldrCfg.TlsCfg().ClientCerificate, ldrCfg.TlsCfg().CaCertificate, 3, 3,
- time.Duration(1*time.Second), time.Duration(5*time.Minute),
- ldrCfg.LoaderCgrCfg().CachesConns[0].Transport,
- nil, false); err != nil {
- log.Fatalf("Could not connect to CacheS: %s", err.Error())
- return
- }
- } else {
- log.Print("WARNING: automatic cache reloading is disabled!")
- }
-
- if len(ldrCfg.LoaderCgrCfg().SchedulerConns) != 0 { // Init connection to Scheduler so we can reload it's data
- if schedulerS, err = rpcclient.NewRPCClient(utils.TCP,
- ldrCfg.LoaderCgrCfg().SchedulerConns[0].Address,
- ldrCfg.LoaderCgrCfg().SchedulerConns[0].TLS, ldrCfg.TlsCfg().ClientKey,
- ldrCfg.TlsCfg().ClientCerificate, ldrCfg.TlsCfg().CaCertificate, 3, 3,
- time.Duration(1*time.Second), time.Duration(5*time.Minute),
- ldrCfg.LoaderCgrCfg().SchedulerConns[0].Transport,
- nil, false); err != nil {
- log.Fatalf("Could not connect to Scheduler: %s", err.Error())
- return
- }
- }
-
tpReader, err := engine.NewTpReader(dm.DataDB(), loader, ldrCfg.LoaderCgrCfg().TpID,
- ldrCfg.GeneralCfg().DefaultTimezone, cacheS, schedulerS)
+ ldrCfg.GeneralCfg().DefaultTimezone, ldrCfg.LoaderCgrCfg().CachesConns, ldrCfg.LoaderCgrCfg().SchedulerConns)
if err != nil {
log.Fatal(err)
}
@@ -377,7 +341,7 @@ func main() {
}); err != nil {
log.Fatal("Could not reload cache: ", err)
}
- if schedulerS != nil {
+ if len(ldrCfg.LoaderCgrCfg().SchedulerConns) != 0 {
if err := tpReader.ReloadScheduler(*verbose); err != nil {
log.Fatal("Could not reload scheduler: ", err)
}
diff --git a/config/apiercfg.go b/config/apiercfg.go
index 6c800c6d8..4b1375e21 100644
--- a/config/apiercfg.go
+++ b/config/apiercfg.go
@@ -18,11 +18,13 @@ along with this program. If not, see
package config
+import "github.com/cgrates/cgrates/utils"
+
// ApierCfg is the configuration of Apier service
type ApierCfg struct {
- CachesConns []*RemoteHost // connections towards Cache
- SchedulerConns []*RemoteHost // connections towards Scheduler
- AttributeSConns []*RemoteHost // connections towards AttributeS
+ CachesConns []string // connections towards Cache
+ SchedulerConns []string // connections towards Scheduler
+ AttributeSConns []string // connections towards AttributeS
}
func (aCfg *ApierCfg) loadFromJsonCfg(jsnCfg *ApierJsonCfg) (err error) {
@@ -30,24 +32,36 @@ func (aCfg *ApierCfg) loadFromJsonCfg(jsnCfg *ApierJsonCfg) (err error) {
return
}
if jsnCfg.Caches_conns != nil {
- aCfg.CachesConns = make([]*RemoteHost, len(*jsnCfg.Caches_conns))
- for idx, jsnHaCfg := range *jsnCfg.Caches_conns {
- aCfg.CachesConns[idx] = NewDfltRemoteHost()
- aCfg.CachesConns[idx].loadFromJsonCfg(jsnHaCfg)
+ aCfg.CachesConns = make([]string, len(*jsnCfg.Caches_conns))
+ for idx, conn := range *jsnCfg.Caches_conns {
+ // if we have the connection internal we change the name so we can have internal rpc for each subsystem
+ if conn == utils.MetaInternal {
+ aCfg.CachesConns[idx] = utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches)
+ } else {
+ aCfg.CachesConns[idx] = conn
+ }
}
}
if jsnCfg.Scheduler_conns != nil {
- aCfg.SchedulerConns = make([]*RemoteHost, len(*jsnCfg.Scheduler_conns))
- for idx, jsnHaCfg := range *jsnCfg.Scheduler_conns {
- aCfg.SchedulerConns[idx] = NewDfltRemoteHost()
- aCfg.SchedulerConns[idx].loadFromJsonCfg(jsnHaCfg)
+ aCfg.SchedulerConns = make([]string, len(*jsnCfg.Scheduler_conns))
+ for idx, conn := range *jsnCfg.Scheduler_conns {
+ // if we have the connection internal we change the name so we can have internal rpc for each subsystem
+ if conn == utils.MetaInternal {
+ aCfg.SchedulerConns[idx] = utils.ConcatenatedKey(utils.MetaInternal, utils.MetaScheduler)
+ } else {
+ aCfg.SchedulerConns[idx] = conn
+ }
}
}
if jsnCfg.Attributes_conns != nil {
- aCfg.AttributeSConns = make([]*RemoteHost, len(*jsnCfg.Attributes_conns))
- for idx, jsnHaCfg := range *jsnCfg.Attributes_conns {
- aCfg.AttributeSConns[idx] = NewDfltRemoteHost()
- aCfg.AttributeSConns[idx].loadFromJsonCfg(jsnHaCfg)
+ aCfg.AttributeSConns = make([]string, len(*jsnCfg.Attributes_conns))
+ for idx, conn := range *jsnCfg.Attributes_conns {
+ // if we have the connection internal we change the name so we can have internal rpc for each subsystem
+ if conn == utils.MetaInternal {
+ aCfg.AttributeSConns[idx] = utils.ConcatenatedKey(utils.MetaInternal, utils.MetaAttributes)
+ } else {
+ aCfg.AttributeSConns[idx] = conn
+ }
}
}
diff --git a/config/config.go b/config/config.go
index 519875be7..07c554548 100755
--- a/config/config.go
+++ b/config/config.go
@@ -370,6 +370,7 @@ func (cfg *CGRConfig) loadRPCConns(jsnCfg *CgrJsonCfg) (err error) {
},
}
for key, val := range jsnRpcConns {
+ cfg.rpcConns[key] = new(RPCConn)
if err = cfg.rpcConns[key].loadFromJsonCfg(val); err != nil {
return
}
diff --git a/config/config_defaults.go b/config/config_defaults.go
index daeea6cd1..847fee759 100755
--- a/config/config_defaults.go
+++ b/config/config_defaults.go
@@ -808,12 +808,8 @@ const CGRATES_CFG_JSON = `
"data_path": "./", // path towards tariff plan files
"disable_reverse": false, // disable reverse computing
"field_separator": ",", // separator used in case of csv files
- "caches_conns":[ // connections to CacheS for reloads
- {"address": "127.0.0.1:2012", "transport": "*json"}
- ],
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "127.0.0.1:2012", "transport": "*json"}
- ],
+ "caches_conns":["*localhost"],
+ "scheduler_conns": ["*localhost"],
},
@@ -850,9 +846,7 @@ const CGRATES_CFG_JSON = `
"apier": {
- "caches_conns":[ // connections to CacheS for reloads
- {"address": "*internal"},
- ],
+ "caches_conns":["*internal"],
"scheduler_conns": [], // connections to SchedulerS for reloads
"attributes_conns": [], // connections to AttributeS for CDRExporter
},
diff --git a/config/config_it_test.go b/config/config_it_test.go
index d15acddfe..ebbf6fbd2 100644
--- a/config/config_it_test.go
+++ b/config/config_it_test.go
@@ -254,14 +254,9 @@ func TestCGRConfigReloadSchedulerS(t *testing.T) {
t.Errorf("Expected OK received: %s", reply)
}
expAttr := &SchedulerCfg{
- Enabled: true,
- CDRsConns: []*RemoteHost{
- &RemoteHost{
- Address: "127.0.0.1:2012",
- Transport: utils.MetaJSON,
- },
- },
- Filters: []string{},
+ Enabled: true,
+ CDRsConns: []string{utils.MetaLocalHost},
+ Filters: []string{},
}
if !reflect.DeepEqual(expAttr, cfg.SchedulerCfg()) {
t.Errorf("Expected %s , received: %s ", utils.ToJSON(expAttr), utils.ToJSON(cfg.SchedulerCfg()))
@@ -330,19 +325,9 @@ func TestCGRConfigReloadRALs(t *testing.T) {
RemoveExpired: true,
MaxComputedUsage: maxComp,
BalanceRatingSubject: blMap,
- ThresholdSConns: []*RemoteHost{
- &RemoteHost{
- Address: "127.0.0.1:2012",
- Transport: utils.MetaJSON,
- },
- },
- StatSConns: []*RemoteHost{
- &RemoteHost{
- Address: "127.0.0.1:2012",
- Transport: utils.MetaJSON,
- },
- },
- MaxIncrements: 1000000,
+ ThresholdSConns: []string{utils.MetaLocalHost},
+ StatSConns: []string{utils.MetaLocalHost},
+ MaxIncrements: 1000000,
}
if !reflect.DeepEqual(expAttr, cfg.RalsCfg()) {
t.Errorf("Expected %s , received: %s ", utils.ToJSON(expAttr), utils.ToJSON(cfg.RalsCfg()))
diff --git a/config/config_json_test.go b/config/config_json_test.go
index f2e3ff999..90642d483 100755
--- a/config/config_json_test.go
+++ b/config/config_json_test.go
@@ -321,8 +321,8 @@ func TestDfStorDBJsonCfg(t *testing.T) {
func TestDfRalsJsonCfg(t *testing.T) {
eCfg := &RalsJsonCfg{
Enabled: utils.BoolPointer(false),
- Thresholds_conns: &[]*RemoteHostJson{},
- Stats_conns: &[]*RemoteHostJson{},
+ Thresholds_conns: &[]string{},
+ Stats_conns: &[]string{},
Rp_subject_prefix_matching: utils.BoolPointer(false),
Remove_expired: utils.BoolPointer(true),
Max_computed_usage: &map[string]string{
@@ -350,7 +350,7 @@ func TestDfRalsJsonCfg(t *testing.T) {
func TestDfSchedulerJsonCfg(t *testing.T) {
eCfg := &SchedulerJsonCfg{
Enabled: utils.BoolPointer(false),
- Cdrs_conns: &[]*RemoteHostJson{},
+ Cdrs_conns: &[]string{},
Filters: &[]string{},
}
if cfg, err := dfCgrJsonCfg.SchedulerJsonCfg(); err != nil {
@@ -1573,18 +1573,8 @@ func TestDfLoaderCfg(t *testing.T) {
Data_path: utils.StringPointer("./"),
Disable_reverse: utils.BoolPointer(false),
Field_separator: utils.StringPointer(","),
- Caches_conns: &[]*RemoteHostJson{
- {
- Address: utils.StringPointer("127.0.0.1:2012"),
- Transport: utils.StringPointer(utils.MetaJSON),
- },
- },
- Scheduler_conns: &[]*RemoteHostJson{
- {
- Address: utils.StringPointer("127.0.0.1:2012"),
- Transport: utils.StringPointer(utils.MetaJSON),
- },
- },
+ Caches_conns: &[]string{utils.MetaLocalHost},
+ Scheduler_conns: &[]string{utils.MetaLocalHost},
}
if cfg, err := dfCgrJsonCfg.LoaderCfgJson(); err != nil {
t.Error(err)
@@ -1647,13 +1637,9 @@ func TestDfAnalyzerCfg(t *testing.T) {
func TestDfApierCfg(t *testing.T) {
eCfg := &ApierJsonCfg{
- Caches_conns: &[]*RemoteHostJson{
- {
- Address: utils.StringPointer(utils.MetaInternal),
- },
- },
- Scheduler_conns: &[]*RemoteHostJson{},
- Attributes_conns: &[]*RemoteHostJson{},
+ Caches_conns: &[]string{utils.MetaInternal},
+ Scheduler_conns: &[]string{},
+ Attributes_conns: &[]string{},
}
if cfg, err := dfCgrJsonCfg.ApierCfgJson(); err != nil {
t.Error(err)
diff --git a/config/config_test.go b/config/config_test.go
index 482059311..87558162d 100755
--- a/config/config_test.go
+++ b/config/config_test.go
@@ -464,7 +464,7 @@ func TestCgrCfgJSONDefaultsStorDB(t *testing.T) {
}
func TestCgrCfgJSONDefaultsRALs(t *testing.T) {
- eHaPoolcfg := []*RemoteHost{}
+ eHaPoolcfg := []string{}
if cgrCfg.RalsCfg().Enabled != false {
t.Errorf("Expecting: false , received: %+v", cgrCfg.RalsCfg().Enabled)
@@ -503,7 +503,7 @@ func TestCgrCfgJSONDefaultsRALs(t *testing.T) {
func TestCgrCfgJSONDefaultsScheduler(t *testing.T) {
eSchedulerCfg := &SchedulerCfg{
Enabled: false,
- CDRsConns: []*RemoteHost{},
+ CDRsConns: []string{},
Filters: []string{},
}
if !reflect.DeepEqual(cgrCfg.schedulerCfg, eSchedulerCfg) {
@@ -1553,18 +1553,8 @@ func TestCgrLoaderCfgDefault(t *testing.T) {
DataPath: "./",
DisableReverse: false,
FieldSeparator: rune(','),
- CachesConns: []*RemoteHost{
- {
- Address: "127.0.0.1:2012",
- Transport: utils.MetaJSON,
- },
- },
- SchedulerConns: []*RemoteHost{
- {
- Address: "127.0.0.1:2012",
- Transport: utils.MetaJSON,
- },
- },
+ CachesConns: []string{utils.MetaLocalHost},
+ SchedulerConns: []string{utils.MetaLocalHost},
}
if !reflect.DeepEqual(cgrCfg.LoaderCgrCfg(), eLdrCfg) {
t.Errorf("received: %+v, expecting: %+v", utils.ToJSON(cgrCfg.LoaderCgrCfg()), utils.ToJSON(eLdrCfg))
@@ -1774,13 +1764,9 @@ func TestNewCGRConfigFromPathNotFound(t *testing.T) {
func TestCgrCfgJSONDefaultApierCfg(t *testing.T) {
aCfg := &ApierCfg{
- CachesConns: []*RemoteHost{
- {
- Address: utils.MetaInternal,
- },
- },
- SchedulerConns: []*RemoteHost{},
- AttributeSConns: []*RemoteHost{},
+ CachesConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches)},
+ SchedulerConns: []string{},
+ AttributeSConns: []string{},
}
if !reflect.DeepEqual(cgrCfg.apier, aCfg) {
t.Errorf("received: %+v, expecting: %+v", cgrCfg.apier, aCfg)
@@ -1944,31 +1930,24 @@ func TestCheckConfigSanity(t *testing.T) {
// Rater checks
cfg, _ := NewDefaultCGRConfig()
cfg.ralsCfg = &RalsCfg{
- Enabled: true,
- StatSConns: []*RemoteHost{
- &RemoteHost{
- Address: utils.MetaInternal,
- },
- },
+ Enabled: true,
+ StatSConns: []string{utils.MetaInternal},
}
- expected := " not enabled but requested by component."
+ expected := " not enabled but requested by component."
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.statsCfg.Enabled = true
- cfg.ralsCfg.ThresholdSConns = []*RemoteHost{
- &RemoteHost{
- Address: utils.MetaInternal,
- },
- }
+ cfg.ralsCfg.ThresholdSConns = []string{utils.MetaInternal}
+
expected = " not enabled but requested by component."
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.ralsCfg = &RalsCfg{
Enabled: false,
- StatSConns: []*RemoteHost{},
- ThresholdSConns: []*RemoteHost{},
+ StatSConns: []string{},
+ ThresholdSConns: []string{},
}
// CDRServer checks
cfg.thresholdSCfg.Enabled = true
diff --git a/config/configsanity.go b/config/configsanity.go
index 21269c347..5ec7aaf3a 100644
--- a/config/configsanity.go
+++ b/config/configsanity.go
@@ -28,21 +28,21 @@ import (
func (cfg *CGRConfig) checkConfigSanity() error {
// Rater checks
- if cfg.ralsCfg.Enabled && !cfg.dispatcherSCfg.Enabled {
- if !cfg.statsCfg.Enabled {
- for _, connCfg := range cfg.ralsCfg.StatSConns {
- if connCfg.Address == utils.MetaInternal {
- return fmt.Errorf("<%s> not enabled but requested by <%s> component.",
- utils.StatS, utils.RALService)
- }
+ if cfg.ralsCfg.Enabled {
+ for _, connID := range cfg.ralsCfg.StatSConns {
+ if strings.HasPrefix(connID, utils.MetaInternal) && !cfg.statsCfg.Enabled {
+ return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.StatService, utils.RALService)
+ }
+ if _, has := cfg.rpcConns[connID]; !has && !strings.HasPrefix(connID, utils.MetaInternal) {
+ return fmt.Errorf("<%s> Connection with id: <%s> not defined", utils.RALService, connID)
}
}
- if !cfg.thresholdSCfg.Enabled {
- for _, connCfg := range cfg.ralsCfg.ThresholdSConns {
- if connCfg.Address == utils.MetaInternal {
- return fmt.Errorf("<%s> not enabled but requested by <%s> component.",
- utils.ThresholdS, utils.RALService)
- }
+ for _, connID := range cfg.ralsCfg.ThresholdSConns {
+ if strings.HasPrefix(connID, utils.MetaInternal) && !cfg.thresholdSCfg.Enabled {
+ return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.ThresholdS, utils.RALService)
+ }
+ if _, has := cfg.rpcConns[connID]; !has && !strings.HasPrefix(connID, utils.MetaInternal) {
+ return fmt.Errorf("<%s> Connection with id: <%s> not defined", utils.RALService, connID)
}
}
}
@@ -376,10 +376,13 @@ func (cfg *CGRConfig) checkConfigSanity() error {
}
}
// Scheduler check connection with CDR Server
- if !cfg.cdrsCfg.Enabled && !cfg.dispatcherSCfg.Enabled {
- for _, connCfg := range cfg.schedulerCfg.CDRsConns {
- if connCfg.Address == utils.MetaInternal {
- return fmt.Errorf("%s Server not enabled but requested by %s", utils.CDR, utils.SchedulerS)
+ if cfg.schedulerCfg.Enabled {
+ for _, connID := range cfg.schedulerCfg.CDRsConns {
+ if strings.HasPrefix(connID, utils.MetaInternal) && !cfg.cdrsCfg.Enabled {
+ return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.CDRs, utils.SchedulerS)
+ }
+ if _, has := cfg.rpcConns[connID]; !has && !strings.HasPrefix(connID, utils.MetaInternal) {
+ return fmt.Errorf("<%s> Connection with id: <%s> not defined", utils.SchedulerS, connID)
}
}
}
@@ -452,5 +455,22 @@ func (cfg *CGRConfig) checkConfigSanity() error {
return fmt.Errorf("Replicate connections required by: <%s>", item)
}
}
+ // APIer sanity checks
+ for _, connID := range cfg.apier.AttributeSConns {
+ if strings.HasPrefix(connID, utils.MetaInternal) && !cfg.attributeSCfg.Enabled {
+ return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.AttributeS, utils.ApierV1)
+ }
+ if _, has := cfg.rpcConns[connID]; !has && !strings.HasPrefix(connID, utils.MetaInternal) {
+ return fmt.Errorf("<%s> Connection with id: <%s> not defined", utils.ApierV1, connID)
+ }
+ }
+ for _, connID := range cfg.apier.SchedulerConns {
+ if strings.HasPrefix(connID, utils.MetaInternal) && !cfg.schedulerCfg.Enabled {
+ return fmt.Errorf("<%s> not enabled but requested by <%s> component.", utils.SchedulerS, utils.ApierV1)
+ }
+ if _, has := cfg.rpcConns[connID]; !has && !strings.HasPrefix(connID, utils.MetaInternal) {
+ return fmt.Errorf("<%s> Connection with id: <%s> not defined", utils.ApierV1, connID)
+ }
+ }
return nil
}
diff --git a/config/configsanity_test.go b/config/configsanity_test.go
index 0f23d4ed2..1d4fb0623 100644
--- a/config/configsanity_test.go
+++ b/config/configsanity_test.go
@@ -27,24 +27,16 @@ func TestConfigSanityRater(t *testing.T) {
cfg, _ := NewDefaultCGRConfig()
cfg.ralsCfg = &RalsCfg{
- Enabled: true,
- StatSConns: []*RemoteHost{
- &RemoteHost{
- Address: utils.MetaInternal,
- },
- },
+ Enabled: true,
+ StatSConns: []string{utils.MetaInternal},
}
- expected := " not enabled but requested by component."
+ expected := " not enabled but requested by component."
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
cfg.statsCfg.Enabled = true
- cfg.ralsCfg.ThresholdSConns = []*RemoteHost{
- &RemoteHost{
- Address: utils.MetaInternal,
- },
- }
+ cfg.ralsCfg.ThresholdSConns = []string{utils.MetaInternal}
expected = " not enabled but requested by component."
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
@@ -578,14 +570,10 @@ func TestConfigSanitySupplierS(t *testing.T) {
func TestConfigSanityScheduler(t *testing.T) {
cfg, _ = NewDefaultCGRConfig()
cfg.schedulerCfg = &SchedulerCfg{
- Enabled: true,
- CDRsConns: []*RemoteHost{
- &RemoteHost{
- Address: utils.MetaInternal,
- },
- },
+ Enabled: true,
+ CDRsConns: []string{utils.MetaInternal},
}
- expected := "CDR Server not enabled but requested by SchedulerS"
+ expected := " not enabled but requested by component."
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
t.Errorf("Expecting: %+q received: %+q", expected, err)
}
diff --git a/config/libconfig_json.go b/config/libconfig_json.go
index c3adb8bfa..3eebbcdb0 100755
--- a/config/libconfig_json.go
+++ b/config/libconfig_json.go
@@ -110,8 +110,8 @@ type FilterSJsonCfg struct {
// Rater config section
type RalsJsonCfg struct {
Enabled *bool
- Thresholds_conns *[]*RemoteHostJson
- Stats_conns *[]*RemoteHostJson
+ Thresholds_conns *[]string
+ Stats_conns *[]string
Rp_subject_prefix_matching *bool
Remove_expired *bool
Max_computed_usage *map[string]string
@@ -122,7 +122,7 @@ type RalsJsonCfg struct {
// Scheduler config section
type SchedulerJsonCfg struct {
Enabled *bool
- Cdrs_conns *[]*RemoteHostJson
+ Cdrs_conns *[]string
Filters *[]string
}
@@ -523,8 +523,8 @@ type LoaderCfgJson struct {
Data_path *string
Disable_reverse *bool
Field_separator *string
- Caches_conns *[]*RemoteHostJson
- Scheduler_conns *[]*RemoteHostJson
+ Caches_conns *[]string
+ Scheduler_conns *[]string
}
type MigratorCfgJson struct {
@@ -574,7 +574,7 @@ type AnalyzerSJsonCfg struct {
}
type ApierJsonCfg struct {
- Caches_conns *[]*RemoteHostJson
- Scheduler_conns *[]*RemoteHostJson
- Attributes_conns *[]*RemoteHostJson
+ Caches_conns *[]string
+ Scheduler_conns *[]string
+ Attributes_conns *[]string
}
diff --git a/config/loadercgrcfg.go b/config/loadercgrcfg.go
index beb0f0525..168c2709c 100644
--- a/config/loadercgrcfg.go
+++ b/config/loadercgrcfg.go
@@ -18,13 +18,15 @@ along with this program. If not, see
package config
+import "github.com/cgrates/cgrates/utils"
+
type LoaderCgrCfg struct {
TpID string
DataPath string
DisableReverse bool
FieldSeparator rune // The separator to use when reading csvs
- CachesConns []*RemoteHost
- SchedulerConns []*RemoteHost
+ CachesConns []string
+ SchedulerConns []string
}
func (ld *LoaderCgrCfg) loadFromJsonCfg(jsnCfg *LoaderCfgJson) (err error) {
@@ -45,17 +47,25 @@ func (ld *LoaderCgrCfg) loadFromJsonCfg(jsnCfg *LoaderCfgJson) (err error) {
ld.FieldSeparator = rune(sepStr[0])
}
if jsnCfg.Caches_conns != nil {
- ld.CachesConns = make([]*RemoteHost, len(*jsnCfg.Caches_conns))
- for idx, jsnHaCfg := range *jsnCfg.Caches_conns {
- ld.CachesConns[idx] = NewDfltRemoteHost()
- ld.CachesConns[idx].loadFromJsonCfg(jsnHaCfg)
+ ld.CachesConns = make([]string, len(*jsnCfg.Caches_conns))
+ for idx, conn := range *jsnCfg.Caches_conns {
+ // if we have the connection internal we change the name so we can have internal rpc for each subsystem
+ if conn == utils.MetaInternal {
+ ld.CachesConns[idx] = utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCaches)
+ } else {
+ ld.CachesConns[idx] = conn
+ }
}
}
if jsnCfg.Scheduler_conns != nil {
- ld.SchedulerConns = make([]*RemoteHost, len(*jsnCfg.Scheduler_conns))
- for idx, jsnScheHaCfg := range *jsnCfg.Scheduler_conns {
- ld.SchedulerConns[idx] = NewDfltRemoteHost()
- ld.SchedulerConns[idx].loadFromJsonCfg(jsnScheHaCfg)
+ ld.SchedulerConns = make([]string, len(*jsnCfg.Caches_conns))
+ for idx, conn := range *jsnCfg.Caches_conns {
+ // if we have the connection internal we change the name so we can have internal rpc for each subsystem
+ if conn == utils.MetaInternal {
+ ld.SchedulerConns[idx] = utils.ConcatenatedKey(utils.MetaInternal, utils.MetaScheduler)
+ } else {
+ ld.SchedulerConns[idx] = conn
+ }
}
}
return nil
diff --git a/config/loadercgrcfg_test.go b/config/loadercgrcfg_test.go
index 0c93fa07b..2254aca45 100644
--- a/config/loadercgrcfg_test.go
+++ b/config/loadercgrcfg_test.go
@@ -42,18 +42,14 @@ func TestLoaderCgrCfgloadFromJsonCfg(t *testing.T) {
"data_path": "", // path towards tariff plan files
"disable_reverse": false, // disable reverse computing
"field_separator": ";", // separator used in case of csv files
- "caches_conns":[ // addresses towards cacheS components for reloads
- {"address": "127.0.0.1:2012", "transport": "*json"}
- ],
- "scheduler_conns": [
- {"address": "127.0.0.1:2012"}
- ],
+ "caches_conns":["*localhost"],
+ "scheduler_conns": ["*localhost"],
},
}`
expected = LoaderCgrCfg{
FieldSeparator: rune(';'),
- CachesConns: []*RemoteHost{{Address: "127.0.0.1:2012", Transport: "*json"}},
- SchedulerConns: []*RemoteHost{{Address: "127.0.0.1:2012"}},
+ CachesConns: []string{utils.MetaLocalHost},
+ SchedulerConns: []string{utils.MetaLocalHost},
}
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
t.Error(err)
diff --git a/config/ralscfg.go b/config/ralscfg.go
index fb39920b5..cfca36bbb 100644
--- a/config/ralscfg.go
+++ b/config/ralscfg.go
@@ -26,9 +26,9 @@ import (
// Rater config section
type RalsCfg struct {
- Enabled bool // start standalone server (no balancer)
- ThresholdSConns []*RemoteHost // address where to reach ThresholdS config
- StatSConns []*RemoteHost
+ Enabled bool // start standalone server (no balancer)
+ ThresholdSConns []string // address where to reach ThresholdS config
+ StatSConns []string
RpSubjectPrefixMatching bool // enables prefix matching for the rating profile subject
RemoveExpired bool
MaxComputedUsage map[string]time.Duration
@@ -45,17 +45,25 @@ func (ralsCfg *RalsCfg) loadFromJsonCfg(jsnRALsCfg *RalsJsonCfg) (err error) {
ralsCfg.Enabled = *jsnRALsCfg.Enabled
}
if jsnRALsCfg.Thresholds_conns != nil {
- ralsCfg.ThresholdSConns = make([]*RemoteHost, len(*jsnRALsCfg.Thresholds_conns))
- for idx, jsnHaCfg := range *jsnRALsCfg.Thresholds_conns {
- ralsCfg.ThresholdSConns[idx] = NewDfltRemoteHost()
- ralsCfg.ThresholdSConns[idx].loadFromJsonCfg(jsnHaCfg)
+ ralsCfg.ThresholdSConns = make([]string, len(*jsnRALsCfg.Thresholds_conns))
+ for idx, conn := range *jsnRALsCfg.Thresholds_conns {
+ // if we have the connection internal we change the name so we can have internal rpc for each subsystem
+ if conn == utils.MetaInternal {
+ ralsCfg.ThresholdSConns[idx] = utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds)
+ } else {
+ ralsCfg.ThresholdSConns[idx] = conn
+ }
}
}
if jsnRALsCfg.Stats_conns != nil {
- ralsCfg.StatSConns = make([]*RemoteHost, len(*jsnRALsCfg.Stats_conns))
- for idx, jsnHaCfg := range *jsnRALsCfg.Stats_conns {
- ralsCfg.StatSConns[idx] = NewDfltRemoteHost()
- ralsCfg.StatSConns[idx].loadFromJsonCfg(jsnHaCfg)
+ ralsCfg.StatSConns = make([]string, len(*jsnRALsCfg.Stats_conns))
+ for idx, conn := range *jsnRALsCfg.Stats_conns {
+ // if we have the connection internal we change the name so we can have internal rpc for each subsystem
+ if conn == utils.MetaInternal {
+ ralsCfg.StatSConns[idx] = utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStatS)
+ } else {
+ ralsCfg.StatSConns[idx] = conn
+ }
}
}
if jsnRALsCfg.Rp_subject_prefix_matching != nil {
diff --git a/config/ralscfg_test.go b/config/ralscfg_test.go
index ba808a0b2..6fb9e4541 100644
--- a/config/ralscfg_test.go
+++ b/config/ralscfg_test.go
@@ -55,8 +55,8 @@ func TestRalsCfgFromJsonCfg(t *testing.T) {
ralscfg.MaxComputedUsage = make(map[string]time.Duration)
expected = RalsCfg{
Enabled: false,
- ThresholdSConns: []*RemoteHost{},
- StatSConns: []*RemoteHost{},
+ ThresholdSConns: []string{},
+ StatSConns: []string{},
RpSubjectPrefixMatching: false,
MaxComputedUsage: map[string]time.Duration{
utils.ANY: time.Duration(189 * time.Hour),
diff --git a/config/schedulercfg.go b/config/schedulercfg.go
index 6c0fb3994..888c86669 100755
--- a/config/schedulercfg.go
+++ b/config/schedulercfg.go
@@ -18,9 +18,11 @@ along with this program. If not, see
package config
+import "github.com/cgrates/cgrates/utils"
+
type SchedulerCfg struct {
Enabled bool
- CDRsConns []*RemoteHost
+ CDRsConns []string
Filters []string
}
@@ -32,10 +34,14 @@ func (schdcfg *SchedulerCfg) loadFromJsonCfg(jsnCfg *SchedulerJsonCfg) error {
schdcfg.Enabled = *jsnCfg.Enabled
}
if jsnCfg.Cdrs_conns != nil {
- schdcfg.CDRsConns = make([]*RemoteHost, len(*jsnCfg.Cdrs_conns))
- for idx, jsnHaCfg := range *jsnCfg.Cdrs_conns {
- schdcfg.CDRsConns[idx] = NewDfltRemoteHost()
- schdcfg.CDRsConns[idx].loadFromJsonCfg(jsnHaCfg)
+ schdcfg.CDRsConns = make([]string, len(*jsnCfg.Cdrs_conns))
+ for idx, conn := range *jsnCfg.Cdrs_conns {
+ // if we have the connection internal we change the name so we can have internal rpc for each subsystem
+ if conn == utils.MetaInternal {
+ schdcfg.CDRsConns[idx] = utils.ConcatenatedKey(utils.MetaInternal, utils.MetaCDRs)
+ } else {
+ schdcfg.CDRsConns[idx] = conn
+ }
}
}
if jsnCfg.Filters != nil {
diff --git a/config/schedulercfg_test.go b/config/schedulercfg_test.go
index 28377270b..e09dbff3c 100644
--- a/config/schedulercfg_test.go
+++ b/config/schedulercfg_test.go
@@ -42,7 +42,7 @@ func TestSchedulerCfgloadFromJsonCfg(t *testing.T) {
}`
expected = SchedulerCfg{
Enabled: true,
- CDRsConns: []*RemoteHost{},
+ CDRsConns: []string{},
}
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
t.Error(err)
diff --git a/data/conf/samples/acc_balance_keep/cgrates.json b/data/conf/samples/acc_balance_keep/cgrates.json
index 9f4fef9b3..40d696a44 100644
--- a/data/conf/samples/acc_balance_keep/cgrates.json
+++ b/data/conf/samples/acc_balance_keep/cgrates.json
@@ -31,18 +31,14 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "*internal"}
- ],
+ "thresholds_conns": ["*internal"],
"remove_expired":false,
},
"scheduler": {
"enabled": true,
- "cdrs_conns": [
- {"address": "127.0.0.1:2012", "transport":"*json"},
- ],
+ "cdrs_conns": ["*localhost"],
},
@@ -127,9 +123,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/acc_balance_keep_gob/cgrates.json b/data/conf/samples/acc_balance_keep_gob/cgrates.json
index 908fa2b5e..486a1a25e 100644
--- a/data/conf/samples/acc_balance_keep_gob/cgrates.json
+++ b/data/conf/samples/acc_balance_keep_gob/cgrates.json
@@ -7,6 +7,13 @@
"reply_timeout": "30s",
},
+"rpc_conns": {
+ "conn1": {
+ "strategy": "*first",
+ "conns": [{"address": "127.0.0.1:2013", "transport":"*gob"}],
+ },
+},
+
"listen": {
"rpc_json": ":2012",
@@ -31,18 +38,14 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "*internal"}
- ],
+ "thresholds_conns": ["*internal"],
"remove_expired":false,
},
"scheduler": {
"enabled": true,
- "cdrs_conns": [
- {"address": "127.0.0.1:2013", "transport":"*gob"},
- ],
+ "cdrs_conns": ["conn1"],
},
@@ -127,9 +130,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/actions/cgradmin.json b/data/conf/samples/actions/cgradmin.json
index b2c402a99..50ea3e2e5 100644
--- a/data/conf/samples/actions/cgradmin.json
+++ b/data/conf/samples/actions/cgradmin.json
@@ -26,9 +26,7 @@
"scheduler": {
"enabled": true, // start Scheduler service:
- "cdrs_conns": [
- {"address": "*internal"} // address where to reach CDR Server, empty to disable CDR capturing <*internal|x.y.z.y:1234>
- ],
+ "cdrs_conns": ["*internal"],
},
"cdrs": {
@@ -52,9 +50,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/actions_gob/cgradmin.json b/data/conf/samples/actions_gob/cgradmin.json
index 9633a6369..e7e77e842 100644
--- a/data/conf/samples/actions_gob/cgradmin.json
+++ b/data/conf/samples/actions_gob/cgradmin.json
@@ -26,9 +26,7 @@
"scheduler": {
"enabled": true, // start Scheduler service:
- "cdrs_conns": [
- {"address": "*internal"} // address where to reach CDR Server, empty to disable CDR capturing <*internal|x.y.z.y:1234>
- ],
+ "cdrs_conns": ["*internal"],
},
"cdrs": {
@@ -52,9 +50,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/apier/apier.json b/data/conf/samples/apier/apier.json
index d45eee2de..6d6c1f56b 100644
--- a/data/conf/samples/apier/apier.json
+++ b/data/conf/samples/apier/apier.json
@@ -82,9 +82,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/cdrcflatstore/cgrates.json b/data/conf/samples/cdrcflatstore/cgrates.json
index 7a5f11d09..cb69380e8 100644
--- a/data/conf/samples/cdrcflatstore/cgrates.json
+++ b/data/conf/samples/cdrcflatstore/cgrates.json
@@ -69,9 +69,7 @@
],
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/cdrcfwv/cgrates.json b/data/conf/samples/cdrcfwv/cgrates.json
index 0afdcd89a..158d368a2 100644
--- a/data/conf/samples/cdrcfwv/cgrates.json
+++ b/data/conf/samples/cdrcfwv/cgrates.json
@@ -76,9 +76,7 @@
],
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/cdrcfwvwithfilter/cgrates.json b/data/conf/samples/cdrcfwvwithfilter/cgrates.json
index 06ae9d624..42c849adc 100755
--- a/data/conf/samples/cdrcfwvwithfilter/cgrates.json
+++ b/data/conf/samples/cdrcfwvwithfilter/cgrates.json
@@ -120,9 +120,7 @@
],
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/cdrewithattributes/cgrates.json b/data/conf/samples/cdrewithattributes/cgrates.json
index e8c614be8..29700f57a 100755
--- a/data/conf/samples/cdrewithattributes/cgrates.json
+++ b/data/conf/samples/cdrewithattributes/cgrates.json
@@ -75,15 +75,9 @@
},
"apier": {
- "caches_conns":[ // connections to CacheS for reloads
- {"address": "*internal"},
- ],
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"}
- ],
- "attributes_conns": [
- {"address": "*internal"}
- ], // connections to AttributeS for CDRExporter
+ "caches_conns":["*internal"],
+ "scheduler_conns": ["*internal"],
+ "attributes_conns": ["*internal"], // connections to AttributeS for CDRExporter
},
}
diff --git a/data/conf/samples/cdrewithfilter/cgrates.json b/data/conf/samples/cdrewithfilter/cgrates.json
index 44ce120fd..b3335ab96 100755
--- a/data/conf/samples/cdrewithfilter/cgrates.json
+++ b/data/conf/samples/cdrewithfilter/cgrates.json
@@ -136,9 +136,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/cdrsv1internal/cgrates.json b/data/conf/samples/cdrsv1internal/cgrates.json
index 608cf3c09..8e83cb8c7 100644
--- a/data/conf/samples/cdrsv1internal/cgrates.json
+++ b/data/conf/samples/cdrsv1internal/cgrates.json
@@ -33,9 +33,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/cdrsv2internal/cgrates.json b/data/conf/samples/cdrsv2internal/cgrates.json
index 97c2cb68d..cc4a2f3ea 100644
--- a/data/conf/samples/cdrsv2internal/cgrates.json
+++ b/data/conf/samples/cdrsv2internal/cgrates.json
@@ -15,9 +15,7 @@
"rals": {
"enabled": true, // enable Rater service:
- "thresholds_conns": [
- {"address": "127.0.0.1:2012", "transport":"*json"},
- ],
+ "thresholds_conns": ["*localhost"],
},
"scheduler": {
@@ -64,9 +62,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/cdrsv2mongo/cgrates.json b/data/conf/samples/cdrsv2mongo/cgrates.json
index 33ecb284e..4920c08d2 100644
--- a/data/conf/samples/cdrsv2mongo/cgrates.json
+++ b/data/conf/samples/cdrsv2mongo/cgrates.json
@@ -16,9 +16,7 @@
"rals": {
"enabled": true, // enable Rater service:
- "thresholds_conns": [
- {"address": "127.0.0.1:2012", "transport":"*json"},
- ],
+ "thresholds_conns": ["*localhost"],
},
"scheduler": {
@@ -65,9 +63,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/cdrsv2mongo_gob/cgrates.json b/data/conf/samples/cdrsv2mongo_gob/cgrates.json
index 58978178c..5be297564 100644
--- a/data/conf/samples/cdrsv2mongo_gob/cgrates.json
+++ b/data/conf/samples/cdrsv2mongo_gob/cgrates.json
@@ -8,6 +8,15 @@
"log_level": 7,
},
+
+"rpc_conns": {
+ "conn1": {
+ "strategy": "*first",
+ "conns": [{"address": "127.0.0.1:2013", "transport":"*gob"}],
+ },
+},
+
+
"stor_db": {
"db_type": "mongo", // stor database type to use:
"db_port": 27017, // the port to reach the stordb
@@ -16,9 +25,7 @@
"rals": {
"enabled": true, // enable Rater service:
- "thresholds_conns": [
- {"address": "127.0.0.1:2013", "transport":"*gob"},
- ],
+ "thresholds_conns": ["conn1"],
},
"scheduler": {
@@ -65,9 +72,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/cdrsv2mysql/cdrsv2mysql.json b/data/conf/samples/cdrsv2mysql/cdrsv2mysql.json
index 0471d82af..a4183c336 100644
--- a/data/conf/samples/cdrsv2mysql/cdrsv2mysql.json
+++ b/data/conf/samples/cdrsv2mysql/cdrsv2mysql.json
@@ -16,9 +16,7 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "127.0.0.1:2012", "transport":"*json"},
- ],
+ "thresholds_conns": ["*localhost"],
},
"scheduler": {
@@ -65,9 +63,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/cdrsv2mysql_gob/cdrsv2mysql.json b/data/conf/samples/cdrsv2mysql_gob/cdrsv2mysql.json
index 028173859..b5d88038c 100644
--- a/data/conf/samples/cdrsv2mysql_gob/cdrsv2mysql.json
+++ b/data/conf/samples/cdrsv2mysql_gob/cdrsv2mysql.json
@@ -9,6 +9,14 @@
},
+"rpc_conns": {
+ "conn1": {
+ "strategy": "*first",
+ "conns": [{"address": "127.0.0.1:2013", "transport":"*gob"}],
+ },
+},
+
+
"stor_db": {
"db_password": "CGRateS.org",
},
@@ -16,9 +24,7 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "127.0.0.1:2013", "transport":"*gob"},
- ],
+ "thresholds_conns": ["conn1"],
},
"scheduler": {
@@ -65,9 +71,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/cdrsv2psql/cdrsv2psql.json b/data/conf/samples/cdrsv2psql/cdrsv2psql.json
index 640222717..9fb8258c7 100644
--- a/data/conf/samples/cdrsv2psql/cdrsv2psql.json
+++ b/data/conf/samples/cdrsv2psql/cdrsv2psql.json
@@ -16,9 +16,7 @@
"rals": {
"enabled": true, // enable Rater service:
- "thresholds_conns": [
- {"address": "127.0.0.1:2012", "transport":"*json"},
- ],
+ "thresholds_conns": ["*localhost"],
},
"scheduler": {
@@ -65,9 +63,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/cgradmin/cgradmin.json b/data/conf/samples/cgradmin/cgradmin.json
deleted file mode 100644
index 212c3d648..000000000
--- a/data/conf/samples/cgradmin/cgradmin.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
-// CGRateS Configuration file
-//
-// Used for cgradmin
-// Starts rater, scheduler
-
-"general": {
-},
-
-"listen": {
- "rpc_json": ":2012", // RPC JSON listening address
- "rpc_gob": ":2013", // RPC GOB listening address
- "http": ":2080", // HTTP listening address
-},
-
-"data_db": { // database used to store offline tariff plans and CDRs
- "db_type": "mongo", // stor database type to use:
- "db_host": "127.0.0.1", // the host to connect to
- "db_port": 27017, // the port to reach the stordb
- "db_name": "datadb",
-},
-
-"stor_db": { // database used to store offline tariff plans and CDRs
- "db_type": "mongo", // stor database type to use:
- "db_host": "127.0.0.1", // the host to connect to
- "db_port": 27017, // the port to reach the stordb
- "db_name": "stordb",
-},
-
-"rals": {
- "enabled": true, // enable Rater service:
-},
-
-"scheduler": {
- "enabled": true, // start Scheduler service:
-},
-
-"users": {
- "enabled": true, // starts users service: .
-},
-
-"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
-},
-
-}
diff --git a/data/conf/samples/cluelrn/cgrates.json b/data/conf/samples/cluelrn/cgrates.json
index 7d35cf9a4..5f395e1f3 100644
--- a/data/conf/samples/cluelrn/cgrates.json
+++ b/data/conf/samples/cluelrn/cgrates.json
@@ -56,9 +56,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/dbinternal/cgrates.json b/data/conf/samples/dbinternal/cgrates.json
index f31f41cdc..2d68c3abc 100755
--- a/data/conf/samples/dbinternal/cgrates.json
+++ b/data/conf/samples/dbinternal/cgrates.json
@@ -26,9 +26,7 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "*internal"}
- ],
+ "thresholds_conns": ["*internal"],
},
@@ -83,9 +81,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/diamagent/cgrates.json b/data/conf/samples/diamagent/cgrates.json
index 05f30fcb0..1de7a2048 100644
--- a/data/conf/samples/diamagent/cgrates.json
+++ b/data/conf/samples/diamagent/cgrates.json
@@ -75,9 +75,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/diamagentmaxconn/cgrates.json b/data/conf/samples/diamagentmaxconn/cgrates.json
index e8782d40c..52aac2bfa 100755
--- a/data/conf/samples/diamagentmaxconn/cgrates.json
+++ b/data/conf/samples/diamagentmaxconn/cgrates.json
@@ -87,9 +87,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/diamsctpagent/cgrates.json b/data/conf/samples/diamsctpagent/cgrates.json
index b276d8d8c..4c94e19c9 100755
--- a/data/conf/samples/diamsctpagent/cgrates.json
+++ b/data/conf/samples/diamsctpagent/cgrates.json
@@ -79,9 +79,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/dispatchers/all/cgrates.json b/data/conf/samples/dispatchers/all/cgrates.json
index 17a2edeab..65248a955 100644
--- a/data/conf/samples/dispatchers/all/cgrates.json
+++ b/data/conf/samples/dispatchers/all/cgrates.json
@@ -21,6 +21,15 @@
"db_name": "11", // data_db database name to connect to
},
+
+"rpc_conns": {
+ "conn1": {
+ "strategy": "*first",
+ "conns": [{"address": "127.0.0.1:6012", "transport":"*json"}],
+ },
+},
+
+
"stor_db": {
"db_password": "CGRateS.org",
},
@@ -92,12 +101,8 @@
},
"apier": {
- "caches_conns":[ // connections to CacheS for reloads
- {"address": "127.0.0.1:6012", "transport": "*json"},
- ],
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "caches_conns":["conn1"],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/dispatchers/all2/cgrates.json b/data/conf/samples/dispatchers/all2/cgrates.json
index c48c77b67..3366ce629 100644
--- a/data/conf/samples/dispatchers/all2/cgrates.json
+++ b/data/conf/samples/dispatchers/all2/cgrates.json
@@ -21,6 +21,15 @@
"db_name": "12", // data_db database name to connect to
},
+
+"rpc_conns": {
+ "conn1": {
+ "strategy": "*first",
+ "conns": [{"address": "127.0.0.1:7012", "transport":"*json"}],
+ },
+},
+
+
"stor_db": {
"db_type":"*internal",
},
@@ -92,12 +101,8 @@
},
"apier": {
- "caches_conns":[ // connections to CacheS for reloads
- {"address": "127.0.0.1:7012", "transport": "*json"},
- ],
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "caches_conns":["conn1"],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/dispatchers/diamagent/cgrates.json b/data/conf/samples/dispatchers/diamagent/cgrates.json
index 1d8ee4ae1..785b8ed42 100644
--- a/data/conf/samples/dispatchers/diamagent/cgrates.json
+++ b/data/conf/samples/dispatchers/diamagent/cgrates.json
@@ -55,8 +55,6 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/dispatchers/dispatchers/cgrates.json b/data/conf/samples/dispatchers/dispatchers/cgrates.json
index 1db50a217..a3aac3b90 100755
--- a/data/conf/samples/dispatchers/dispatchers/cgrates.json
+++ b/data/conf/samples/dispatchers/dispatchers/cgrates.json
@@ -65,8 +65,6 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
\ No newline at end of file
diff --git a/data/conf/samples/dispatchers/dispatchers_mongo/cgrates.json b/data/conf/samples/dispatchers/dispatchers_mongo/cgrates.json
index 947a8584f..f51389261 100644
--- a/data/conf/samples/dispatchers/dispatchers_mongo/cgrates.json
+++ b/data/conf/samples/dispatchers/dispatchers_mongo/cgrates.json
@@ -73,8 +73,6 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
\ No newline at end of file
diff --git a/data/conf/samples/dispatchers/dispatchers_no_attributes/cgrates.json b/data/conf/samples/dispatchers/dispatchers_no_attributes/cgrates.json
index b61830f27..871d7a4a5 100755
--- a/data/conf/samples/dispatchers/dispatchers_no_attributes/cgrates.json
+++ b/data/conf/samples/dispatchers/dispatchers_no_attributes/cgrates.json
@@ -45,8 +45,6 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
\ No newline at end of file
diff --git a/data/conf/samples/dispatchers/radagent/cgrates.json b/data/conf/samples/dispatchers/radagent/cgrates.json
index 9c7587016..4b52384a9 100644
--- a/data/conf/samples/dispatchers/radagent/cgrates.json
+++ b/data/conf/samples/dispatchers/radagent/cgrates.json
@@ -140,8 +140,6 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/dnsagent/cgrates.json b/data/conf/samples/dnsagent/cgrates.json
index 9be97eb78..00e5ed06d 100644
--- a/data/conf/samples/dnsagent/cgrates.json
+++ b/data/conf/samples/dnsagent/cgrates.json
@@ -83,8 +83,6 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
\ No newline at end of file
diff --git a/data/conf/samples/dnsagent_reload/cgrates.json b/data/conf/samples/dnsagent_reload/cgrates.json
index e28ab0b3e..d5e570fe7 100644
--- a/data/conf/samples/dnsagent_reload/cgrates.json
+++ b/data/conf/samples/dnsagent_reload/cgrates.json
@@ -19,9 +19,7 @@
"scheduler": {
"enabled": true,
- "cdrs_conns": [
- {"address": "*internal"},
- ],
+ "cdrs_conns": ["*internal"],
},
@@ -83,8 +81,6 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
\ No newline at end of file
diff --git a/data/conf/samples/ers/cgrates.json b/data/conf/samples/ers/cgrates.json
index 7cda37d55..b6f15854c 100644
--- a/data/conf/samples/ers/cgrates.json
+++ b/data/conf/samples/ers/cgrates.json
@@ -211,9 +211,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/ers_example/cgrates.json b/data/conf/samples/ers_example/cgrates.json
index 4491afb2f..f1592df8e 100644
--- a/data/conf/samples/ers_example/cgrates.json
+++ b/data/conf/samples/ers_example/cgrates.json
@@ -108,8 +108,6 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/ers_reload/disabled/cgrates.json b/data/conf/samples/ers_reload/disabled/cgrates.json
index afa905d7c..1579f44f1 100644
--- a/data/conf/samples/ers_reload/disabled/cgrates.json
+++ b/data/conf/samples/ers_reload/disabled/cgrates.json
@@ -79,9 +79,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/ers_reload/first_reload/cgrates.json b/data/conf/samples/ers_reload/first_reload/cgrates.json
index bd495ea90..a47b5f1e5 100644
--- a/data/conf/samples/ers_reload/first_reload/cgrates.json
+++ b/data/conf/samples/ers_reload/first_reload/cgrates.json
@@ -121,9 +121,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/ers_reload/internal/cgrates.json b/data/conf/samples/ers_reload/internal/cgrates.json
index 712c1d783..010a5641d 100644
--- a/data/conf/samples/ers_reload/internal/cgrates.json
+++ b/data/conf/samples/ers_reload/internal/cgrates.json
@@ -108,9 +108,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
\ No newline at end of file
diff --git a/data/conf/samples/ers_reload/second_reload/cgrates.json b/data/conf/samples/ers_reload/second_reload/cgrates.json
index 282b0274b..d57c25a01 100644
--- a/data/conf/samples/ers_reload/second_reload/cgrates.json
+++ b/data/conf/samples/ers_reload/second_reload/cgrates.json
@@ -210,9 +210,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/filtered_scheduler/cgrates.json b/data/conf/samples/filtered_scheduler/cgrates.json
index be7fa1063..725d588eb 100644
--- a/data/conf/samples/filtered_scheduler/cgrates.json
+++ b/data/conf/samples/filtered_scheduler/cgrates.json
@@ -40,9 +40,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/filtered_scheduler2/cgrates.json b/data/conf/samples/filtered_scheduler2/cgrates.json
index 09a3679e0..d661deee2 100644
--- a/data/conf/samples/filtered_scheduler2/cgrates.json
+++ b/data/conf/samples/filtered_scheduler2/cgrates.json
@@ -40,9 +40,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/filters/cgrates.json b/data/conf/samples/filters/cgrates.json
index a7df763df..1f73700e2 100644
--- a/data/conf/samples/filters/cgrates.json
+++ b/data/conf/samples/filters/cgrates.json
@@ -30,9 +30,7 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "127.0.0.1:2012", "transport":"*json"},
- ],
+ "thresholds_conns": ["*localhost"],
},
"scheduler": {
@@ -73,12 +71,8 @@
},
"apier": {
- "caches_conns":[ // connections to CacheS for reloads
- {"address": "127.0.0.1:2012", "transport": "*json"},
- ],
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "caches_conns":["*localhost"],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/filters_gob/cgrates.json b/data/conf/samples/filters_gob/cgrates.json
index 0ad8dfdef..b1a467e99 100644
--- a/data/conf/samples/filters_gob/cgrates.json
+++ b/data/conf/samples/filters_gob/cgrates.json
@@ -8,9 +8,16 @@
"node_id": "CGRFilterS",
},
+"rpc_conns": {
+ "conn1": {
+ "strategy": "*first",
+ "conns": [{"address": "127.0.0.1:2013", "transport":"*gob"}],
+ },
+},
-"liste3": {
- "rpc_gob": ":2012",
+
+"listen": {
+ "rpc_json": ":2012",
"rpc_gob": ":2013",
"http": ":2080",
},
@@ -30,9 +37,7 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "127.0.0.1:2013", "transport":"*gob"},
- ],
+ "thresholds_conns": ["conn1"],
},
"scheduler": {
@@ -73,12 +78,8 @@
},
"apier": {
- "caches_conns":[ // connections to CacheS for reloads
- {"address": "127.0.0.1:2012",3"transport": "*gob"},
- ],
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "caches_conns":["conn1"],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/fscsv/cgrates.json b/data/conf/samples/fscsv/cgrates.json
index c1f433448..8dac2ff96 100644
--- a/data/conf/samples/fscsv/cgrates.json
+++ b/data/conf/samples/fscsv/cgrates.json
@@ -19,9 +19,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/httpagent/cgrates.json b/data/conf/samples/httpagent/cgrates.json
index 9d47dea62..0f386bc40 100644
--- a/data/conf/samples/httpagent/cgrates.json
+++ b/data/conf/samples/httpagent/cgrates.json
@@ -70,9 +70,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/httpagent_gob/cgrates.json b/data/conf/samples/httpagent_gob/cgrates.json
index 0b05460d6..364e8030f 100644
--- a/data/conf/samples/httpagent_gob/cgrates.json
+++ b/data/conf/samples/httpagent_gob/cgrates.json
@@ -14,6 +14,13 @@
"http": ":2080",
},
+"rpc_conns": {
+ "conn1": {
+ "strategy": "*first",
+ "conns": [{"address": "127.0.0.1:2013", "transport":"*gob"}],
+ },
+},
+
"stor_db": {
"db_password": "CGRateS.org",
@@ -70,9 +77,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/httpagenttls/cgrates.json b/data/conf/samples/httpagenttls/cgrates.json
index b011a248d..87e3fd238 100755
--- a/data/conf/samples/httpagenttls/cgrates.json
+++ b/data/conf/samples/httpagenttls/cgrates.json
@@ -83,9 +83,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/httpagenttls_gob/cgrates.json b/data/conf/samples/httpagenttls_gob/cgrates.json
index 0c982d105..c8e06f1cd 100755
--- a/data/conf/samples/httpagenttls_gob/cgrates.json
+++ b/data/conf/samples/httpagenttls_gob/cgrates.json
@@ -17,6 +17,15 @@
"http_tls": "localhost:2280",
},
+
+"rpc_conns": {
+ "conn1": {
+ "strategy": "*first",
+ "conns": [{"address": "127.0.0.1:2013", "transport":"*gob"}],
+ },
+},
+
+
"tls": {
"server_certificate" : "/usr/share/cgrates/tls/server.crt", // path to server certificate(must conatin server.crt + ca.crt)
"server_key":"/usr/share/cgrates/tls/server.key", // path to server key
@@ -83,9 +92,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/loaders/tutmongo/cgrates.json b/data/conf/samples/loaders/tutmongo/cgrates.json
index 68b95d148..c151f6d22 100644
--- a/data/conf/samples/loaders/tutmongo/cgrates.json
+++ b/data/conf/samples/loaders/tutmongo/cgrates.json
@@ -31,17 +31,13 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "*internal"}
- ],
+ "thresholds_conns": ["*internal"],
},
"scheduler": {
"enabled": true,
- "cdrs_conns": [
- {"address": "127.0.0.1:2012", "transport":"*json"},
- ],
+ "cdrs_conns": ["*localhost"],
},
@@ -170,8 +166,6 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/loaders/tutmysql/cgrates.json b/data/conf/samples/loaders/tutmysql/cgrates.json
index 156a09a44..5d41973b7 100644
--- a/data/conf/samples/loaders/tutmysql/cgrates.json
+++ b/data/conf/samples/loaders/tutmysql/cgrates.json
@@ -28,17 +28,13 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "*internal"},
- ],
+ "thresholds_conns": ["*internal"],
},
"scheduler": {
"enabled": true,
- "cdrs_conns": [
- {"address": "*internal"},
- ],
+ "cdrs_conns": ["*internal"],
},
@@ -176,9 +172,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/mongoatlas/cgrates.json b/data/conf/samples/mongoatlas/cgrates.json
index 2fe85301e..cb3c58289 100755
--- a/data/conf/samples/mongoatlas/cgrates.json
+++ b/data/conf/samples/mongoatlas/cgrates.json
@@ -65,9 +65,7 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "*internal"}
- ],
+ "thresholds_conns": ["*internal"],
},
@@ -162,9 +160,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/mongoreplica/cgrates.json b/data/conf/samples/mongoreplica/cgrates.json
index 2f9139bce..2f7299ffe 100755
--- a/data/conf/samples/mongoreplica/cgrates.json
+++ b/data/conf/samples/mongoreplica/cgrates.json
@@ -37,9 +37,7 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "*internal"}
- ],
+ "thresholds_conns": ["*internal"],
},
@@ -117,9 +115,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/multiplecdrc/multiplecdrc_fwexport.json b/data/conf/samples/multiplecdrc/multiplecdrc_fwexport.json
index 3788dbf7e..d2a1d36b3 100644
--- a/data/conf/samples/multiplecdrc/multiplecdrc_fwexport.json
+++ b/data/conf/samples/multiplecdrc/multiplecdrc_fwexport.json
@@ -130,9 +130,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/osips_training/cgrates.json b/data/conf/samples/osips_training/cgrates.json
deleted file mode 100644
index f211e6b57..000000000
--- a/data/conf/samples/osips_training/cgrates.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-
-// Real-time Charging System for Telecom & ISP environments
-// Copyright (C) ITsysCOM GmbH
-//
-// This file contains the default configuration hardcoded into CGRateS.
-// This is what you get when you load CGRateS with an empty configuration file.
-
-"listen": {
- "rpc_json": ":2012", // RPC JSON listening address
- "rpc_gob": ":2013", // RPC GOB listening address
- "http": ":2080", // HTTP listening address
-},
-
-
-"rals": {
- "enabled": true,
-},
-
-
-"scheduler": {
- "enabled": true,
-},
-
-
-"cdrs": {
- "enabled": true, // start the CDR Server service:
-},
-
-
-"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
-},
-
-
-}
diff --git a/data/conf/samples/precache/tutmongo/cgrates.json b/data/conf/samples/precache/tutmongo/cgrates.json
index 2ae88ca0f..472a229c7 100644
--- a/data/conf/samples/precache/tutmongo/cgrates.json
+++ b/data/conf/samples/precache/tutmongo/cgrates.json
@@ -82,9 +82,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/precache/tutmysql/cgrates.json b/data/conf/samples/precache/tutmysql/cgrates.json
index 9a7eac82e..734e6c231 100644
--- a/data/conf/samples/precache/tutmysql/cgrates.json
+++ b/data/conf/samples/precache/tutmysql/cgrates.json
@@ -73,9 +73,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/radagent/cgrates.json b/data/conf/samples/radagent/cgrates.json
index 167f89b7d..18d875173 100644
--- a/data/conf/samples/radagent/cgrates.json
+++ b/data/conf/samples/radagent/cgrates.json
@@ -170,9 +170,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/radagent_gob/cgrates.json b/data/conf/samples/radagent_gob/cgrates.json
index 8e81dcbdc..c4e087f32 100644
--- a/data/conf/samples/radagent_gob/cgrates.json
+++ b/data/conf/samples/radagent_gob/cgrates.json
@@ -170,9 +170,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/remote_replication/engine1_mongo/cgrates.json b/data/conf/samples/remote_replication/engine1_mongo/cgrates.json
index ca8ea370b..bbc4b6f8e 100644
--- a/data/conf/samples/remote_replication/engine1_mongo/cgrates.json
+++ b/data/conf/samples/remote_replication/engine1_mongo/cgrates.json
@@ -36,9 +36,7 @@
},
"apier": {
- "scheduler_conns": [
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/remote_replication/engine1_redis/cgrates.json b/data/conf/samples/remote_replication/engine1_redis/cgrates.json
index 172ab11e3..a01a3c578 100644
--- a/data/conf/samples/remote_replication/engine1_redis/cgrates.json
+++ b/data/conf/samples/remote_replication/engine1_redis/cgrates.json
@@ -33,9 +33,7 @@
"apier": {
- "scheduler_conns": [
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/remote_replication/engine2_mongo/cgrates.json b/data/conf/samples/remote_replication/engine2_mongo/cgrates.json
index 4c8e561e4..fca65e916 100644
--- a/data/conf/samples/remote_replication/engine2_mongo/cgrates.json
+++ b/data/conf/samples/remote_replication/engine2_mongo/cgrates.json
@@ -37,9 +37,7 @@
"apier": {
- "scheduler_conns": [
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/remote_replication/engine2_redis/cgrates.json b/data/conf/samples/remote_replication/engine2_redis/cgrates.json
index e7337f37d..e4517eb9c 100644
--- a/data/conf/samples/remote_replication/engine2_redis/cgrates.json
+++ b/data/conf/samples/remote_replication/engine2_redis/cgrates.json
@@ -33,9 +33,7 @@
"apier": {
- "scheduler_conns": [
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/remote_replication/internal/cgrates.json b/data/conf/samples/remote_replication/internal/cgrates.json
index 98060a329..e53bc1466 100644
--- a/data/conf/samples/remote_replication/internal/cgrates.json
+++ b/data/conf/samples/remote_replication/internal/cgrates.json
@@ -80,9 +80,7 @@
"apier": {
- "scheduler_conns": [
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/remote_replication/internal_gob/cgrates.json b/data/conf/samples/remote_replication/internal_gob/cgrates.json
index eeb37e445..b82669572 100644
--- a/data/conf/samples/remote_replication/internal_gob/cgrates.json
+++ b/data/conf/samples/remote_replication/internal_gob/cgrates.json
@@ -86,9 +86,7 @@
"apier": {
- "scheduler_conns": [
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/replication_mongo/cgrates.json b/data/conf/samples/replication_mongo/cgrates.json
deleted file mode 100644
index fbce5edd8..000000000
--- a/data/conf/samples/replication_mongo/cgrates.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-// CGRateS Configuration file
-
-
-"general": {
- "log_level": 7,
- "reply_timeout": "30s",
-},
-
-
-"listen": {
- "rpc_json": ":2022",
- "rpc_gob": ":2023",
- "http": ":2280"
-},
-
-
-"data_db": {
- "db_type": "mongo",
- "db_name": "10",
- "db_port": 27017,
-},
-
-
-"stor_db": {
- "db_type": "mongo",
- "db_name": "cgrates",
- "db_port": 27017,
-},
-
-
-"rals": {
- "enabled": true,
-},
-
-
-"scheduler": {
- "enabled": true,
-},
-
-
-"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
-},
-
-
-}
diff --git a/data/conf/samples/reslimiter/cgrates.json b/data/conf/samples/reslimiter/cgrates.json
deleted file mode 100644
index c475ff147..000000000
--- a/data/conf/samples/reslimiter/cgrates.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
-
-"general": {
- "log_level": 7,
-},
-
-"listen": {
- "rpc_json": ":2012",
- "rpc_gob": ":2013",
- "http": ":2080",
-},
-
-
-"stor_db": {
- "db_password": "CGRateS.org",
-},
-
-
-"rals": {
- "enabled": true,
- "stats_conns": [
- {"address": "*internal"}
- ],
-},
-
-"stats": {
- "enabled": true,
-},
-
-
-"resources": {
- "enabled": true,
- "cache_dump_interval": "0s",
- "usage_ttl": "3h",
-},
-
-}
diff --git a/data/conf/samples/rpccaching/cgrates.json b/data/conf/samples/rpccaching/cgrates.json
index 137ffe181..367a5178a 100644
--- a/data/conf/samples/rpccaching/cgrates.json
+++ b/data/conf/samples/rpccaching/cgrates.json
@@ -73,9 +73,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/sessions/cgrates.json b/data/conf/samples/sessions/cgrates.json
index 9a7cd2a39..88d3f4fdd 100644
--- a/data/conf/samples/sessions/cgrates.json
+++ b/data/conf/samples/sessions/cgrates.json
@@ -107,9 +107,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/sessions_replication/smgreplcmaster/cgrates.json b/data/conf/samples/sessions_replication/smgreplcmaster/cgrates.json
index 80e40d1ed..c6358b276 100644
--- a/data/conf/samples/sessions_replication/smgreplcmaster/cgrates.json
+++ b/data/conf/samples/sessions_replication/smgreplcmaster/cgrates.json
@@ -56,9 +56,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/sessions_replication/smgreplcslave/cgrates.json b/data/conf/samples/sessions_replication/smgreplcslave/cgrates.json
index 6350c90f5..b1cb50764 100644
--- a/data/conf/samples/sessions_replication/smgreplcslave/cgrates.json
+++ b/data/conf/samples/sessions_replication/smgreplcslave/cgrates.json
@@ -57,9 +57,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/smfs/smfs.json b/data/conf/samples/smfs/smfs.json
deleted file mode 100644
index 094e7eecf..000000000
--- a/data/conf/samples/smfs/smfs.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-
-// Real-time Charging System for Telecom & ISP environments
-// Copyright (C) ITsysCOM GmbH
-//
-// This file contains the default configuration hardcoded into CGRateS.
-// This is what you get when you load CGRateS with an empty configuration file.
-
-
-"sm_freeswitch": {
- "enabled": true,
- "rals_conns": [
- {"address": "127.0.0.1:2013"}
- ],
- "cdrs_conns": [
- {"address": "127.0.0.1:2013"}
- ],
- "debit_interval": "5s",
- "channel_sync_interval": "10s",
- "event_socket_conns":[
- {"address": "127.0.0.1:8021", "password": "ClueCon", "reconnects": 5}
- ],
-},
-
-}
\ No newline at end of file
diff --git a/data/conf/samples/smg/cgrates.json b/data/conf/samples/smg/cgrates.json
index eec964432..0673bd872 100644
--- a/data/conf/samples/smg/cgrates.json
+++ b/data/conf/samples/smg/cgrates.json
@@ -69,9 +69,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/smg_automatic_debits/cgrates.json b/data/conf/samples/smg_automatic_debits/cgrates.json
index 6d58c654a..ae71059a9 100644
--- a/data/conf/samples/smg_automatic_debits/cgrates.json
+++ b/data/conf/samples/smg_automatic_debits/cgrates.json
@@ -48,9 +48,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/smg_gob/cgrates.json b/data/conf/samples/smg_gob/cgrates.json
index bbe142e69..bbe7db286 100644
--- a/data/conf/samples/smg_gob/cgrates.json
+++ b/data/conf/samples/smg_gob/cgrates.json
@@ -69,9 +69,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/smgeneric/cgrates.json b/data/conf/samples/smgeneric/cgrates.json
index 44a0c41de..f984850b9 100644
--- a/data/conf/samples/smgeneric/cgrates.json
+++ b/data/conf/samples/smgeneric/cgrates.json
@@ -12,6 +12,15 @@
"http": "0.0.0.0:3080", // HTTP listening address
},
+"rpc_conns": {
+ "conn1": {
+ "strategy": "*first",
+ "conns": [
+ {"address": "127.0.0.1:3012", "transport":"*json"}
+ ],
+ },
+},
+
"stor_db": { // database used to store offline tariff plans and CDRs
"db_password": "CGRateS.org", // password to use when connecting to stordb
@@ -63,12 +72,8 @@
},
"apier": {
- "caches_conns":[ // connections to CacheS for reloads
- {"address": "127.0.0.1:3012", "transport": "*json"},
- ],
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "caches_conns":["conn1"],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/smgreplcmaster/cgrates.json b/data/conf/samples/smgreplcmaster/cgrates.json
index 3ef8da5c2..eb4e43254 100644
--- a/data/conf/samples/smgreplcmaster/cgrates.json
+++ b/data/conf/samples/smgreplcmaster/cgrates.json
@@ -55,9 +55,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/smgreplcmaster_gob/cgrates.json b/data/conf/samples/smgreplcmaster_gob/cgrates.json
index ac47877cd..43367a794 100644
--- a/data/conf/samples/smgreplcmaster_gob/cgrates.json
+++ b/data/conf/samples/smgreplcmaster_gob/cgrates.json
@@ -55,9 +55,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/smgreplcslave/cgrates.json b/data/conf/samples/smgreplcslave/cgrates.json
index 6fbfbd80d..7e70e937a 100644
--- a/data/conf/samples/smgreplcslave/cgrates.json
+++ b/data/conf/samples/smgreplcslave/cgrates.json
@@ -56,9 +56,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/smgreplcslave_gob/cgrates.json b/data/conf/samples/smgreplcslave_gob/cgrates.json
index d1cbbc4e4..61d922aa2 100644
--- a/data/conf/samples/smgreplcslave_gob/cgrates.json
+++ b/data/conf/samples/smgreplcslave_gob/cgrates.json
@@ -56,9 +56,7 @@
},
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/stats/cgrates.json b/data/conf/samples/stats/cgrates.json
deleted file mode 100644
index 5d1fd64eb..000000000
--- a/data/conf/samples/stats/cgrates.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-
-"general": {
- "log_level": 7,
-},
-
-"listen": {
- "rpc_json": ":2012",
- "rpc_gob": ":2013",
- "http": ":2080",
-},
-
-
-"stor_db": {
- "db_password": "CGRateS.org",
-},
-
-
-"rals": {
- "enabled": true,
-},
-
-
-"stats": {
- "enabled": true,
- "store_interval": "0s",
-},
-
-}
diff --git a/data/conf/samples/tls_gob/cgrates.json b/data/conf/samples/tls_gob/cgrates.json
index dbbd1f504..f4476e86f 100755
--- a/data/conf/samples/tls_gob/cgrates.json
+++ b/data/conf/samples/tls_gob/cgrates.json
@@ -55,7 +55,7 @@
"rpc_conns": {
"conn1": {
- "strategy": "first",
+ "strategy": "*first",
"conns": [{"address": "127.0.0.1:2013", "transport":"*gob"}],
},
},
diff --git a/data/conf/samples/tutinternal/cgrates.json b/data/conf/samples/tutinternal/cgrates.json
index 37eecb2e5..ae6e4cc2b 100644
--- a/data/conf/samples/tutinternal/cgrates.json
+++ b/data/conf/samples/tutinternal/cgrates.json
@@ -28,18 +28,14 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "*internal"},
- ],
+ "thresholds_conns": ["*internal"],
"max_increments":3000000,
},
"scheduler": {
"enabled": true,
- "cdrs_conns": [
- {"address": "*internal"},
- ],
+ "cdrs_conns": ["*internal"],
},
@@ -112,9 +108,9 @@
},
- "apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
- },
+"apier": {
+ "scheduler_conns": ["*internal"],
+},
+
+
}
diff --git a/data/conf/samples/tutmongo/cgrates.json b/data/conf/samples/tutmongo/cgrates.json
index 9155d5058..50ec5c0c6 100644
--- a/data/conf/samples/tutmongo/cgrates.json
+++ b/data/conf/samples/tutmongo/cgrates.json
@@ -31,18 +31,14 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "*internal"}
- ],
+ "thresholds_conns": ["*internal"],
"max_increments":3000000,
},
"scheduler": {
"enabled": true,
- "cdrs_conns": [
- {"address": "127.0.0.1:2012", "transport":"*json"},
- ],
+ "cdrs_conns": ["*localhost"],
},
@@ -135,9 +131,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/tutmongo2/cgrates.json b/data/conf/samples/tutmongo2/cgrates.json
index b2963e252..8d291cadc 100644
--- a/data/conf/samples/tutmongo2/cgrates.json
+++ b/data/conf/samples/tutmongo2/cgrates.json
@@ -31,20 +31,14 @@
"scheduler": {
"enabled": true,
- "cdrs_conns": [
- {"address": "127.0.0.1:2012", "transport":"*json"},
- ],
+ "cdrs_conns": ["*localhost"],
},
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "127.0.0.1:2012", "transport":"*json"},
- ],
- "stats_conns": [
- {"address": "127.0.0.1:2012", "transport":"*json"},
- ],
+ "thresholds_conns": ["*localhost"],
+ "stats_conns": ["*localhost"],
},
@@ -167,9 +161,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/tutmongo2_gob/cgrates.json b/data/conf/samples/tutmongo2_gob/cgrates.json
index ddc10f10d..64de18c04 100644
--- a/data/conf/samples/tutmongo2_gob/cgrates.json
+++ b/data/conf/samples/tutmongo2_gob/cgrates.json
@@ -10,7 +10,7 @@
"rpc_conns": {
"conn1": {
- "strategy": "first",
+ "strategy": "*first",
"conns": [{"address": "127.0.0.1:2013", "transport":"*gob"}],
},
},
@@ -38,20 +38,14 @@
"scheduler": {
"enabled": true,
- "cdrs_conns": [
- {"address": "127.0.0.1:2013", "transport":"*gob"},
- ],
+ "cdrs_conns": ["conn1"],
},
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "127.0.0.1:2013", "transport":"*gob"},
- ],
- "stats_conns": [
- {"address": "127.0.0.1:2013", "transport":"*gob"},
- ],
+ "thresholds_conns": ["conn1"],
+ "stats_conns": ["conn1"],
},
@@ -174,9 +168,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/tutmongo_gob/cgrates.json b/data/conf/samples/tutmongo_gob/cgrates.json
index 2d136c2a1..3b90367e9 100644
--- a/data/conf/samples/tutmongo_gob/cgrates.json
+++ b/data/conf/samples/tutmongo_gob/cgrates.json
@@ -7,6 +7,13 @@
"reply_timeout": "30s",
},
+"rpc_conns": {
+ "conn1": {
+ "strategy": "*first",
+ "conns": [{"address": "127.0.0.1:2013", "transport":"*gob"}],
+ },
+},
+
"listen": {
"rpc_json": ":2012",
@@ -31,18 +38,14 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "*internal"}
- ],
+ "thresholds_conns": ["*internal"],
"max_increments":3000000,
},
"scheduler": {
"enabled": true,
- "cdrs_conns": [
- {"address": "127.0.0.1:2013", "transport":"*gob"},
- ],
+ "cdrs_conns": ["conn1"],
},
@@ -135,9 +138,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/tutmongonew/cgrates.json b/data/conf/samples/tutmongonew/cgrates.json
index 4b09eb643..ab1bfc9ec 100644
--- a/data/conf/samples/tutmongonew/cgrates.json
+++ b/data/conf/samples/tutmongonew/cgrates.json
@@ -31,9 +31,7 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "*internal"}
- ],
+ "thresholds_conns": ["*internal"],
},
@@ -132,9 +130,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/tutmysql/cgrates.json b/data/conf/samples/tutmysql/cgrates.json
index 22e1a3ae8..46a0dabd2 100644
--- a/data/conf/samples/tutmysql/cgrates.json
+++ b/data/conf/samples/tutmysql/cgrates.json
@@ -28,18 +28,14 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "*internal"},
- ],
+ "thresholds_conns": ["*internal"],
"max_increments":3000000,
},
"scheduler": {
"enabled": true,
- "cdrs_conns": [
- {"address": "*internal"},
- ],
+ "cdrs_conns": ["*internal"],
},
@@ -140,9 +136,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/tutmysql2/cgrates.json b/data/conf/samples/tutmysql2/cgrates.json
index 572616137..0af14e145 100644
--- a/data/conf/samples/tutmysql2/cgrates.json
+++ b/data/conf/samples/tutmysql2/cgrates.json
@@ -23,20 +23,14 @@
"scheduler": {
"enabled": true,
- "cdrs_conns": [
- {"address": "127.0.0.1:2012", "transport":"*json"},
- ],
+ "cdrs_conns": ["*localhost"],
},
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "127.0.0.1:2012", "transport":"*json"},
- ],
- "stats_conns": [
- {"address": "127.0.0.1:2012", "transport":"*json"},
- ],
+ "thresholds_conns": ["*localhost"],
+ "stats_conns": ["*localhost"],
},
@@ -133,8 +127,6 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*localhost"],
},
}
diff --git a/data/conf/samples/tutmysql2_gob/cgrates.json b/data/conf/samples/tutmysql2_gob/cgrates.json
index fef2c652c..4ee9352b4 100644
--- a/data/conf/samples/tutmysql2_gob/cgrates.json
+++ b/data/conf/samples/tutmysql2_gob/cgrates.json
@@ -11,7 +11,7 @@
"rpc_conns": {
"conn1": {
- "strategy": "first",
+ "strategy": "*first",
"conns": [{"address": "127.0.0.1:2013", "transport":"*gob"}],
},
},
@@ -31,20 +31,14 @@
"scheduler": {
"enabled": true,
- "cdrs_conns": [
- {"address": "127.0.0.1:2013", "transport":"*gob"},
- ],
+ "cdrs_conns": ["conn1"],
},
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "127.0.0.1:2013", "transport":"*gob"},
- ],
- "stats_conns": [
- {"address": "127.0.0.1:2013", "transport":"*gob"},
- ],
+ "thresholds_conns": ["conn1"],
+ "stats_conns": ["conn1"],
},
@@ -141,8 +135,6 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/data/conf/samples/tutmysql_internal/cgrates.json b/data/conf/samples/tutmysql_internal/cgrates.json
index 12ee29947..e8370a71d 100644
--- a/data/conf/samples/tutmysql_internal/cgrates.json
+++ b/data/conf/samples/tutmysql_internal/cgrates.json
@@ -27,17 +27,13 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "*internal"},
- ],
+ "thresholds_conns": ["*internal"],
},
"scheduler": {
"enabled": true,
- "cdrs_conns": [
- {"address": "*internal"},
- ],
+ "cdrs_conns": ["*internal"],
},
@@ -257,9 +253,7 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
diff --git a/data/conf/samples/tutpostgres/cgrates.json b/data/conf/samples/tutpostgres/cgrates.json
index ff6c32ea7..ae955851c 100644
--- a/data/conf/samples/tutpostgres/cgrates.json
+++ b/data/conf/samples/tutpostgres/cgrates.json
@@ -28,9 +28,7 @@
"rals": {
"enabled": true,
- "thresholds_conns": [
- {"address": "*internal"}
- ],
+ "thresholds_conns": ["*internal"],
},
@@ -102,8 +100,6 @@
"apier": {
- "scheduler_conns": [ // connections to SchedulerS for reloads
- {"address": "*internal"},
- ],
+ "scheduler_conns": ["*internal"],
},
}
diff --git a/engine/account.go b/engine/account.go
index a1e46d8b2..250b1b55d 100644
--- a/engine/account.go
+++ b/engine/account.go
@@ -536,7 +536,7 @@ func (ub *Account) debitCreditBalance(cd *CallDescriptor, count bool, dryRun boo
defaultBalance := ub.GetDefaultMoneyBalance()
defaultBalance.SubstractValue(cost)
//send default balance to thresholdS to be processed
- if thresholdS != nil {
+ if len(config.CgrConfig().RalsCfg().ThresholdSConns) != 0 {
acntTnt := utils.NewTenantID(ub.ID)
thEv := &ArgsProcessEvent{
CGREvent: &utils.CGREvent{
@@ -549,7 +549,8 @@ func (ub *Account) debitCreditBalance(cd *CallDescriptor, count bool, dryRun boo
utils.BalanceID: defaultBalance.ID,
utils.Units: defaultBalance.Value}}}
var tIDs []string
- if err := thresholdS.Call(utils.ThresholdSv1ProcessEvent, thEv, &tIDs); err != nil &&
+ if err := connMgr.Call(config.CgrConfig().RalsCfg().ThresholdSConns,
+ utils.ThresholdSv1ProcessEvent, thEv, &tIDs); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
utils.Logger.Warning(
fmt.Sprintf(" error: <%s> processing balance event <%+v> with ThresholdS.",
@@ -1103,10 +1104,11 @@ func (acnt *Account) Publish() {
utils.Account: acntTnt.ID,
utils.AllowNegative: acnt.AllowNegative,
utils.Disabled: acnt.Disabled}}
- if statS != nil {
+ if len(config.CgrConfig().RalsCfg().StatSConns) != 0 {
go func() {
var reply []string
- if err := statS.Call(utils.StatSv1ProcessEvent, &StatsArgsProcessEvent{CGREvent: cgrEv}, &reply); err != nil &&
+ if err := connMgr.Call(config.CgrConfig().RalsCfg().StatSConns,
+ utils.StatSv1ProcessEvent, &StatsArgsProcessEvent{CGREvent: cgrEv}, &reply); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
utils.Logger.Warning(
fmt.Sprintf(" error: %s processing balance event %+v with StatS.",
@@ -1114,10 +1116,11 @@ func (acnt *Account) Publish() {
}
}()
}
- if thresholdS != nil {
+ if len(config.CgrConfig().RalsCfg().ThresholdSConns) != 0 {
go func() {
var tIDs []string
- if err := thresholdS.Call(utils.ThresholdSv1ProcessEvent,
+ if err := connMgr.Call(config.CgrConfig().RalsCfg().ThresholdSConns,
+ utils.ThresholdSv1ProcessEvent,
&ArgsProcessEvent{CGREvent: cgrEv}, &tIDs); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
utils.Logger.Warning(
diff --git a/engine/balances.go b/engine/balances.go
index c0675af85..10844fadb 100644
--- a/engine/balances.go
+++ b/engine/balances.go
@@ -721,10 +721,11 @@ func (b *Balance) Publish() {
if !b.ExpirationDate.IsZero() {
cgrEv.Event[utils.ExpiryTime] = b.ExpirationDate.Format(time.RFC3339)
}
- if statS != nil {
+ if len(config.CgrConfig().RalsCfg().StatSConns) != 0 {
go func() {
var reply []string
- if err := statS.Call(utils.StatSv1ProcessEvent, &StatsArgsProcessEvent{CGREvent: cgrEv}, &reply); err != nil &&
+ if err := connMgr.Call(config.CgrConfig().RalsCfg().StatSConns,
+ utils.StatSv1ProcessEvent, &StatsArgsProcessEvent{CGREvent: cgrEv}, &reply); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
utils.Logger.Warning(
fmt.Sprintf(" error: %s processing balance event %+v with StatS.",
@@ -732,10 +733,11 @@ func (b *Balance) Publish() {
}
}()
}
- if thresholdS != nil {
+ if len(config.CgrConfig().RalsCfg().ThresholdSConns) != 0 {
go func() {
var tIDs []string
- if err := thresholdS.Call(utils.ThresholdSv1ProcessEvent, &ArgsProcessEvent{CGREvent: cgrEv}, &tIDs); err != nil &&
+ if err := connMgr.Call(config.CgrConfig().RalsCfg().ThresholdSConns,
+ utils.ThresholdSv1ProcessEvent, &ArgsProcessEvent{CGREvent: cgrEv}, &tIDs); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
utils.Logger.Warning(
fmt.Sprintf(" error: %s processing balance event %+v with ThresholdS.",
@@ -840,9 +842,10 @@ func (bc Balances) SaveDirtyBalances(acc *Account) {
if !b.ExpirationDate.IsZero() {
thEv.Event[utils.ExpiryTime] = b.ExpirationDate.Format(time.RFC3339)
}
- if thresholdS != nil {
+ if len(config.CgrConfig().RalsCfg().ThresholdSConns) != 0 {
var tIDs []string
- if err := thresholdS.Call(utils.ThresholdSv1ProcessEvent, thEv, &tIDs); err != nil &&
+ if err := connMgr.Call(config.CgrConfig().RalsCfg().ThresholdSConns,
+ utils.ThresholdSv1ProcessEvent, thEv, &tIDs); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
utils.Logger.Warning(
fmt.Sprintf(" error: %s processing balance event %+v with ThresholdS.",
@@ -855,7 +858,7 @@ func (bc Balances) SaveDirtyBalances(acc *Account) {
savedAccounts[b.account.ID] = b.account
}
}
- if len(savedAccounts) != 0 && thresholdS != nil {
+ if len(savedAccounts) != 0 && len(config.CgrConfig().RalsCfg().ThresholdSConns) != 0 {
for _, acnt := range savedAccounts {
acntTnt := utils.NewTenantID(acnt.ID)
thEv := &ArgsProcessEvent{
@@ -869,7 +872,8 @@ func (bc Balances) SaveDirtyBalances(acc *Account) {
utils.AllowNegative: acnt.AllowNegative,
utils.Disabled: acnt.Disabled}}}
var tIDs []string
- if err := thresholdS.Call(utils.ThresholdSv1ProcessEvent, thEv, &tIDs); err != nil &&
+ if err := connMgr.Call(config.CgrConfig().RalsCfg().ThresholdSConns,
+ utils.ThresholdSv1ProcessEvent, thEv, &tIDs); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
utils.Logger.Warning(
fmt.Sprintf(" error: %s processing account event %+v with ThresholdS.", err.Error(), thEv))
diff --git a/engine/calldesc.go b/engine/calldesc.go
index 7ab6c933e..d1653a6a5 100644
--- a/engine/calldesc.go
+++ b/engine/calldesc.go
@@ -57,9 +57,8 @@ var (
cdrStorage CdrStorage
debitPeriod = 10 * time.Second
globalRoundingDecimals = 6
- thresholdS rpcclient.ClientConnector // used by RALs to communicate with ThresholdS
- statS rpcclient.ClientConnector
- schedCdrsConns rpcclient.ClientConnector
+ connMgr *ConnManager
+ schedCdrsConns rpcclient.RpcClientConnection
rpSubjectPrefixMatching bool
)
@@ -68,12 +67,9 @@ func SetDataStorage(dm2 *DataManager) {
dm = dm2
}
-func SetThresholdS(thdS rpcclient.ClientConnector) {
- thresholdS = thdS
-}
-
-func SetStatS(stsS rpcclient.ClientConnector) {
- statS = stsS
+// SetConnManager is the exported method to set the connectionManager used when operate on an account.
+func SetConnManager(conMgr *ConnManager) {
+ connMgr = conMgr
}
// SetRoundingDecimals sets the global rounding method and decimal precision for GetCost method
diff --git a/engine/cdre.go b/engine/cdre.go
index 99c259c64..253ee3eb8 100644
--- a/engine/cdre.go
+++ b/engine/cdre.go
@@ -34,7 +34,6 @@ import (
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/utils"
- "github.com/cgrates/rpcclient"
)
const (
@@ -54,7 +53,7 @@ const (
func NewCDRExporter(cdrs []*CDR, exportTemplate *config.CdreCfg, exportFormat, exportPath, fallbackPath, exportID string,
synchronous bool, attempts int, fieldSeparator rune,
- httpSkipTlsCheck bool, httpPoster *HTTPPoster, attrS rpcclient.ClientConnector, filterS *FilterS) (*CDRExporter, error) {
+ httpSkipTlsCheck bool, httpPoster *HTTPPoster, attrsConns []string, filterS *FilterS) (*CDRExporter, error) {
if len(cdrs) == 0 { // Nothing to export
return nil, nil
}
@@ -71,7 +70,7 @@ func NewCDRExporter(cdrs []*CDR, exportTemplate *config.CdreCfg, exportFormat, e
httpSkipTlsCheck: httpSkipTlsCheck,
httpPoster: httpPoster,
negativeExports: make(map[string]string),
- attrS: attrS,
+ attrsConns: attrsConns,
filterS: filterS,
}
return cdre, nil
@@ -103,8 +102,8 @@ type CDRExporter struct {
positiveExports []string // CGRIDs of successfully exported CDRs
negativeExports map[string]string // CGRIDs of failed exports
- attrS rpcclient.ClientConnector
- filterS *FilterS
+ attrsConns []string
+ filterS *FilterS
}
// Handle various meta functions used in header/trailer
@@ -302,7 +301,7 @@ func (cdre *CDRExporter) processCDR(cdr *CDR) (err error) {
}
// send the cdr to be processed by attributeS
if cdre.exportTemplate.AttributeSContext != utils.EmptyString {
- if cdre.attrS == nil {
+ if len(cdre.attrsConns) == 0 {
return errors.New("no connection to AttributeS")
}
args := &AttrArgsProcessEvent{
@@ -310,7 +309,8 @@ func (cdre *CDRExporter) processCDR(cdr *CDR) (err error) {
CGREvent: cdr.AsCGREvent(),
}
var evReply AttrSProcessEventReply
- if err = cdre.attrS.Call(utils.AttributeSv1ProcessEvent,
+ if err = connMgr.Call(cdre.attrsConns,
+ utils.AttributeSv1ProcessEvent,
args, &evReply); err != nil {
return err
}
diff --git a/engine/cdrs.go b/engine/cdrs.go
index 41051d1f0..23f0021d5 100644
--- a/engine/cdrs.go
+++ b/engine/cdrs.go
@@ -437,7 +437,7 @@ func (cdrS *CDRServer) exportCDRs(cdrs []*CDR) (err error) {
expTpl.ExportPath, cdrS.cgrCfg.GeneralCfg().FailedPostsDir,
"CDRSReplication", expTpl.Synchronous, expTpl.Attempts,
expTpl.FieldSeparator, cdrS.cgrCfg.GeneralCfg().HttpSkipTlsVerify, cdrS.httpPoster,
- cdrS.attrS, cdrS.filterS); err != nil {
+ cdrS.cgrCfg.ApierCfg().AttributeSConns, cdrS.filterS); err != nil { // DON"T FORHERT TO TAKE ATTRIBUTESC FROM CDRS
utils.Logger.Err(fmt.Sprintf(" Building CDRExporter for online exports got error: <%s>", err.Error()))
continue
}
diff --git a/engine/libtest.go b/engine/libtest.go
index cb6111974..2edb09368 100644
--- a/engine/libtest.go
+++ b/engine/libtest.go
@@ -31,7 +31,6 @@ import (
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/utils"
"github.com/cgrates/ltcache"
- "github.com/cgrates/rpcclient"
"github.com/creack/pty"
)
@@ -376,8 +375,9 @@ func StopStartEngine(cfgPath string, waitEngine int) (*exec.Cmd, error) {
}
func LoadTariffPlanFromFolder(tpPath, timezone string, dm *DataManager, disable_reverse bool,
- cacheS rpcclient.ClientConnector, schedulerS rpcclient.ClientConnector) error {
- loader, err := NewTpReader(dm.dataDB, NewFileCSVStorage(utils.CSV_SEP, tpPath, false), "", timezone, cacheS, schedulerS)
+ cacheConns, schedConns []string) error {
+ loader, err := NewTpReader(dm.dataDB, NewFileCSVStorage(utils.CSV_SEP, tpPath, false), "",
+ timezone, cacheConns, schedConns)
if err != nil {
return utils.NewErrServerError(err)
}
diff --git a/engine/tpreader.go b/engine/tpreader.go
index b3063e6cf..27bc02990 100644
--- a/engine/tpreader.go
+++ b/engine/tpreader.go
@@ -62,13 +62,13 @@ type TpReader struct {
thresholds []*utils.TenantID // IDs of thresholds which need creation based on thresholdProfiles
revDests,
acntActionPlans map[string][]string
- cacheS rpcclient.ClientConnector
- schedulerS rpcclient.ClientConnector
+ cacheConns []string
+ schedulerConns []string
}
func NewTpReader(db DataDB, lr LoadReader, tpid, timezone string,
- cacheS rpcclient.ClientConnector, schedulerS rpcclient.ClientConnector) (*TpReader, error) {
- var rmtConns, rplConns *rpcclient.RPCPool
+ cacheConns, schedulerConns []string) (*TpReader, error) {
+ var rmtConns, rplConns *rpcclient.RpcClientPool
if len(config.CgrConfig().DataDbCfg().RmtConns) != 0 {
var err error
rmtConns, err = NewRPCPool(rpcclient.PoolFirstPositive, config.CgrConfig().TlsCfg().ClientKey,
@@ -92,12 +92,12 @@ func NewTpReader(db DataDB, lr LoadReader, tpid, timezone string,
}
}
tpr := &TpReader{
- tpid: tpid,
- timezone: timezone,
- dm: NewDataManager(db, config.CgrConfig().CacheCfg(), rmtConns, rplConns), // ToDo: add ChacheCfg as parameter to the NewTpReader
- lr: lr,
- cacheS: cacheS,
- schedulerS: schedulerS,
+ tpid: tpid,
+ timezone: timezone,
+ dm: NewDataManager(db, config.CgrConfig().CacheCfg(), rmtConns, rplConns), // ToDo: add ChacheCfg as parameter to the NewTpReader
+ lr: lr,
+ cacheConns: cacheConns,
+ schedulerConns: schedulerConns,
}
tpr.Init()
//add *any and *asap timing tag (in case of no timings file)
@@ -2385,7 +2385,7 @@ func (tpr *TpReader) RemoveFromDatabase(verbose, disable_reverse bool) (err erro
}
func (tpr *TpReader) ReloadCache(caching string, verbose bool, argDispatcher *utils.ArgDispatcher) (err error) {
- if tpr.cacheS == nil {
+ if len(tpr.cacheConns) == 0 {
log.Print("Disabled automatic reload")
return
}
@@ -2450,20 +2450,20 @@ func (tpr *TpReader) ReloadCache(caching string, verbose bool, argDispatcher *ut
case utils.META_NONE:
return
case utils.MetaReload:
- if err = tpr.cacheS.Call(utils.CacheSv1ReloadCache, cacheArgs, &reply); err != nil {
+ if err = connMgr.Call(tpr.cacheConns, utils.CacheSv1ReloadCache, cacheArgs, &reply); err != nil {
return
}
case utils.MetaLoad:
- if err = tpr.cacheS.Call(utils.CacheSv1LoadCache, cacheArgs, &reply); err != nil {
+ if err = connMgr.Call(tpr.cacheConns, utils.CacheSv1LoadCache, cacheArgs, &reply); err != nil {
return
}
case utils.MetaRemove:
- if err = tpr.cacheS.Call(utils.CacheSv1FlushCache, cacheArgs, &reply); err != nil {
+ if err = connMgr.Call(tpr.cacheConns, utils.CacheSv1FlushCache, cacheArgs, &reply); err != nil {
return
}
case utils.MetaClear:
cacheArgs.FlushAll = true
- if err = tpr.cacheS.Call(utils.CacheSv1FlushCache, cacheArgs, &reply); err != nil {
+ if err = connMgr.Call(tpr.cacheConns, utils.CacheSv1FlushCache, cacheArgs, &reply); err != nil {
return
}
}
@@ -2498,7 +2498,7 @@ func (tpr *TpReader) ReloadCache(caching string, verbose bool, argDispatcher *ut
ArgDispatcher: argDispatcher,
CacheIDs: cacheIDs,
}
- if err = tpr.cacheS.Call(utils.CacheSv1Clear, clearArgs, &reply); err != nil {
+ if err = connMgr.Call(tpr.cacheConns, utils.CacheSv1Clear, clearArgs, &reply); err != nil {
log.Printf("WARNING: Got error on cache clear: %s\n", err.Error())
}
@@ -2523,7 +2523,7 @@ func (tpr *TpReader) ReloadScheduler(verbose bool) (err error) {
if verbose {
log.Print("Reloading scheduler")
}
- if err = tpr.schedulerS.Call(utils.SchedulerSv1Reload,
+ if err = connMgr.Call(tpr.schedulerConns, utils.SchedulerSv1Reload,
new(utils.CGREventWithArgDispatcher), &reply); err != nil {
log.Printf("WARNING: Got error on scheduler reload: %s\n", err.Error())
}
diff --git a/general_tests/tut_smgeneric_it_test.go b/general_tests/tut_smgeneric_it_test.go
index 1c1f4fdfb..b0396a111 100644
--- a/general_tests/tut_smgeneric_it_test.go
+++ b/general_tests/tut_smgeneric_it_test.go
@@ -143,6 +143,7 @@ func testTutSMGCacheStats(t *testing.T) {
expectedStats[utils.CacheActionTriggers].Items = 1
expectedStats[utils.CacheLoadIDs].Items = 20
expectedStats[utils.CacheChargerProfiles].Items = 1
+ expectedStats[utils.CacheRPCConnections].Items = 2
if err := tutSMGRpc.Call(utils.CacheSv1GetCacheStats, new(utils.AttrCacheIDsWithArgDispatcher), &rcvStats); err != nil {
t.Error("Got error on CacheSv1.GetCacheStats: ", err.Error())
} else if !reflect.DeepEqual(expectedStats, rcvStats) {
diff --git a/services/apierv1.go b/services/apierv1.go
index b1157d0ea..6feb90820 100644
--- a/services/apierv1.go
+++ b/services/apierv1.go
@@ -32,23 +32,21 @@ import (
// NewApierV1Service returns the ApierV1 Service
func NewApierV1Service(cfg *config.CGRConfig, dm *DataDBService,
storDB *StorDBService, filterSChan chan *engine.FilterS,
- server *utils.Server, cacheSChan, schedChan, attrsChan,
- dispatcherChan chan rpcclient.ClientConnector,
+ server *utils.Server,
schedService *SchedulerService,
- responderService *ResponderService) *ApierV1Service {
+ responderService *ResponderService,
+ internalAPIerV1Chan chan rpcclient.RpcClientConnection,
+ connMgr *engine.ConnManager) *ApierV1Service {
return &ApierV1Service{
- connChan: make(chan rpcclient.ClientConnector, 1),
+ connChan: internalAPIerV1Chan,
cfg: cfg,
dm: dm,
storDB: storDB,
filterSChan: filterSChan,
server: server,
- cacheSChan: cacheSChan,
- schedChan: schedChan,
- attrsChan: attrsChan,
- dispatcherChan: dispatcherChan,
schedService: schedService,
responderService: responderService,
+ connMgr: connMgr,
}
}
@@ -60,12 +58,9 @@ type ApierV1Service struct {
storDB *StorDBService
filterSChan chan *engine.FilterS
server *utils.Server
- cacheSChan chan rpcclient.ClientConnector
- schedChan chan rpcclient.ClientConnector
- attrsChan chan rpcclient.ClientConnector
- dispatcherChan chan rpcclient.ClientConnector
schedService *SchedulerService
responderService *ResponderService
+ connMgr *engine.ConnManager
api *v1.ApierV1
connChan chan rpcclient.ClientConnector
@@ -84,28 +79,6 @@ func (api *ApierV1Service) Start() (err error) {
api.Lock()
defer api.Unlock()
- // create cache connection
- var cacheSrpc, schedulerSrpc, attributeSrpc rpcclient.ClientConnector
- if cacheSrpc, err = NewConnection(api.cfg, api.cacheSChan, api.dispatcherChan, api.cfg.ApierCfg().CachesConns); err != nil {
- utils.Logger.Crit(fmt.Sprintf("<%s> Could not connect to %s, error: %s",
- utils.ApierV1, utils.CacheS, err.Error()))
- return
- }
-
- // create scheduler connection
- if schedulerSrpc, err = NewConnection(api.cfg, api.schedChan, api.dispatcherChan, api.cfg.ApierCfg().SchedulerConns); err != nil {
- utils.Logger.Crit(fmt.Sprintf("<%s> Could not connect to %s, error: %s",
- utils.ApierV1, utils.SchedulerS, err.Error()))
- return
- }
-
- // create scheduler connection
- if attributeSrpc, err = NewConnection(api.cfg, api.attrsChan, api.dispatcherChan, api.cfg.ApierCfg().AttributeSConns); err != nil {
- utils.Logger.Crit(fmt.Sprintf("<%s> Could not connect to %s, error: %s",
- utils.ApierV1, utils.AttributeS, err.Error()))
- return
- }
-
api.api = &v1.ApierV1{
DataManager: api.dm.GetDM(),
CdrDb: api.storDB.GetDM(),
@@ -115,10 +88,9 @@ func (api *ApierV1Service) Start() (err error) {
SchedulerService: api.schedService,
HTTPPoster: engine.NewHTTPPoster(api.cfg.GeneralCfg().HttpSkipTlsVerify,
api.cfg.GeneralCfg().ReplyTimeout),
- FilterS: filterS,
- CacheS: cacheSrpc,
- SchedulerS: schedulerSrpc,
- AttributeS: attributeSrpc}
+ FilterS: filterS,
+ ConnMgr: api.connMgr,
+ }
if !api.cfg.DispatcherSCfg().Enabled {
api.server.RpcRegister(api.api)
@@ -141,33 +113,10 @@ func (api *ApierV1Service) GetIntenternalChan() (conn chan rpcclient.ClientConne
// Reload handles the change of config
func (api *ApierV1Service) Reload() (err error) {
- var cacheSrpc, schedulerSrpc, attributeSrpc rpcclient.ClientConnector
- if cacheSrpc, err = NewConnection(api.cfg, api.cacheSChan, api.dispatcherChan, api.cfg.ApierCfg().CachesConns); err != nil {
- utils.Logger.Crit(fmt.Sprintf("<%s> Could not connect to %s, error: %s",
- utils.ApierV1, utils.CacheS, err.Error()))
- return
- }
-
- // create scheduler connection
- if schedulerSrpc, err = NewConnection(api.cfg, api.schedChan, api.dispatcherChan, api.cfg.ApierCfg().SchedulerConns); err != nil {
- utils.Logger.Crit(fmt.Sprintf("<%s> Could not connect to %s, error: %s",
- utils.ApierV1, utils.SchedulerS, err.Error()))
- return
- }
-
- // create scheduler connection
- if attributeSrpc, err = NewConnection(api.cfg, api.attrsChan, api.dispatcherChan, api.cfg.ApierCfg().AttributeSConns); err != nil {
- utils.Logger.Crit(fmt.Sprintf("<%s> Could not connect to %s, error: %s",
- utils.ApierV1, utils.AttributeS, err.Error()))
- return
- }
api.Lock()
if api.storDB.WasReconnected() { // rewrite the connection if was changed
api.api.SetStorDB(api.storDB.GetDM())
}
- api.api.SetAttributeSConnection(attributeSrpc)
- api.api.SetCacheSConnection(cacheSrpc)
- api.api.SetSchedulerSConnection(schedulerSrpc)
api.Unlock()
return
}
diff --git a/services/apierv2.go b/services/apierv2.go
index 256791f11..dd2067db6 100644
--- a/services/apierv2.go
+++ b/services/apierv2.go
@@ -30,10 +30,11 @@ import (
// NewApierV2Service returns the ApierV2 Service
func NewApierV2Service(apiv1 *ApierV1Service, cfg *config.CGRConfig,
- server *utils.Server) *ApierV2Service {
+ server *utils.Server,
+ internalAPIerV1Chan chan rpcclient.RpcClientConnection) *ApierV2Service {
return &ApierV2Service{
apiv1: apiv1,
- connChan: make(chan rpcclient.ClientConnector, 1),
+ connChan: internalAPIerV1Chan,
cfg: cfg,
server: server,
}
diff --git a/services/cdrs_it_test.go b/services/cdrs_it_test.go
index 576eca4f2..7f6643b64 100644
--- a/services/cdrs_it_test.go
+++ b/services/cdrs_it_test.go
@@ -70,10 +70,9 @@ func TestCdrsReload(t *testing.T) {
stordb := NewStorDBService(cfg)
chrS := NewChargerService(cfg, db, chS, filterSChan, server, nil, nil)
schS := NewSchedulerService(cfg, db, chS, filterSChan, server, make(chan rpcclient.RpcClientConnection, 1), nil)
- tS := NewThresholdService(cfg, db, chS, filterSChan, server, make(chan rpcclient.RpcClientConnection, 1))
ralS := NewRalService(cfg, db, stordb, chS, filterSChan, server,
- tS.GetIntenternalChan(), internalChan, cacheSChan, internalChan, internalChan,
- internalChan, schS, engineShutdown)
+ make(chan rpcclient.RpcClientConnection, 1), make(chan rpcclient.RpcClientConnection, 1), make(chan rpcclient.RpcClientConnection, 1), make(chan rpcclient.RpcClientConnection, 1),
+ schS, engineShutdown, nil)
cdrS := NewCDRServer(cfg, db, stordb, filterSChan, server,
make(chan rpcclient.ClientConnector, 1),
chrS.GetIntenternalChan(), ralS.GetResponder().GetIntenternalChan(),
diff --git a/services/rals.go b/services/rals.go
index 54d2a615a..236396d63 100644
--- a/services/rals.go
+++ b/services/rals.go
@@ -33,19 +33,21 @@ import (
// NewRalService returns the Ral Service
func NewRalService(cfg *config.CGRConfig, dm *DataDBService,
storDB *StorDBService, cacheS *engine.CacheS, filterSChan chan *engine.FilterS, server *utils.Server,
- thsChan, stsChan, cacheSChan, schedChan, attrsChan, dispatcherChan chan rpcclient.ClientConnector,
- schedulerService *SchedulerService, exitChan chan bool) *RalService {
- resp := NewResponderService(cfg, server, thsChan, stsChan, dispatcherChan, exitChan)
- apiv1 := NewApierV1Service(cfg, dm, storDB, filterSChan, server, cacheSChan, schedChan, attrsChan, dispatcherChan, schedulerService, resp)
- apiv2 := NewApierV2Service(apiv1, cfg, server)
+ internalRALsChan, internalResponderChan, internalAPIerV1Chan, internalAPIerV2Chan chan rpcclient.RpcClientConnection,
+ schedulerService *SchedulerService, exitChan chan bool,
+ connMgr *engine.ConnManager) *RalService {
+ resp := NewResponderService(cfg, server, internalResponderChan, exitChan)
+ apiv1 := NewApierV1Service(cfg, dm, storDB, filterSChan, server, schedulerService, resp, internalAPIerV1Chan, connMgr)
+ apiv2 := NewApierV2Service(apiv1, cfg, server, internalAPIerV2Chan)
return &RalService{
- connChan: make(chan rpcclient.ClientConnector, 1),
+ connChan: internalRALsChan,
cfg: cfg,
cacheS: cacheS,
server: server,
apiv1: apiv1,
apiv2: apiv2,
responder: resp,
+ connMgr: connMgr,
}
}
@@ -60,6 +62,7 @@ type RalService struct {
apiv2 *ApierV2Service
responder *ResponderService
connChan chan rpcclient.ClientConnector
+ connMgr *engine.ConnManager
}
// Start should handle the sercive start
@@ -68,7 +71,7 @@ func (rals *RalService) Start() (err error) {
if rals.IsRunning() {
return fmt.Errorf("service aleady running")
}
-
+ engine.SetConnManager(rals.connMgr)
engine.SetRpSubjectPrefixMatching(rals.cfg.RalsCfg().RpSubjectPrefixMatching)
rals.Lock()
defer rals.Unlock()
diff --git a/services/rals_it_test.go b/services/rals_it_test.go
index ed1f2cf27..177f7855d 100644
--- a/services/rals_it_test.go
+++ b/services/rals_it_test.go
@@ -70,8 +70,8 @@ func TestRalsReload(t *testing.T) {
schS := NewSchedulerService(cfg, db, chS, filterSChan, server, make(chan rpcclient.RpcClientConnection, 1), nil)
tS := NewThresholdService(cfg, db, chS, filterSChan, server, make(chan rpcclient.RpcClientConnection, 1))
ralS := NewRalService(cfg, db, stordb, chS, filterSChan, server,
- tS.GetIntenternalChan(), internalChan, cacheSChan, internalChan, internalChan,
- internalChan, schS, engineShutdown)
+ make(chan rpcclient.RpcClientConnection, 1), make(chan rpcclient.RpcClientConnection, 1), make(chan rpcclient.RpcClientConnection, 1), make(chan rpcclient.RpcClientConnection, 1),
+ schS, engineShutdown, nil)
srvMngr.AddServices(NewConnManagerService(cfg, nil), ralS, schS, tS, NewLoaderService(cfg, db, filterSChan, server, cacheSChan, nil, engineShutdown), db, stordb)
if err = srvMngr.StartServices(); err != nil {
t.Error(err)
diff --git a/services/responders.go b/services/responders.go
index 841832065..2ab30588d 100644
--- a/services/responders.go
+++ b/services/responders.go
@@ -30,28 +30,22 @@ import (
// NewResponderService returns the Resonder Service
func NewResponderService(cfg *config.CGRConfig, server *utils.Server,
- thsChan, stsChan, dispatcherChan chan rpcclient.ClientConnector,
+ internalRALsChan chan rpcclient.RpcClientConnection,
exitChan chan bool) *ResponderService {
return &ResponderService{
- connChan: make(chan rpcclient.ClientConnector, 1),
- cfg: cfg,
- server: server,
- thsChan: thsChan,
- stsChan: stsChan,
- dispatcherChan: dispatcherChan,
- exitChan: exitChan,
+ connChan: internalRALsChan,
+ cfg: cfg,
+ server: server,
+ exitChan: exitChan,
}
}
// ResponderService implements Service interface
type ResponderService struct {
sync.RWMutex
- cfg *config.CGRConfig
- server *utils.Server
- thsChan chan rpcclient.ClientConnector
- stsChan chan rpcclient.ClientConnector
- dispatcherChan chan rpcclient.ClientConnector
- exitChan chan bool
+ cfg *config.CGRConfig
+ server *utils.Server
+ exitChan chan bool
resp *engine.Responder
connChan chan rpcclient.ClientConnector
@@ -64,23 +58,6 @@ func (resp *ResponderService) Start() (err error) {
return fmt.Errorf("service aleady running")
}
- var thdS, stats rpcclient.ClientConnector
- if thdS, err = NewConnection(resp.cfg, resp.thsChan, resp.dispatcherChan, resp.cfg.RalsCfg().ThresholdSConns); err != nil {
- utils.Logger.Crit(fmt.Sprintf("<%s> Could not connect to %s, error: %s",
- utils.RALService, utils.ThresholdS, err.Error()))
- return
- }
- if stats, err = NewConnection(resp.cfg, resp.stsChan, resp.dispatcherChan, resp.cfg.RalsCfg().StatSConns); err != nil {
- utils.Logger.Crit(fmt.Sprintf("<%s> Could not connect to %s, error: %s",
- utils.RALService, utils.StatS, err.Error()))
- return
- }
- if thdS != nil {
- engine.SetThresholdS(thdS) // temporary architectural fix until we will have separate AccountS
- }
- if stats != nil {
- engine.SetStatS(stats)
- }
resp.Lock()
defer resp.Unlock()
resp.resp = &engine.Responder{
@@ -105,25 +82,8 @@ func (resp *ResponderService) GetIntenternalChan() (conn chan rpcclient.ClientCo
// Reload handles the change of config
func (resp *ResponderService) Reload() (err error) {
- var thdS, stats rpcclient.ClientConnector
- if thdS, err = NewConnection(resp.cfg, resp.thsChan, resp.dispatcherChan, resp.cfg.RalsCfg().ThresholdSConns); err != nil {
- utils.Logger.Crit(fmt.Sprintf("<%s> Could not connect to %s, error: %s",
- utils.RALService, utils.ThresholdS, err.Error()))
- return
- }
- if stats, err = NewConnection(resp.cfg, resp.stsChan, resp.dispatcherChan, resp.cfg.RalsCfg().StatSConns); err != nil {
- utils.Logger.Crit(fmt.Sprintf("<%s> Could not connect to %s, error: %s",
- utils.RALService, utils.StatS, err.Error()))
- return
- }
resp.Lock()
resp.resp.MaxComputedUsage = resp.cfg.RalsCfg().MaxComputedUsage // this may cause concurrency problems
- if thdS != nil {
- engine.SetThresholdS(thdS) // temporary architectural fix until we will have separate AccountS
- }
- if stats != nil {
- engine.SetStatS(stats)
- }
resp.Unlock()
return
}
diff --git a/services/schedulers.go b/services/schedulers.go
index f42a2216d..edb377a3d 100644
--- a/services/schedulers.go
+++ b/services/schedulers.go
@@ -33,34 +33,32 @@ import (
// NewSchedulerService returns the Scheduler Service
func NewSchedulerService(cfg *config.CGRConfig, dm *DataDBService,
cacheS *engine.CacheS, fltrSChan chan *engine.FilterS,
- server *utils.Server, internalCDRServerChan,
- dispatcherChan chan rpcclient.ClientConnector) *SchedulerService {
+ server *utils.Server, internalSchedulerrSChan chan rpcclient.RpcClientConnection,
+ connMgr *engine.ConnManager) *SchedulerService {
return &SchedulerService{
- connChan: make(chan rpcclient.ClientConnector, 1),
- cfg: cfg,
- dm: dm,
- cacheS: cacheS,
- fltrSChan: fltrSChan,
- server: server,
- cdrSChan: internalCDRServerChan,
- dispatcherChan: dispatcherChan,
+ connChan: internalSchedulerrSChan,
+ cfg: cfg,
+ dm: dm,
+ cacheS: cacheS,
+ fltrSChan: fltrSChan,
+ server: server,
+ connMgr: connMgr,
}
}
// SchedulerService implements Service interface
type SchedulerService struct {
sync.RWMutex
- cfg *config.CGRConfig
- dm *DataDBService
- cacheS *engine.CacheS
- fltrSChan chan *engine.FilterS
- server *utils.Server
- cdrSChan chan rpcclient.ClientConnector
- dispatcherChan chan rpcclient.ClientConnector
+ cfg *config.CGRConfig
+ dm *DataDBService
+ cacheS *engine.CacheS
+ fltrSChan chan *engine.FilterS
+ server *utils.Server
schS *scheduler.Scheduler
rpc *v1.SchedulerSv1
connChan chan rpcclient.ClientConnector
+ connMgr *engine.ConnManager
}
// Start should handle the sercive start
@@ -86,16 +84,6 @@ func (schS *SchedulerService) Start() (err error) {
}
schS.connChan <- schS.rpc
- // Create connection to CDR Server and share it in engine(used for *cdrlog action)
- cdrsConn, err := NewConnection(schS.cfg, schS.cdrSChan, schS.dispatcherChan, schS.cfg.SchedulerCfg().CDRsConns)
- if err != nil {
- utils.Logger.Crit(fmt.Sprintf("<%s> Could not connect to CDRServer: %s", utils.SchedulerS, err.Error()))
- return
- }
-
- // ToDo: this should be send to scheduler
- engine.SetSchedCdrsConns(cdrsConn)
-
return
}
@@ -106,13 +94,6 @@ func (schS *SchedulerService) GetIntenternalChan() (conn chan rpcclient.ClientCo
// Reload handles the change of config
func (schS *SchedulerService) Reload() (err error) {
- cdrsConn, err := NewConnection(schS.cfg, schS.cdrSChan, schS.dispatcherChan, schS.cfg.SchedulerCfg().CDRsConns)
- if err != nil {
- utils.Logger.Crit(fmt.Sprintf("<%s> Could not connect to CDRServer: %s", utils.SchedulerS, err.Error()))
- return
- }
- // ToDo: this should be send to scheduler
- engine.SetSchedCdrsConns(cdrsConn)
schS.Lock()
schS.schS.Reload()
schS.Unlock()
diff --git a/services/schedulers_it_test.go b/services/schedulers_it_test.go
index 501d07ed5..b0eaaa8fb 100644
--- a/services/schedulers_it_test.go
+++ b/services/schedulers_it_test.go
@@ -45,11 +45,10 @@ func TestSchedulerSReload(t *testing.T) {
close(chS.GetPrecacheChannel(utils.CacheActionPlans))
server := utils.NewServer()
srvMngr := servmanager.NewServiceManager(cfg, engineShutdown)
- internalCdrSChan := make(chan rpcclient.ClientConnector, 1)
- internalCdrSChan <- nil
db := NewDataDBService(cfg)
- schS := NewSchedulerService(cfg, db, chS, filterSChan, server, internalCdrSChan, nil)
- srvMngr.AddServices(NewConnManagerService(cfg, nil), schS, NewLoaderService(cfg, db, filterSChan, server, nil, nil, engineShutdown), db)
+ schS := NewSchedulerService(cfg, db, chS, filterSChan, server, make(chan rpcclient.RpcClientConnection, 1), nil)
+ srvMngr.AddServices(NewConnManagerService(cfg, nil), schS,
+ NewLoaderService(cfg, db, filterSChan, server, nil, nil, engineShutdown), db)
if err = srvMngr.StartServices(); err != nil {
t.Error(err)
}
diff --git a/services/sessions_it_test.go b/services/sessions_it_test.go
index 10da6ee38..3d747a268 100644
--- a/services/sessions_it_test.go
+++ b/services/sessions_it_test.go
@@ -73,8 +73,8 @@ func TestSessionSReload(t *testing.T) {
chrS := NewChargerService(cfg, db, chS, filterSChan, server, make(chan rpcclient.RpcClientConnection, 1), nil)
schS := NewSchedulerService(cfg, db, chS, filterSChan, server, make(chan rpcclient.RpcClientConnection, 1), nil)
ralS := NewRalService(cfg, db, stordb, chS, filterSChan, server,
- /*tS*/ internalChan, internalChan, cacheSChan, internalChan, internalChan,
- internalChan, schS, engineShutdown)
+ make(chan rpcclient.RpcClientConnection, 1), make(chan rpcclient.RpcClientConnection, 1), make(chan rpcclient.RpcClientConnection, 1), make(chan rpcclient.RpcClientConnection, 1),
+ schS, engineShutdown, nil)
cdrS := NewCDRServer(cfg, db, stordb, filterSChan, server,
make(chan rpcclient.ClientConnector, 1),
chrS.GetIntenternalChan(), ralS.GetResponder().GetIntenternalChan(),