mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
add ips flags to sessions cfg
This commit is contained in:
committed by
Dan Christian Bogos
parent
c031366a98
commit
132a23144a
@@ -148,6 +148,7 @@ func newCGRConfig(config []byte) (cfg *CGRConfig, err error) {
|
||||
CDRs: []*DynamicBoolOpt{{value: SessionsCDRsDftOpt}},
|
||||
Chargers: []*DynamicBoolOpt{{value: SessionsChargersDftOpt}},
|
||||
Resources: []*DynamicBoolOpt{{value: SessionsResourcesDftOpt}},
|
||||
IPs: []*DynamicBoolOpt{{value: SessionsIPsDftOpt}},
|
||||
Routes: []*DynamicBoolOpt{{value: SessionsRoutesDftOpt}},
|
||||
Stats: []*DynamicBoolOpt{{value: SessionsStatsDftOpt}},
|
||||
Thresholds: []*DynamicBoolOpt{{value: SessionsThresholdsDftOpt}},
|
||||
@@ -162,6 +163,9 @@ func newCGRConfig(config []byte) (cfg *CGRConfig, err error) {
|
||||
ResourcesAllocate: []*DynamicBoolOpt{{value: SessionsResourcesAllocateDftOpt}},
|
||||
ResourcesRelease: []*DynamicBoolOpt{{value: SessionsResourcesReleaseDftOpt}},
|
||||
ResourcesDerivedReply: []*DynamicBoolOpt{{value: SessionsResourcesDerivedReplyDftOpt}},
|
||||
IPsAuthorize: []*DynamicBoolOpt{{value: SessionsIPsAuthorizeDftOpt}},
|
||||
IPsAllocate: []*DynamicBoolOpt{{value: SessionsIPsAllocateDftOpt}},
|
||||
IPsRelease: []*DynamicBoolOpt{{value: SessionsIPsReleaseDftOpt}},
|
||||
RoutesDerivedReply: []*DynamicBoolOpt{{value: SessionsRoutesDerivedReplyDftOpt}},
|
||||
StatsDerivedReply: []*DynamicBoolOpt{{value: SessionsStatsDerivedReplyDftOpt}},
|
||||
ThresholdsDerivedReply: []*DynamicBoolOpt{{value: SessionsThresholdsDerivedReplyDftOpt}},
|
||||
|
||||
@@ -661,6 +661,7 @@ const CGRATES_CFG_JSON = `
|
||||
"chargers_conns": [], // connections to ChargerS for session forking <""|*internal|$rpc_conns_id>
|
||||
"cdrs_conns": [], // connections to CDRs for CDR posting <""|*internal|$rpc_conns_id>
|
||||
"resources_conns": [], // connections to ResourceS for resources monitoring <""|*internal|$rpc_conns_id>
|
||||
"ips_conns": [], // connections to IPs for monitoring ip usage <""|*internal|$rpc_conns_id>
|
||||
"thresholds_conns": [], // connections to ThresholdS for reporting session events <""|*internal|$rpc_conns_id>
|
||||
"stats_conns": [], // connections to StatS for reporting session events <""|*internal|$rpc_conns_id>
|
||||
"routes_conns": [], // connections to RouteS for querying routes for event <""|*internal|$rpc_conns_id>
|
||||
@@ -731,6 +732,13 @@ const CGRATES_CFG_JSON = `
|
||||
// "Value": false
|
||||
// }
|
||||
// ],
|
||||
// "*ips": [
|
||||
// {
|
||||
// "Tenant": "*any",
|
||||
// "FilterIDs": [],
|
||||
// "Value": false
|
||||
// }
|
||||
// ],
|
||||
// "*routes": [
|
||||
// {
|
||||
// "Tenant": "*any",
|
||||
@@ -829,6 +837,27 @@ const CGRATES_CFG_JSON = `
|
||||
// "Value": false
|
||||
// }
|
||||
// ],
|
||||
// "*ipsAuthorize": [
|
||||
// {
|
||||
// "Tenant": "*any",
|
||||
// "FilterIDs": [],
|
||||
// "Value": false
|
||||
// }
|
||||
// ],
|
||||
// "*ipsAllocate": [
|
||||
// {
|
||||
// "Tenant": "*any",
|
||||
// "FilterIDs": [],
|
||||
// "Value": false
|
||||
// }
|
||||
// ],
|
||||
// "*ipsRelease": [
|
||||
// {
|
||||
// "Tenant": "*any",
|
||||
// "FilterIDs": [],
|
||||
// "Value": false
|
||||
// }
|
||||
// ],
|
||||
// "*routesDerivedReply": [
|
||||
// {
|
||||
// "Tenant": "*any",
|
||||
|
||||
@@ -783,6 +783,7 @@ func testCGRConfigReloadConfigFromJSONSessionS(t *testing.T) {
|
||||
"sessions": map[string]any{
|
||||
"enabled": true,
|
||||
"resources_conns": []string{"*localhost"},
|
||||
"ips_conns": []string{"*localhost"},
|
||||
"routes_conns": []string{"*localhost"},
|
||||
"attributes_conns": []string{"*localhost"},
|
||||
"cdrs_conns": []string{"*internal"},
|
||||
@@ -799,6 +800,7 @@ func testCGRConfigReloadConfigFromJSONSessionS(t *testing.T) {
|
||||
ListenBijson: "127.0.0.1:2014",
|
||||
ChargerSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaChargers)},
|
||||
ResourceSConns: []string{utils.MetaLocalHost},
|
||||
IPsConns: []string{utils.MetaLocalHost},
|
||||
ThresholdSConns: []string{},
|
||||
StatSConns: []string{},
|
||||
AccountSConns: []string{},
|
||||
@@ -830,6 +832,7 @@ func testCGRConfigReloadConfigFromJSONSessionS(t *testing.T) {
|
||||
CDRs: []*DynamicBoolOpt{{}},
|
||||
Chargers: []*DynamicBoolOpt{{}},
|
||||
Resources: []*DynamicBoolOpt{{}},
|
||||
IPs: []*DynamicBoolOpt{{}},
|
||||
Routes: []*DynamicBoolOpt{{}},
|
||||
Stats: []*DynamicBoolOpt{{}},
|
||||
Thresholds: []*DynamicBoolOpt{{}},
|
||||
@@ -844,6 +847,9 @@ func testCGRConfigReloadConfigFromJSONSessionS(t *testing.T) {
|
||||
ResourcesAllocate: []*DynamicBoolOpt{{}},
|
||||
ResourcesRelease: []*DynamicBoolOpt{{}},
|
||||
ResourcesDerivedReply: []*DynamicBoolOpt{{}},
|
||||
IPsAuthorize: []*DynamicBoolOpt{{}},
|
||||
IPsAllocate: []*DynamicBoolOpt{{}},
|
||||
IPsRelease: []*DynamicBoolOpt{{}},
|
||||
RoutesDerivedReply: []*DynamicBoolOpt{{}},
|
||||
StatsDerivedReply: []*DynamicBoolOpt{{}},
|
||||
ThresholdsDerivedReply: []*DynamicBoolOpt{{}},
|
||||
@@ -872,14 +878,17 @@ func testCGRConfigReloadConfigFromStringSessionS(t *testing.T) {
|
||||
cfg.CdrsCfg().Enabled = true
|
||||
var reply string
|
||||
if err := cfg.V1SetConfigFromJSON(context.Background(), &SetConfigFromJSONArgs{
|
||||
Config: `{"sessions":{
|
||||
"enabled": true,
|
||||
"resources_conns": ["*localhost"],
|
||||
"routes_conns": ["*localhost"],
|
||||
"attributes_conns": ["*localhost"],
|
||||
"cdrs_conns": ["*internal"],
|
||||
"chargers_conns": ["*localhost"]
|
||||
}}`}, &reply); err != nil {
|
||||
Config: `{
|
||||
"sessions": {
|
||||
"enabled": true,
|
||||
"resources_conns": ["*localhost"],
|
||||
"ips_conns": ["*localhost"],
|
||||
"routes_conns": ["*localhost"],
|
||||
"attributes_conns": ["*localhost"],
|
||||
"cdrs_conns": ["*internal"],
|
||||
"chargers_conns": ["*localhost"]
|
||||
}
|
||||
}`}, &reply); err != nil {
|
||||
t.Error(err)
|
||||
} else if reply != utils.OK {
|
||||
t.Errorf("Expected OK received: %s", reply)
|
||||
@@ -889,6 +898,7 @@ func testCGRConfigReloadConfigFromStringSessionS(t *testing.T) {
|
||||
ListenBijson: "127.0.0.1:2014",
|
||||
ChargerSConns: []string{utils.MetaLocalHost},
|
||||
ResourceSConns: []string{utils.MetaLocalHost},
|
||||
IPsConns: []string{utils.MetaLocalHost},
|
||||
ThresholdSConns: []string{},
|
||||
StatSConns: []string{},
|
||||
AccountSConns: []string{},
|
||||
@@ -920,6 +930,7 @@ func testCGRConfigReloadConfigFromStringSessionS(t *testing.T) {
|
||||
CDRs: []*DynamicBoolOpt{{}},
|
||||
Chargers: []*DynamicBoolOpt{{}},
|
||||
Resources: []*DynamicBoolOpt{{}},
|
||||
IPs: []*DynamicBoolOpt{{}},
|
||||
Routes: []*DynamicBoolOpt{{}},
|
||||
Stats: []*DynamicBoolOpt{{}},
|
||||
Thresholds: []*DynamicBoolOpt{{}},
|
||||
@@ -934,6 +945,9 @@ func testCGRConfigReloadConfigFromStringSessionS(t *testing.T) {
|
||||
ResourcesAllocate: []*DynamicBoolOpt{{}},
|
||||
ResourcesRelease: []*DynamicBoolOpt{{}},
|
||||
ResourcesDerivedReply: []*DynamicBoolOpt{{}},
|
||||
IPsAuthorize: []*DynamicBoolOpt{{}},
|
||||
IPsAllocate: []*DynamicBoolOpt{{}},
|
||||
IPsRelease: []*DynamicBoolOpt{{}},
|
||||
RoutesDerivedReply: []*DynamicBoolOpt{{}},
|
||||
StatsDerivedReply: []*DynamicBoolOpt{{}},
|
||||
ThresholdsDerivedReply: []*DynamicBoolOpt{{}},
|
||||
@@ -955,7 +969,7 @@ func testCGRConfigReloadConfigFromStringSessionS(t *testing.T) {
|
||||
}
|
||||
|
||||
var rcv string
|
||||
expected := `{"sessions":{"accounts_conns":[],"actions_conns":[],"alterable_fields":[],"attributes_conns":["*localhost"],"cdrs_conns":["*internal"],"channel_sync_interval":"0","chargers_conns":["*localhost"],"client_protocol":1,"default_usage":{"*any":"3h0m0s","*data":"1048576","*sms":"1","*voice":"3h0m0s"},"enabled":true,"listen_bigob":"","listen_bijson":"127.0.0.1:2014","min_dur_low_balance":"0","opts":{"*accounts":[{"FilterIDs":null,"Tenant":""}],"*accountsForceUsage":[],"*attributes":[{"FilterIDs":null,"Tenant":""}],"*attributesDerivedReply":[{"FilterIDs":null,"Tenant":""}],"*blockerError":[{"FilterIDs":null,"Tenant":""}],"*cdrs":[{"FilterIDs":null,"Tenant":""}],"*cdrsDerivedReply":[{"FilterIDs":null,"Tenant":""}],"*chargeable":[{"FilterIDs":null,"Tenant":""}],"*chargers":[{"FilterIDs":null,"Tenant":""}],"*debitInterval":[{"FilterIDs":null,"Tenant":""}],"*forceUsage":[],"*initiate":[{"FilterIDs":null,"Tenant":""}],"*maxUsage":[{"FilterIDs":null,"Tenant":""}],"*message":[{"FilterIDs":null,"Tenant":""}],"*originID":[],"*resources":[{"FilterIDs":null,"Tenant":""}],"*resourcesAllocate":[{"FilterIDs":null,"Tenant":""}],"*resourcesAuthorize":[{"FilterIDs":null,"Tenant":""}],"*resourcesDerivedReply":[{"FilterIDs":null,"Tenant":""}],"*resourcesRelease":[{"FilterIDs":null,"Tenant":""}],"*routes":[{"FilterIDs":null,"Tenant":""}],"*routesDerivedReply":[{"FilterIDs":null,"Tenant":""}],"*stats":[{"FilterIDs":null,"Tenant":""}],"*statsDerivedReply":[{"FilterIDs":null,"Tenant":""}],"*terminate":[{"FilterIDs":null,"Tenant":""}],"*thresholds":[{"FilterIDs":null,"Tenant":""}],"*thresholdsDerivedReply":[{"FilterIDs":null,"Tenant":""}],"*ttl":[{"FilterIDs":null,"Tenant":""}],"*ttlLastUsage":[],"*ttlLastUsed":[],"*ttlMaxDelay":[{"FilterIDs":null,"Tenant":""}],"*ttlUsage":[],"*update":[{"FilterIDs":null,"Tenant":""}]},"rates_conns":[],"replication_conns":[],"resources_conns":["*localhost"],"routes_conns":["*localhost"],"session_indexes":[],"stats_conns":[],"stir":{"allowed_attest":["*any"],"default_attest":"A","payload_maxduration":"-1","privatekey_path":"","publickey_path":""},"store_session_costs":false,"terminate_attempts":5,"thresholds_conns":[]}}`
|
||||
expected := `{"sessions":{"accounts_conns":[],"actions_conns":[],"alterable_fields":[],"attributes_conns":["*localhost"],"cdrs_conns":["*internal"],"channel_sync_interval":"0","chargers_conns":["*localhost"],"client_protocol":1,"default_usage":{"*any":"3h0m0s","*data":"1048576","*sms":"1","*voice":"3h0m0s"},"enabled":true,"ips_conns":["*localhost"],"listen_bigob":"","listen_bijson":"127.0.0.1:2014","min_dur_low_balance":"0","opts":{"*accounts":[{"FilterIDs":null,"Tenant":""}],"*accountsForceUsage":[],"*attributes":[{"FilterIDs":null,"Tenant":""}],"*attributesDerivedReply":[{"FilterIDs":null,"Tenant":""}],"*blockerError":[{"FilterIDs":null,"Tenant":""}],"*cdrs":[{"FilterIDs":null,"Tenant":""}],"*cdrsDerivedReply":[{"FilterIDs":null,"Tenant":""}],"*chargeable":[{"FilterIDs":null,"Tenant":""}],"*chargers":[{"FilterIDs":null,"Tenant":""}],"*debitInterval":[{"FilterIDs":null,"Tenant":""}],"*forceUsage":[],"*initiate":[{"FilterIDs":null,"Tenant":""}],"*ips":[{"FilterIDs":null,"Tenant":""}],"*ipsAllocate":[{"FilterIDs":null,"Tenant":""}],"*ipsAuthorize":[{"FilterIDs":null,"Tenant":""}],"*ipsRelease":[{"FilterIDs":null,"Tenant":""}],"*maxUsage":[{"FilterIDs":null,"Tenant":""}],"*message":[{"FilterIDs":null,"Tenant":""}],"*originID":[],"*resources":[{"FilterIDs":null,"Tenant":""}],"*resourcesAllocate":[{"FilterIDs":null,"Tenant":""}],"*resourcesAuthorize":[{"FilterIDs":null,"Tenant":""}],"*resourcesDerivedReply":[{"FilterIDs":null,"Tenant":""}],"*resourcesRelease":[{"FilterIDs":null,"Tenant":""}],"*routes":[{"FilterIDs":null,"Tenant":""}],"*routesDerivedReply":[{"FilterIDs":null,"Tenant":""}],"*stats":[{"FilterIDs":null,"Tenant":""}],"*statsDerivedReply":[{"FilterIDs":null,"Tenant":""}],"*terminate":[{"FilterIDs":null,"Tenant":""}],"*thresholds":[{"FilterIDs":null,"Tenant":""}],"*thresholdsDerivedReply":[{"FilterIDs":null,"Tenant":""}],"*ttl":[{"FilterIDs":null,"Tenant":""}],"*ttlLastUsage":[],"*ttlLastUsed":[],"*ttlMaxDelay":[{"FilterIDs":null,"Tenant":""}],"*ttlUsage":[],"*update":[{"FilterIDs":null,"Tenant":""}]},"rates_conns":[],"replication_conns":[],"resources_conns":["*localhost"],"routes_conns":["*localhost"],"session_indexes":[],"stats_conns":[],"stir":{"allowed_attest":["*any"],"default_attest":"A","payload_maxduration":"-1","privatekey_path":"","publickey_path":""},"store_session_costs":false,"terminate_attempts":5,"thresholds_conns":[]}}`
|
||||
if err := cfg.V1GetConfigAsJSON(context.Background(), &SectionWithAPIOpts{Sections: []string{SessionSJSON}}, &rcv); err != nil {
|
||||
t.Error(err)
|
||||
} else if expected != rcv {
|
||||
@@ -982,6 +996,7 @@ func testCGRConfigReloadAll(t *testing.T) {
|
||||
ListenBijson: "127.0.0.1:2014",
|
||||
ChargerSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaChargers)},
|
||||
ResourceSConns: []string{utils.MetaLocalHost},
|
||||
IPsConns: []string{},
|
||||
ThresholdSConns: []string{},
|
||||
StatSConns: []string{},
|
||||
AccountSConns: []string{},
|
||||
@@ -1013,6 +1028,7 @@ func testCGRConfigReloadAll(t *testing.T) {
|
||||
CDRs: []*DynamicBoolOpt{{}},
|
||||
Chargers: []*DynamicBoolOpt{{}},
|
||||
Resources: []*DynamicBoolOpt{{}},
|
||||
IPs: []*DynamicBoolOpt{{}},
|
||||
Routes: []*DynamicBoolOpt{{}},
|
||||
Stats: []*DynamicBoolOpt{{}},
|
||||
Thresholds: []*DynamicBoolOpt{{}},
|
||||
@@ -1027,6 +1043,9 @@ func testCGRConfigReloadAll(t *testing.T) {
|
||||
ResourcesAllocate: []*DynamicBoolOpt{{}},
|
||||
ResourcesRelease: []*DynamicBoolOpt{{}},
|
||||
ResourcesDerivedReply: []*DynamicBoolOpt{{}},
|
||||
IPsAuthorize: []*DynamicBoolOpt{{}},
|
||||
IPsAllocate: []*DynamicBoolOpt{{}},
|
||||
IPsRelease: []*DynamicBoolOpt{{}},
|
||||
RoutesDerivedReply: []*DynamicBoolOpt{{}},
|
||||
StatsDerivedReply: []*DynamicBoolOpt{{}},
|
||||
ThresholdsDerivedReply: []*DynamicBoolOpt{{}},
|
||||
|
||||
@@ -597,6 +597,7 @@ func TestSmgJsonCfg(t *testing.T) {
|
||||
Chargers_conns: &[]string{},
|
||||
Cdrs_conns: &[]string{},
|
||||
Resources_conns: &[]string{},
|
||||
IPsConns: &[]string{},
|
||||
Thresholds_conns: &[]string{},
|
||||
Stats_conns: &[]string{},
|
||||
Routes_conns: &[]string{},
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -155,6 +155,14 @@ func (cfg *CGRConfig) checkConfigSanity() error {
|
||||
return fmt.Errorf("<%s> connection with id: <%s> not defined", utils.SessionS, connID)
|
||||
}
|
||||
}
|
||||
for _, connID := range cfg.sessionSCfg.IPsConns {
|
||||
if strings.HasPrefix(connID, utils.MetaInternal) && !cfg.ipsCfg.Enabled {
|
||||
return fmt.Errorf("<%s> not enabled but requested by <%s> component", utils.IPs, utils.SessionS)
|
||||
}
|
||||
if _, has := cfg.rpcConns[connID]; !has && !strings.HasPrefix(connID, utils.MetaInternal) {
|
||||
return fmt.Errorf("<%s> connection with id: <%s> not defined", utils.SessionS, connID)
|
||||
}
|
||||
}
|
||||
for _, connID := range cfg.sessionSCfg.ThresholdSConns {
|
||||
if strings.HasPrefix(connID, utils.MetaInternal) && !cfg.thresholdSCfg.Enabled {
|
||||
return fmt.Errorf("<%s> not enabled but requested by <%s> component", utils.ThresholdS, utils.SessionS)
|
||||
|
||||
@@ -34,6 +34,7 @@ const (
|
||||
SessionsCDRsDftOpt = false
|
||||
SessionsChargersDftOpt = false
|
||||
SessionsResourcesDftOpt = false
|
||||
SessionsIPsDftOpt = false
|
||||
SessionsRoutesDftOpt = false
|
||||
SessionsStatsDftOpt = false
|
||||
SessionsThresholdsDftOpt = false
|
||||
@@ -48,6 +49,9 @@ const (
|
||||
SessionsResourcesAllocateDftOpt = false
|
||||
SessionsResourcesReleaseDftOpt = false
|
||||
SessionsResourcesDerivedReplyDftOpt = false
|
||||
SessionsIPsAuthorizeDftOpt = false
|
||||
SessionsIPsAllocateDftOpt = false
|
||||
SessionsIPsReleaseDftOpt = false
|
||||
SessionsRoutesDerivedReplyDftOpt = false
|
||||
SessionsStatsDerivedReplyDftOpt = false
|
||||
SessionsThresholdsDerivedReplyDftOpt = false
|
||||
@@ -64,6 +68,7 @@ type SessionsOpts struct {
|
||||
CDRs []*DynamicBoolOpt
|
||||
Chargers []*DynamicBoolOpt
|
||||
Resources []*DynamicBoolOpt
|
||||
IPs []*DynamicBoolOpt
|
||||
Routes []*DynamicBoolOpt
|
||||
Stats []*DynamicBoolOpt
|
||||
Thresholds []*DynamicBoolOpt
|
||||
@@ -78,6 +83,9 @@ type SessionsOpts struct {
|
||||
ResourcesAllocate []*DynamicBoolOpt
|
||||
ResourcesRelease []*DynamicBoolOpt
|
||||
ResourcesDerivedReply []*DynamicBoolOpt
|
||||
IPsAuthorize []*DynamicBoolOpt
|
||||
IPsAllocate []*DynamicBoolOpt
|
||||
IPsRelease []*DynamicBoolOpt
|
||||
RoutesDerivedReply []*DynamicBoolOpt
|
||||
StatsDerivedReply []*DynamicBoolOpt
|
||||
ThresholdsDerivedReply []*DynamicBoolOpt
|
||||
@@ -101,6 +109,7 @@ type SessionSCfg struct {
|
||||
ListenBigob string
|
||||
ChargerSConns []string
|
||||
ResourceSConns []string
|
||||
IPsConns []string
|
||||
ThresholdSConns []string
|
||||
StatSConns []string
|
||||
RouteSConns []string
|
||||
@@ -160,6 +169,11 @@ func (sesOpts *SessionsOpts) loadFromJSONCfg(jsnCfg *SessionsOptsJson) (err erro
|
||||
resources, err = IfaceToBoolDynamicOpts(jsnCfg.Resources)
|
||||
sesOpts.Resources = append(resources, sesOpts.Resources...)
|
||||
}
|
||||
if jsnCfg.IPs != nil {
|
||||
var opt []*DynamicBoolOpt
|
||||
opt, err = IfaceToBoolDynamicOpts(jsnCfg.IPs)
|
||||
sesOpts.IPs = append(opt, sesOpts.IPs...)
|
||||
}
|
||||
if jsnCfg.Routes != nil {
|
||||
var routes []*DynamicBoolOpt
|
||||
routes, err = IfaceToBoolDynamicOpts(jsnCfg.Chargers)
|
||||
@@ -230,6 +244,21 @@ func (sesOpts *SessionsOpts) loadFromJSONCfg(jsnCfg *SessionsOptsJson) (err erro
|
||||
resDerivedRpl, err = IfaceToBoolDynamicOpts(jsnCfg.ResourcesDerivedReply)
|
||||
sesOpts.ResourcesDerivedReply = append(resDerivedRpl, sesOpts.ResourcesDerivedReply...)
|
||||
}
|
||||
if jsnCfg.IPsAuthorize != nil {
|
||||
var opt []*DynamicBoolOpt
|
||||
opt, err = IfaceToBoolDynamicOpts(jsnCfg.IPsAuthorize)
|
||||
sesOpts.IPsAuthorize = append(opt, sesOpts.IPsAuthorize...)
|
||||
}
|
||||
if jsnCfg.IPsAllocate != nil {
|
||||
var opt []*DynamicBoolOpt
|
||||
opt, err = IfaceToBoolDynamicOpts(jsnCfg.IPsAllocate)
|
||||
sesOpts.IPsAllocate = append(opt, sesOpts.IPsAllocate...)
|
||||
}
|
||||
if jsnCfg.IPsRelease != nil {
|
||||
var opt []*DynamicBoolOpt
|
||||
opt, err = IfaceToBoolDynamicOpts(jsnCfg.IPsAllocate)
|
||||
sesOpts.IPsRelease = append(opt, sesOpts.IPsRelease...)
|
||||
}
|
||||
if jsnCfg.RoutesDerivedReply != nil {
|
||||
var routesDerivedRpl []*DynamicBoolOpt
|
||||
routesDerivedRpl, err = IfaceToBoolDynamicOpts(jsnCfg.RoutesDerivedReply)
|
||||
@@ -338,6 +367,9 @@ func (scfg *SessionSCfg) loadFromJSONCfg(jsnCfg *SessionSJsonCfg) (err error) {
|
||||
if jsnCfg.Resources_conns != nil {
|
||||
scfg.ResourceSConns = updateInternalConns(*jsnCfg.Resources_conns, utils.MetaResources)
|
||||
}
|
||||
if jsnCfg.IPsConns != nil {
|
||||
scfg.IPsConns = updateInternalConns(*jsnCfg.IPsConns, utils.MetaIPs)
|
||||
}
|
||||
if jsnCfg.Thresholds_conns != nil {
|
||||
scfg.ThresholdSConns = updateInternalConns(*jsnCfg.Thresholds_conns, utils.MetaThresholds)
|
||||
}
|
||||
@@ -439,6 +471,7 @@ func (scfg SessionSCfg) AsMapInterface() any {
|
||||
utils.MetaCDRs: scfg.Opts.CDRs,
|
||||
utils.MetaChargers: scfg.Opts.Chargers,
|
||||
utils.MetaResources: scfg.Opts.Resources,
|
||||
utils.MetaIPs: scfg.Opts.IPs,
|
||||
utils.MetaRoutes: scfg.Opts.Routes,
|
||||
utils.MetaStats: scfg.Opts.Stats,
|
||||
utils.MetaThresholds: scfg.Opts.Thresholds,
|
||||
@@ -453,6 +486,9 @@ func (scfg SessionSCfg) AsMapInterface() any {
|
||||
utils.MetaResourcesAllocateCfg: scfg.Opts.ResourcesAllocate,
|
||||
utils.MetaResourcesReleaseCfg: scfg.Opts.ResourcesRelease,
|
||||
utils.MetaResourcesDerivedReplyCfg: scfg.Opts.ResourcesDerivedReply,
|
||||
utils.MetaIPsAuthorizeCfg: scfg.Opts.IPsAuthorize,
|
||||
utils.MetaIPsAllocateCfg: scfg.Opts.IPsAllocate,
|
||||
utils.MetaIPsReleaseCfg: scfg.Opts.IPsRelease,
|
||||
utils.MetaRoutesDerivedReplyCfg: scfg.Opts.RoutesDerivedReply,
|
||||
utils.MetaStatsDerivedReplyCfg: scfg.Opts.StatsDerivedReply,
|
||||
utils.MetaThresholdsDerivedReplyCfg: scfg.Opts.ThresholdsDerivedReply,
|
||||
@@ -496,6 +532,9 @@ func (scfg SessionSCfg) AsMapInterface() any {
|
||||
if scfg.ResourceSConns != nil {
|
||||
mp[utils.ResourceSConnsCfg] = getInternalJSONConns(scfg.ResourceSConns)
|
||||
}
|
||||
if scfg.IPsConns != nil {
|
||||
mp[utils.IPsConnsCfg] = getInternalJSONConns(scfg.IPsConns)
|
||||
}
|
||||
if scfg.ThresholdSConns != nil {
|
||||
mp[utils.ThresholdSConnsCfg] = getInternalJSONConns(scfg.ThresholdSConns)
|
||||
}
|
||||
@@ -547,6 +586,10 @@ func (sesOpts *SessionsOpts) Clone() (cln *SessionsOpts) {
|
||||
if sesOpts.Resources != nil {
|
||||
reS = CloneDynamicBoolOpt(sesOpts.Resources)
|
||||
}
|
||||
var ipS []*DynamicBoolOpt
|
||||
if sesOpts.IPs != nil {
|
||||
ipS = CloneDynamicBoolOpt(sesOpts.IPs)
|
||||
}
|
||||
var rouS []*DynamicBoolOpt
|
||||
if sesOpts.Routes != nil {
|
||||
rouS = CloneDynamicBoolOpt(sesOpts.Routes)
|
||||
@@ -603,6 +646,18 @@ func (sesOpts *SessionsOpts) Clone() (cln *SessionsOpts) {
|
||||
if sesOpts.ResourcesDerivedReply != nil {
|
||||
resDerivedReply = CloneDynamicBoolOpt(sesOpts.ResourcesDerivedReply)
|
||||
}
|
||||
var ipAuthorize []*DynamicBoolOpt
|
||||
if sesOpts.IPsAuthorize != nil {
|
||||
ipAuthorize = CloneDynamicBoolOpt(sesOpts.IPsAuthorize)
|
||||
}
|
||||
var ipAllocate []*DynamicBoolOpt
|
||||
if sesOpts.IPsAllocate != nil {
|
||||
ipAllocate = CloneDynamicBoolOpt(sesOpts.IPsAllocate)
|
||||
}
|
||||
var ipRelease []*DynamicBoolOpt
|
||||
if sesOpts.IPsRelease != nil {
|
||||
ipRelease = CloneDynamicBoolOpt(sesOpts.IPsRelease)
|
||||
}
|
||||
var rouDerivedReply []*DynamicBoolOpt
|
||||
if sesOpts.RoutesDerivedReply != nil {
|
||||
rouDerivedReply = CloneDynamicBoolOpt(sesOpts.RoutesDerivedReply)
|
||||
@@ -665,6 +720,7 @@ func (sesOpts *SessionsOpts) Clone() (cln *SessionsOpts) {
|
||||
CDRs: cdrS,
|
||||
Chargers: chrgS,
|
||||
Resources: reS,
|
||||
IPs: ipS,
|
||||
Routes: rouS,
|
||||
Stats: stS,
|
||||
Thresholds: thdS,
|
||||
@@ -679,6 +735,9 @@ func (sesOpts *SessionsOpts) Clone() (cln *SessionsOpts) {
|
||||
ResourcesAllocate: resAllocate,
|
||||
ResourcesRelease: resRelease,
|
||||
ResourcesDerivedReply: resDerivedReply,
|
||||
IPsAuthorize: ipAuthorize,
|
||||
IPsAllocate: ipAllocate,
|
||||
IPsRelease: ipRelease,
|
||||
RoutesDerivedReply: rouDerivedReply,
|
||||
StatsDerivedReply: stsDerivedReply,
|
||||
ThresholdsDerivedReply: thdsDerivedReply,
|
||||
@@ -722,6 +781,9 @@ func (scfg SessionSCfg) Clone() (cln *SessionSCfg) {
|
||||
if scfg.ResourceSConns != nil {
|
||||
cln.ResourceSConns = slices.Clone(scfg.ResourceSConns)
|
||||
}
|
||||
if scfg.IPsConns != nil {
|
||||
cln.IPsConns = slices.Clone(scfg.IPsConns)
|
||||
}
|
||||
if scfg.ThresholdSConns != nil {
|
||||
cln.ThresholdSConns = slices.Clone(scfg.ThresholdSConns)
|
||||
}
|
||||
@@ -853,6 +915,7 @@ type SessionsOptsJson struct {
|
||||
CDRs []*DynamicInterfaceOpt `json:"*cdrs"`
|
||||
Chargers []*DynamicInterfaceOpt `json:"*chargers"`
|
||||
Resources []*DynamicInterfaceOpt `json:"*resources"`
|
||||
IPs []*DynamicInterfaceOpt `json:"*ips"`
|
||||
Routes []*DynamicInterfaceOpt `json:"*routes"`
|
||||
Stats []*DynamicInterfaceOpt `json:"*stats"`
|
||||
Thresholds []*DynamicInterfaceOpt `json:"*thresholds"`
|
||||
@@ -867,6 +930,9 @@ type SessionsOptsJson struct {
|
||||
ResourcesAllocate []*DynamicInterfaceOpt `json:"*resourcesAllocate"`
|
||||
ResourcesRelease []*DynamicInterfaceOpt `json:"*resourcesRelease"`
|
||||
ResourcesDerivedReply []*DynamicInterfaceOpt `json:"*resourcesDerivedReply"`
|
||||
IPsAuthorize []*DynamicInterfaceOpt `json:"*ipsAuthorize"`
|
||||
IPsAllocate []*DynamicInterfaceOpt `json:"*ipsAllocate"`
|
||||
IPsRelease []*DynamicInterfaceOpt `json:"*ipsRelease"`
|
||||
RoutesDerivedReply []*DynamicInterfaceOpt `json:"*routesDerivedReply"`
|
||||
StatsDerivedReply []*DynamicInterfaceOpt `json:"*statsDerivedReply"`
|
||||
ThresholdsDerivedReply []*DynamicInterfaceOpt `json:"*thresholdsDerivedReply"`
|
||||
@@ -890,6 +956,7 @@ type SessionSJsonCfg struct {
|
||||
Listen_bigob *string
|
||||
Chargers_conns *[]string
|
||||
Resources_conns *[]string
|
||||
IPsConns *[]string `json:"ips_conns"`
|
||||
Thresholds_conns *[]string
|
||||
Stats_conns *[]string
|
||||
Routes_conns *[]string
|
||||
@@ -930,6 +997,9 @@ func diffSessionsOptsJsonCfg(d *SessionsOptsJson, v1, v2 *SessionsOpts) *Session
|
||||
if !DynamicBoolOptEqual(v1.Resources, v2.Resources) {
|
||||
d.Resources = BoolToIfaceDynamicOpts(v2.Resources)
|
||||
}
|
||||
if !DynamicBoolOptEqual(v1.IPs, v2.IPs) {
|
||||
d.IPs = BoolToIfaceDynamicOpts(v2.IPs)
|
||||
}
|
||||
if !DynamicBoolOptEqual(v1.Routes, v2.Routes) {
|
||||
d.Routes = BoolToIfaceDynamicOpts(v2.Routes)
|
||||
}
|
||||
@@ -972,6 +1042,15 @@ func diffSessionsOptsJsonCfg(d *SessionsOptsJson, v1, v2 *SessionsOpts) *Session
|
||||
if !DynamicBoolOptEqual(v1.ResourcesDerivedReply, v2.ResourcesDerivedReply) {
|
||||
d.ResourcesDerivedReply = BoolToIfaceDynamicOpts(v2.ResourcesDerivedReply)
|
||||
}
|
||||
if !DynamicBoolOptEqual(v1.IPsAuthorize, v2.IPsAuthorize) {
|
||||
d.IPsAuthorize = BoolToIfaceDynamicOpts(v2.IPsAuthorize)
|
||||
}
|
||||
if !DynamicBoolOptEqual(v1.IPsAllocate, v2.IPsAllocate) {
|
||||
d.IPsAllocate = BoolToIfaceDynamicOpts(v2.IPsAllocate)
|
||||
}
|
||||
if !DynamicBoolOptEqual(v1.IPsRelease, v2.IPsRelease) {
|
||||
d.IPsRelease = BoolToIfaceDynamicOpts(v2.IPsRelease)
|
||||
}
|
||||
if !DynamicBoolOptEqual(v1.RoutesDerivedReply, v2.RoutesDerivedReply) {
|
||||
d.RoutesDerivedReply = BoolToIfaceDynamicOpts(v2.RoutesDerivedReply)
|
||||
}
|
||||
@@ -1036,6 +1115,9 @@ func diffSessionSJsonCfg(d *SessionSJsonCfg, v1, v2 *SessionSCfg) *SessionSJsonC
|
||||
if !slices.Equal(v1.ResourceSConns, v2.ResourceSConns) {
|
||||
d.Resources_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ResourceSConns))
|
||||
}
|
||||
if !slices.Equal(v1.IPsConns, v2.IPsConns) {
|
||||
d.IPsConns = utils.SliceStringPointer(getInternalJSONConns(v2.IPsConns))
|
||||
}
|
||||
if !slices.Equal(v1.ThresholdSConns, v2.ThresholdSConns) {
|
||||
d.Thresholds_conns = utils.SliceStringPointer(getInternalJSONConns(v2.ThresholdSConns))
|
||||
}
|
||||
|
||||
@@ -68,6 +68,7 @@ func TestSessionSCfgloadFromJsonCfgCase1(t *testing.T) {
|
||||
Listen_bijson: utils.StringPointer("127.0.0.1:2018"),
|
||||
Chargers_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
Resources_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
IPsConns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
Thresholds_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
Stats_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
Routes_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
@@ -104,6 +105,7 @@ func TestSessionSCfgloadFromJsonCfgCase1(t *testing.T) {
|
||||
ListenBijson: "127.0.0.1:2018",
|
||||
ChargerSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaChargers), "*conn1"},
|
||||
ResourceSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources), "*conn1"},
|
||||
IPsConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaIPs), "*conn1"},
|
||||
ThresholdSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds), "*conn1"},
|
||||
StatSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStats), "*conn1"},
|
||||
RouteSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaRoutes), "*conn1"},
|
||||
@@ -139,6 +141,7 @@ func TestSessionSCfgloadFromJsonCfgCase1(t *testing.T) {
|
||||
CDRs: []*DynamicBoolOpt{{}},
|
||||
Chargers: []*DynamicBoolOpt{{}},
|
||||
Resources: []*DynamicBoolOpt{{}},
|
||||
IPs: []*DynamicBoolOpt{{}},
|
||||
Routes: []*DynamicBoolOpt{{}},
|
||||
Stats: []*DynamicBoolOpt{{}},
|
||||
Thresholds: []*DynamicBoolOpt{{}},
|
||||
@@ -153,6 +156,9 @@ func TestSessionSCfgloadFromJsonCfgCase1(t *testing.T) {
|
||||
ResourcesAllocate: []*DynamicBoolOpt{{}},
|
||||
ResourcesRelease: []*DynamicBoolOpt{{}},
|
||||
ResourcesDerivedReply: []*DynamicBoolOpt{{}},
|
||||
IPsAuthorize: []*DynamicBoolOpt{{}},
|
||||
IPsAllocate: []*DynamicBoolOpt{{}},
|
||||
IPsRelease: []*DynamicBoolOpt{{}},
|
||||
RoutesDerivedReply: []*DynamicBoolOpt{{}},
|
||||
StatsDerivedReply: []*DynamicBoolOpt{{}},
|
||||
ThresholdsDerivedReply: []*DynamicBoolOpt{{}},
|
||||
@@ -338,6 +344,7 @@ func TestSessionSCfgloadFromJsonCfgCase10(t *testing.T) {
|
||||
ListenBijson: "127.0.0.1:2014",
|
||||
ChargerSConns: []string{},
|
||||
ResourceSConns: []string{},
|
||||
IPsConns: []string{},
|
||||
ThresholdSConns: []string{},
|
||||
StatSConns: []string{},
|
||||
RouteSConns: []string{},
|
||||
@@ -373,6 +380,7 @@ func TestSessionSCfgloadFromJsonCfgCase10(t *testing.T) {
|
||||
CDRs: []*DynamicBoolOpt{{}},
|
||||
Chargers: []*DynamicBoolOpt{{}},
|
||||
Resources: []*DynamicBoolOpt{{}},
|
||||
IPs: []*DynamicBoolOpt{{}},
|
||||
Routes: []*DynamicBoolOpt{{}},
|
||||
Stats: []*DynamicBoolOpt{{}},
|
||||
Thresholds: []*DynamicBoolOpt{{}},
|
||||
@@ -387,6 +395,9 @@ func TestSessionSCfgloadFromJsonCfgCase10(t *testing.T) {
|
||||
ResourcesAllocate: []*DynamicBoolOpt{{}},
|
||||
ResourcesRelease: []*DynamicBoolOpt{{}},
|
||||
ResourcesDerivedReply: []*DynamicBoolOpt{{}},
|
||||
IPsAuthorize: []*DynamicBoolOpt{{}},
|
||||
IPsAllocate: []*DynamicBoolOpt{{}},
|
||||
IPsRelease: []*DynamicBoolOpt{{}},
|
||||
RoutesDerivedReply: []*DynamicBoolOpt{{}},
|
||||
StatsDerivedReply: []*DynamicBoolOpt{{}},
|
||||
ThresholdsDerivedReply: []*DynamicBoolOpt{{}},
|
||||
@@ -498,6 +509,7 @@ func TestSessionSCfgAsMapInterfaceCase1(t *testing.T) {
|
||||
utils.ChargerSConnsCfg: []string{},
|
||||
utils.CDRsConnsCfg: []string{},
|
||||
utils.ResourceSConnsCfg: []string{},
|
||||
utils.IPsConnsCfg: []string{},
|
||||
utils.ThresholdSConnsCfg: []string{},
|
||||
utils.StatSConnsCfg: []string{},
|
||||
utils.RouteSConnsCfg: []string{},
|
||||
@@ -532,6 +544,7 @@ func TestSessionSCfgAsMapInterfaceCase1(t *testing.T) {
|
||||
utils.MetaCDRs: []*DynamicBoolOpt{{}},
|
||||
utils.MetaChargers: []*DynamicBoolOpt{{}},
|
||||
utils.MetaResources: []*DynamicBoolOpt{{}},
|
||||
utils.MetaIPs: []*DynamicBoolOpt{{}},
|
||||
utils.MetaRoutes: []*DynamicBoolOpt{{}},
|
||||
utils.MetaStats: []*DynamicBoolOpt{{}},
|
||||
utils.MetaThresholds: []*DynamicBoolOpt{{}},
|
||||
@@ -546,6 +559,9 @@ func TestSessionSCfgAsMapInterfaceCase1(t *testing.T) {
|
||||
utils.MetaResourcesAllocateCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaResourcesReleaseCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaResourcesDerivedReplyCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaIPsAuthorizeCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaIPsAllocateCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaIPsReleaseCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaRoutesDerivedReplyCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaStatsDerivedReplyCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaThresholdsDerivedReplyCfg: []*DynamicBoolOpt{{}},
|
||||
@@ -577,6 +593,7 @@ func TestSessionSCfgAsMapInterfaceCase2(t *testing.T) {
|
||||
"chargers_conns": ["*internal:*chargers", "*conn1"],
|
||||
"cdrs_conns": ["*internal:*cdrs", "*conn1"],
|
||||
"resources_conns": ["*internal:*resources", "*conn1"],
|
||||
"ips_conns": ["*internal:*ips", "*conn1"],
|
||||
"thresholds_conns": ["*internal:*thresholds", "*conn1"],
|
||||
"stats_conns": ["*internal:*stats", "*conn1"],
|
||||
"routes_conns": ["*internal:*routes", "*conn1"],
|
||||
@@ -617,6 +634,7 @@ func TestSessionSCfgAsMapInterfaceCase2(t *testing.T) {
|
||||
utils.ChargerSConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.CDRsConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.ResourceSConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.IPsConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.ThresholdSConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.StatSConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.RouteSConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
@@ -651,6 +669,7 @@ func TestSessionSCfgAsMapInterfaceCase2(t *testing.T) {
|
||||
utils.MetaCDRs: []*DynamicBoolOpt{{}},
|
||||
utils.MetaChargers: []*DynamicBoolOpt{{}},
|
||||
utils.MetaResources: []*DynamicBoolOpt{{}},
|
||||
utils.MetaIPs: []*DynamicBoolOpt{{}},
|
||||
utils.MetaRoutes: []*DynamicBoolOpt{{}},
|
||||
utils.MetaStats: []*DynamicBoolOpt{{}},
|
||||
utils.MetaThresholds: []*DynamicBoolOpt{{}},
|
||||
@@ -665,6 +684,9 @@ func TestSessionSCfgAsMapInterfaceCase2(t *testing.T) {
|
||||
utils.MetaResourcesAllocateCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaResourcesReleaseCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaResourcesDerivedReplyCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaIPsAuthorizeCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaIPsAllocateCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaIPsReleaseCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaRoutesDerivedReplyCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaStatsDerivedReplyCfg: []*DynamicBoolOpt{{}},
|
||||
utils.MetaThresholdsDerivedReplyCfg: []*DynamicBoolOpt{{}},
|
||||
|
||||
@@ -2144,6 +2144,7 @@ const (
|
||||
ListenBijsonCfg = "listen_bijson"
|
||||
ListenBigobCfg = "listen_bigob"
|
||||
RouteSConnsCfg = "routes_conns"
|
||||
IPsConnsCfg = "ips_conns"
|
||||
ReplicationConnsCfg = "replication_conns"
|
||||
RemoteConnsCfg = "remote_conns"
|
||||
DebitIntervalCfg = "debit_interval"
|
||||
@@ -2315,6 +2316,9 @@ const (
|
||||
MetaResourcesAllocateCfg = "*resourcesAllocate"
|
||||
MetaResourcesReleaseCfg = "*resourcesRelease"
|
||||
MetaResourcesDerivedReplyCfg = "*resourcesDerivedReply"
|
||||
MetaIPsAuthorizeCfg = "*ipsAuthorize"
|
||||
MetaIPsAllocateCfg = "*ipsAllocate"
|
||||
MetaIPsReleaseCfg = "*ipsRelease"
|
||||
MetaRoutesDerivedReplyCfg = "*routesDerivedReply"
|
||||
MetaStatsDerivedReplyCfg = "*statsDerivedReply"
|
||||
MetaThresholdsDerivedReplyCfg = "*thresholdsDerivedReply"
|
||||
|
||||
Reference in New Issue
Block a user