From a80365313c9a63ed01899fd651ca3e118817dd6f Mon Sep 17 00:00:00 2001 From: Tripon Alexandru-Ionut Date: Thu, 2 May 2019 15:29:03 +0300 Subject: [PATCH] Added DispatcherHost to Dispatchers migration --- engine/storage_mongo_datadb.go | 7 ++++-- migrator/dispatchers.go | 32 +++++++++++++++++++++++++++- migrator/migrator.go | 15 +++++++++++++ migrator/tp_dispatchers.go | 39 +++++++++++++++++++++++++++++++++- 4 files changed, 89 insertions(+), 4 deletions(-) diff --git a/engine/storage_mongo_datadb.go b/engine/storage_mongo_datadb.go index e79c667dc..2a3f1f061 100644 --- a/engine/storage_mongo_datadb.go +++ b/engine/storage_mongo_datadb.go @@ -263,12 +263,13 @@ func (ms *MongoStorage) ensureIndexesForCol(col string) (err error) { // exporte if err = ms.dropAllIndexesForCol(col); err != nil && !command.IsNotFound(err) { // make sure you do not have indexes return } + err = nil switch col { case ColAct, ColApl, ColAAp, ColAtr, ColRpl, ColDst, ColRds, ColLht, ColRFI: if err = ms.enusureIndex(col, true, "key"); err != nil { return } - case ColRsP, ColRes, ColSqs, ColSqp, ColTps, ColThs, ColSpp, ColAttr, ColFlt, ColCpp, ColDpp: + case ColRsP, ColRes, ColSqs, ColSqp, ColTps, ColThs, ColSpp, ColAttr, ColFlt, ColCpp, ColDpp, ColDph: if err = ms.enusureIndex(col, true, "tenant", "id"); err != nil { return } @@ -281,7 +282,9 @@ func (ms *MongoStorage) ensureIndexesForCol(col string) (err error) { // exporte utils.TBLTPDestinationRates, utils.TBLTPRatingPlans, utils.TBLTPSharedGroups, utils.TBLTPActions, utils.TBLTPActionPlans, utils.TBLTPActionTriggers, - utils.TBLTPStats, utils.TBLTPResources: + utils.TBLTPStats, utils.TBLTPResources, utils.TBLTPDispatchers, + utils.TBLTPDispatcherHosts, utils.TBLTPChargers, + utils.TBLTPSuppliers, utils.TBLTPThresholds: if err = ms.enusureIndex(col, true, "tpid", "id"); err != nil { return } diff --git a/migrator/dispatchers.go b/migrator/dispatchers.go index 1b30d9c88..74b6f6e82 100644 --- a/migrator/dispatchers.go +++ b/migrator/dispatchers.go @@ -55,6 +55,33 @@ func (m *Migrator) migrateCurrentDispatcher() (err error) { return } +func (m *Migrator) migrateCurrentDispatcherHost() (err error) { + var ids []string + tenant := config.CgrConfig().GeneralCfg().DefaultTenant + ids, err = m.dmIN.DataManager().DataDB().GetKeysForPrefix(utils.DispatcherHostPrefix) + if err != nil { + return err + } + for _, id := range ids { + idg := strings.TrimPrefix(id, utils.DispatcherHostPrefix+tenant+":") + dpp, err := m.dmIN.DataManager().GetDispatcherHost(tenant, idg, false, false, utils.NonTransactional) + if err != nil { + return err + } + if dpp == nil || m.dryRun { + continue + } + if err := m.dmOut.DataManager().SetDispatcherHost(dpp); err != nil { + return err + } + if err := m.dmIN.DataManager().RemoveDispatcherHost(tenant, + idg, utils.NonTransactional); err != nil { + return err + } + } + return +} + func (m *Migrator) migrateDispatchers() (err error) { var vrs engine.Versions current := engine.CurrentDataDBVersions() @@ -78,6 +105,9 @@ func (m *Migrator) migrateDispatchers() (err error) { if err = m.migrateCurrentDispatcher(); err != nil { return err } + if err = m.migrateCurrentDispatcherHost(); err != nil { + return err + } } - return m.ensureIndexesDataDB(engine.ColDpp) + return m.ensureIndexesDataDB(engine.ColDpp, engine.ColDph) } diff --git a/migrator/migrator.go b/migrator/migrator.go index 8440299da..51012c4e5 100755 --- a/migrator/migrator.go +++ b/migrator/migrator.go @@ -253,6 +253,9 @@ func (m *Migrator) Migrate(taskIDs []string) (err error, stats map[string]int) { if err := m.migrateDerivedChargers(); err != nil { log.Print("ERROR: ", utils.MetaDerivedChargersV, " ", err) } + if err := m.migrateDispatchers(); err != nil { + log.Print("ERROR: ", utils.MetaDispatchers, " ", err) + } err = nil //STORDB ALL case utils.MetaStorDB: @@ -304,6 +307,18 @@ func (m *Migrator) Migrate(taskIDs []string) (err error, stats map[string]int) { if err := m.migrateTPDestinations(); err != nil { log.Print("ERROR: ", utils.MetaTpDestinations, " ", err) } + if err := m.migrateTPChargers(); err != nil { + log.Print("ERROR: ", utils.MetaTpChargers, " ", err) + } + if err := m.migrateTPDispatchers(); err != nil { + log.Print("ERROR: ", utils.MetaTpDispatchers, " ", err) + } + if err := m.migrateCDRs(); err != nil { + log.Print("ERROR: ", utils.MetaCDRs, " ", err) + } + if err := m.migrateSessionSCosts(); err != nil { + log.Print("ERROR: ", utils.MetaSessionsCosts, " ", err) + } err = nil } } diff --git a/migrator/tp_dispatchers.go b/migrator/tp_dispatchers.go index 4cbccfc38..2beb6da90 100644 --- a/migrator/tp_dispatchers.go +++ b/migrator/tp_dispatchers.go @@ -61,6 +61,40 @@ func (m *Migrator) migrateCurrentTPDispatchers() (err error) { return } +func (m *Migrator) migrateCurrentTPDispatcherHosts() (err error) { + tpids, err := m.storDBIn.StorDB().GetTpIds(utils.TBLTPDispatcherHosts) + if err != nil { + return err + } + + for _, tpid := range tpids { + ids, err := m.storDBIn.StorDB().GetTpTableIds(tpid, utils.TBLTPDispatcherHosts, + utils.TPDistinctIds{"id"}, map[string]string{}, nil) + if err != nil { + return err + } + for _, id := range ids { + dispatchers, err := m.storDBIn.StorDB().GetTPDispatcherHosts(tpid, "", id) + if err != nil { + return err + } + if dispatchers == nil || m.dryRun { + continue + } + if err := m.storDBOut.StorDB().SetTPDispatcherHosts(dispatchers); err != nil { + return err + } + for _, dispatcher := range dispatchers { + if err := m.storDBIn.StorDB().RemTpData(utils.TBLTPDispatcherHosts, dispatcher.TPid, + map[string]string{"id": dispatcher.ID}); err != nil { + return err + } + } + } + } + return +} + func (m *Migrator) migrateTPDispatchers() (err error) { var vrs engine.Versions current := engine.CurrentStorDBVersions() @@ -84,6 +118,9 @@ func (m *Migrator) migrateTPDispatchers() (err error) { if err := m.migrateCurrentTPDispatchers(); err != nil { return err } + if err := m.migrateCurrentTPDispatcherHosts(); err != nil { + return err + } } - return m.ensureIndexesStorDB(utils.TBLTPDispatchers) + return m.ensureIndexesStorDB(utils.TBLTPDispatchers, utils.TBLTPDispatcherHosts) }