Updated filters migration

This commit is contained in:
adragusin
2020-06-24 18:00:21 +03:00
parent c8f51fa108
commit 3e004016c5

View File

@@ -191,23 +191,7 @@ func migrateInlineFilterV2(fl string) string {
return fmt.Sprintf("%s::~%s", ruleSplt[0], utils.MetaReq+utils.NestingSep+strings.Join(ruleSplt[2:], utils.InInFieldSep))
}
func (m *Migrator) migrateRequestFilterV1() (err error) {
for {
fl, err := m.dmIN.getV1Filter()
if err != nil && err != utils.ErrNoMoreData {
return err
}
if err == utils.ErrNoMoreData {
break
}
if m.dryRun || fl == nil {
continue
}
if err := m.dmOut.DataManager().SetFilter(migrateFilterV1(fl), true); err != nil {
return err
}
m.stats[utils.RQF]++
}
func (m *Migrator) migrateOthersv1() (err error) {
if err = m.migrateResourceProfileFiltersV1(); err != nil {
return err
}
@@ -229,34 +213,26 @@ func (m *Migrator) migrateRequestFilterV1() (err error) {
if err = m.migrateDispatcherProfileFiltersV1(); err != nil {
return err
}
vrs := engine.Versions{utils.RQF: engine.CurrentDataDBVersions()[utils.RQF]}
if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
return utils.NewCGRError(utils.Migrator,
utils.ServerErrorCaps,
err.Error(),
fmt.Sprintf("error: <%s> when updating Filters version into dataDB", err.Error()))
}
return
}
func (m *Migrator) migrateRequestFilterV2() (err error) {
for {
fl, err := m.dmIN.getV1Filter()
if err != nil && err != utils.ErrNoMoreData {
return err
}
if err == utils.ErrNoMoreData {
break
}
if m.dryRun || fl == nil {
continue
}
if err := m.dmOut.DataManager().SetFilter(migrateFilterV2(fl), true); err != nil {
return fmt.Errorf("Error: <%s> when setting filter with tenant: <%s> and id: <%s> after migration",
err.Error(), fl.Tenant, fl.ID)
}
m.stats[utils.RQF]++
func (m *Migrator) migrateRequestFilterV1() (fltr *engine.Filter, err error) {
// var v1Fltr *v1Filter
v1Fltr, err := m.dmIN.getV1Filter()
fmt.Println("inside migrateRequestFilterV1 ================ err: ", err)
fmt.Println("inside migrateRequestFilterV1 ================ fltr: ", utils.ToJSON(v1Fltr))
if err != nil {
fmt.Println("err!=nil: ", err)
return
}
if v1Fltr == nil {
return nil, utils.ErrNoMoreData
}
fltr = migrateFilterV1(v1Fltr)
return
}
func (m *Migrator) migrateOthersV2() (err error) {
if err = m.migrateResourceProfileFiltersV2(); err != nil {
return fmt.Errorf("Error: <%s> when trying to migrate filter for ResourceProfiles",
err.Error())
@@ -285,41 +261,30 @@ func (m *Migrator) migrateRequestFilterV2() (err error) {
return fmt.Errorf("Error: <%s> when trying to migrate filter for DispatcherProfiles",
err.Error())
}
vrs := engine.Versions{utils.RQF: engine.CurrentDataDBVersions()[utils.RQF]}
if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
return utils.NewCGRError(utils.Migrator,
utils.ServerErrorCaps,
err.Error(),
fmt.Sprintf("error: <%s> when updating Filters version into dataDB", err.Error()))
}
return
}
func (m *Migrator) migrateRequestFilterV3() (err error) {
for {
fl, err := m.dmIN.getV1Filter()
if err != nil && err != utils.ErrNoMoreData {
return err
}
if err == utils.ErrNoMoreData {
break
}
if m.dryRun || fl == nil {
continue
}
if err := m.dmOut.DataManager().SetFilter(migrateFilterV3(fl), true); err != nil {
return fmt.Errorf("Error: <%s> when setting filter with tenant: <%s> and id: <%s> after migration",
err.Error(), fl.Tenant, fl.ID)
}
m.stats[utils.RQF]++
func (m *Migrator) migrateRequestFilterV2() (fltr *engine.Filter, err error) {
var v1Fltr *v1Filter
if v1Fltr, err = m.dmIN.getV1Filter(); err != nil {
return nil, err
}
vrs := engine.Versions{utils.RQF: engine.CurrentDataDBVersions()[utils.RQF]}
if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
return utils.NewCGRError(utils.Migrator,
utils.ServerErrorCaps,
err.Error(),
fmt.Sprintf("error: <%s> when updating Filters version into dataDB", err.Error()))
if err == utils.ErrNoMoreData {
return nil, nil
}
fltr = migrateFilterV2(v1Fltr)
return
}
func (m *Migrator) migrateRequestFilterV3() (fltr *engine.Filter, err error) {
var v1Fltr *v1Filter
if v1Fltr, err = m.dmIN.getV1Filter(); err != nil {
return nil, err
}
if v1Fltr == nil {
return
}
fltr = migrateFilterV3(v1Fltr)
return
}
@@ -338,26 +303,97 @@ func (m *Migrator) migrateFilters() (err error) {
utils.UndefinedVersion,
"version number is not defined for ActionTriggers model")
}
switch vrs[utils.RQF] {
case 3:
if err = m.migrateRequestFilterV3(); err != nil {
return err
migrated := true
migratedFrom := 0
var fltr *engine.Filter
for {
fmt.Println("first_for")
version := vrs[utils.RQF]
for {
fmt.Println("second_for\n\tversion = ", version)
switch version {
case current[utils.RQF]:
migrated = false
if m.sameDataDB {
break
}
if err = m.migrateCurrentRequestFilter(); err != nil {
return err
}
case 1:
fmt.Println("case 1 :AICI")
if fltr, err = m.migrateRequestFilterV1(); err != nil && err != utils.ErrNoMoreData {
return err
}
migratedFrom = 1
version = 4
case 2:
fmt.Println("case 2: AICI")
if fltr, err = m.migrateRequestFilterV2(); err != nil && err != utils.ErrNoMoreData {
return err
}
migratedFrom = 2
version = 4
case 3:
fmt.Println("case 3: AICI")
if fltr, err = m.migrateRequestFilterV3(); err != nil && err != utils.ErrNoMoreData {
return err
}
migratedFrom = 3
version = 4
}
fmt.Println("end_switch_statement\n\tversion = ", version)
fmt.Println("current[utils.RQF]: ", current[utils.RQF])
if version == current[utils.RQF] || err == utils.ErrNoMoreData {
break
}
}
case 2:
if err = m.migrateRequestFilterV2(); err != nil {
return err
}
case 1:
if err = m.migrateRequestFilterV1(); err != nil {
return err
}
case current[utils.RQF]:
if m.sameDataDB {
fmt.Println("err: ", err)
fmt.Println("!migrated: ", !migrated)
if err == utils.ErrNoMoreData || !migrated {
break
}
if err = m.migrateCurrentRequestFilter(); err != nil {
return err
fmt.Println("before this check !m.dryRun && migrated")
if !m.dryRun && migrated {
//set filters
switch migratedFrom {
case 1:
fmt.Println("SET___case 1 :AICI")
if err := m.migrateOthersv1(); err != nil {
return err
}
if err := m.dmOut.DataManager().SetFilter(fltr, true); err != nil {
return fmt.Errorf("Error: <%s> when setting filter with tenant: <%s> and id: <%s> after migration",
err.Error(), fltr.Tenant, fltr.ID)
}
case 2:
fmt.Println("SET___case 2: AICI")
if err := m.migrateOthersV2(); err != nil {
return err
}
if err := m.dmOut.DataManager().SetFilter(fltr, true); err != nil {
return fmt.Errorf("Error: <%s> when setting filter with tenant: <%s> and id: <%s> after migration",
err.Error(), fltr.Tenant, fltr.ID)
}
case 3:
fmt.Println("SET___case 3: AICI")
if err := m.dmOut.DataManager().SetFilter(fltr, true); err != nil {
return fmt.Errorf("Error: <%s> when setting filter with tenant: <%s> and id: <%s> after migration",
err.Error(), fltr.Tenant, fltr.ID)
}
}
}
m.stats[utils.RQF]++
}
if m.dryRun || !migrated {
return nil
}
vrs = engine.Versions{utils.RQF: engine.CurrentDataDBVersions()[utils.RQF]}
if err = m.dmOut.DataManager().DataDB().SetVersions(vrs, false); err != nil {
return utils.NewCGRError(utils.Migrator,
utils.ServerErrorCaps,
err.Error(),
fmt.Sprintf("error: <%s> when updating Filters version into dataDB", err.Error()))
}
return m.ensureIndexesDataDB(engine.ColFlt)
}