diff --git a/apier/v1/apier.go b/apier/v1/apier.go index b31888976..a04a1c7c0 100644 --- a/apier/v1/apier.go +++ b/apier/v1/apier.go @@ -274,7 +274,7 @@ func (self *ApierV1) LoadTariffPlanFromStorDb(attrs AttrLoadTpFromStorDb, reply *reply = OK return nil // Mission complete, no errors } - if err := dbReader.WriteToDatabase(attrs.FlushDb, false); err != nil { + if err := dbReader.WriteToDatabase(attrs.FlushDb, false, false); err != nil { return utils.NewErrServerError(err) } // Make sure the items are in the cache @@ -833,7 +833,7 @@ func (self *ApierV1) LoadTariffPlanFromFolder(attrs utils.AttrLoadTpFromFolder, } } - if err := loader.WriteToDatabase(attrs.FlushDb, false); err != nil { + if err := loader.WriteToDatabase(attrs.FlushDb, false, false); err != nil { return utils.NewErrServerError(err) } // Make sure the items are in the cache diff --git a/apier/v2/apier.go b/apier/v2/apier.go index 9f0ef50e1..45f17836b 100644 --- a/apier/v2/apier.go +++ b/apier/v2/apier.go @@ -152,7 +152,7 @@ func (self *ApierV2) LoadTariffPlanFromFolder(attrs utils.AttrLoadTpFromFolder, } } - if err := loader.WriteToDatabase(attrs.FlushDb, false); err != nil { + if err := loader.WriteToDatabase(attrs.FlushDb, false, false); err != nil { return utils.NewErrServerError(err) } // Make sure the items are in the cache diff --git a/cmd/cgr-loader/cgr-loader.go b/cmd/cgr-loader/cgr-loader.go index 036885852..60b22fcf4 100644 --- a/cmd/cgr-loader/cgr-loader.go +++ b/cmd/cgr-loader/cgr-loader.go @@ -78,6 +78,7 @@ var ( runId = flag.String("runid", "", "Uniquely identify an import/load, postpended to some automatic fields") loadHistorySize = flag.Int("load_history_size", cgrConfig.LoadHistorySize, "Limit the number of records in the load history") timezone = flag.String("timezone", cgrConfig.DefaultTimezone, `Timezone for timestamps where not specified <""|UTC|Local|$IANA_TZ_DB>`) + disable_reverse = flag.Bool("disable_reverse_mappings", false, "Will disable reverse mappings rebuilding") ) func main() { @@ -336,7 +337,7 @@ func main() { } // write maps to database - if err := tpReader.WriteToDatabase(*flush, *verbose); err != nil { + if err := tpReader.WriteToDatabase(*flush, *verbose, *disable_reverse); err != nil { log.Fatal("Could not write to database: ", err) } if len(*historyServer) != 0 && *verbose { diff --git a/engine/libtest.go b/engine/libtest.go index a623e6c31..3aa1cb432 100644 --- a/engine/libtest.go +++ b/engine/libtest.go @@ -91,7 +91,7 @@ func StopStartEngine(cfgPath string, waitEngine int) (*exec.Cmd, error) { return StartEngine(cfgPath, waitEngine) } -func LoadTariffPlanFromFolder(tpPath, timezone string, ratingDb RatingStorage, accountingDb AccountingStorage) error { +func LoadTariffPlanFromFolder(tpPath, timezone string, ratingDb RatingStorage, accountingDb AccountingStorage, disable_reverse bool) error { loader := NewTpReader(ratingDb, accountingDb, NewFileCSVStorage(utils.CSV_SEP, path.Join(tpPath, utils.DESTINATIONS_CSV), path.Join(tpPath, utils.TIMINGS_CSV), @@ -115,7 +115,7 @@ func LoadTariffPlanFromFolder(tpPath, timezone string, ratingDb RatingStorage, a if err := loader.LoadAll(); err != nil { return utils.NewErrServerError(err) } - if err := loader.WriteToDatabase(false, false); err != nil { + if err := loader.WriteToDatabase(false, false, disable_reverse); err != nil { return utils.NewErrServerError(err) } return nil diff --git a/engine/loader_csv_test.go b/engine/loader_csv_test.go index 1680d62fc..ba752bedd 100644 --- a/engine/loader_csv_test.go +++ b/engine/loader_csv_test.go @@ -333,7 +333,7 @@ func init() { if err := csvr.LoadResourceLimits(); err != nil { log.Print("error in LoadResourceLimits:", err) } - csvr.WriteToDatabase(false, false) + csvr.WriteToDatabase(false, false, false) cache2go.Flush() ratingStorage.PreloadRatingCache() accountingStorage.PreloadAccountingCache() diff --git a/engine/loader_local_test.go b/engine/loader_local_test.go index ac02dd433..b737c5df1 100644 --- a/engine/loader_local_test.go +++ b/engine/loader_local_test.go @@ -181,7 +181,7 @@ func TestLoadFromCSV(t *testing.T) { if err = loader.LoadResourceLimits(); err != nil { t.Error("Failed loading resource limits: ", err.Error()) } - if err := loader.WriteToDatabase(true, false); err != nil { + if err := loader.WriteToDatabase(true, false, false); err != nil { t.Error("Could not write data into ratingDb: ", err.Error()) } } diff --git a/engine/tp_reader.go b/engine/tp_reader.go index a5c7f7dc8..654af97d1 100644 --- a/engine/tp_reader.go +++ b/engine/tp_reader.go @@ -1634,7 +1634,7 @@ func (tpr *TpReader) IsValid() bool { return valid } -func (tpr *TpReader) WriteToDatabase(flush, verbose bool) (err error) { +func (tpr *TpReader) WriteToDatabase(flush, verbose, disable_reverse bool) (err error) { if tpr.ratingStorage == nil || tpr.accountingStorage == nil { return errors.New("no database connection") } @@ -1653,9 +1653,10 @@ func (tpr *TpReader) WriteToDatabase(flush, verbose bool) (err error) { log.Print("\t", d.Id, " : ", d.Prefixes) } } - err = tpr.ratingStorage.RebuildReverseForPrefix(utils.REVERSE_DESTINATION_PREFIX) - if err != nil { - return err + if !disable_reverse { + if err = tpr.ratingStorage.RebuildReverseForPrefix(utils.REVERSE_DESTINATION_PREFIX); err != nil { + return err + } } if verbose { log.Print("Rating Plans:") @@ -1830,9 +1831,10 @@ func (tpr *TpReader) WriteToDatabase(flush, verbose bool) (err error) { log.Print("\t", al.GetId()) } } - err = tpr.accountingStorage.RebuildReverseForPrefix(utils.REVERSE_ALIASES_PREFIX) - if err != nil { - return err + if !disable_reverse { + if err = tpr.accountingStorage.RebuildReverseForPrefix(utils.REVERSE_ALIASES_PREFIX); err != nil { + return err + } } if verbose { log.Print("ResourceLimits:") diff --git a/general_tests/acntacts_test.go b/general_tests/acntacts_test.go index 354675f79..9055d995e 100644 --- a/general_tests/acntacts_test.go +++ b/general_tests/acntacts_test.go @@ -62,7 +62,7 @@ ENABLE_ACNT,*enable_account,,,,,,,,,,,,,,false,false,10` if err := csvr.LoadAll(); err != nil { t.Fatal(err) } - csvr.WriteToDatabase(false, false) + csvr.WriteToDatabase(false, false, false) cache2go.Flush() ratingDbAcntActs.PreloadRatingCache() diff --git a/general_tests/auth_test.go b/general_tests/auth_test.go index 7a2a05e86..4f57b81e7 100644 --- a/general_tests/auth_test.go +++ b/general_tests/auth_test.go @@ -70,7 +70,7 @@ RP_ANY,DR_ANY_1CNT,*any,10` if err := csvr.LoadAll(); err != nil { t.Fatal(err) } - csvr.WriteToDatabase(false, false) + csvr.WriteToDatabase(false, false, false) if acnt, err := acntDbAuth.GetAccount("cgrates.org:testauthpostpaid1"); err != nil { t.Error(err) } else if acnt == nil { diff --git a/general_tests/costs1_test.go b/general_tests/costs1_test.go index 68aadc3d3..5535099e2 100644 --- a/general_tests/costs1_test.go +++ b/general_tests/costs1_test.go @@ -74,7 +74,7 @@ RP_SMS1,DR_SMS_1,ALWAYS,10` if err := csvr.LoadRatingProfiles(); err != nil { t.Fatal(err) } - csvr.WriteToDatabase(false, false) + csvr.WriteToDatabase(false, false, false) cache2go.Flush() ratingDb.PreloadRatingCache() acntDb.PreloadAccountingCache() diff --git a/general_tests/datachrg1_test.go b/general_tests/datachrg1_test.go index 2ca9905c1..735679ebd 100644 --- a/general_tests/datachrg1_test.go +++ b/general_tests/datachrg1_test.go @@ -61,7 +61,7 @@ RP_DATA1,DR_DATA_2,TM2,10` if err := csvr.LoadRatingProfiles(); err != nil { t.Fatal(err) } - csvr.WriteToDatabase(false, false) + csvr.WriteToDatabase(false, false, false) cache2go.Flush() ratingDb.PreloadRatingCache() acntDb.PreloadAccountingCache() diff --git a/general_tests/ddazmbl1_test.go b/general_tests/ddazmbl1_test.go index de9ed504f..8358ddf7a 100644 --- a/general_tests/ddazmbl1_test.go +++ b/general_tests/ddazmbl1_test.go @@ -105,7 +105,7 @@ TOPUP10_AT,TOPUP10_AC1,ASAP,10` if err := csvr.LoadDerivedChargers(); err != nil { t.Fatal(err) } - csvr.WriteToDatabase(false, false) + csvr.WriteToDatabase(false, false, false) if acnt, err := acntDb.GetAccount("cgrates.org:12344"); err != nil { t.Error(err) } else if acnt == nil { diff --git a/general_tests/ddazmbl2_test.go b/general_tests/ddazmbl2_test.go index 927614782..1943649bc 100644 --- a/general_tests/ddazmbl2_test.go +++ b/general_tests/ddazmbl2_test.go @@ -105,7 +105,7 @@ TOPUP10_AT,TOPUP10_AC1,ASAP,10` if err := csvr.LoadDerivedChargers(); err != nil { t.Fatal(err) } - csvr.WriteToDatabase(false, false) + csvr.WriteToDatabase(false, false, false) if acnt, err := acntDb2.GetAccount("cgrates.org:12345"); err != nil { t.Error(err) } else if acnt == nil { diff --git a/general_tests/ddazmbl3_test.go b/general_tests/ddazmbl3_test.go index 76406b35d..c8b212db9 100644 --- a/general_tests/ddazmbl3_test.go +++ b/general_tests/ddazmbl3_test.go @@ -103,7 +103,7 @@ RP_UK,DR_UK_Mobile_BIG5,ALWAYS,10` if err := csvr.LoadDerivedChargers(); err != nil { t.Fatal(err) } - csvr.WriteToDatabase(false, false) + csvr.WriteToDatabase(false, false, false) if acnt, err := acntDb3.GetAccount("cgrates.org:12346"); err != nil { t.Error(err) } else if acnt == nil { diff --git a/general_tests/smschrg1_test.go b/general_tests/smschrg1_test.go index 0bc3b2173..b70c336cf 100644 --- a/general_tests/smschrg1_test.go +++ b/general_tests/smschrg1_test.go @@ -57,7 +57,7 @@ func TestSMSLoadCsvTpSmsChrg1(t *testing.T) { if err := csvr.LoadRatingProfiles(); err != nil { t.Fatal(err) } - csvr.WriteToDatabase(false, false) + csvr.WriteToDatabase(false, false, false) cache2go.Flush() ratingDb.PreloadRatingCache() acntDb.PreloadAccountingCache()