Skip to content

Commit

Permalink
NO-ISSUE: Change only-latest api response to compare versions accordi…
Browse files Browse the repository at this point in the history
…ng to pre-release suffix as well instead of just base version (#6209)
  • Loading branch information
danmanor committed Apr 18, 2024
1 parent 2d4a39e commit 8827b07
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 32 deletions.
12 changes: 0 additions & 12 deletions internal/common/version.go
Expand Up @@ -69,18 +69,6 @@ func BaseVersionEqual(version1, versionMayEqual string) (bool, error) {
return *majorMinorVersion1 == *majorMinorVersionMayEqual, nil
}

func MajorMinorPatchEqual(firstVersion, secondVersion string) (*bool, error) {
if GetVersionFormat(firstVersion) != MajorMinorPatchVersion {
return nil, fmt.Errorf("version '%s' is not in the form of major.minor.patch or major.minor.patch-<prerelease>", firstVersion)
}

if GetVersionFormat(secondVersion) != MajorMinorPatchVersion {
return nil, fmt.Errorf("version '%s' is not in the form of major.minor.patch or major.minor.patch-<prerelease>", secondVersion)
}

return swag.Bool(strings.Split(firstVersion, "-")[0] == strings.Split(secondVersion, "-")[0]), nil
}

func GetMajorMinorVersion(version string) (*string, error) {
version = strings.Split(version, "-")[0]
splittedVersion := strings.Split(version, ".")
Expand Down
13 changes: 0 additions & 13 deletions internal/common/version_test.go
Expand Up @@ -143,16 +143,3 @@ var _ = DescribeTable("GetVersionFormat", func(input string, expectedVersionForm
Entry("empty version", "", NoneVersion),
Entry("non-version string", "non-version", NoneVersion),
)

var _ = DescribeTable("MajorMinorPatchEqual", func(firstVersion string, secondVersion string, ExpectedResult *bool) {
isEqual, _ := MajorMinorPatchEqual(firstVersion, secondVersion)
Expect(isEqual).To(Equal(ExpectedResult))
},
Entry("two equal x.y.z versions", "4.11.0", "4.11.0", swag.Bool(true)),
Entry("two not unequal x.y.z versions", "4.11.0", "4.11.1", swag.Bool(false)),
Entry("one x.y.z version and one x.y.z-something version, equal", "4.11.0", "4.11.0-alpha", swag.Bool(true)),
Entry("one x.y.z version and one x.y.z-something version, unequal", "4.11.0", "4.12.0-alpha", swag.Bool(false)),
Entry("majorMinorVersions", "4.11", "4.11", nil),
Entry("majorVersions", "4", "4", nil),
Entry("malformed versions", "foobar", "foobar", nil),
)
13 changes: 7 additions & 6 deletions internal/versions/api.go
Expand Up @@ -98,16 +98,17 @@ func getLatestReleaseImagesForMajorMinor(releaseImages models.ReleaseImages, maj
}

// If it is the same version but different CPU architecture, add the atchitecture to the list.
isEqual, err := common.MajorMinorPatchEqual(*releaseImage.Version, *latestReleaseImages[0].Version)
if err != nil {
return nil, err
}
if *isEqual && !funk.Contains(latestReleaseImages, releaseImage) {
// We omit the "-multi" suffix if it exists so multi will be considered the same version.
if strings.TrimSuffix(*releaseImage.Version, "-multi") == strings.TrimSuffix(*latestReleaseImages[0].Version, "-multi") &&
!funk.Contains(latestReleaseImages, releaseImage) {
latestReleaseImages = append(latestReleaseImages, releaseImage)
continue
}

isNewest, err := common.BaseVersionLessThan(*releaseImage.Version, *latestReleaseImages[0].Version)
isNewest, err := common.VersionGreaterOrEqual(
strings.TrimSuffix(*releaseImage.Version, "-multi"),
strings.TrimSuffix(*latestReleaseImages[0].Version, "-multi"),
)
if err != nil {
return nil, err
}
Expand Down
68 changes: 67 additions & 1 deletion internal/versions/api_test.go
Expand Up @@ -570,6 +570,30 @@ var _ = Describe("V2ListSupportedOpenshiftVersions", func() {
Version: swag.String("4.13.2-multi"),
SupportLevel: models.OpenshiftVersionSupportLevelBeta,
},
{
CPUArchitecture: swag.String(common.X86CPUArchitecture),
CPUArchitectures: []string{common.X86CPUArchitecture},
OpenshiftVersion: swag.String("4.14"),
URL: swag.String("quay.io/openshift-release-dev/ocp-release:4.14.0-ec.2-x86_64"),
Version: swag.String("4.14.0-ec.2"),
SupportLevel: models.OpenshiftVersionSupportLevelBeta,
},
{
CPUArchitecture: swag.String(common.X86CPUArchitecture),
CPUArchitectures: []string{common.X86CPUArchitecture},
OpenshiftVersion: swag.String("4.14"),
URL: swag.String("quay.io/openshift-release-dev/ocp-release:4.14.0-ec.3-x86_64"),
Version: swag.String("4.14.0-ec.3"),
SupportLevel: models.OpenshiftVersionSupportLevelBeta,
},
{
CPUArchitecture: swag.String(common.MultiCPUArchitecture),
CPUArchitectures: []string{common.X86CPUArchitecture, common.ARM64CPUArchitecture},
OpenshiftVersion: swag.String("4.14-multi"),
URL: swag.String("quay.io/openshift-release-dev/ocp-release:4.14.0-ec.3-multi"),
Version: swag.String("4.14.0-ec.3-multi"),
SupportLevel: models.OpenshiftVersionSupportLevelBeta,
},
}

osImages := osImageList{
Expand Down Expand Up @@ -607,7 +631,19 @@ var _ = Describe("V2ListSupportedOpenshiftVersions", func() {
OpenshiftVersion: swag.String("4.13"),
CPUArchitecture: swag.String(common.ARM64CPUArchitecture),
URL: swag.String("https://mirror.openshift.com/pub/openshift-v4/aarch64/dependencies/rhcos/4.13/4.13.48/rhcos-4.13.48-aarch64-live.aarch64.iso"),
Version: swag.String("411.86.202308081056-0"),
Version: swag.String("413.86.202308081056-0"),
},
{
OpenshiftVersion: swag.String("4.14"),
CPUArchitecture: swag.String(common.X86CPUArchitecture),
URL: swag.String("https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.14/4.14.48/rhcos-4.14.48-x86_64-live.x86_64.iso"),
Version: swag.String("414.86.202308081056-0"),
},
{
OpenshiftVersion: swag.String("4.14"),
CPUArchitecture: swag.String(common.ARM64CPUArchitecture),
URL: swag.String("https://mirror.openshift.com/pub/openshift-v4/aarch64/dependencies/rhcos/4.14/4.14.48/rhcos-4.14.48-aarch64-live.aarch64.iso"),
Version: swag.String("414.86.202308081056-0"),
},
}

Expand Down Expand Up @@ -672,6 +708,24 @@ var _ = Describe("V2ListSupportedOpenshiftVersions", func() {
SupportLevel: swag.String(models.OpenshiftVersionSupportLevelBeta),
Default: false,
},
"4.14.0-ec.2": {
DisplayName: swag.String("4.14.0-ec.2"),
CPUArchitectures: []string{common.X86CPUArchitecture},
SupportLevel: swag.String(models.OpenshiftVersionSupportLevelBeta),
Default: false,
},
"4.14.0-ec.3": {
DisplayName: swag.String("4.14.0-ec.3"),
CPUArchitectures: []string{common.X86CPUArchitecture},
SupportLevel: swag.String(models.OpenshiftVersionSupportLevelBeta),
Default: false,
},
"4.14.0-ec.3-multi": {
DisplayName: swag.String("4.14.0-ec.3-multi"),
CPUArchitectures: []string{common.X86CPUArchitecture, common.ARM64CPUArchitecture},
SupportLevel: swag.String(models.OpenshiftVersionSupportLevelBeta),
Default: false,
},
}

reply := handler.V2ListSupportedOpenshiftVersions(
Expand Down Expand Up @@ -714,6 +768,18 @@ var _ = Describe("V2ListSupportedOpenshiftVersions", func() {
SupportLevel: swag.String(models.OpenshiftVersionSupportLevelBeta),
Default: false,
},
"4.14.0-ec.3": {
DisplayName: swag.String("4.14.0-ec.3"),
CPUArchitectures: []string{common.X86CPUArchitecture},
SupportLevel: swag.String(models.OpenshiftVersionSupportLevelBeta),
Default: false,
},
"4.14.0-ec.3-multi": {
DisplayName: swag.String("4.14.0-ec.3-multi"),
CPUArchitectures: []string{common.X86CPUArchitecture, common.ARM64CPUArchitecture},
SupportLevel: swag.String(models.OpenshiftVersionSupportLevelBeta),
Default: false,
},
}

reply := handler.V2ListSupportedOpenshiftVersions(
Expand Down

0 comments on commit 8827b07

Please sign in to comment.