Skip to content

Commit

Permalink
Fix problem with evaluation order of parameters in .tgf.config files
Browse files Browse the repository at this point in the history
Fix version warning issue when specifying image different from the recommended image
  • Loading branch information
jocgir committed Dec 26, 2017
1 parent 544b3ed commit 275bba0
Showing 1 changed file with 27 additions and 10 deletions.
37 changes: 27 additions & 10 deletions config.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"path/filepath"
"reflect"
"regexp"
"sort"
"strings"
"time"

Expand Down Expand Up @@ -104,8 +105,16 @@ func (config *tgfConfig) SetDefaultValues() {
continue
}
}
for key, value := range result {
config.SetValue(key, value)

// We sort the keys to ensure that we alway process them in the same order
keys := make([]string, 0, len(result))
for key := range result {
keys = append(keys, key)
}
sort.Strings(keys)

for _, key := range keys {
config.SetValue(key, result[key])
}
}

Expand Down Expand Up @@ -183,29 +192,37 @@ func (config *tgfConfig) SetValue(key, value string) {
}

func (config *tgfConfig) Validate() (errors []error) {
if config.RecommendedImageVersion != "" && config.ImageVersion != nil && *config.ImageVersion != "" {
if valid, err := CheckVersionRange(*config.ImageVersion, config.RecommendedImageVersion); err != nil {
errors = append(errors, fmt.Errorf("Unable to check recommended image version %s vs %s: %v", *config.ImageVersion, config.RecommendedImageVersion, err))
if config.RecommendedTGFVersion != "" {
if valid, err := CheckVersionRange(version, config.RecommendedTGFVersion); err != nil {
errors = append(errors, fmt.Errorf("Unable to check recommended tgf version %s vs %s: %v", version, config.RecommendedTGFVersion, err))
} else if !valid {
errors = append(errors, ConfigWarning(fmt.Sprintf("Image %s does not meet the recommended version range %s", config.GetImageName(), config.RecommendedImageVersion)))
errors = append(errors, ConfigWarning(fmt.Sprintf("TGF v%s does not meet the recommended version range %s", version, config.RecommendedTGFVersion)))
}
}

if config.Image != config.recommendedImage {
// We should not issue version warning if the recommended image is not the same as the current image
return
}

if config.RequiredVersionRange != "" && config.ImageVersion != nil && *config.ImageVersion != "" {
if valid, err := CheckVersionRange(*config.ImageVersion, config.RequiredVersionRange); err != nil {
errors = append(errors, fmt.Errorf("Unable to check recommended image version %s vs %s: %v", *config.ImageVersion, config.RequiredVersionRange, err))
return
} else if !valid {
errors = append(errors, VersionMistmatchError(fmt.Sprintf("Image %s does not meet the required version range %s", config.GetImageName(), config.RequiredVersionRange)))
return
}
}

if config.RecommendedTGFVersion != "" {
if valid, err := CheckVersionRange(version, config.RecommendedTGFVersion); err != nil {
errors = append(errors, fmt.Errorf("Unable to check recommended tgf version %s vs %s: %v", version, config.RecommendedTGFVersion, err))
if config.RecommendedImageVersion != "" && config.ImageVersion != nil && *config.ImageVersion != "" {
if valid, err := CheckVersionRange(*config.ImageVersion, config.RecommendedImageVersion); err != nil {
errors = append(errors, fmt.Errorf("Unable to check recommended image version %s vs %s: %v", *config.ImageVersion, config.RecommendedImageVersion, err))
} else if !valid {
errors = append(errors, ConfigWarning(fmt.Sprintf("TGF v%s does not meet the recommended version range %s", version, config.RecommendedTGFVersion)))
errors = append(errors, ConfigWarning(fmt.Sprintf("Image %s does not meet the recommended version range %s", config.GetImageName(), config.RecommendedImageVersion)))
}
}

return
}

Expand Down

0 comments on commit 275bba0

Please sign in to comment.