Update config for ers in case we find the sameID

This commit is contained in:
TeoV
2019-09-03 09:37:24 -04:00
committed by Dan Christian Bogos
parent 8150199b78
commit e614ec6942
2 changed files with 73 additions and 11 deletions

View File

@@ -44,21 +44,42 @@ func (erS *ERsCfg) loadFromJsonCfg(jsnCfg *ERsJsonCfg, sep string, dfltRdrCfg *E
erS.SessionSConns[idx].loadFromJsonCfg(jsnHaCfg)
}
}
if jsnCfg.Readers != nil {
erS.Readers = make([]*EventReaderCfg, len(*jsnCfg.Readers))
for idx, rdrs := range *jsnCfg.Readers {
if dfltRdrCfg == nil { // when loading defaults dfltRdrCfg is nil ( e.g line 195)
erS.Readers[idx] = new(EventReaderCfg)
} else {
erS.Readers[idx] = dfltRdrCfg.Clone()
}
if err = erS.appendERsReaders(jsnCfg.Readers, sep, dfltRdrCfg); err != nil {
return err
}
return nil
}
if err = erS.Readers[idx].loadFromJsonCfg(rdrs, sep); err != nil {
return err
func (ers *ERsCfg) appendERsReaders(jsnReaders *[]*EventReaderJsonCfg, separator string,
dfltRdrCfg *EventReaderCfg) (err error) {
if jsnReaders == nil {
return nil
}
for _, jsnReader := range *jsnReaders {
rdr := new(EventReaderCfg)
if dfltRdrCfg != nil {
rdr = dfltRdrCfg.Clone()
}
var haveID bool
if jsnReader.Id != nil {
for _, reader := range ers.Readers {
if reader.ID == *jsnReader.Id {
rdr = reader
haveID = true
break
}
}
}
if err := rdr.loadFromJsonCfg(jsnReader, separator); err != nil {
return err
}
if !haveID {
ers.Readers = append(ers.Readers, rdr)
}
}
return
return nil
}
// Clone itself into a new ERsCfg

View File

@@ -108,6 +108,47 @@ func TestEventReaderLoadFromJSON(t *testing.T) {
},
},
Readers: []*EventReaderCfg{
&EventReaderCfg{
ID: utils.MetaDefault,
Type: utils.MetaFileCSV,
FieldSep: ",",
RunDelay: time.Duration(0),
ConcurrentReqs: 1024,
SourcePath: "/var/spool/cgrates/cdrc/in",
ProcessedPath: "/var/spool/cgrates/cdrc/out",
XmlRootPath: utils.EmptyString,
SourceID: "ers_csv",
Tenant: nil,
Timezone: utils.EmptyString,
Filters: []string{},
Flags: utils.FlagsWithParams{},
Header_fields: make([]*FCTemplate, 0),
Content_fields: []*FCTemplate{
{Tag: "TOR", FieldId: "ToR", Type: utils.META_COMPOSED,
Value: NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "OriginID", FieldId: "OriginID", Type: utils.META_COMPOSED,
Value: NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "RequestType", FieldId: "RequestType", Type: utils.META_COMPOSED,
Value: NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Tenant", FieldId: "Tenant", Type: utils.META_COMPOSED,
Value: NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Category", FieldId: "Category", Type: utils.META_COMPOSED,
Value: NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Account", FieldId: "Account", Type: utils.META_COMPOSED,
Value: NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Subject", FieldId: "Subject", Type: utils.META_COMPOSED,
Value: NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Destination", FieldId: "Destination", Type: utils.META_COMPOSED,
Value: NewRSRParsersMustCompile("~10", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "SetupTime", FieldId: "SetupTime", Type: utils.META_COMPOSED,
Value: NewRSRParsersMustCompile("~11", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "AnswerTime", FieldId: "AnswerTime", Type: utils.META_COMPOSED,
Value: NewRSRParsersMustCompile("~12", true, utils.INFIELD_SEP), Mandatory: true},
{Tag: "Usage", FieldId: "Usage", Type: utils.META_COMPOSED,
Value: NewRSRParsersMustCompile("~13", true, utils.INFIELD_SEP), Mandatory: true},
},
Trailer_fields: make([]*FCTemplate, 0),
},
&EventReaderCfg{
ID: "file_reader1",
Type: utils.MetaFileCSV,