mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Added the config for the new subsystem: dispatcherh
This commit is contained in:
committed by
Dan Christian Bogos
parent
f175e62096
commit
18e6578840
@@ -172,6 +172,7 @@ func NewDefaultCGRConfig() (cfg *CGRConfig, err error) {
|
||||
cfg.routeSCfg = new(RouteSCfg)
|
||||
cfg.sureTaxCfg = new(SureTaxCfg)
|
||||
cfg.dispatcherSCfg = new(DispatcherSCfg)
|
||||
cfg.dispatcherHCfg = new(DispatcherHCfg)
|
||||
cfg.loaderCgrCfg = new(LoaderCgrCfg)
|
||||
cfg.migratorCgrCfg = new(MigratorCgrCfg)
|
||||
cfg.mailerCfg = new(MailerCfg)
|
||||
@@ -292,6 +293,7 @@ type CGRConfig struct {
|
||||
routeSCfg *RouteSCfg // RouteS config
|
||||
sureTaxCfg *SureTaxCfg // SureTax config
|
||||
dispatcherSCfg *DispatcherSCfg // DispatcherS config
|
||||
dispatcherHCfg *DispatcherHCfg // DispatcherS config
|
||||
loaderCgrCfg *LoaderCgrCfg // LoaderCgr config
|
||||
migratorCgrCfg *MigratorCgrCfg // MigratorCgr config
|
||||
mailerCfg *MailerCfg // Mailer config
|
||||
@@ -366,7 +368,7 @@ func (cfg *CGRConfig) loadFromJsonCfg(jsnCfg *CgrJsonCfg) (err error) {
|
||||
cfg.loadMailerCfg, cfg.loadSureTaxCfg, cfg.loadDispatcherSCfg,
|
||||
cfg.loadLoaderCgrCfg, cfg.loadMigratorCgrCfg, cfg.loadTlsCgrCfg,
|
||||
cfg.loadAnalyzerCgrCfg, cfg.loadApierCfg, cfg.loadErsCfg, cfg.loadEesCfg,
|
||||
cfg.loadRateSCfg, cfg.loadSIPAgentCfg} {
|
||||
cfg.loadRateSCfg, cfg.loadSIPAgentCfg, cfg.loadDispatcherHCfg} {
|
||||
if err = loadFunc(jsnCfg); err != nil {
|
||||
return
|
||||
}
|
||||
@@ -661,6 +663,15 @@ func (cfg *CGRConfig) loadDispatcherSCfg(jsnCfg *CgrJsonCfg) (err error) {
|
||||
return cfg.dispatcherSCfg.loadFromJsonCfg(jsnDispatcherSCfg)
|
||||
}
|
||||
|
||||
// loadDispatcherHCfg loads the DispatcherS section of the configuration
|
||||
func (cfg *CGRConfig) loadDispatcherHCfg(jsnCfg *CgrJsonCfg) (err error) {
|
||||
var jsnDispatcherHCfg *DispatcherHJsonCfg
|
||||
if jsnDispatcherHCfg, err = jsnCfg.DispatcherHJsonCfg(); err != nil {
|
||||
return
|
||||
}
|
||||
return cfg.dispatcherHCfg.loadFromJsonCfg(jsnDispatcherHCfg)
|
||||
}
|
||||
|
||||
// loadLoaderCgrCfg loads the Loader section of the configuration
|
||||
func (cfg *CGRConfig) loadLoaderCgrCfg(jsnCfg *CgrJsonCfg) (err error) {
|
||||
var jsnLoaderCgrCfg *LoaderCfgJson
|
||||
@@ -882,6 +893,13 @@ func (cfg *CGRConfig) DispatcherSCfg() *DispatcherSCfg {
|
||||
return cfg.dispatcherSCfg
|
||||
}
|
||||
|
||||
// DispatcherHCfg returns the config for DispatcherS
|
||||
func (cfg *CGRConfig) DispatcherHCfg() *DispatcherHCfg {
|
||||
cfg.lks[DispatcherSJson].Lock()
|
||||
defer cfg.lks[DispatcherSJson].Unlock()
|
||||
return cfg.dispatcherHCfg
|
||||
}
|
||||
|
||||
// MigratorCgrCfg returns the config for Migrator
|
||||
func (cfg *CGRConfig) MigratorCgrCfg() *MigratorCgrCfg {
|
||||
cfg.lks[CgrMigratorCfgJson].Lock()
|
||||
@@ -1086,6 +1104,8 @@ func (cfg *CGRConfig) V1GetConfigSection(args *StringWithOpts, reply *map[string
|
||||
jsonString = utils.ToJSON(cfg.SureTaxCfg())
|
||||
case DispatcherSJson:
|
||||
jsonString = utils.ToJSON(cfg.DispatcherSCfg())
|
||||
case DispatcherHJson:
|
||||
jsonString = utils.ToJSON(cfg.DispatcherHCfg())
|
||||
case LoaderJson:
|
||||
jsonString = utils.ToJSON(cfg.LoaderCfg())
|
||||
case CgrLoaderCfgJson:
|
||||
@@ -1222,6 +1242,7 @@ func (cfg *CGRConfig) getLoadFunctions() map[string]func(*CgrJsonCfg) error {
|
||||
CgrLoaderCfgJson: cfg.loadLoaderCgrCfg,
|
||||
CgrMigratorCfgJson: cfg.loadMigratorCgrCfg,
|
||||
DispatcherSJson: cfg.loadDispatcherSCfg,
|
||||
DispatcherHJson: cfg.loadDispatcherHCfg,
|
||||
AnalyzerCfgJson: cfg.loadAnalyzerCgrCfg,
|
||||
ApierS: cfg.loadApierCfg,
|
||||
RPCConnsJsonName: cfg.loadRPCConns,
|
||||
@@ -1552,6 +1573,7 @@ func (cfg *CGRConfig) AsMapInterface(separator string) map[string]interface{} {
|
||||
utils.RouteSCfg: cfg.routeSCfg.AsMapInterface(),
|
||||
utils.SureTaxCfg: cfg.sureTaxCfg.AsMapInterface(separator),
|
||||
utils.DispatcherSCfg: cfg.dispatcherSCfg.AsMapInterface(),
|
||||
utils.DispatcherHCfg: cfg.dispatcherHCfg.AsMapInterface(),
|
||||
utils.LoaderCgrCfg: cfg.loaderCgrCfg.AsMapInterface(),
|
||||
utils.MigratorCgrCfg: cfg.migratorCgrCfg.AsMapInterface(),
|
||||
utils.MailerCfg: cfg.mailerCfg.AsMapInterface(),
|
||||
|
||||
@@ -171,13 +171,14 @@ const CGRATES_CFG_JSON = `
|
||||
},
|
||||
|
||||
|
||||
"http": { // HTTP server configuration
|
||||
"json_rpc_url": "/jsonrpc", // JSON RPC relative URL ("" to disable)
|
||||
"ws_url": "/ws", // WebSockets relative URL ("" to disable)
|
||||
"freeswitch_cdrs_url": "/freeswitch_json", // Freeswitch CDRS relative URL ("" to disable)
|
||||
"http_cdrs": "/cdr_http", // CDRS relative URL ("" to disable)
|
||||
"use_basic_auth": false, // use basic authentication
|
||||
"auth_users": {}, // basic authentication usernames and base64-encoded passwords (eg: { "username1": "cGFzc3dvcmQ=", "username2": "cGFzc3dvcmQy "})
|
||||
"http": { // HTTP server configuration
|
||||
"json_rpc_url": "/jsonrpc", // JSON RPC relative URL ("" to disable)
|
||||
"dispatchers_registrar_url": "/dispatchers_registrar", // dispatcherH registrar service relative URL
|
||||
"ws_url": "/ws", // WebSockets relative URL ("" to disable)
|
||||
"freeswitch_cdrs_url": "/freeswitch_json", // Freeswitch CDRS relative URL ("" to disable)
|
||||
"http_cdrs": "/cdr_http", // CDRS relative URL ("" to disable)
|
||||
"use_basic_auth": false, // use basic authentication
|
||||
"auth_users": {}, // basic authentication usernames and base64-encoded passwords (eg: { "username1": "cGFzc3dvcmQ=", "username2": "cGFzc3dvcmQy "})
|
||||
},
|
||||
|
||||
|
||||
@@ -931,6 +932,15 @@ const CGRATES_CFG_JSON = `
|
||||
},
|
||||
|
||||
|
||||
"dispatcherh":{
|
||||
"enabled": false,
|
||||
"dispatchers_conns": [],
|
||||
"host_ids": [],
|
||||
"register_interval": "5m",
|
||||
"register_transport": "*json",
|
||||
},
|
||||
|
||||
|
||||
"analyzers":{ // AnalyzerS config
|
||||
"enabled":false // starts AnalyzerS service: <true|false>.
|
||||
},
|
||||
|
||||
@@ -49,6 +49,7 @@ const (
|
||||
MAILER_JSN = "mailer"
|
||||
SURETAX_JSON = "suretax"
|
||||
DispatcherSJson = "dispatchers"
|
||||
DispatcherHJson = "dispatcherh"
|
||||
CgrLoaderCfgJson = "loader"
|
||||
CgrMigratorCfgJson = "migrator"
|
||||
ChargerSCfgJson = "chargers"
|
||||
@@ -435,6 +436,18 @@ func (self CgrJsonCfg) DispatcherSJsonCfg() (*DispatcherSJsonCfg, error) {
|
||||
return cfg, nil
|
||||
}
|
||||
|
||||
func (self CgrJsonCfg) DispatcherHJsonCfg() (*DispatcherHJsonCfg, error) {
|
||||
rawCfg, hasKey := self[DispatcherHJson]
|
||||
if !hasKey {
|
||||
return nil, nil
|
||||
}
|
||||
cfg := new(DispatcherHJsonCfg)
|
||||
if err := json.Unmarshal(*rawCfg, cfg); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return cfg, nil
|
||||
}
|
||||
|
||||
func (self CgrJsonCfg) LoaderCfgJson() (*LoaderCfgJson, error) {
|
||||
rawCfg, hasKey := self[CgrLoaderCfgJson]
|
||||
if !hasKey {
|
||||
|
||||
@@ -1690,12 +1690,13 @@ func TestDfSureTaxJsonCfg(t *testing.T) {
|
||||
|
||||
func TestDfHttpJsonCfg(t *testing.T) {
|
||||
eCfg := &HTTPJsonCfg{
|
||||
Json_rpc_url: utils.StringPointer("/jsonrpc"),
|
||||
Ws_url: utils.StringPointer("/ws"),
|
||||
Freeswitch_cdrs_url: utils.StringPointer("/freeswitch_json"),
|
||||
Http_Cdrs: utils.StringPointer("/cdr_http"),
|
||||
Use_basic_auth: utils.BoolPointer(false),
|
||||
Auth_users: utils.MapStringStringPointer(map[string]string{}),
|
||||
Json_rpc_url: utils.StringPointer("/jsonrpc"),
|
||||
Dispatchers_registrar_url: utils.StringPointer("/dispatchers_registrar"),
|
||||
Ws_url: utils.StringPointer("/ws"),
|
||||
Freeswitch_cdrs_url: utils.StringPointer("/freeswitch_json"),
|
||||
Http_Cdrs: utils.StringPointer("/cdr_http"),
|
||||
Use_basic_auth: utils.BoolPointer(false),
|
||||
Auth_users: utils.MapStringStringPointer(map[string]string{}),
|
||||
}
|
||||
if cfg, err := dfCgrJSONCfg.HttpJsonCfg(); err != nil {
|
||||
t.Error(err)
|
||||
|
||||
71
config/dispatcherhcfg.go
Executable file
71
config/dispatcherhcfg.go
Executable file
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
|
||||
Copyright (C) ITsysCOM GmbH
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
package config
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
)
|
||||
|
||||
// DispatcherHCfg is the configuration of dispatcher hosts
|
||||
type DispatcherHCfg struct {
|
||||
Enabled bool
|
||||
DispatchersConns []string
|
||||
HostIDs []string
|
||||
RegisterInterval time.Duration
|
||||
RegisterTransport string
|
||||
}
|
||||
|
||||
func (dps *DispatcherHCfg) loadFromJsonCfg(jsnCfg *DispatcherHJsonCfg) (err error) {
|
||||
if jsnCfg == nil {
|
||||
return nil
|
||||
}
|
||||
if jsnCfg.Enabled != nil {
|
||||
dps.Enabled = *jsnCfg.Enabled
|
||||
}
|
||||
if jsnCfg.Dispatchers_conns != nil {
|
||||
dps.DispatchersConns = make([]string, len(*jsnCfg.Dispatchers_conns))
|
||||
copy(dps.DispatchersConns, *jsnCfg.Dispatchers_conns)
|
||||
}
|
||||
if jsnCfg.Host_ids != nil {
|
||||
dps.HostIDs = make([]string, len(*jsnCfg.Host_ids))
|
||||
copy(dps.HostIDs, *jsnCfg.Host_ids)
|
||||
}
|
||||
if jsnCfg.Register_interval != nil {
|
||||
if dps.RegisterInterval, err = utils.ParseDurationWithNanosecs(*jsnCfg.Register_interval); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
if jsnCfg.Register_transport != nil {
|
||||
dps.RegisterTransport = *jsnCfg.Register_transport
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (dps *DispatcherHCfg) AsMapInterface() map[string]interface{} {
|
||||
return map[string]interface{}{
|
||||
utils.EnabledCfg: dps.Enabled,
|
||||
utils.DispatchersConnsCfg: dps.DispatchersConns,
|
||||
utils.HostIdsCfg: dps.HostIDs,
|
||||
utils.RegisterIntervalCfg: dps.RegisterInterval,
|
||||
utils.RegisterTransportCfg: dps.RegisterTransport,
|
||||
}
|
||||
|
||||
}
|
||||
105
config/dispatcherhcfg_test.go
Normal file
105
config/dispatcherhcfg_test.go
Normal file
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
|
||||
Copyright (C) ITsysCOM GmbH
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
package config
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
)
|
||||
|
||||
func TestDispatcherHCfgloadFromJsonCfg(t *testing.T) {
|
||||
var daCfg, expected DispatcherHCfg
|
||||
if err := daCfg.loadFromJsonCfg(nil); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(daCfg, expected) {
|
||||
t.Errorf("Expected: %+v ,recived: %+v", expected, daCfg)
|
||||
}
|
||||
if err := daCfg.loadFromJsonCfg(new(DispatcherHJsonCfg)); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(daCfg, expected) {
|
||||
t.Errorf("Expected: %+v ,recived: %+v", expected, daCfg)
|
||||
}
|
||||
cfgJSONStr := `{
|
||||
"dispatcherh":{
|
||||
"enabled": true,
|
||||
"dispatchers_conns": ["conn1","conn2"],
|
||||
"host_ids": ["HOST1","HOST2"],
|
||||
"register_interval": "5m",
|
||||
"register_transport": "*json",
|
||||
},
|
||||
}`
|
||||
expected = DispatcherHCfg{
|
||||
Enabled: true,
|
||||
DispatchersConns: []string{"conn1", "conn2"},
|
||||
HostIDs: []string{"HOST1", "HOST2"},
|
||||
RegisterInterval: 5 * time.Minute,
|
||||
RegisterTransport: utils.MetaJSON,
|
||||
}
|
||||
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
|
||||
t.Error(err)
|
||||
} else if jsnDaCfg, err := jsnCfg.DispatcherHJsonCfg(); err != nil {
|
||||
t.Error(err)
|
||||
} else if err = daCfg.loadFromJsonCfg(jsnDaCfg); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(expected, daCfg) {
|
||||
t.Errorf("Expected: %+v,\nRecived: %+v", utils.ToJSON(expected), utils.ToJSON(daCfg))
|
||||
}
|
||||
}
|
||||
|
||||
func TestDispatcherHCfgAsMapInterface(t *testing.T) {
|
||||
var daCfg, expected DispatcherHCfg
|
||||
if err := daCfg.loadFromJsonCfg(nil); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(daCfg, expected) {
|
||||
t.Errorf("Expected: %+v ,recived: %+v", expected, daCfg)
|
||||
}
|
||||
if err := daCfg.loadFromJsonCfg(new(DispatcherHJsonCfg)); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(daCfg, expected) {
|
||||
t.Errorf("Expected: %+v ,recived: %+v", expected, daCfg)
|
||||
}
|
||||
cfgJSONStr := `{
|
||||
"dispatcherh":{
|
||||
"enabled": true,
|
||||
"dispatchers_conns": ["conn1","conn2"],
|
||||
"host_ids": ["HOST1","HOST2"],
|
||||
"register_interval": "5m",
|
||||
"register_transport": "*json",
|
||||
},
|
||||
}`
|
||||
eMap := map[string]interface{}{
|
||||
"enabled": true,
|
||||
"dispatchers_conns": []string{"conn1", "conn2"},
|
||||
"host_ids": []string{"HOST1", "HOST2"},
|
||||
"register_interval": 5 * time.Minute,
|
||||
"register_transport": "*json",
|
||||
}
|
||||
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
|
||||
t.Error(err)
|
||||
} else if jsnDaCfg, err := jsnCfg.DispatcherHJsonCfg(); err != nil {
|
||||
t.Error(err)
|
||||
} else if err = daCfg.loadFromJsonCfg(jsnDaCfg); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv := daCfg.AsMapInterface(); !reflect.DeepEqual(eMap, rcv) {
|
||||
t.Errorf("\nExpected: %+v\nRecived: %+v", utils.ToJSON(eMap), utils.ToJSON(rcv))
|
||||
}
|
||||
}
|
||||
@@ -22,12 +22,13 @@ import "github.com/cgrates/cgrates/utils"
|
||||
|
||||
// HTTP config section
|
||||
type HTTPCfg struct {
|
||||
HTTPJsonRPCURL string // JSON RPC relative URL ("" to disable)
|
||||
HTTPWSURL string // WebSocket relative URL ("" to disable)
|
||||
HTTPFreeswitchCDRsURL string // Freeswitch CDRS relative URL ("" to disable)
|
||||
HTTPCDRsURL string // CDRS relative URL ("" to disable)
|
||||
HTTPUseBasicAuth bool // Use basic auth for HTTP API
|
||||
HTTPAuthUsers map[string]string // Basic auth user:password map (base64 passwords)
|
||||
HTTPJsonRPCURL string // JSON RPC relative URL ("" to disable)
|
||||
DispatchersRegistrarURL string // dispatcherH registrar service relative URL
|
||||
HTTPWSURL string // WebSocket relative URL ("" to disable)
|
||||
HTTPFreeswitchCDRsURL string // Freeswitch CDRS relative URL ("" to disable)
|
||||
HTTPCDRsURL string // CDRS relative URL ("" to disable)
|
||||
HTTPUseBasicAuth bool // Use basic auth for HTTP API
|
||||
HTTPAuthUsers map[string]string // Basic auth user:password map (base64 passwords)
|
||||
}
|
||||
|
||||
//loadFromJsonCfg loads Database config from JsonCfg
|
||||
@@ -38,6 +39,9 @@ func (httpcfg *HTTPCfg) loadFromJsonCfg(jsnHttpCfg *HTTPJsonCfg) (err error) {
|
||||
if jsnHttpCfg.Json_rpc_url != nil {
|
||||
httpcfg.HTTPJsonRPCURL = *jsnHttpCfg.Json_rpc_url
|
||||
}
|
||||
if jsnHttpCfg.Dispatchers_registrar_url != nil {
|
||||
httpcfg.DispatchersRegistrarURL = *jsnHttpCfg.Dispatchers_registrar_url
|
||||
}
|
||||
if jsnHttpCfg.Ws_url != nil {
|
||||
httpcfg.HTTPWSURL = *jsnHttpCfg.Ws_url
|
||||
}
|
||||
@@ -64,11 +68,12 @@ func (httpcfg *HTTPCfg) AsMapInterface() map[string]interface{} {
|
||||
}
|
||||
|
||||
return map[string]interface{}{
|
||||
utils.HTTPJsonRPCURLCfg: httpcfg.HTTPJsonRPCURL,
|
||||
utils.HTTPWSURLCfg: httpcfg.HTTPWSURL,
|
||||
utils.HTTPFreeswitchCDRsURLCfg: httpcfg.HTTPFreeswitchCDRsURL,
|
||||
utils.HTTPCDRsURLCfg: httpcfg.HTTPCDRsURL,
|
||||
utils.HTTPUseBasicAuthCfg: httpcfg.HTTPUseBasicAuth,
|
||||
utils.HTTPAuthUsersCfg: httpUsers,
|
||||
utils.HTTPJsonRPCURLCfg: httpcfg.HTTPJsonRPCURL,
|
||||
utils.DispatchersRegistrarURLCfg: httpcfg.DispatchersRegistrarURL,
|
||||
utils.HTTPWSURLCfg: httpcfg.HTTPWSURL,
|
||||
utils.HTTPFreeswitchCDRsURLCfg: httpcfg.HTTPFreeswitchCDRsURL,
|
||||
utils.HTTPCDRsURLCfg: httpcfg.HTTPCDRsURL,
|
||||
utils.HTTPUseBasicAuthCfg: httpcfg.HTTPUseBasicAuth,
|
||||
utils.HTTPAuthUsersCfg: httpUsers,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,6 +70,7 @@ func TestHTTPCfgAsMapInterface(t *testing.T) {
|
||||
cfgJSONStr := `{
|
||||
"http": {
|
||||
"json_rpc_url": "/jsonrpc",
|
||||
"dispatchers_registrar_url": "/dispatchers_registrar",
|
||||
"ws_url": "/ws",
|
||||
"freeswitch_cdrs_url": "/freeswitch_json",
|
||||
"http_cdrs": "/cdr_http",
|
||||
@@ -79,12 +80,13 @@ func TestHTTPCfgAsMapInterface(t *testing.T) {
|
||||
}`
|
||||
|
||||
eMap := map[string]interface{}{
|
||||
"json_rpc_url": "/jsonrpc",
|
||||
"ws_url": "/ws",
|
||||
"freeswitch_cdrs_url": "/freeswitch_json",
|
||||
"http_cdrs": "/cdr_http",
|
||||
"use_basic_auth": false,
|
||||
"auth_users": map[string]interface{}{},
|
||||
"json_rpc_url": "/jsonrpc",
|
||||
"dispatchers_registrar_url": "/dispatchers_registrar",
|
||||
"ws_url": "/ws",
|
||||
"freeswitch_cdrs_url": "/freeswitch_json",
|
||||
"http_cdrs": "/cdr_http",
|
||||
"use_basic_auth": false,
|
||||
"auth_users": map[string]interface{}{},
|
||||
}
|
||||
|
||||
if jsnCfg, err := NewCgrJsonCfgFromBytes([]byte(cfgJSONStr)); err != nil {
|
||||
|
||||
@@ -18,7 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
|
||||
package config
|
||||
|
||||
import "encoding/json"
|
||||
import (
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
// General config section
|
||||
type GeneralJsonCfg struct {
|
||||
@@ -62,12 +64,13 @@ type ListenJsonCfg struct {
|
||||
|
||||
// HTTP config section
|
||||
type HTTPJsonCfg struct {
|
||||
Json_rpc_url *string
|
||||
Ws_url *string
|
||||
Freeswitch_cdrs_url *string
|
||||
Http_Cdrs *string
|
||||
Use_basic_auth *bool
|
||||
Auth_users *map[string]string
|
||||
Json_rpc_url *string
|
||||
Dispatchers_registrar_url *string
|
||||
Ws_url *string
|
||||
Freeswitch_cdrs_url *string
|
||||
Http_Cdrs *string
|
||||
Use_basic_auth *bool
|
||||
Auth_users *map[string]string
|
||||
}
|
||||
|
||||
type TlsJsonCfg struct {
|
||||
@@ -539,6 +542,14 @@ type DispatcherSJsonCfg struct {
|
||||
Attributes_conns *[]string
|
||||
}
|
||||
|
||||
type DispatcherHJsonCfg struct {
|
||||
Enabled *bool
|
||||
Dispatchers_conns *[]string
|
||||
Host_ids *[]string
|
||||
Register_interval *string
|
||||
Register_transport *string
|
||||
}
|
||||
|
||||
type LoaderCfgJson struct {
|
||||
Tpid *string
|
||||
Data_path *string
|
||||
|
||||
@@ -277,8 +277,8 @@ func TestDispatcherHostIDsProfilesReorderFromIndex(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDispatcherHostIDsProfilesShuffle(t *testing.T) {
|
||||
dConns := DispatcherHostIDs{"DSP_1", "DSP_2", "DSP_3", "DSP_4"}
|
||||
oConns := DispatcherHostIDs{"DSP_1", "DSP_2", "DSP_3", "DSP_4"}
|
||||
dConns := DispatcherHostIDs{"DSP_1", "DSP_2", "DSP_3", "DSP_4", "DSP_5", "DSP_6", "DSP_7", "DSP_8"}
|
||||
oConns := DispatcherHostIDs{"DSP_1", "DSP_2", "DSP_3", "DSP_4", "DSP_5", "DSP_6", "DSP_7", "DSP_8"}
|
||||
if dConns.Shuffle(); reflect.DeepEqual(dConns, oConns) {
|
||||
t.Errorf("received: %s", utils.ToJSON(dConns))
|
||||
}
|
||||
|
||||
@@ -1921,12 +1921,13 @@ const (
|
||||
|
||||
// HTTPCfg
|
||||
const (
|
||||
HTTPJsonRPCURLCfg = "json_rpc_url"
|
||||
HTTPWSURLCfg = "ws_url"
|
||||
HTTPFreeswitchCDRsURLCfg = "freeswitch_cdrs_url"
|
||||
HTTPCDRsURLCfg = "http_cdrs"
|
||||
HTTPUseBasicAuthCfg = "use_basic_auth"
|
||||
HTTPAuthUsersCfg = "auth_users"
|
||||
HTTPJsonRPCURLCfg = "json_rpc_url"
|
||||
DispatchersRegistrarURLCfg = "dispatchers_registrar_url"
|
||||
HTTPWSURLCfg = "ws_url"
|
||||
HTTPFreeswitchCDRsURLCfg = "freeswitch_cdrs_url"
|
||||
HTTPCDRsURLCfg = "http_cdrs"
|
||||
HTTPUseBasicAuthCfg = "use_basic_auth"
|
||||
HTTPAuthUsersCfg = "auth_users"
|
||||
)
|
||||
|
||||
// FilterSCfg
|
||||
@@ -2211,6 +2212,14 @@ const (
|
||||
CacheDumpFieldsCfg = "cache_dump_fields"
|
||||
)
|
||||
|
||||
// DispatcherHCfg
|
||||
const (
|
||||
DispatchersConnsCfg = "dispatchers_conns"
|
||||
HostIdsCfg = "host_ids"
|
||||
RegisterIntervalCfg = "register_interval"
|
||||
RegisterTransportCfg = "register_transport"
|
||||
)
|
||||
|
||||
// CGRConfig
|
||||
const (
|
||||
LoaderCfg = "loaders" // from JSON
|
||||
@@ -2241,6 +2250,7 @@ const (
|
||||
RouteSCfg = "routes" // from JSON
|
||||
SureTaxCfg = "suretax" // from JSON
|
||||
DispatcherSCfg = "dispatchers" // from JSON
|
||||
DispatcherHCfg = "dispatcherh" // from JSON
|
||||
LoaderCgrCfg = "loader" // from JSON
|
||||
MigratorCgrCfg = "migrator" // from JSON
|
||||
MailerCfg = "mailer" // from JSON
|
||||
|
||||
Reference in New Issue
Block a user