Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions src/shared/config/migration/migration-manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,18 @@ type ConfigUpgrader struct {
UpgradeFunc func(serializedConfig map[string]any) (map[string]any, error)
}

func UpdateConfig(serializedConfig map[string]any) error {
func UpdateConfig(serializedConfig map[string]any) (map[string]any, error) {

// Get the config's version
configVersion, err := getVersionFromConfig(serializedConfig)
if err != nil {
return err
return nil, err
}

// Create versions
v1, err := parseVersion(v1LegacyVersionMax)
if err != nil {
return err
return nil, err
}

// Create the collection of upgraders
Expand All @@ -52,19 +52,19 @@ func UpdateConfig(serializedConfig map[string]any) error {

// If there are no upgrades to apply, return
if targetIndex == -1 {
return nil
return serializedConfig, nil
}

// If there are upgrades, start at the first applicable index and apply them all in series
for i := targetIndex; i < len(upgraders); i++ {
upgrader := upgraders[i]
serializedConfig, err = upgrader.UpgradeFunc(serializedConfig)
if err != nil {
return fmt.Errorf("error applying upgrade for config version %s: %w", upgrader.Version.String(), err)
return nil, fmt.Errorf("error applying upgrade for config version %s: %w", upgrader.Version.String(), err)
}
}

return nil
return serializedConfig, nil

}

Expand Down Expand Up @@ -94,12 +94,12 @@ func getVersionFromConfig(serializedConfig map[string]any) (*version.Version, er
if !ok {
return nil, fmt.Errorf("detected a Smart Node v1 config; it has an entry named [%s.%s] but it is not a string, it's a %s", legacyRootConfigName, legacyVersionKey, reflect.TypeOf(configVersionEntry))
}
}

var ok bool
configVersionString, ok = configVersionEntry.(string)
if !ok {
return nil, fmt.Errorf("config has an entry named [%s] but it is not a string, it's a %s", ids.VersionID, reflect.TypeOf(configVersionEntry))
} else {
var ok bool
configVersionString, ok = configVersionEntry.(string)
if !ok {
return nil, fmt.Errorf("config has an entry named [%s] but it is not a string, it's a %s", ids.VersionID, reflect.TypeOf(configVersionEntry))
}
}

configVersion, err := version.NewVersion(strings.TrimPrefix(configVersionString, "v"))
Expand Down
3 changes: 2 additions & 1 deletion src/shared/config/smartnode-config.go
Original file line number Diff line number Diff line change
Expand Up @@ -516,8 +516,9 @@ func (cfg *SmartNodeConfig) Serialize() map[string]any {

// Deserializes a settings file into this config
func (cfg *SmartNodeConfig) Deserialize(masterMap map[string]any) error {
var err error
// Upgrade the config to the latest version
err := migration.UpdateConfig(masterMap)
masterMap, err = migration.UpdateConfig(masterMap)
if err != nil {
return fmt.Errorf("error upgrading configuration to v%s: %w", shared.RocketPoolVersion, err)
}
Expand Down