updated config for ha

This commit is contained in:
Radu Ioan Fericean
2015-12-03 11:34:18 +02:00
parent 735ad5b47e
commit ce222cf446
8 changed files with 190 additions and 67 deletions

View File

@@ -201,8 +201,12 @@ const CGRATES_CFG_JSON = `
"sm_generic": {
"enabled": false, // starts SessionManager service: <true|false>
"listen_bijson": "127.0.0.1:2014", // address where to listen for bidirectional JSON-RPC requests
"rater": "internal", // address where to reach the Rater <""|internal|127.0.0.1:2013>
"cdrs": "internal", // address where to reach CDR Server <""|internal|x.y.z.y:1234>
"ha_rater": [
{"server": "internal"} // address where to reach the Rater <""|internal|127.0.0.1:2013>
],
"ha_cdrs": [
{"server": "internal"} // address where to reach CDR Server, empty to disable CDR capturing <internal|x.y.z.y:1234>
],
"debit_interval": "0s", // interval to perform debits on.
"min_call_duration": "0s", // only authorize calls with allowed duration higher than this
"max_call_duration": "3h", // maximum call duration a prepaid call can last
@@ -211,8 +215,12 @@ const CGRATES_CFG_JSON = `
"sm_freeswitch": {
"enabled": false, // starts SessionManager service: <true|false>
"rater": "internal", // address where to reach the Rater <""|internal|127.0.0.1:2013>
"cdrs": "internal", // address where to reach CDR Server, empty to disable CDR capturing <""|internal|x.y.z.y:1234>
"ha_rater": [
{"server": "internal"} // address where to reach the Rater <""|internal|127.0.0.1:2013>
],
"ha_cdrs": [
{"server": "internal"} // address where to reach CDR Server, empty to disable CDR capturing <internal|x.y.z.y:1234>
],
"create_cdr": false, // create CDR out of events and sends them to CDRS component
"extra_fields": [], // extra fields to store in auth/CDRs when creating them
"debit_interval": "10s", // interval to perform debits on.
@@ -232,8 +240,12 @@ const CGRATES_CFG_JSON = `
"sm_kamailio": {
"enabled": false, // starts SessionManager service: <true|false>
"rater": "internal", // address where to reach the Rater <""|internal|127.0.0.1:2013>
"cdrs": "internal", // address where to reach CDR Server, empty to disable CDR capturing <""|internal|x.y.z.y:1234>
"ha_rater": [
{"server": "internal"} // address where to reach the Rater <""|internal|127.0.0.1:2013>
],
"ha_cdrs": [
{"server": "internal"} // address where to reach CDR Server, empty to disable CDR capturing <internal|x.y.z.y:1234>
],
"create_cdr": false, // create CDR out of events and sends them to CDRS component
"debit_interval": "10s", // interval to perform debits on.
"min_call_duration": "0s", // only authorize calls with allowed duration higher than this
@@ -247,8 +259,12 @@ const CGRATES_CFG_JSON = `
"sm_opensips": {
"enabled": false, // starts SessionManager service: <true|false>
"listen_udp": "127.0.0.1:2020", // address where to listen for datagram events coming from OpenSIPS
"rater": "internal", // address where to reach the Rater <""|internal|127.0.0.1:2013>
"cdrs": "internal", // address where to reach CDR Server, empty to disable CDR capturing <""|internal|x.y.z.y:1234>
"ha_rater": [
{"server": "internal"} // address where to reach the Rater <""|internal|127.0.0.1:2013>
],
"ha_cdrs": [
{"server": "internal"} // address where to reach CDR Server, empty to disable CDR capturing <internal|x.y.z.y:1234>
],
"reconnects": 5, // number of reconnects if connection is lost
"create_cdr": false, // create CDR out of events and sends them to CDRS component
"debit_interval": "10s", // interval to perform debits on.

View File

@@ -326,10 +326,16 @@ func TestDfCdrcJsonCfg(t *testing.T) {
func TestSmGenericJsonCfg(t *testing.T) {
eCfg := &SmGenericJsonCfg{
Enabled: utils.BoolPointer(false),
Listen_bijson: utils.StringPointer("127.0.0.1:2014"),
Rater: utils.StringPointer("internal"),
Cdrs: utils.StringPointer("internal"),
Enabled: utils.BoolPointer(false),
Listen_bijson: utils.StringPointer("127.0.0.1:2014"),
Ha_rater: &[]*HaPoolJsonCfg{
&HaPoolJsonCfg{
Server: utils.StringPointer("internal"),
}},
Ha_cdrs: &[]*HaPoolJsonCfg{
&HaPoolJsonCfg{
Server: utils.StringPointer("internal"),
}},
Debit_interval: utils.StringPointer("0s"),
Min_call_duration: utils.StringPointer("0s"),
Max_call_duration: utils.StringPointer("3h"),
@@ -343,9 +349,15 @@ func TestSmGenericJsonCfg(t *testing.T) {
func TestSmFsJsonCfg(t *testing.T) {
eCfg := &SmFsJsonCfg{
Enabled: utils.BoolPointer(false),
Rater: utils.StringPointer("internal"),
Cdrs: utils.StringPointer("internal"),
Enabled: utils.BoolPointer(false),
Ha_rater: &[]*HaPoolJsonCfg{
&HaPoolJsonCfg{
Server: utils.StringPointer("internal"),
}},
Ha_cdrs: &[]*HaPoolJsonCfg{
&HaPoolJsonCfg{
Server: utils.StringPointer("internal"),
}},
Create_cdr: utils.BoolPointer(false),
Extra_fields: utils.StringSlicePointer([]string{}),
Debit_interval: utils.StringPointer("10s"),
@@ -373,9 +385,15 @@ func TestSmFsJsonCfg(t *testing.T) {
func TestSmKamJsonCfg(t *testing.T) {
eCfg := &SmKamJsonCfg{
Enabled: utils.BoolPointer(false),
Rater: utils.StringPointer("internal"),
Cdrs: utils.StringPointer("internal"),
Enabled: utils.BoolPointer(false),
Ha_rater: &[]*HaPoolJsonCfg{
&HaPoolJsonCfg{
Server: utils.StringPointer("internal"),
}},
Ha_cdrs: &[]*HaPoolJsonCfg{
&HaPoolJsonCfg{
Server: utils.StringPointer("internal"),
}},
Create_cdr: utils.BoolPointer(false),
Debit_interval: utils.StringPointer("10s"),
Min_call_duration: utils.StringPointer("0s"),
@@ -396,10 +414,16 @@ func TestSmKamJsonCfg(t *testing.T) {
func TestSmOsipsJsonCfg(t *testing.T) {
eCfg := &SmOsipsJsonCfg{
Enabled: utils.BoolPointer(false),
Listen_udp: utils.StringPointer("127.0.0.1:2020"),
Rater: utils.StringPointer("internal"),
Cdrs: utils.StringPointer("internal"),
Enabled: utils.BoolPointer(false),
Listen_udp: utils.StringPointer("127.0.0.1:2020"),
Ha_rater: &[]*HaPoolJsonCfg{
&HaPoolJsonCfg{
Server: utils.StringPointer("internal"),
}},
Ha_cdrs: &[]*HaPoolJsonCfg{
&HaPoolJsonCfg{
Server: utils.StringPointer("internal"),
}},
Create_cdr: utils.BoolPointer(false),
Debit_interval: utils.StringPointer("10s"),
Min_call_duration: utils.StringPointer("0s"),

View File

@@ -164,8 +164,8 @@ type CdrcJsonCfg struct {
type SmGenericJsonCfg struct {
Enabled *bool
Listen_bijson *string
Rater *string
Cdrs *string
Ha_rater *[]*HaPoolJsonCfg
Ha_cdrs *[]*HaPoolJsonCfg
Debit_interval *string
Min_call_duration *string
Max_call_duration *string
@@ -174,8 +174,8 @@ type SmGenericJsonCfg struct {
// SM-FreeSWITCH config section
type SmFsJsonCfg struct {
Enabled *bool
Rater *string
Cdrs *string
Ha_rater *[]*HaPoolJsonCfg
Ha_cdrs *[]*HaPoolJsonCfg
Create_cdr *bool
Extra_fields *[]string
Debit_interval *string
@@ -190,6 +190,11 @@ type SmFsJsonCfg struct {
Connections *[]*FsConnJsonCfg
}
// Represents one connection instance towards a rater/cdrs server
type HaPoolJsonCfg struct {
Server *string
}
// Represents one connection instance towards FreeSWITCH
type FsConnJsonCfg struct {
Server *string
@@ -200,8 +205,8 @@ type FsConnJsonCfg struct {
// SM-Kamailio config section
type SmKamJsonCfg struct {
Enabled *bool
Rater *string
Cdrs *string
Ha_rater *[]*HaPoolJsonCfg
Ha_cdrs *[]*HaPoolJsonCfg
Create_cdr *bool
Debit_interval *string
Min_call_duration *string
@@ -219,8 +224,8 @@ type KamConnJsonCfg struct {
type SmOsipsJsonCfg struct {
Enabled *bool
Listen_udp *string
Rater *string
Cdrs *string
Ha_rater *[]*HaPoolJsonCfg
Ha_cdrs *[]*HaPoolJsonCfg
Create_cdr *bool
Debit_interval *string
Min_call_duration *string

View File

@@ -35,8 +35,17 @@ func NewDfltHaPoolConfig() *HaPoolConfig {
// One connection to Rater
type HaPoolConfig struct {
Server string
Timeout time.Duration
Server string
}
func (self *HaPoolConfig) loadFromJsonCfg(jsnCfg *HaPoolJsonCfg) error {
if jsnCfg == nil {
return nil
}
if jsnCfg.Server != nil {
self.Server = *jsnCfg.Server
}
return nil
}
// Returns the first cached default value for a SM-FreeSWITCH connection
@@ -92,11 +101,19 @@ func (self *SmGenericConfig) loadFromJsonCfg(jsnCfg *SmGenericJsonCfg) error {
if jsnCfg.Listen_bijson != nil {
self.ListenBijson = *jsnCfg.Listen_bijson
}
if jsnCfg.Rater != nil {
self.HaRater = []*HaPoolConfig{&HaPoolConfig{Server: *jsnCfg.Rater, Timeout: time.Duration(1) * time.Second}}
if jsnCfg.Ha_rater != nil {
self.HaRater = make([]*HaPoolConfig, len(*jsnCfg.Ha_rater))
for idx, jsnHaCfg := range *jsnCfg.Ha_rater {
self.HaRater[idx] = NewDfltHaPoolConfig()
self.HaRater[idx].loadFromJsonCfg(jsnHaCfg)
}
}
if jsnCfg.Cdrs != nil {
self.HaCdrs = []*HaPoolConfig{&HaPoolConfig{Server: *jsnCfg.Cdrs, Timeout: time.Duration(1) * time.Second}}
if jsnCfg.Ha_cdrs != nil {
self.HaCdrs = make([]*HaPoolConfig, len(*jsnCfg.Ha_cdrs))
for idx, jsnHaCfg := range *jsnCfg.Ha_cdrs {
self.HaCdrs[idx] = NewDfltHaPoolConfig()
self.HaCdrs[idx].loadFromJsonCfg(jsnHaCfg)
}
}
if jsnCfg.Debit_interval != nil {
if self.DebitInterval, err = utils.ParseDurationWithSecs(*jsnCfg.Debit_interval); err != nil {
@@ -142,11 +159,19 @@ func (self *SmFsConfig) loadFromJsonCfg(jsnCfg *SmFsJsonCfg) error {
if jsnCfg.Enabled != nil {
self.Enabled = *jsnCfg.Enabled
}
if jsnCfg.Rater != nil {
self.HaRater = []*HaPoolConfig{&HaPoolConfig{Server: *jsnCfg.Rater, Timeout: time.Duration(1) * time.Second}}
if jsnCfg.Ha_rater != nil {
self.HaRater = make([]*HaPoolConfig, len(*jsnCfg.Ha_rater))
for idx, jsnHaCfg := range *jsnCfg.Ha_rater {
self.HaRater[idx] = NewDfltHaPoolConfig()
self.HaRater[idx].loadFromJsonCfg(jsnHaCfg)
}
}
if jsnCfg.Cdrs != nil {
self.HaCdrs = []*HaPoolConfig{&HaPoolConfig{Server: *jsnCfg.Cdrs, Timeout: time.Duration(1) * time.Second}}
if jsnCfg.Ha_cdrs != nil {
self.HaCdrs = make([]*HaPoolConfig, len(*jsnCfg.Ha_cdrs))
for idx, jsnHaCfg := range *jsnCfg.Ha_cdrs {
self.HaCdrs[idx] = NewDfltHaPoolConfig()
self.HaCdrs[idx].loadFromJsonCfg(jsnHaCfg)
}
}
if jsnCfg.Create_cdr != nil {
self.CreateCdr = *jsnCfg.Create_cdr
@@ -251,11 +276,19 @@ func (self *SmKamConfig) loadFromJsonCfg(jsnCfg *SmKamJsonCfg) error {
if jsnCfg.Enabled != nil {
self.Enabled = *jsnCfg.Enabled
}
if jsnCfg.Rater != nil {
self.HaRater = []*HaPoolConfig{&HaPoolConfig{Server: *jsnCfg.Rater, Timeout: time.Duration(1) * time.Second}}
if jsnCfg.Ha_rater != nil {
self.HaRater = make([]*HaPoolConfig, len(*jsnCfg.Ha_rater))
for idx, jsnHaCfg := range *jsnCfg.Ha_rater {
self.HaRater[idx] = NewDfltHaPoolConfig()
self.HaRater[idx].loadFromJsonCfg(jsnHaCfg)
}
}
if jsnCfg.Cdrs != nil {
self.HaCdrs = []*HaPoolConfig{&HaPoolConfig{Server: *jsnCfg.Cdrs, Timeout: time.Duration(1) * time.Second}}
if jsnCfg.Ha_cdrs != nil {
self.HaCdrs = make([]*HaPoolConfig, len(*jsnCfg.Ha_cdrs))
for idx, jsnHaCfg := range *jsnCfg.Ha_cdrs {
self.HaCdrs[idx] = NewDfltHaPoolConfig()
self.HaCdrs[idx].loadFromJsonCfg(jsnHaCfg)
}
}
if jsnCfg.Create_cdr != nil {
self.CreateCdr = *jsnCfg.Create_cdr
@@ -323,11 +356,19 @@ func (self *SmOsipsConfig) loadFromJsonCfg(jsnCfg *SmOsipsJsonCfg) error {
if jsnCfg.Listen_udp != nil {
self.ListenUdp = *jsnCfg.Listen_udp
}
if jsnCfg.Rater != nil {
self.HaRater = []*HaPoolConfig{&HaPoolConfig{Server: *jsnCfg.Rater, Timeout: time.Duration(1) * time.Second}}
if jsnCfg.Ha_rater != nil {
self.HaRater = make([]*HaPoolConfig, len(*jsnCfg.Ha_rater))
for idx, jsnHaCfg := range *jsnCfg.Ha_rater {
self.HaRater[idx] = NewDfltHaPoolConfig()
self.HaRater[idx].loadFromJsonCfg(jsnHaCfg)
}
}
if jsnCfg.Cdrs != nil {
self.HaCdrs = []*HaPoolConfig{&HaPoolConfig{Server: *jsnCfg.Cdrs, Timeout: time.Duration(1) * time.Second}}
if jsnCfg.Ha_cdrs != nil {
self.HaCdrs = make([]*HaPoolConfig, len(*jsnCfg.Ha_cdrs))
for idx, jsnHaCfg := range *jsnCfg.Ha_cdrs {
self.HaCdrs[idx] = NewDfltHaPoolConfig()
self.HaCdrs[idx].loadFromJsonCfg(jsnHaCfg)
}
}
if jsnCfg.Create_cdr != nil {
self.CreateCdr = *jsnCfg.Create_cdr

View File

@@ -180,8 +180,12 @@
//"sm_generic": {
// "enabled": false, // starts SessionManager service: <true|false>
// "listen_bijson": "127.0.0.1:2014", // address where to listen for bidirectional JSON-RPC requests
// "rater": "internal", // address where to reach the Rater <""|internal|127.0.0.1:2013>
// "cdrs": "internal", // address where to reach CDR Server <""|internal|x.y.z.y:1234>
// "ha_rater": [
// {"server": "internal"} // address where to reach the Rater <""|internal|127.0.0.1:2013>
// ],
// "ha_cdrs": [
// {"server": "internal"} // address where to reach CDR Server, empty to disable CDR capturing <internal|x.y.z.y:1234>
// ],
// "debit_interval": "0s", // interval to perform debits on.
// "min_call_duration": "0s", // only authorize calls with allowed duration higher than this
// "max_call_duration": "3h", // maximum call duration a prepaid call can last
@@ -190,8 +194,12 @@
//"sm_freeswitch": {
// "enabled": false, // starts SessionManager service: <true|false>
// "rater": "internal", // address where to reach the Rater <""|internal|127.0.0.1:2013>
// "cdrs": "internal", // address where to reach CDR Server, empty to disable CDR capturing <""|internal|x.y.z.y:1234>
// "ha_rater": [
// {"server": "internal"} // address where to reach the Rater <""|internal|127.0.0.1:2013>
// ],
// "ha_cdrs": [
// {"server": "internal"} // address where to reach CDR Server, empty to disable CDR capturing <internal|x.y.z.y:1234>
// ],
// "create_cdr": false, // create CDR out of events and sends them to CDRS component
// "extra_fields": [], // extra fields to store in auth/CDRs when creating them
// "debit_interval": "10s", // interval to perform debits on.
@@ -211,8 +219,12 @@
//"sm_kamailio": {
// "enabled": false, // starts SessionManager service: <true|false>
// "rater": "internal", // address where to reach the Rater <""|internal|127.0.0.1:2013>
// "cdrs": "internal", // address where to reach CDR Server, empty to disable CDR capturing <""|internal|x.y.z.y:1234>
// "ha_rater": [
// {"server": "internal"} // address where to reach the Rater <""|internal|127.0.0.1:2013>
// ],
// "ha_cdrs": [
// {"server": "internal"} // address where to reach CDR Server, empty to disable CDR capturing <internal|x.y.z.y:1234>
// ],
// "create_cdr": false, // create CDR out of events and sends them to CDRS component
// "debit_interval": "10s", // interval to perform debits on.
// "min_call_duration": "0s", // only authorize calls with allowed duration higher than this
@@ -226,8 +238,12 @@
//"sm_opensips": {
// "enabled": false, // starts SessionManager service: <true|false>
// "listen_udp": "127.0.0.1:2020", // address where to listen for datagram events coming from OpenSIPS
// "rater": "internal", // address where to reach the Rater <""|internal|127.0.0.1:2013>
// "cdrs": "internal", // address where to reach CDR Server, empty to disable CDR capturing <""|internal|x.y.z.y:1234>
// "ha_rater": [
// {"server": "internal"} // address where to reach the Rater <""|internal|127.0.0.1:2013>
// ],
// "ha_cdrs": [
// {"server": "internal"} // address where to reach CDR Server, empty to disable CDR capturing <internal|x.y.z.y:1234>
// ],
// "reconnects": 5, // number of reconnects if connection is lost
// "create_cdr": false, // create CDR out of events and sends them to CDRS component
// "debit_interval": "10s", // interval to perform debits on.
@@ -334,4 +350,4 @@
// "tax_exemption_code_list": "", // template extracting tax exemption code list out of StoredCdr; <$RSRFields>
//},
}
}

View File

@@ -47,8 +47,12 @@
"sm_generic": {
"enabled": true,
"rater": "internal",
"cdrs": "internal",
"ha_rater": [
{"server": "internal"} // address where to reach the Rater <""|internal|127.0.0.1:2013>
],
"ha_cdrs": [
{"server": "internal"} // address where to reach CDR Server, empty to disable CDR capturing <internal|x.y.z.y:1234>
],
},
"diameter_agent": {

View File

@@ -179,8 +179,12 @@
"sm_generic": {
"enabled": true, // starts SessionManager service: <true|false>
// "listen_bijson": "127.0.0.1:2014", // address where to listen for bidirectional JSON-RPC requests
// "rater": "internal", // address where to reach the Rater <""|internal|127.0.0.1:2013>
// "cdrs": "internal", // address where to reach CDR Server <""|internal|x.y.z.y:1234>
// "ha_rater": [
// {"server": "internal"} // address where to reach the Rater <""|internal|127.0.0.1:2013>
// ],
// "ha_cdrs": [
// {"server": "internal"} // address where to reach CDR Server, empty to disable CDR capturing <internal|x.y.z.y:1234>
// ],
// "debit_interval": "10s", // interval to perform debits on.
// "min_call_duration": "0s", // only authorize calls with allowed duration higher than this
// "max_call_duration": "3h", // maximum call duration a prepaid call can last
@@ -189,8 +193,12 @@
//"sm_freeswitch": {
// "enabled": false, // starts SessionManager service: <true|false>
// "rater": "internal", // address where to reach the Rater <""|internal|127.0.0.1:2013>
// "cdrs": "internal", // address where to reach CDR Server, empty to disable CDR capturing <""|internal|x.y.z.y:1234>
// "ha_rater": [
// {"server": "internal"} // address where to reach the Rater <""|internal|127.0.0.1:2013>
// ],
// "ha_cdrs": [
// {"server": "internal"} // address where to reach CDR Server, empty to disable CDR capturing <internal|x.y.z.y:1234>
// ],
// "create_cdr": false, // create CDR out of events and sends them to CDRS component
// "extra_fields": [], // extra fields to store in auth/CDRs when creating them
// "debit_interval": "10s", // interval to perform debits on.
@@ -210,8 +218,12 @@
//"sm_kamailio": {
// "enabled": false, // starts SessionManager service: <true|false>
// "rater": "internal", // address where to reach the Rater <""|internal|127.0.0.1:2013>
// "cdrs": "internal", // address where to reach CDR Server, empty to disable CDR capturing <""|internal|x.y.z.y:1234>
// "ha_rater": [
// {"server": "internal"} // address where to reach the Rater <""|internal|127.0.0.1:2013>
// ],
// "ha_cdrs": [
// {"server": "internal"} // address where to reach CDR Server, empty to disable CDR capturing <internal|x.y.z.y:1234>
// ],
// "create_cdr": false, // create CDR out of events and sends them to CDRS component
// "debit_interval": "10s", // interval to perform debits on.
// "min_call_duration": "0s", // only authorize calls with allowed duration higher than this
@@ -225,8 +237,12 @@
//"sm_opensips": {
// "enabled": false, // starts SessionManager service: <true|false>
// "listen_udp": "127.0.0.1:2020", // address where to listen for datagram events coming from OpenSIPS
// "rater": "internal", // address where to reach the Rater <""|internal|127.0.0.1:2013>
// "cdrs": "internal", // address where to reach CDR Server, empty to disable CDR capturing <""|internal|x.y.z.y:1234>
// "ha_rater": [
// {"server": "internal"} // address where to reach the Rater <""|internal|127.0.0.1:2013>
// ],
// "ha_cdrs": [
// {"server": "internal"} // address where to reach CDR Server, empty to disable CDR capturing <internal|x.y.z.y:1234>
// ],
// "reconnects": 5, // number of reconnects if connection is lost
// "create_cdr": false, // create CDR out of events and sends them to CDRS component
// "debit_interval": "10s", // interval to perform debits on.

View File

@@ -2,6 +2,7 @@ package: github.com/cgrates/cgrates
import:
- package: github.com/ugorji/go
- package: github.com/jinzhu/gorm
- package: github.com/jinzhu/inflection
- package: golang.org/x/net
- package: github.com/DisposaBoy/JsonConfigReader
- package: github.com/go-sql-driver/mysql