mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 10:06:24 +05:00
cfg: add ips_conns to sessions section
This commit is contained in:
committed by
Dan Christian Bogos
parent
84a4043e9a
commit
292b97aa5b
@@ -667,6 +667,7 @@ const CGRATES_CFG_JSON = `
|
||||
"chargers_conns": [], // connections to ChargerS for session forking <""|*internal|$rpc_conns_id>
|
||||
"rals_conns": [], // connections to RALs for rating/accounting <""|*internal|$rpc_conns_id>
|
||||
"cdrs_conns": [], // connections to CDRs for CDR posting <""|*internal|$rpc_conns_id>
|
||||
"ips_conns": [], // connections to IPs for monitoring ip usage <""|*internal|$rpc_conns_id>
|
||||
"resources_conns": [], // connections to ResourceS for resources monitoring <""|*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>
|
||||
|
||||
@@ -527,6 +527,7 @@ func testCGRConfigReloadSessionS(t *testing.T) {
|
||||
ListenBijson: "127.0.0.1:2014",
|
||||
ChargerSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaChargers)},
|
||||
RALsConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder)},
|
||||
IPsConns: []string{},
|
||||
ResSConns: []string{utils.MetaLocalHost},
|
||||
ThreshSConns: []string{},
|
||||
StatSConns: []string{},
|
||||
@@ -963,6 +964,7 @@ func testCGRConfigReloadConfigFromJSONSessionS(t *testing.T) {
|
||||
Config: map[string]any{
|
||||
"sessions": map[string]any{
|
||||
"enabled": true,
|
||||
"ips_conns": []string{"*localhost"},
|
||||
"resources_conns": []string{"*localhost"},
|
||||
"routes_conns": []string{"*localhost"},
|
||||
"attributes_conns": []string{"*localhost"},
|
||||
@@ -981,6 +983,7 @@ func testCGRConfigReloadConfigFromJSONSessionS(t *testing.T) {
|
||||
ListenBijson: "127.0.0.1:2014",
|
||||
ChargerSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaChargers)},
|
||||
RALsConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder)},
|
||||
IPsConns: []string{utils.MetaLocalHost},
|
||||
ResSConns: []string{utils.MetaLocalHost},
|
||||
ThreshSConns: []string{},
|
||||
StatSConns: []string{},
|
||||
@@ -1025,6 +1028,7 @@ func testCGRConfigReloadConfigFromStringSessionS(t *testing.T) {
|
||||
Config: `{
|
||||
"sessions":{
|
||||
"enabled": true,
|
||||
"ips_conns": ["*localhost"],
|
||||
"resources_conns": ["*localhost"],
|
||||
"routes_conns": ["*localhost"],
|
||||
"attributes_conns": ["*localhost"],
|
||||
@@ -1042,6 +1046,7 @@ func testCGRConfigReloadConfigFromStringSessionS(t *testing.T) {
|
||||
ListenBijson: "127.0.0.1:2014",
|
||||
ChargerSConns: []string{utils.MetaLocalHost},
|
||||
RALsConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder)},
|
||||
IPsConns: []string{utils.MetaLocalHost},
|
||||
ResSConns: []string{utils.MetaLocalHost},
|
||||
ThreshSConns: []string{},
|
||||
StatSConns: []string{},
|
||||
@@ -1072,7 +1077,7 @@ func testCGRConfigReloadConfigFromStringSessionS(t *testing.T) {
|
||||
}
|
||||
|
||||
var rcv string
|
||||
expected := `{"sessions":{"alterable_fields":[],"attributes_conns":["*localhost"],"backup_interval":"0","cdrs_conns":["*internal"],"channel_sync_interval":"0","chargers_conns":["*localhost"],"client_protocol":2,"debit_interval":"0","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","rals_conns":["*internal"],"replication_conns":[],"resources_conns":["*localhost"],"routes_conns":["*localhost"],"scheduler_conns":[],"session_indexes":[],"session_ttl":"0","stale_chan_max_extra_usage":"0","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":{"alterable_fields":[],"attributes_conns":["*localhost"],"backup_interval":"0","cdrs_conns":["*internal"],"channel_sync_interval":"0","chargers_conns":["*localhost"],"client_protocol":2,"debit_interval":"0","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","rals_conns":["*internal"],"replication_conns":[],"resources_conns":["*localhost"],"routes_conns":["*localhost"],"scheduler_conns":[],"session_indexes":[],"session_ttl":"0","stale_chan_max_extra_usage":"0","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{Section: SessionSJson}, &rcv); err != nil {
|
||||
t.Error(err)
|
||||
@@ -1104,6 +1109,7 @@ func testCGRConfigReloadAll(t *testing.T) {
|
||||
ListenBijson: "127.0.0.1:2014",
|
||||
ChargerSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaChargers)},
|
||||
RALsConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder)},
|
||||
IPsConns: []string{},
|
||||
ResSConns: []string{utils.MetaLocalHost},
|
||||
ThreshSConns: []string{},
|
||||
StatSConns: []string{},
|
||||
|
||||
@@ -944,6 +944,7 @@ func TestSmgJsonCfg(t *testing.T) {
|
||||
Chargers_conns: &[]string{},
|
||||
Rals_conns: &[]string{},
|
||||
Cdrs_conns: &[]string{},
|
||||
Ips_conns: &[]string{},
|
||||
Resources_conns: &[]string{},
|
||||
Thresholds_conns: &[]string{},
|
||||
Stats_conns: &[]string{},
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -185,6 +185,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.ResSConns {
|
||||
if strings.HasPrefix(connID, utils.MetaInternal) && !cfg.resourceSCfg.Enabled {
|
||||
return fmt.Errorf("<%s> not enabled but requested by <%s> component", utils.ResourceS, utils.SessionS)
|
||||
|
||||
@@ -299,6 +299,19 @@ func TestConfigSanitySessionS(t *testing.T) {
|
||||
cfg.sessionSCfg.ResSConns = []string{}
|
||||
cfg.resourceSCfg.Enabled = true
|
||||
|
||||
cfg.sessionSCfg.IPsConns = []string{utils.MetaInternal}
|
||||
expected = "<IPs> not enabled but requested by <SessionS> component"
|
||||
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
|
||||
t.Errorf("expected %q, received: %q", expected, err)
|
||||
}
|
||||
cfg.sessionSCfg.IPsConns = []string{"test"}
|
||||
expected = "<SessionS> connection with id: <test> not defined"
|
||||
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
|
||||
t.Errorf("Expecting: %+q received: %+q", expected, err)
|
||||
}
|
||||
cfg.sessionSCfg.IPsConns = []string{}
|
||||
cfg.ipsCfg.Enabled = true
|
||||
|
||||
cfg.sessionSCfg.ThreshSConns = []string{utils.MetaInternal}
|
||||
expected = "<ThresholdS> not enabled but requested by <SessionS> component"
|
||||
if err := cfg.checkConfigSanity(); err == nil || err.Error() != expected {
|
||||
|
||||
@@ -418,6 +418,7 @@ type SessionSJsonCfg struct {
|
||||
Listen_bigob *string
|
||||
Chargers_conns *[]string
|
||||
Rals_conns *[]string
|
||||
Ips_conns *[]string
|
||||
Resources_conns *[]string
|
||||
Thresholds_conns *[]string
|
||||
Stats_conns *[]string
|
||||
|
||||
@@ -20,6 +20,7 @@ package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"slices"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
@@ -108,6 +109,7 @@ type SessionSCfg struct {
|
||||
ListenBigob string
|
||||
ChargerSConns []string
|
||||
RALsConns []string
|
||||
IPsConns []string
|
||||
ResSConns []string
|
||||
ThreshSConns []string
|
||||
StatSConns []string
|
||||
@@ -168,6 +170,9 @@ func (scfg *SessionSCfg) loadFromJSONCfg(jsnCfg *SessionSJsonCfg) (err error) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if jsnCfg.Ips_conns != nil {
|
||||
scfg.IPsConns = tagInternalConns(*jsnCfg.Ips_conns, utils.MetaIPs)
|
||||
}
|
||||
if jsnCfg.Resources_conns != nil {
|
||||
scfg.ResSConns = make([]string, len(*jsnCfg.Resources_conns))
|
||||
for idx, connID := range *jsnCfg.Resources_conns {
|
||||
@@ -352,6 +357,7 @@ func (scfg *SessionSCfg) AsMapInterface() (initialMP map[string]any) {
|
||||
utils.ListenBijsonCfg: scfg.ListenBijson,
|
||||
utils.ListenBigobCfg: scfg.ListenBigob,
|
||||
utils.ReplicationConnsCfg: scfg.ReplicationConns,
|
||||
utils.IPsConnsCfg: stripInternalConns(scfg.IPsConns),
|
||||
utils.StoreSCostsCfg: scfg.StoreSCosts,
|
||||
utils.SessionIndexesCfg: scfg.SessionIndexes.AsSlice(),
|
||||
utils.ClientProtocolCfg: scfg.ClientProtocol,
|
||||
@@ -495,6 +501,7 @@ func (scfg SessionSCfg) Clone() (cln *SessionSCfg) {
|
||||
cln = &SessionSCfg{
|
||||
Enabled: scfg.Enabled,
|
||||
ListenBijson: scfg.ListenBijson,
|
||||
IPsConns: slices.Clone(scfg.IPsConns),
|
||||
DebitInterval: scfg.DebitInterval,
|
||||
StoreSCosts: scfg.StoreSCosts,
|
||||
SessionTTL: scfg.SessionTTL,
|
||||
|
||||
@@ -71,6 +71,7 @@ func TestSessionSCfgloadFromJsonCfgCase1(t *testing.T) {
|
||||
Listen_bijson: utils.StringPointer("127.0.0.1:2018"),
|
||||
Chargers_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
Rals_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
Ips_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
Resources_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
Thresholds_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
Stats_conns: &[]string{utils.MetaInternal, "*conn1"},
|
||||
@@ -101,6 +102,7 @@ func TestSessionSCfgloadFromJsonCfgCase1(t *testing.T) {
|
||||
ListenBijson: "127.0.0.1:2018",
|
||||
ChargerSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaChargers), "*conn1"},
|
||||
RALsConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder), "*conn1"},
|
||||
IPsConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaIPs), "*conn1"},
|
||||
ResSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources), "*conn1"},
|
||||
ThreshSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds), "*conn1"},
|
||||
StatSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStats), "*conn1"},
|
||||
@@ -239,6 +241,7 @@ func TestSessionSCfgloadFromJsonCfgCase10(t *testing.T) {
|
||||
ListenBijson: "127.0.0.1:2014",
|
||||
ChargerSConns: []string{},
|
||||
RALsConns: []string{},
|
||||
IPsConns: []string{},
|
||||
ResSConns: []string{},
|
||||
ThreshSConns: []string{},
|
||||
StatSConns: []string{},
|
||||
@@ -351,6 +354,7 @@ func TestSessionSCfgAsMapInterfaceCase1(t *testing.T) {
|
||||
utils.ChargerSConnsCfg: []string{},
|
||||
utils.RALsConnsCfg: []string{},
|
||||
utils.CDRsConnsCfg: []string{},
|
||||
utils.IPsConnsCfg: []string{},
|
||||
utils.ResourceSConnsCfg: []string{},
|
||||
utils.ThresholdSConnsCfg: []string{},
|
||||
utils.StatSConnsCfg: []string{},
|
||||
@@ -402,6 +406,7 @@ func TestSessionSCfgAsMapInterfaceCase2(t *testing.T) {
|
||||
"chargers_conns": ["*internal:*chargers", "*conn1"],
|
||||
"rals_conns": ["*internal:*responder", "*conn1"],
|
||||
"cdrs_conns": ["*internal:*cdrs", "*conn1"],
|
||||
"ips_conns": ["*internal:*ips", "*conn1"],
|
||||
"resources_conns": ["*internal:*resources", "*conn1"],
|
||||
"thresholds_conns": ["*internal:*thresholds", "*conn1"],
|
||||
"stats_conns": ["*internal:*stats", "*conn1"],
|
||||
@@ -431,6 +436,7 @@ func TestSessionSCfgAsMapInterfaceCase2(t *testing.T) {
|
||||
utils.ChargerSConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.RALsConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.CDRsConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.IPsConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.ResourceSConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.ThresholdSConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
utils.StatSConnsCfg: []string{utils.MetaInternal, "*conn1"},
|
||||
@@ -947,6 +953,7 @@ func TestSessionSCfgClone(t *testing.T) {
|
||||
ListenBijson: "127.0.0.1:2018",
|
||||
ChargerSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaChargers), "*conn1"},
|
||||
RALsConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResponder), "*conn1"},
|
||||
IPsConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaIPs), "*conn1"},
|
||||
ResSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaResources), "*conn1"},
|
||||
ThreshSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaThresholds), "*conn1"},
|
||||
StatSConns: []string{utils.ConcatenatedKey(utils.MetaInternal, utils.MetaStats), "*conn1"},
|
||||
@@ -993,6 +1000,9 @@ func TestSessionSCfgClone(t *testing.T) {
|
||||
if rcv.RALsConns[1] = ""; ban.RALsConns[1] != "*conn1" {
|
||||
t.Errorf("Expected clone to not modify the cloned")
|
||||
}
|
||||
if rcv.IPsConns[1] = ""; ban.IPsConns[1] != "*conn1" {
|
||||
t.Errorf("Expected clone to not modify the cloned")
|
||||
}
|
||||
if rcv.ResSConns[1] = ""; ban.ResSConns[1] != "*conn1" {
|
||||
t.Errorf("Expected clone to not modify the cloned")
|
||||
}
|
||||
@@ -1014,7 +1024,6 @@ func TestSessionSCfgClone(t *testing.T) {
|
||||
if rcv.ReplicationConns[0] = ""; ban.ReplicationConns[0] != "*conn1" {
|
||||
t.Errorf("Expected clone to not modify the cloned")
|
||||
}
|
||||
|
||||
if rcv.STIRCfg.DefaultAttest = ""; ban.STIRCfg.DefaultAttest != "A" {
|
||||
t.Errorf("Expected clone to not modify the cloned")
|
||||
}
|
||||
|
||||
@@ -2526,6 +2526,7 @@ const (
|
||||
ListenBijsonCfg = "listen_bijson"
|
||||
ListenBigobCfg = "listen_bigob"
|
||||
RALsConnsCfg = "rals_conns"
|
||||
IPsConnsCfg = "ips_conns"
|
||||
ResSConnsCfg = "resources_conns"
|
||||
ThreshSConnsCfg = "thresholds_conns"
|
||||
RouteSConnsCfg = "routes_conns"
|
||||
|
||||
Reference in New Issue
Block a user