diff --git a/util/imagetools/image_test.go b/util/imagetools/image_test.go index 4f18b69..de65f1e 100644 --- a/util/imagetools/image_test.go +++ b/util/imagetools/image_test.go @@ -149,6 +149,22 @@ func TestNormalizeImageInfo(t *testing.T) { OsLang: "", OsArch: "x86_64", }, + { + Name: "Template-Win8", + OsDistro: "Windows", + OsType: osprofile.OS_TYPE_WINDOWS, + OsVersion: "8", + OsLang: "", + OsArch: "x86_64", + }, + { + Name: "Template-Win2019", + OsDistro: "Windows Server", + OsType: osprofile.OS_TYPE_WINDOWS, + OsVersion: "2019", + OsLang: "", + OsArch: "x86_64", + }, } for _, image := range images { diff --git a/util/imagetools/imagetools.go b/util/imagetools/imagetools.go index 6a29ee2..3461d6a 100644 --- a/util/imagetools/imagetools.go +++ b/util/imagetools/imagetools.go @@ -152,7 +152,7 @@ func normalizeOsDistribution(osDist string, imageName string) string { return OS_DIST_KYLIN } else if strings.Contains(osDist, "uos") { return OS_DIST_UOS - } else if strings.Contains(osDist, "windows") { + } else if strings.Contains(osDist, "windows") || regexp.MustCompile(".+win(xp|7|8|10|11|2003|2008|2012|2016|2019|2022)*").MatchString(osDist) { for _, ver := range []string{"2003", "2008", "2012", "2016", "2019", "2022"} { if strings.Contains(osDist, ver) { return OS_DIST_WINDOWS_SERVER @@ -218,6 +218,11 @@ func normalizeOsVersion(imageName string, osDist string, osVersion string) strin } } } + for i := len(versions) - 1; i > 0; i-- { + if strings.Contains(imageName, versions[i]) { + return versions[i] + } + } } return "" }