mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-25 00:58:45 +05:00
Add usage opt in config for routes subsystem
This commit is contained in:
committed by
Dan Christian Bogos
parent
e104c2d297
commit
f8063c99d2
@@ -156,6 +156,7 @@ func newCGRConfig(config []byte) (cfg *CGRConfig, err error) {
|
||||
ProfileCount: []*utils.DynamicIntOpt{},
|
||||
Limit: []*utils.DynamicIntOpt{},
|
||||
Offset: []*utils.DynamicIntOpt{},
|
||||
Usage: []*utils.DynamicDecimalBigOpt{},
|
||||
}},
|
||||
sureTaxCfg: new(SureTaxCfg),
|
||||
dispatcherSCfg: new(DispatcherSCfg),
|
||||
|
||||
@@ -806,7 +806,10 @@ const CGRATES_CFG_JSON = `
|
||||
// },
|
||||
// "*offset": { //
|
||||
// "*default": 1,
|
||||
// },
|
||||
// },
|
||||
"*usage": { //
|
||||
"*default": "1m",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ import (
|
||||
"github.com/cgrates/birpc/context"
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
"github.com/cgrates/rpcclient"
|
||||
"github.com/ericlagergren/decimal"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -437,6 +438,12 @@ func testCGRConfigReloadSupplierS(t *testing.T) {
|
||||
},
|
||||
Limit: []*utils.DynamicIntOpt{},
|
||||
Offset: []*utils.DynamicIntOpt{},
|
||||
Usage: []*utils.DynamicDecimalBigOpt{
|
||||
{
|
||||
FilterIDs: []string{utils.MetaDefault},
|
||||
Value: decimal.New(int64(time.Minute), 0),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
if !reflect.DeepEqual(expAttr, cfg.RouteSCfg()) {
|
||||
|
||||
@@ -975,6 +975,9 @@ func TestDfRouteSJsonCfg(t *testing.T) {
|
||||
MaxCost: map[string]interface{}{
|
||||
utils.MetaDefault: utils.EmptyString,
|
||||
},
|
||||
Usage: map[string]string{
|
||||
utils.MetaDefault: "1m",
|
||||
},
|
||||
},
|
||||
}
|
||||
dfCgrJSONCfg, err := NewCgrJsonCfgFromBytes([]byte(CGRATES_CFG_JSON))
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -30,6 +30,7 @@ type RoutesOpts struct {
|
||||
Limit []*utils.DynamicIntOpt
|
||||
Offset []*utils.DynamicIntOpt
|
||||
ProfileCount []*utils.DynamicIntOpt
|
||||
Usage []*utils.DynamicDecimalBigOpt
|
||||
}
|
||||
|
||||
// RouteSCfg is the configuration of route service
|
||||
@@ -58,7 +59,7 @@ func (rts *RouteSCfg) Load(ctx *context.Context, jsnCfg ConfigDB, _ *CGRConfig)
|
||||
return rts.loadFromJSONCfg(jsnRouteSCfg)
|
||||
}
|
||||
|
||||
func (rtsOpts *RoutesOpts) loadFromJSONCfg(jsnCfg *RoutesOptsJson) {
|
||||
func (rtsOpts *RoutesOpts) loadFromJSONCfg(jsnCfg *RoutesOptsJson) (err error) {
|
||||
if jsnCfg == nil {
|
||||
return
|
||||
}
|
||||
@@ -80,6 +81,14 @@ func (rtsOpts *RoutesOpts) loadFromJSONCfg(jsnCfg *RoutesOptsJson) {
|
||||
if jsnCfg.ProfileCount != nil {
|
||||
rtsOpts.ProfileCount = append(rtsOpts.ProfileCount, utils.MapToDynamicIntOpts(jsnCfg.ProfileCount)...)
|
||||
}
|
||||
if jsnCfg.Usage != nil {
|
||||
var usage []*utils.DynamicDecimalBigOpt
|
||||
if usage, err = utils.MapToDynamicDecimalBigOpts(jsnCfg.Usage); err != nil {
|
||||
return
|
||||
}
|
||||
rtsOpts.Usage = append(rtsOpts.Usage, usage...)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (rts *RouteSCfg) loadFromJSONCfg(jsnCfg *RouteSJsonCfg) (err error) {
|
||||
@@ -119,12 +128,12 @@ func (rts *RouteSCfg) loadFromJSONCfg(jsnCfg *RouteSJsonCfg) (err error) {
|
||||
if jsnCfg.Default_ratio != nil {
|
||||
rts.DefaultRatio = *jsnCfg.Default_ratio
|
||||
}
|
||||
if jsnCfg.Opts != nil {
|
||||
rts.Opts.loadFromJSONCfg(jsnCfg.Opts)
|
||||
}
|
||||
if jsnCfg.Nested_fields != nil {
|
||||
rts.NestedFields = *jsnCfg.Nested_fields
|
||||
}
|
||||
if jsnCfg.Opts != nil {
|
||||
err = rts.Opts.loadFromJSONCfg(jsnCfg.Opts)
|
||||
}
|
||||
return
|
||||
}
|
||||
func (rts *RoutesOpts) Clone() (cln *RoutesOpts) {
|
||||
@@ -152,6 +161,10 @@ func (rts *RoutesOpts) Clone() (cln *RoutesOpts) {
|
||||
if rts.Offset != nil {
|
||||
offset = utils.CloneDynamicIntOpt(rts.Offset)
|
||||
}
|
||||
var usage []*utils.DynamicDecimalBigOpt
|
||||
if rts.Usage != nil {
|
||||
usage = utils.CloneDynamicDecimalBigOpt(rts.Usage)
|
||||
}
|
||||
cln = &RoutesOpts{
|
||||
Context: context,
|
||||
IgnoreErrors: ignoreErrors,
|
||||
@@ -159,6 +172,7 @@ func (rts *RoutesOpts) Clone() (cln *RoutesOpts) {
|
||||
Limit: limit,
|
||||
Offset: offset,
|
||||
ProfileCount: profileCount,
|
||||
Usage: usage,
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -172,6 +186,7 @@ func (rts RouteSCfg) AsMapInterface(string) interface{} {
|
||||
utils.MetaMaxCostCfg: utils.DynamicInterfaceOptsToMap(rts.Opts.MaxCost),
|
||||
utils.MetaLimitCfg: utils.DynamicIntOptsToMap(rts.Opts.Limit),
|
||||
utils.MetaOffsetCfg: utils.DynamicIntOptsToMap(rts.Opts.Offset),
|
||||
utils.MetaUsage: utils.DynamicDecimalBigOptsToMap(rts.Opts.Usage),
|
||||
}
|
||||
|
||||
mp := map[string]interface{}{
|
||||
@@ -254,6 +269,7 @@ type RoutesOptsJson struct {
|
||||
Limit map[string]int `json:"*limit"`
|
||||
Offset map[string]int `json:"*offset"`
|
||||
ProfileCount map[string]int `json:"*profileCount"`
|
||||
Usage map[string]string `json:"*usage"`
|
||||
}
|
||||
|
||||
// Route service config section
|
||||
@@ -295,6 +311,9 @@ func diffRoutesOptsJsonCfg(d *RoutesOptsJson, v1, v2 *RoutesOpts) *RoutesOptsJso
|
||||
if !utils.DynamicIntOptEqual(v1.ProfileCount, v2.ProfileCount) {
|
||||
d.ProfileCount = utils.DynamicIntOptsToMap(v2.ProfileCount)
|
||||
}
|
||||
if !utils.DynamicDecimalBigOptEqual(v1.Usage, v2.Usage) {
|
||||
d.Usage = utils.DynamicDecimalBigOptsToMap(v2.Usage)
|
||||
}
|
||||
return d
|
||||
}
|
||||
|
||||
|
||||
@@ -20,8 +20,10 @@ package config
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
"github.com/ericlagergren/decimal"
|
||||
)
|
||||
|
||||
func TestRouteSCfgloadFromJsonCfg(t *testing.T) {
|
||||
@@ -79,6 +81,12 @@ func TestRouteSCfgloadFromJsonCfg(t *testing.T) {
|
||||
},
|
||||
Limit: []*utils.DynamicIntOpt{},
|
||||
Offset: []*utils.DynamicIntOpt{},
|
||||
Usage: []*utils.DynamicDecimalBigOpt{
|
||||
{
|
||||
FilterIDs: []string{utils.MetaDefault},
|
||||
Value: decimal.New(int64(time.Minute), 0),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
jsonCfg := NewDefaultCGRConfig()
|
||||
@@ -120,6 +128,9 @@ func TestRouteSCfgAsMapInterface(t *testing.T) {
|
||||
utils.MetaMaxCostCfg: map[string]interface{}{
|
||||
utils.MetaDefault: utils.EmptyString,
|
||||
},
|
||||
utils.MetaUsage: map[string]string{
|
||||
utils.MetaDefault: decimal.New(int64(time.Minute), 0).String(),
|
||||
},
|
||||
},
|
||||
}
|
||||
if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil {
|
||||
@@ -175,6 +186,9 @@ func TestRouteSCfgAsMapInterface1(t *testing.T) {
|
||||
utils.MetaMaxCostCfg: map[string]interface{}{
|
||||
utils.MetaDefault: utils.EmptyString,
|
||||
},
|
||||
utils.MetaUsage: map[string]string{
|
||||
utils.MetaDefault: decimal.New(int64(time.Minute), 0).String(),
|
||||
},
|
||||
},
|
||||
}
|
||||
if cgrCfg, err := NewCGRConfigFromJSONStringWithDefaults(cfgJSONStr); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user