mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
add replicate interval and failed_dir config opts
This commit is contained in:
@@ -99,6 +99,8 @@ const CGRATES_CFG_JSON = `
|
||||
"replication_conns":[], // the conns the items are replicated
|
||||
"replication_filtered": false, // if this is enabled the replication will be made only to the conns that received a get
|
||||
"replication_cache": "", // the caching action that is executed on the replication_conns when the items are replicated
|
||||
"replication_failed_dir": "", // directory for failed batch replications (used when interval > 0)
|
||||
"replication_interval": "", // interval between batched replications (0 for immediate)
|
||||
"items":{
|
||||
"*accounts": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false},
|
||||
"*reverse_destinations": {"limit": -1, "ttl": "", "static_ttl": false, "remote":false, "replicate":false},
|
||||
|
||||
@@ -293,6 +293,8 @@ func TestDfDataDbJsonCfg(t *testing.T) {
|
||||
Replication_filtered: utils.BoolPointer(false),
|
||||
Remote_conn_id: utils.StringPointer(""),
|
||||
Replication_cache: utils.StringPointer(""),
|
||||
RplFailedDir: utils.StringPointer(""),
|
||||
RplInterval: utils.StringPointer(""),
|
||||
Opts: &DBOptsJson{
|
||||
InternalDBDumpPath: utils.StringPointer("/var/lib/cgrates/internal_db/datadb"),
|
||||
InternalDBBackupPath: utils.StringPointer("/var/lib/cgrates/internal_db/backup/datadb"),
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -56,19 +56,21 @@ type DataDBOpts struct {
|
||||
|
||||
// DataDbCfg Database config
|
||||
type DataDbCfg struct {
|
||||
Type string
|
||||
Host string // The host to connect to. Values that start with / are for UNIX domain sockets.
|
||||
Port string // The port to bind to.
|
||||
Name string // The name of the database to connect to.
|
||||
User string // The user to sign in as.
|
||||
Password string // The user's password.
|
||||
RmtConns []string // Remote DataDB connIDs
|
||||
RmtConnID string
|
||||
RplConns []string // Replication connIDs
|
||||
RplFiltered bool
|
||||
RplCache string
|
||||
Items map[string]*ItemOpt
|
||||
Opts *DataDBOpts
|
||||
Type string
|
||||
Host string // The host to connect to. Values that start with / are for UNIX domain sockets.
|
||||
Port string // The port to bind to.
|
||||
Name string // The name of the database to connect to.
|
||||
User string // The user to sign in as.
|
||||
Password string // The user's password.
|
||||
RmtConns []string // Remote DataDB connIDs
|
||||
RmtConnID string
|
||||
RplConns []string // Replication connIDs
|
||||
RplFiltered bool
|
||||
RplCache string
|
||||
RplFailedDir string
|
||||
RplInterval time.Duration
|
||||
Items map[string]*ItemOpt
|
||||
Opts *DataDBOpts
|
||||
}
|
||||
|
||||
func (dbOpts *DataDBOpts) loadFromJSONCfg(jsnCfg *DBOptsJson) (err error) {
|
||||
@@ -241,6 +243,15 @@ func (dbcfg *DataDbCfg) loadFromJSONCfg(jsnDbCfg *DbJsonCfg) (err error) {
|
||||
if jsnDbCfg.Replication_cache != nil {
|
||||
dbcfg.RplCache = *jsnDbCfg.Replication_cache
|
||||
}
|
||||
if jsnDbCfg.RplFailedDir != nil {
|
||||
dbcfg.RplFailedDir = *jsnDbCfg.RplFailedDir
|
||||
}
|
||||
if jsnDbCfg.RplInterval != nil {
|
||||
dbcfg.RplInterval, err = utils.ParseDurationWithNanosecs(*jsnDbCfg.RplInterval)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
if jsnDbCfg.Opts != nil {
|
||||
err = dbcfg.Opts.loadFromJSONCfg(jsnDbCfg.Opts)
|
||||
}
|
||||
@@ -278,17 +289,19 @@ func (dbOpts *DataDBOpts) Clone() *DataDBOpts {
|
||||
// Clone returns the cloned object
|
||||
func (dbcfg *DataDbCfg) Clone() (cln *DataDbCfg) {
|
||||
cln = &DataDbCfg{
|
||||
Type: dbcfg.Type,
|
||||
Host: dbcfg.Host,
|
||||
Port: dbcfg.Port,
|
||||
Name: dbcfg.Name,
|
||||
User: dbcfg.User,
|
||||
Password: dbcfg.Password,
|
||||
RplFiltered: dbcfg.RplFiltered,
|
||||
RplCache: dbcfg.RplCache,
|
||||
RmtConnID: dbcfg.RmtConnID,
|
||||
Items: make(map[string]*ItemOpt),
|
||||
Opts: dbcfg.Opts.Clone(),
|
||||
Type: dbcfg.Type,
|
||||
Host: dbcfg.Host,
|
||||
Port: dbcfg.Port,
|
||||
Name: dbcfg.Name,
|
||||
User: dbcfg.User,
|
||||
Password: dbcfg.Password,
|
||||
RplFiltered: dbcfg.RplFiltered,
|
||||
RplCache: dbcfg.RplCache,
|
||||
RmtConnID: dbcfg.RmtConnID,
|
||||
RplFailedDir: dbcfg.RplFailedDir,
|
||||
RplInterval: dbcfg.RplInterval,
|
||||
Items: make(map[string]*ItemOpt),
|
||||
Opts: dbcfg.Opts.Clone(),
|
||||
}
|
||||
for k, itm := range dbcfg.Items {
|
||||
cln.Items[k] = itm.Clone()
|
||||
@@ -332,17 +345,19 @@ func (dbcfg *DataDbCfg) AsMapInterface() (mp map[string]any) {
|
||||
utils.MongoConnSchemeCfg: dbcfg.Opts.MongoConnScheme,
|
||||
}
|
||||
mp = map[string]any{
|
||||
utils.DataDbTypeCfg: dbcfg.Type,
|
||||
utils.DataDbHostCfg: dbcfg.Host,
|
||||
utils.DataDbNameCfg: dbcfg.Name,
|
||||
utils.DataDbUserCfg: dbcfg.User,
|
||||
utils.DataDbPassCfg: dbcfg.Password,
|
||||
utils.RemoteConnsCfg: dbcfg.RmtConns,
|
||||
utils.RemoteConnIDCfg: dbcfg.RmtConnID,
|
||||
utils.ReplicationConnsCfg: dbcfg.RplConns,
|
||||
utils.ReplicationFilteredCfg: dbcfg.RplFiltered,
|
||||
utils.ReplicationCache: dbcfg.RplCache,
|
||||
utils.OptsCfg: opts,
|
||||
utils.DataDbTypeCfg: dbcfg.Type,
|
||||
utils.DataDbHostCfg: dbcfg.Host,
|
||||
utils.DataDbNameCfg: dbcfg.Name,
|
||||
utils.DataDbUserCfg: dbcfg.User,
|
||||
utils.DataDbPassCfg: dbcfg.Password,
|
||||
utils.RemoteConnsCfg: dbcfg.RmtConns,
|
||||
utils.RemoteConnIDCfg: dbcfg.RmtConnID,
|
||||
utils.ReplicationConnsCfg: dbcfg.RplConns,
|
||||
utils.ReplicationFilteredCfg: dbcfg.RplFiltered,
|
||||
utils.ReplicationCache: dbcfg.RplCache,
|
||||
utils.ReplicationFailedDirCfg: dbcfg.RplFailedDir,
|
||||
utils.ReplicationIntervalCfg: dbcfg.RplInterval.String(),
|
||||
utils.OptsCfg: opts,
|
||||
}
|
||||
if dbcfg.Items != nil {
|
||||
items := make(map[string]any)
|
||||
|
||||
@@ -158,6 +158,8 @@ type DbJsonCfg struct {
|
||||
Replication_conns *[]string
|
||||
Replication_filtered *bool
|
||||
Replication_cache *string
|
||||
RplFailedDir *string `json:"replication_failed_dir"`
|
||||
RplInterval *string `json:"replication_interval"`
|
||||
Items *map[string]*ItemOptJson
|
||||
Opts *DBOptsJson
|
||||
}
|
||||
|
||||
@@ -2210,6 +2210,8 @@ const (
|
||||
ReplicationFilteredCfg = "replication_filtered"
|
||||
ReplicationCache = "replication_cache"
|
||||
RemoteConnIDCfg = "remote_conn_id"
|
||||
ReplicationFailedDirCfg = "replication_failed_dir"
|
||||
ReplicationIntervalCfg = "replication_interval"
|
||||
)
|
||||
|
||||
// ItemOpt
|
||||
|
||||
Reference in New Issue
Block a user