mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
migrate action plans
This commit is contained in:
@@ -36,7 +36,7 @@ import (
|
||||
var (
|
||||
//separator = flag.String("separator", ",", "Default field separator")
|
||||
cgrConfig, _ = config.NewDefaultCGRConfig()
|
||||
migrateRC8 = flag.String("migrate_rc8", "", "Migrate Accounts, Actions, ActionTriggers and DerivedChargers to RC8 structures, possible values: *all,acc,atr,act,dcs")
|
||||
migrateRC8 = flag.String("migrate_rc8", "", "Migrate Accounts, Actions, ActionTriggers and DerivedChargers to RC8 structures, possible values: *all,acc,atr,act,dcs,apl")
|
||||
tpdb_type = flag.String("tpdb_type", cgrConfig.TpDbType, "The type of the TariffPlan database <redis>")
|
||||
tpdb_host = flag.String("tpdb_host", cgrConfig.TpDbHost, "The TariffPlan host to connect to.")
|
||||
tpdb_port = flag.String("tpdb_port", cgrConfig.TpDbPort, "The TariffPlan port to bind to.")
|
||||
@@ -142,6 +142,11 @@ func main() {
|
||||
log.Print(err.Error())
|
||||
}
|
||||
}
|
||||
if strings.Contains(*migrateRC8, "apl") || strings.Contains(*migrateRC8, "*all") {
|
||||
if err := migratorRC8rat.migrateActionPlans(); err != nil {
|
||||
log.Print(err.Error())
|
||||
}
|
||||
}
|
||||
log.Print("Done!")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -425,3 +425,45 @@ func (mig MigratorRC8) migrateDerivedChargers() error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (mig MigratorRC8) migrateActionPlans() error {
|
||||
keys, err := mig.db.Cmd("KEYS", utils.ACTION_PLAN_PREFIX+"*").List()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
aplsMap := make(map[string]engine.ActionPlans, len(keys))
|
||||
for _, key := range keys {
|
||||
log.Printf("Migrating action plans: %s...", key)
|
||||
var apls engine.ActionPlans
|
||||
var values []byte
|
||||
if values, err = mig.db.Cmd("GET", key).Bytes(); err == nil {
|
||||
if err := mig.ms.Unmarshal(values, &apls); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
// change all AccountIds
|
||||
for _, apl := range apls {
|
||||
for idx, actionId := range apl.AccountIds {
|
||||
// fix id
|
||||
idElements := strings.Split(actionId, utils.CONCATENATED_KEY_SEP)
|
||||
if len(idElements) != 3 {
|
||||
log.Printf("Malformed account ID %s", actionId)
|
||||
continue
|
||||
}
|
||||
apl.AccountIds[idx] = fmt.Sprintf("%s:%s", idElements[1], idElements[2])
|
||||
}
|
||||
}
|
||||
aplsMap[key] = apls
|
||||
}
|
||||
// write data back
|
||||
for key, apl := range aplsMap {
|
||||
result, err := mig.ms.Marshal(apl)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err = mig.db.Cmd("SET", key, result).Err; err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user