mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-20 14:48:43 +05:00
Updated config set
This commit is contained in:
committed by
Dan Christian Bogos
parent
de4101c2dc
commit
32dfcc0a46
@@ -30,8 +30,6 @@ import (
|
||||
"github.com/cgrates/fsock"
|
||||
)
|
||||
|
||||
// ToDo: Introduce support for RSRFields
|
||||
|
||||
const (
|
||||
varPrefix = "variable_"
|
||||
// Freswitch event proprities names
|
||||
|
||||
669
config/apis.go
669
config/apis.go
@@ -253,12 +253,10 @@ func (cfg *CGRConfig) V1SetConfig(ctx *context.Context, args *SetConfigArgs, rep
|
||||
return
|
||||
}
|
||||
|
||||
var mp map[string]interface{}
|
||||
var oldCfg *CGRConfig
|
||||
updateDB := cfg.db != nil
|
||||
if !args.DryRun && updateDB { // need to update the DB but only parts
|
||||
if err = cfg.V1GetConfig(ctx, &SectionWithAPIOpts{Sections: sections}, &mp); err != nil {
|
||||
return
|
||||
}
|
||||
oldCfg = cfg.Clone()
|
||||
}
|
||||
|
||||
cfgV := cfg
|
||||
@@ -283,7 +281,12 @@ func (cfg *CGRConfig) V1SetConfig(ctx *context.Context, args *SetConfigArgs, rep
|
||||
if !args.DryRun {
|
||||
cfgV.reloadSections(sections...)
|
||||
if updateDB { // need to update the DB but only parts
|
||||
// ToDo: add here the call
|
||||
dft := NewDefaultCGRConfig()
|
||||
for _, section := range sections {
|
||||
if err = storeDiff(ctx, section, cfg.db, dft, oldCfg, cfg); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
*reply = utils.OK
|
||||
@@ -314,12 +317,10 @@ func (cfg *CGRConfig) V1SetConfigFromJSON(ctx *context.Context, args *SetConfigF
|
||||
*reply = utils.OK
|
||||
return
|
||||
}
|
||||
var mp map[string]interface{}
|
||||
var oldCfg *CGRConfig
|
||||
updateDB := cfg.db != nil
|
||||
if !args.DryRun && updateDB { // need to update the DB but only parts
|
||||
if err = cfg.V1GetConfig(ctx, &SectionWithAPIOpts{Sections: sortedCfgSections}, &mp); err != nil {
|
||||
return
|
||||
}
|
||||
oldCfg = cfg.Clone()
|
||||
}
|
||||
cfgV := cfg
|
||||
if args.DryRun {
|
||||
@@ -341,7 +342,12 @@ func (cfg *CGRConfig) V1SetConfigFromJSON(ctx *context.Context, args *SetConfigF
|
||||
if !args.DryRun {
|
||||
cfgV.reloadSections(sortedCfgSections...)
|
||||
if updateDB { // need to update the DB but only parts
|
||||
// ToDo: add here the call
|
||||
dft := NewDefaultCGRConfig()
|
||||
for _, section := range sortedCfgSections {
|
||||
if err = storeDiff(ctx, section, cfg.db, dft, oldCfg, cfg); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
*reply = utils.OK
|
||||
@@ -411,16 +417,9 @@ func (cfg *CGRConfig) V1StoreCfgInDB(ctx *context.Context, args *SectionWithAPIO
|
||||
return errors.New("no DB connection for config")
|
||||
}
|
||||
if len(args.Sections) != 0 && args.Sections[0] != utils.MetaAll {
|
||||
dft := NewDefaultCGRConfig()
|
||||
for _, section := range args.Sections {
|
||||
var mp interface{}
|
||||
if mp, err = cfg.getSectionAsMap(section); err != nil {
|
||||
return
|
||||
}
|
||||
var cfgSec interface{}
|
||||
if cfgSec, err = prepareSectionFromMap(section, mp); err != nil {
|
||||
return
|
||||
}
|
||||
if err = cfg.db.SetSection(ctx, section, cfgSec); err != nil {
|
||||
if err = storeDiff(ctx, section, cfg.db, dft, nil, cfg); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -651,208 +650,530 @@ func (cfg *CGRConfig) V1StoreCfgInDB(ctx *context.Context, args *SectionWithAPIO
|
||||
return
|
||||
}
|
||||
|
||||
func prepareSectionFromMap(section string, mp interface{}) (cfgSec interface{}, err error) {
|
||||
var data []byte
|
||||
if data, err = json.Marshal(mp); err != nil {
|
||||
return
|
||||
}
|
||||
func storeDiff(ctx *context.Context, section string, db ConfigDB, dft, v1, v2 *CGRConfig) (err error) {
|
||||
switch section {
|
||||
case GeneralJSON:
|
||||
cfgSec = new(GeneralJsonCfg)
|
||||
var jsn *GeneralJsonCfg
|
||||
if jsn, err = db.GeneralJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.GeneralCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.GeneralCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffGeneralJsonCfg(jsn, g1, v2.GeneralCfg()))
|
||||
case RPCConnsJSON:
|
||||
cfgSec = new(RPCConnsJson)
|
||||
var jsn RPCConnsJson
|
||||
if jsn, err = db.RPCConnJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.RPCConns()
|
||||
if v1 != nil {
|
||||
g1 = v1.RPCConns()
|
||||
} else {
|
||||
g1.loadFromJSONCfg(jsn)
|
||||
}
|
||||
return db.SetSection(ctx, section, diffRPCConnsJson(jsn, g1, v2.RPCConns()))
|
||||
case CacheJSON:
|
||||
cfgSec = new(CacheJsonCfg)
|
||||
var jsn *CacheJsonCfg
|
||||
if jsn, err = db.CacheJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.CacheCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.CacheCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffCacheJsonCfg(jsn, g1, v2.CacheCfg()))
|
||||
case ListenJSON:
|
||||
cfgSec = new(ListenJsonCfg)
|
||||
var jsn *ListenJsonCfg
|
||||
if jsn, err = db.ListenJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.ListenCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.ListenCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffListenJsonCfg(jsn, g1, v2.ListenCfg()))
|
||||
case HTTPJSON:
|
||||
cfgSec = new(HTTPJsonCfg)
|
||||
var jsn *HTTPJsonCfg
|
||||
if jsn, err = db.HttpJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.HTTPCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.HTTPCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffHTTPJsonCfg(jsn, g1, v2.HTTPCfg()))
|
||||
case StorDBJSON:
|
||||
cfgSec = new(DbJsonCfg)
|
||||
var jsn *DbJsonCfg
|
||||
if jsn, err = db.DbJsonCfg(StorDBJSON); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.StorDbCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.StorDbCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffStorDBDbJsonCfg(jsn, g1, v2.StorDbCfg()))
|
||||
case DataDBJSON:
|
||||
cfgSec = new(DbJsonCfg)
|
||||
var jsn *DbJsonCfg
|
||||
if jsn, err = db.DbJsonCfg(DataDBJSON); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.DataDbCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.DataDbCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffDataDbJsonCfg(jsn, g1, v2.DataDbCfg()))
|
||||
case FilterSJSON:
|
||||
cfgSec = new(FilterSJsonCfg)
|
||||
var jsn *FilterSJsonCfg
|
||||
if jsn, err = db.FilterSJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.FilterSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.FilterSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffFilterSJsonCfg(jsn, g1, v2.FilterSCfg()))
|
||||
case CDRsJSON:
|
||||
cfgSec = new(CdrsJsonCfg)
|
||||
var jsn *CdrsJsonCfg
|
||||
if jsn, err = db.CdrsJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.CdrsCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.CdrsCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffCdrsJsonCfg(jsn, g1, v2.CdrsCfg()))
|
||||
case ERsJSON:
|
||||
cfgSec = new(ERsJsonCfg)
|
||||
var jsn *ERsJsonCfg
|
||||
if jsn, err = db.ERsJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.ERsCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.ERsCfg()
|
||||
} else {
|
||||
if err = dft.loadTemplateSCfg(db); err != nil {
|
||||
return
|
||||
}
|
||||
if err = g1.loadFromJSONCfg(jsn, dft.TemplatesCfg(), dft.GeneralCfg().RSRSep, dft.dfltEvRdr); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
return db.SetSection(ctx, section, diffERsJsonCfg(jsn, g1, v2.ERsCfg(), v2.GeneralCfg().RSRSep))
|
||||
case EEsJSON:
|
||||
cfgSec = new(EEsJsonCfg)
|
||||
var jsn *EEsJsonCfg
|
||||
if jsn, err = db.EEsJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.EEsCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.EEsCfg()
|
||||
} else {
|
||||
if err = dft.loadTemplateSCfg(db); err != nil {
|
||||
return
|
||||
}
|
||||
if err = g1.loadFromJSONCfg(jsn, dft.TemplatesCfg(), dft.GeneralCfg().RSRSep, dft.dfltEvExp); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
return db.SetSection(ctx, section, diffEEsJsonCfg(jsn, g1, v2.EEsCfg(), v2.GeneralCfg().RSRSep))
|
||||
case SessionSJSON:
|
||||
cfgSec = new(SessionSJsonCfg)
|
||||
var jsn *SessionSJsonCfg
|
||||
if jsn, err = db.SessionSJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.SessionSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.SessionSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffSessionSJsonCfg(jsn, g1, v2.SessionSCfg()))
|
||||
case FreeSWITCHAgentJSON:
|
||||
cfgSec = new(FreeswitchAgentJsonCfg)
|
||||
var jsn *FreeswitchAgentJsonCfg
|
||||
if jsn, err = db.FreeswitchAgentJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.FsAgentCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.FsAgentCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffFreeswitchAgentJsonCfg(jsn, g1, v2.FsAgentCfg()))
|
||||
case KamailioAgentJSON:
|
||||
cfgSec = new(KamAgentJsonCfg)
|
||||
var jsn *KamAgentJsonCfg
|
||||
if jsn, err = db.KamAgentJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.KamAgentCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.KamAgentCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffKamAgentJsonCfg(jsn, g1, v2.KamAgentCfg()))
|
||||
case AsteriskAgentJSON:
|
||||
cfgSec = new(AsteriskAgentJsonCfg)
|
||||
var jsn *AsteriskAgentJsonCfg
|
||||
if jsn, err = db.AsteriskAgentJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.AsteriskAgentCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.AsteriskAgentCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffAsteriskAgentJsonCfg(jsn, g1, v2.AsteriskAgentCfg()))
|
||||
case DiameterAgentJSON:
|
||||
cfgSec = new(DiameterAgentJsonCfg)
|
||||
var jsn *DiameterAgentJsonCfg
|
||||
if jsn, err = db.DiameterAgentJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.DiameterAgentCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.DiameterAgentCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn, dft.GeneralCfg().RSRSep); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffDiameterAgentJsonCfg(jsn, g1, v2.DiameterAgentCfg(), v2.GeneralCfg().RSRSep))
|
||||
case RadiusAgentJSON:
|
||||
cfgSec = new(RadiusAgentJsonCfg)
|
||||
var jsn *RadiusAgentJsonCfg
|
||||
if jsn, err = db.RadiusAgentJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.RadiusAgentCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.RadiusAgentCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn, dft.GeneralCfg().RSRSep); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffRadiusAgentJsonCfg(jsn, g1, v2.RadiusAgentCfg(), v2.GeneralCfg().RSRSep))
|
||||
case HTTPAgentJSON:
|
||||
cfgSec = new([]*HttpAgentJsonCfg)
|
||||
var jsn *RadiusAgentJsonCfg
|
||||
if jsn, err = db.RadiusAgentJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.RadiusAgentCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.RadiusAgentCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn, dft.GeneralCfg().RSRSep); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffRadiusAgentJsonCfg(jsn, g1, v2.RadiusAgentCfg(), v2.GeneralCfg().RSRSep))
|
||||
case DNSAgentJSON:
|
||||
cfgSec = new(DNSAgentJsonCfg)
|
||||
var jsn *DNSAgentJsonCfg
|
||||
if jsn, err = db.DNSAgentJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.DNSAgentCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.DNSAgentCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn, dft.GeneralCfg().RSRSep); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffDNSAgentJsonCfg(jsn, g1, v2.DNSAgentCfg(), v2.GeneralCfg().RSRSep))
|
||||
case AttributeSJSON:
|
||||
cfgSec = new(AttributeSJsonCfg)
|
||||
var jsn *AttributeSJsonCfg
|
||||
if jsn, err = db.AttributeServJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.AttributeSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.AttributeSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffAttributeSJsonCfg(jsn, g1, v2.AttributeSCfg()))
|
||||
case ChargerSJSON:
|
||||
cfgSec = new(ChargerSJsonCfg)
|
||||
var jsn *ChargerSJsonCfg
|
||||
if jsn, err = db.ChargerServJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.ChargerSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.ChargerSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffChargerSJsonCfg(jsn, g1, v2.ChargerSCfg()))
|
||||
case ResourceSJSON:
|
||||
cfgSec = new(ResourceSJsonCfg)
|
||||
var jsn *ResourceSJsonCfg
|
||||
if jsn, err = db.ResourceSJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.ResourceSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.ResourceSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffResourceSJsonCfg(jsn, g1, v2.ResourceSCfg()))
|
||||
case StatSJSON:
|
||||
cfgSec = new(StatServJsonCfg)
|
||||
var jsn *StatServJsonCfg
|
||||
if jsn, err = db.StatSJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.StatSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.StatSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffStatServJsonCfg(jsn, g1, v2.StatSCfg()))
|
||||
case ThresholdSJSON:
|
||||
cfgSec = new(ThresholdSJsonCfg)
|
||||
var jsn *ThresholdSJsonCfg
|
||||
if jsn, err = db.ThresholdSJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.ThresholdSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.ThresholdSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffThresholdSJsonCfg(jsn, g1, v2.ThresholdSCfg()))
|
||||
case RouteSJSON:
|
||||
cfgSec = new(RouteSJsonCfg)
|
||||
var jsn *RouteSJsonCfg
|
||||
if jsn, err = db.RouteSJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.RouteSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.RouteSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffRouteSJsonCfg(jsn, g1, v2.RouteSCfg()))
|
||||
case LoaderSJSON:
|
||||
cfgSec = make([]*LoaderJsonCfg, 0)
|
||||
var jsn []*LoaderJsonCfg
|
||||
if jsn, err = db.LoaderJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
var g1 LoaderSCfgs
|
||||
if v1 != nil {
|
||||
g1 = v1.LoaderCfg()
|
||||
} else {
|
||||
if err = dft.loadTemplateSCfg(db); err != nil {
|
||||
return
|
||||
}
|
||||
if err = dft.loadLoaderSCfg(db); err != nil {
|
||||
return
|
||||
}
|
||||
g1 = dft.LoaderCfg()
|
||||
}
|
||||
return db.SetSection(ctx, section, diffLoadersJsonCfg(jsn, g1, v2.LoaderCfg(), v2.GeneralCfg().RSRSep))
|
||||
case SureTaxJSON:
|
||||
cfgSec = new(SureTaxJsonCfg)
|
||||
var jsn *SureTaxJsonCfg
|
||||
if jsn, err = db.SureTaxJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.SureTaxCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.SureTaxCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffSureTaxJsonCfg(jsn, g1, v2.SureTaxCfg(), v2.GeneralCfg().RSRSep))
|
||||
case DispatcherSJSON:
|
||||
cfgSec = new(DispatcherSJsonCfg)
|
||||
var jsn *DispatcherSJsonCfg
|
||||
if jsn, err = db.DispatcherSJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.DispatcherSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.DispatcherSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffDispatcherSJsonCfg(jsn, g1, v2.DispatcherSCfg()))
|
||||
case RegistrarCJSON:
|
||||
cfgSec = new(RegistrarCJsonCfgs)
|
||||
var jsn *RegistrarCJsonCfgs
|
||||
if jsn, err = db.RegistrarCJsonCfgs(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.RegistrarCCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.RegistrarCCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffRegistrarCJsonCfgs(jsn, g1, v2.RegistrarCCfg()))
|
||||
case LoaderJSON:
|
||||
cfgSec = new(LoaderCfgJson)
|
||||
var jsn *LoaderCfgJson
|
||||
if jsn, err = db.LoaderCfgJson(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.LoaderCgrCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.LoaderCgrCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffLoaderCfgJson(jsn, g1, v2.LoaderCgrCfg()))
|
||||
case MigratorJSON:
|
||||
cfgSec = new(MigratorCfgJson)
|
||||
var jsn *MigratorCfgJson
|
||||
if jsn, err = db.MigratorCfgJson(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.MigratorCgrCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.MigratorCgrCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffMigratorCfgJson(jsn, g1, v2.MigratorCgrCfg()))
|
||||
case TlsJSON:
|
||||
cfgSec = new(TlsJsonCfg)
|
||||
var jsn *TlsJsonCfg
|
||||
if jsn, err = db.TlsCfgJson(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.TLSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.TLSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffTlsJsonCfg(jsn, g1, v2.TLSCfg()))
|
||||
case AnalyzerSJSON:
|
||||
cfgSec = new(AnalyzerSJsonCfg)
|
||||
var jsn *AnalyzerSJsonCfg
|
||||
if jsn, err = db.AnalyzerCfgJson(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.AnalyzerSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.AnalyzerSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffAnalyzerSJsonCfg(jsn, g1, v2.AnalyzerSCfg()))
|
||||
case AdminSJSON:
|
||||
cfgSec = new(AdminSJsonCfg)
|
||||
var jsn *AdminSJsonCfg
|
||||
if jsn, err = db.AdminSCfgJson(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.AdminSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.AdminSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffAdminSJsonCfg(jsn, g1, v2.AdminSCfg()))
|
||||
case RateSJSON:
|
||||
cfgSec = new(RateSJsonCfg)
|
||||
var jsn *RateSJsonCfg
|
||||
if jsn, err = db.RateCfgJson(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.RateSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.RateSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffRateSJsonCfg(jsn, g1, v2.RateSCfg()))
|
||||
case SIPAgentJSON:
|
||||
cfgSec = new(SIPAgentJsonCfg)
|
||||
var jsn *SIPAgentJsonCfg
|
||||
if jsn, err = db.SIPAgentJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.SIPAgentCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.SIPAgentCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn, dft.GeneralCfg().RSRSep); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffSIPAgentJsonCfg(jsn, g1, v2.SIPAgentCfg(), v2.GeneralCfg().RSRSep))
|
||||
case TemplatesJSON:
|
||||
cfgSec = new(FcTemplatesJsonCfg)
|
||||
var jsn FcTemplatesJsonCfg
|
||||
if jsn, err = db.TemplateSJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
var g1 FCTemplates
|
||||
if v1 != nil {
|
||||
g1 = v1.TemplatesCfg()
|
||||
} else if err = dft.loadTemplateSCfg(db); err != nil {
|
||||
return
|
||||
} else {
|
||||
g1 = dft.TemplatesCfg()
|
||||
}
|
||||
return db.SetSection(ctx, section, diffFcTemplatesJsonCfg(jsn, g1, v2.TemplatesCfg(), v2.GeneralCfg().RSRSep))
|
||||
case ConfigSJSON:
|
||||
cfgSec = new(ConfigSCfgJson)
|
||||
var jsn *ConfigSCfgJson
|
||||
if jsn, err = db.ConfigSJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.ConfigSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.ConfigSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffConfigSCfgJson(jsn, g1, v2.ConfigSCfg()))
|
||||
case APIBanJSON:
|
||||
cfgSec = new(APIBanJsonCfg)
|
||||
var jsn *APIBanJsonCfg
|
||||
if jsn, err = db.ApiBanCfgJson(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.APIBanCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.APIBanCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffAPIBanJsonCfg(jsn, g1, v2.APIBanCfg()))
|
||||
case CoreSJSON:
|
||||
cfgSec = new(CoreSJsonCfg)
|
||||
var jsn *CoreSJsonCfg
|
||||
if jsn, err = db.CoreSJSON(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.CoreSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.CoreSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffCoreSJsonCfg(jsn, g1, v2.CoreSCfg()))
|
||||
case ActionSJSON:
|
||||
cfgSec = new(ActionSJsonCfg)
|
||||
var jsn *ActionSJsonCfg
|
||||
if jsn, err = db.ActionSCfgJson(); err != nil {
|
||||
return
|
||||
}
|
||||
g1 := dft.ActionSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.ActionSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
return db.SetSection(ctx, section, diffActionSJsonCfg(jsn, g1, v2.ActionSCfg()))
|
||||
case AccountSJSON:
|
||||
cfgSec = new(AccountSJsonCfg)
|
||||
}
|
||||
|
||||
err = json.Unmarshal(data, cfgSec)
|
||||
return
|
||||
}
|
||||
|
||||
func updateSections(ctx *context.Context, db ConfigDB, mp map[string]interface{}) (err error) {
|
||||
for section, val := range mp {
|
||||
var sec interface{}
|
||||
if sec, err = prepareSectionFromDB(section, db); err != nil {
|
||||
var jsn *AccountSJsonCfg
|
||||
if jsn, err = db.AccountSCfgJson(); err != nil {
|
||||
return
|
||||
}
|
||||
var data []byte
|
||||
if data, err = json.Marshal(val); err != nil {
|
||||
return
|
||||
}
|
||||
if err = json.Unmarshal(data, &sec); err != nil {
|
||||
return
|
||||
}
|
||||
if err = db.SetSection(ctx, section, sec); err != nil {
|
||||
g1 := dft.AccountSCfg()
|
||||
if v1 != nil {
|
||||
g1 = v1.AccountSCfg()
|
||||
} else if err = g1.loadFromJSONCfg(jsn); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func prepareSectionFromDB(section string, db ConfigDB) (cfgSec interface{}, err error) {
|
||||
switch section {
|
||||
case GeneralJSON:
|
||||
cfgSec, err = db.GeneralJsonCfg()
|
||||
case RPCConnsJSON:
|
||||
cfgSec, err = db.RPCConnJsonCfg()
|
||||
case CacheJSON:
|
||||
cfgSec, err = db.CacheJsonCfg()
|
||||
case ListenJSON:
|
||||
cfgSec, err = db.ListenJsonCfg()
|
||||
case HTTPJSON:
|
||||
cfgSec, err = db.HttpJsonCfg()
|
||||
case StorDBJSON:
|
||||
cfgSec, err = db.DbJsonCfg(StorDBJSON)
|
||||
case DataDBJSON:
|
||||
cfgSec, err = db.DbJsonCfg(DataDBJSON)
|
||||
case FilterSJSON:
|
||||
cfgSec, err = db.FilterSJsonCfg()
|
||||
case CDRsJSON:
|
||||
cfgSec, err = db.CdrsJsonCfg()
|
||||
case ERsJSON:
|
||||
cfgSec, err = db.ERsJsonCfg()
|
||||
case EEsJSON:
|
||||
cfgSec, err = db.EEsJsonCfg()
|
||||
case SessionSJSON:
|
||||
cfgSec, err = db.SessionSJsonCfg()
|
||||
case FreeSWITCHAgentJSON:
|
||||
cfgSec, err = db.FreeswitchAgentJsonCfg()
|
||||
case KamailioAgentJSON:
|
||||
cfgSec, err = db.KamAgentJsonCfg()
|
||||
case AsteriskAgentJSON:
|
||||
cfgSec, err = db.AsteriskAgentJsonCfg()
|
||||
case DiameterAgentJSON:
|
||||
cfgSec, err = db.DiameterAgentJsonCfg()
|
||||
case RadiusAgentJSON:
|
||||
cfgSec, err = db.RadiusAgentJsonCfg()
|
||||
case HTTPAgentJSON:
|
||||
cfgSec, err = db.HttpAgentJsonCfg()
|
||||
case DNSAgentJSON:
|
||||
cfgSec, err = db.DNSAgentJsonCfg()
|
||||
case AttributeSJSON:
|
||||
cfgSec, err = db.AttributeServJsonCfg()
|
||||
case ChargerSJSON:
|
||||
cfgSec, err = db.ChargerServJsonCfg()
|
||||
case ResourceSJSON:
|
||||
cfgSec, err = db.ResourceSJsonCfg()
|
||||
case StatSJSON:
|
||||
cfgSec, err = db.StatSJsonCfg()
|
||||
case ThresholdSJSON:
|
||||
cfgSec, err = db.ThresholdSJsonCfg()
|
||||
case RouteSJSON:
|
||||
cfgSec, err = db.RouteSJsonCfg()
|
||||
case LoaderSJSON:
|
||||
cfgSec, err = db.LoaderJsonCfg()
|
||||
case SureTaxJSON:
|
||||
cfgSec, err = db.SureTaxJsonCfg()
|
||||
case DispatcherSJSON:
|
||||
cfgSec, err = db.DispatcherSJsonCfg()
|
||||
case RegistrarCJSON:
|
||||
cfgSec, err = db.RegistrarCJsonCfgs()
|
||||
case LoaderJSON:
|
||||
cfgSec, err = db.LoaderCfgJson()
|
||||
case MigratorJSON:
|
||||
cfgSec, err = db.MigratorCfgJson()
|
||||
case TlsJSON:
|
||||
cfgSec, err = db.TlsCfgJson()
|
||||
case AnalyzerSJSON:
|
||||
cfgSec, err = db.AnalyzerCfgJson()
|
||||
case AdminSJSON:
|
||||
cfgSec, err = db.AdminSCfgJson()
|
||||
case RateSJSON:
|
||||
cfgSec, err = db.RateCfgJson()
|
||||
case SIPAgentJSON:
|
||||
cfgSec, err = db.SIPAgentJsonCfg()
|
||||
case TemplatesJSON:
|
||||
cfgSec, err = db.TemplateSJsonCfg()
|
||||
case ConfigSJSON:
|
||||
cfgSec, err = db.ConfigSJsonCfg()
|
||||
case APIBanJSON:
|
||||
cfgSec, err = db.ApiBanCfgJson()
|
||||
case CoreSJSON:
|
||||
cfgSec, err = db.CoreSJSON()
|
||||
case ActionSJSON:
|
||||
cfgSec, err = db.ActionSCfgJson()
|
||||
case AccountSJSON:
|
||||
cfgSec, err = db.AccountSCfgJson()
|
||||
return db.SetSection(ctx, section, diffAccountSJsonCfg(jsn, g1, v2.AccountSCfg()))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
2954
config/apis_test.go
2954
config/apis_test.go
File diff suppressed because it is too large
Load Diff
@@ -30,8 +30,6 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/cgrates/rpcclient"
|
||||
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
)
|
||||
|
||||
@@ -396,41 +394,7 @@ func (cfg *CGRConfig) loadRPCConns(jsnCfg ConfigDB) (err error) {
|
||||
if jsnRPCConns, err = jsnCfg.RPCConnJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
// hardoded the *internal connection
|
||||
cfg.rpcConns[utils.MetaInternal] = &RPCConn{
|
||||
Strategy: rpcclient.PoolFirst,
|
||||
PoolSize: 0,
|
||||
Conns: []*RemoteHost{{
|
||||
Address: utils.MetaInternal,
|
||||
}},
|
||||
}
|
||||
cfg.rpcConns[rpcclient.BiRPCInternal] = &RPCConn{
|
||||
Strategy: rpcclient.PoolFirst,
|
||||
PoolSize: 0,
|
||||
Conns: []*RemoteHost{{
|
||||
Address: rpcclient.BiRPCInternal,
|
||||
}},
|
||||
}
|
||||
cfg.rpcConns[utils.MetaLocalHost] = &RPCConn{
|
||||
Strategy: rpcclient.PoolFirst,
|
||||
PoolSize: 0,
|
||||
Conns: []*RemoteHost{{
|
||||
Address: "127.0.0.1:2012",
|
||||
Transport: utils.MetaJSON,
|
||||
}},
|
||||
}
|
||||
cfg.rpcConns[utils.MetaBiJSONLocalHost] = &RPCConn{
|
||||
Strategy: rpcclient.PoolFirst,
|
||||
PoolSize: 0,
|
||||
Conns: []*RemoteHost{{
|
||||
Address: "127.0.0.1:2014",
|
||||
Transport: rpcclient.BiRPCJSON,
|
||||
}},
|
||||
}
|
||||
for key, val := range jsnRPCConns {
|
||||
cfg.rpcConns[key] = NewDfltRPCConn()
|
||||
cfg.rpcConns[key].loadFromJSONCfg(val)
|
||||
}
|
||||
cfg.rpcConns.loadFromJSONCfg(jsnRPCConns)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -29,8 +29,8 @@ type LoaderCgrCfg struct {
|
||||
TpID string
|
||||
DataPath string
|
||||
DisableReverse bool
|
||||
FieldSeparator rune // The separator to use when reading csvs
|
||||
CachesConns []string // ToDoNext: add actions conn
|
||||
FieldSeparator rune // The separator to use when reading csvs
|
||||
CachesConns []string
|
||||
ActionSConns []string
|
||||
GapiCredentials json.RawMessage
|
||||
GapiToken json.RawMessage
|
||||
|
||||
@@ -39,6 +39,44 @@ func NewDfltRPCConn() *RPCConn {
|
||||
// RPCConns the config for all rpc pools
|
||||
type RPCConns map[string]*RPCConn
|
||||
|
||||
func (rC RPCConns) loadFromJSONCfg(jsn RPCConnsJson) {
|
||||
// hardoded the *internal connection
|
||||
rC[utils.MetaInternal] = &RPCConn{
|
||||
Strategy: rpcclient.PoolFirst,
|
||||
PoolSize: 0,
|
||||
Conns: []*RemoteHost{{
|
||||
Address: utils.MetaInternal,
|
||||
}},
|
||||
}
|
||||
rC[rpcclient.BiRPCInternal] = &RPCConn{
|
||||
Strategy: rpcclient.PoolFirst,
|
||||
PoolSize: 0,
|
||||
Conns: []*RemoteHost{{
|
||||
Address: rpcclient.BiRPCInternal,
|
||||
}},
|
||||
}
|
||||
rC[utils.MetaLocalHost] = &RPCConn{
|
||||
Strategy: rpcclient.PoolFirst,
|
||||
PoolSize: 0,
|
||||
Conns: []*RemoteHost{{
|
||||
Address: "127.0.0.1:2012",
|
||||
Transport: utils.MetaJSON,
|
||||
}},
|
||||
}
|
||||
rC[utils.MetaBiJSONLocalHost] = &RPCConn{
|
||||
Strategy: rpcclient.PoolFirst,
|
||||
PoolSize: 0,
|
||||
Conns: []*RemoteHost{{
|
||||
Address: "127.0.0.1:2014",
|
||||
Transport: rpcclient.BiRPCJSON,
|
||||
}},
|
||||
}
|
||||
for key, val := range jsn {
|
||||
rC[key] = NewDfltRPCConn()
|
||||
rC[key].loadFromJSONCfg(val)
|
||||
}
|
||||
}
|
||||
|
||||
// AsMapInterface returns the config as a map[string]interface{}
|
||||
func (rC RPCConns) AsMapInterface() (rpcConns map[string]interface{}) {
|
||||
rpcConns = make(map[string]interface{})
|
||||
|
||||
@@ -316,6 +316,13 @@ func (ms *MongoStorage) ensureIndexesForCol(col string) (err error) { // exporte
|
||||
if err = ms.enusureIndex(col, true, "id"); err != nil {
|
||||
return
|
||||
}
|
||||
//StorDB
|
||||
case utils.TBLTPStats, utils.TBLTPResources, utils.TBLTPDispatchers,
|
||||
utils.TBLTPDispatcherHosts, utils.TBLTPChargers,
|
||||
utils.TBLTPRoutes, utils.TBLTPThresholds:
|
||||
if err = ms.enusureIndex(col, true, "tpid", "id"); err != nil {
|
||||
return
|
||||
}
|
||||
case utils.CDRsTBL:
|
||||
if err = ms.enusureIndex(col, true, CGRIDLow, RunIDLow,
|
||||
OriginIDLow); err != nil {
|
||||
@@ -363,6 +370,16 @@ func (ms *MongoStorage) EnsureIndexes(cols ...string) (err error) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if ms.storageType == utils.StorDB {
|
||||
for _, col := range []string{utils.TBLTPStats, utils.TBLTPResources, utils.TBLTPDispatchers,
|
||||
utils.TBLTPDispatcherHosts, utils.TBLTPChargers,
|
||||
utils.TBLTPRoutes, utils.TBLTPThresholds,
|
||||
utils.CDRsTBL, utils.SessionCostsTBL} {
|
||||
if err = ms.ensureIndexesForCol(col); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user