Fixed the config for loaders

This commit is contained in:
Trial97
2021-11-24 19:32:27 +02:00
committed by Dan Christian Bogos
parent fd5cf12eac
commit 6a3c682f42
32 changed files with 585 additions and 784 deletions

View File

@@ -98,7 +98,7 @@ func (aP *ActionProfile) Set(path []string, val interface{}, newBranch bool, _ s
path[0][7] == '[' && path[0][len(path[0])-1] == ']' {
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
aP.Targets[path[0][8:len(path[0])-1]] = utils.NewStringSet(valA)
aP.Targets[path[0][8:len(path[0])-1]] = utils.JoinStringSet(aP.Targets[path[0][8:len(path[0])-1]], utils.NewStringSet(valA))
return
}
return utils.ErrWrongPath
@@ -109,16 +109,20 @@ func (aP *ActionProfile) Set(path []string, val interface{}, newBranch bool, _ s
case utils.Schedule:
aP.Schedule = utils.IfaceAsString(val)
case utils.FilterIDs:
aP.FilterIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
aP.FilterIDs = append(aP.FilterIDs, valA...)
case utils.Weight:
aP.Weight, err = utils.IfaceAsFloat64(val)
if val != utils.EmptyString {
aP.Weight, err = utils.IfaceAsFloat64(val)
}
}
return
case 2:
if path[0] == utils.Targets {
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
aP.Targets[path[1]] = utils.NewStringSet(valA)
aP.Targets[path[1]] = utils.JoinStringSet(aP.Targets[path[1]], utils.NewStringSet(valA))
return
}
default:
@@ -173,11 +177,15 @@ func (aP *APAction) Set(path []string, val interface{}, newBranch bool) (err err
case utils.Type:
aP.Type = utils.IfaceAsString(val)
case utils.FilterIDs:
aP.FilterIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
aP.FilterIDs = append(aP.FilterIDs, valA...)
case utils.Blocker:
aP.Blocker, err = utils.IfaceAsBool(val)
case utils.TTL:
aP.TTL, err = utils.IfaceAsDuration(val)
case utils.Opts:
aP.Opts, err = utils.NewMapFromCSV(utils.IfaceAsString(val))
}
case 2:
switch path[0] {

View File

@@ -207,11 +207,15 @@ func (dP *DispatcherProfile) Set(path []string, val interface{}, newBranch bool,
case utils.ID:
dP.ID = utils.IfaceAsString(val)
case utils.FilterIDs:
dP.FilterIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
dP.FilterIDs = append(dP.FilterIDs, valA...)
case utils.Strategy:
dP.Strategy = utils.IfaceAsString(val)
case utils.Weight:
dP.Weight, err = utils.IfaceAsFloat64(val)
case utils.StrategyParams:
dP.StrategyParams, err = utils.NewMapFromCSV(utils.IfaceAsString(val))
}
case 2:
switch path[0] {
@@ -227,11 +231,15 @@ func (dP *DispatcherProfile) Set(path []string, val interface{}, newBranch bool,
case utils.ID:
dP.Hosts[len(dP.Hosts)-1].ID = utils.IfaceAsString(val)
case utils.FilterIDs:
dP.Hosts[len(dP.Hosts)-1].FilterIDs, err = utils.IfaceAsStringSlice(val)
case utils.Weights:
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
dP.Hosts[len(dP.Hosts)-1].FilterIDs = append(dP.Hosts[len(dP.Hosts)-1].FilterIDs, valA...)
case utils.Weight:
dP.Hosts[len(dP.Hosts)-1].Weight, err = utils.IfaceAsFloat64(val)
case utils.Blocker:
dP.Hosts[len(dP.Hosts)-1].Blocker, err = utils.IfaceAsBool(val)
case utils.Params:
dP.Hosts[len(dP.Hosts)-1].Params, err = utils.NewMapFromCSV(utils.IfaceAsString(val))
default:
if strings.HasPrefix(path[0], utils.Params) &&
path[0][6] == '[' && path[0][len(path[0])-1] == ']' {

View File

@@ -722,3 +722,17 @@ func (fltr *Filter) Set(path []string, val interface{}, newBranch bool, _ string
}
return
}
func (fltr *Filter) Compress() {
newRules := make([]*FilterRule, 0, len(fltr.Rules))
for i, flt := range fltr.Rules {
if i == 0 ||
newRules[len(newRules)-1].Type != flt.Type ||
newRules[len(newRules)-1].Element != flt.Element {
newRules = append(newRules, flt)
continue
}
newRules[len(newRules)-1].Values = append(newRules[len(newRules)-1].Values, flt.Values...)
}
fltr.Rules = newRules
}

View File

@@ -196,11 +196,15 @@ func (ap *AttributeProfile) Set(path []string, val interface{}, newBranch bool,
case utils.ID:
ap.ID = utils.IfaceAsString(val)
case utils.FilterIDs:
ap.FilterIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
ap.FilterIDs = append(ap.FilterIDs, valA...)
case utils.Blocker:
ap.Blocker, err = utils.IfaceAsBool(val)
case utils.Weight:
ap.Weight, err = utils.IfaceAsFloat64(val)
if val != utils.EmptyString {
ap.Weight, err = utils.IfaceAsFloat64(val)
}
default:
return utils.ErrWrongPath
}
@@ -213,7 +217,9 @@ func (ap *AttributeProfile) Set(path []string, val interface{}, newBranch bool,
}
switch path[1] {
case utils.FilterIDs:
ap.Attributes[len(ap.Attributes)-1].FilterIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
ap.Attributes[len(ap.Attributes)-1].FilterIDs = append(ap.Attributes[len(ap.Attributes)-1].FilterIDs, valA...)
case utils.Path:
ap.Attributes[len(ap.Attributes)-1].Path = utils.IfaceAsString(val)
case utils.Type:

View File

@@ -64,11 +64,15 @@ func (cp *ChargerProfile) Set(path []string, val interface{}, newBranch bool, _
case utils.ID:
cp.ID = utils.IfaceAsString(val)
case utils.FilterIDs:
cp.FilterIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
cp.FilterIDs = append(cp.FilterIDs, valA...)
case utils.RunID:
cp.RunID = utils.IfaceAsString(val)
case utils.AttributeIDs:
cp.AttributeIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
cp.AttributeIDs = append(cp.AttributeIDs, valA...)
case utils.Weight:
cp.Weight, err = utils.IfaceAsFloat64(val)
}

View File

@@ -566,9 +566,13 @@ func (sqp *StatQueueProfile) Set(path []string, val interface{}, newBranch bool,
case utils.Weight:
sqp.Weight, err = utils.IfaceAsFloat64(val)
case utils.FilterIDs:
sqp.FilterIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
sqp.FilterIDs = append(sqp.FilterIDs, valA...)
case utils.ThresholdIDs:
sqp.ThresholdIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
sqp.ThresholdIDs = append(sqp.ThresholdIDs, valA...)
}
case 2:
if path[0] != utils.Metrics {
@@ -579,9 +583,15 @@ func (sqp *StatQueueProfile) Set(path []string, val interface{}, newBranch bool,
}
switch path[1] {
case utils.FilterIDs:
sqp.Metrics[len(sqp.Metrics)-1].FilterIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
sqp.Metrics[len(sqp.Metrics)-1].FilterIDs = append(sqp.Metrics[len(sqp.Metrics)-1].FilterIDs, valA...)
case utils.MetricID:
sqp.Metrics[len(sqp.Metrics)-1].MetricID = utils.IfaceAsString(val)
valA := utils.InfieldSplit(utils.IfaceAsString(val))
sqp.Metrics[len(sqp.Metrics)-1].MetricID = valA[0]
for _, mID := range valA[1:] { // add the rest of the metrics
sqp.Metrics = append(sqp.Metrics, &MetricWithFilters{MetricID: mID})
}
default:
return utils.ErrWrongPath
}

View File

@@ -1032,7 +1032,9 @@ func (rp *ResourceProfile) Set(path []string, val interface{}, _ bool, _ string)
case utils.ID:
rp.ID = utils.IfaceAsString(val)
case utils.FilterIDs:
rp.FilterIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
rp.FilterIDs = append(rp.FilterIDs, valA...)
case utils.UsageTTL:
rp.UsageTTL, err = utils.IfaceAsDuration(val)
case utils.Limit:
@@ -1046,7 +1048,9 @@ func (rp *ResourceProfile) Set(path []string, val interface{}, _ bool, _ string)
case utils.Weight:
rp.Weight, err = utils.IfaceAsFloat64(val)
case utils.ThresholdIDs:
rp.ThresholdIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
rp.ThresholdIDs = append(rp.ThresholdIDs, valA...)
}
return
}

View File

@@ -466,9 +466,13 @@ func (rp *RouteProfile) Set(path []string, val interface{}, newBranch bool, _ st
case utils.ID:
rp.ID = utils.IfaceAsString(val)
case utils.FilterIDs:
rp.FilterIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
rp.FilterIDs = append(rp.FilterIDs, valA...)
case utils.SortingParameters:
rp.SortingParameters, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
rp.SortingParameters = append(rp.SortingParameters, valA...)
case utils.Sorting:
rp.Sorting = utils.IfaceAsString(val)
case utils.Weights:
@@ -481,25 +485,36 @@ func (rp *RouteProfile) Set(path []string, val interface{}, newBranch bool, _ st
if len(rp.Routes) == 0 || newBranch {
rp.Routes = append(rp.Routes, new(Route))
}
rt := rp.Routes[len(rp.Routes)-1]
switch path[1] {
case utils.ID:
rp.Routes[len(rp.Routes)-1].ID = utils.IfaceAsString(val)
rt.ID = utils.IfaceAsString(val)
case utils.FilterIDs:
rp.Routes[len(rp.Routes)-1].FilterIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
rt.FilterIDs = append(rt.FilterIDs, valA...)
case utils.AccountIDs:
rp.Routes[len(rp.Routes)-1].AccountIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
rt.AccountIDs = append(rt.AccountIDs, valA...)
case utils.RateProfileIDs:
rp.Routes[len(rp.Routes)-1].RateProfileIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
rt.RateProfileIDs = append(rt.RateProfileIDs, valA...)
case utils.ResourceIDs:
rp.Routes[len(rp.Routes)-1].ResourceIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
rt.ResourceIDs = append(rt.ResourceIDs, valA...)
case utils.StatIDs:
rp.Routes[len(rp.Routes)-1].StatIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
rt.StatIDs = append(rt.StatIDs, valA...)
case utils.Weights:
rp.Routes[len(rp.Routes)-1].Weights, err = utils.NewDynamicWeightsFromString(utils.IfaceAsString(val), utils.InfieldSep, utils.ANDSep)
rt.Weights, err = utils.NewDynamicWeightsFromString(utils.IfaceAsString(val), utils.InfieldSep, utils.ANDSep)
case utils.Blocker:
rp.Routes[len(rp.Routes)-1].Blocker, err = utils.IfaceAsBool(val)
rt.Blocker, err = utils.IfaceAsBool(val)
case utils.RouteParameters:
rp.Routes[len(rp.Routes)-1].RouteParameters = utils.IfaceAsString(val)
rt.RouteParameters = utils.IfaceAsString(val)
default:
return utils.ErrWrongPath
}

View File

@@ -607,7 +607,9 @@ func (tp *ThresholdProfile) Set(path []string, val interface{}, _ bool, _ string
case utils.Weight:
tp.Weight, err = utils.IfaceAsFloat64(val)
case utils.FilterIDs:
tp.FilterIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
tp.FilterIDs = append(tp.FilterIDs, valA...)
case utils.MaxHits:
tp.MaxHits, err = utils.IfaceAsTInt(val)
case utils.MinHits:
@@ -615,7 +617,9 @@ func (tp *ThresholdProfile) Set(path []string, val interface{}, _ bool, _ string
case utils.MinSleep:
tp.MinSleep, err = utils.IfaceAsDuration(val)
case utils.ActionProfileIDs:
tp.ActionProfileIDs, err = utils.IfaceAsStringSlice(val)
var valA []string
valA, err = utils.IfaceAsStringSlice(val)
tp.ActionProfileIDs = append(tp.ActionProfileIDs, valA...)
case utils.Async:
tp.Async, err = utils.IfaceAsBool(val)
}