Skip to content
This repository was archived by the owner on Jan 13, 2026. It is now read-only.

Commit 0dbd4c3

Browse files
committed
GetAvailablePackageVersions returns non-semver versions unchanged
Signed-off-by: Michael Nelson <minelson@vmware.com>
1 parent f912c6f commit 0dbd4c3

3 files changed

Lines changed: 36 additions & 8 deletions

File tree

cmd/kubeapps-apis/plugins/pkg/pkgutils/pkgutils.go

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
/*
5-
Utility functions that apply to "packages", e.g. helm charts or carvel packages
5+
Utility functions that apply to "packages", e.g. helm charts or carvel packages
66
*/
77
package pkgutils
88

@@ -26,6 +26,7 @@ import (
2626
structuralschema "k8s.io/apiextensions-apiserver/pkg/apiserver/schema"
2727
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2828
"k8s.io/apimachinery/pkg/runtime"
29+
log "k8s.io/klog/v2"
2930
)
3031

3132
// Contains miscellaneous package-utilities used by multiple plug-ins
@@ -59,12 +60,15 @@ type packageSemVersion struct {
5960
appVersion string
6061
}
6162

62-
func sortByPackageVersion(versions []models.ChartVersion) []*packageSemVersion {
63+
func sortByPackageVersion(versions []models.ChartVersion) ([]*packageSemVersion, error) {
6364
var sortedVersions []*packageSemVersion
6465
for _, v := range versions {
6566
version, err := semver.NewVersion(v.Version)
6667
if err != nil {
67-
continue
68+
return nil, err
69+
}
70+
if version.String() != v.Version {
71+
return nil, fmt.Errorf("Chart version %q is not semver", v.Version)
6872
}
6973

7074
sortedVersions = append(sortedVersions, &packageSemVersion{
@@ -75,17 +79,29 @@ func sortByPackageVersion(versions []models.ChartVersion) []*packageSemVersion {
7579
sort.Slice(sortedVersions, func(i, j int) bool {
7680
return sortedVersions[i].Version.GreaterThan(sortedVersions[j].Version)
7781
})
78-
return sortedVersions
82+
return sortedVersions, nil
7983
}
8084

8185
// PackageAppVersionsSummary converts the model chart versions into the required version summary.
8286
func PackageAppVersionsSummary(versions []models.ChartVersion, versionInSummary VersionsInSummary) []*corev1.PackageAppVersion {
8387

84-
// Sort versions
85-
sortedVersions := sortByPackageVersion(versions)
86-
8788
var pav []*corev1.PackageAppVersion
8889

90+
// Sort versions
91+
sortedVersions, err := sortByPackageVersion(versions)
92+
if err != nil {
93+
// If there was an error parsing a version as semver, we log the error
94+
// and simply return the versions, as Helm does.
95+
log.Errorf("error parsing versions as semver: %w", err)
96+
for _, version := range versions {
97+
pav = append(pav, &corev1.PackageAppVersion{
98+
PkgVersion: version.Version,
99+
AppVersion: version.AppVersion,
100+
})
101+
}
102+
return pav
103+
}
104+
89105
// Use a version map to be able to count how many major, minor and patch versions
90106
// we have included.
91107
versionMap := map[uint64]map[uint64][]uint64{}

cmd/kubeapps-apis/plugins/pkg/pkgutils/pkgutils_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,18 @@ func TestPackageAppVersionsSummary(t *testing.T) {
363363
},
364364
input_versions_in_summary: GetDefaultVersionsInSummary(),
365365
},
366+
{
367+
name: "it just returns versions that are not semver without any filtering or ordering",
368+
chart_versions: []models.ChartVersion{
369+
{Version: "v12-main", AppVersion: DefaultAppVersion},
370+
{Version: "v11-main", AppVersion: DefaultAppVersion},
371+
},
372+
version_summary: []*corev1.PackageAppVersion{
373+
{PkgVersion: "v12-main", AppVersion: DefaultAppVersion},
374+
{PkgVersion: "v11-main", AppVersion: DefaultAppVersion},
375+
},
376+
input_versions_in_summary: GetDefaultVersionsInSummary(),
377+
},
366378
}
367379

368380
opts := cmpopts.IgnoreUnexported(corev1.PackageAppVersion{})

script/makefiles/deploy-dev.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ deploy-dependencies: deploy-dex deploy-openldap devel/localhost-cert.pem
3535
--from-literal=password=dev-only-fake-password
3636

3737
deploy-dev-kubeapps:
38-
helm --kubeconfig=${CLUSTER_CONFIG} upgrade --install kubeapps bitnami/kubeapps --namespace kubeapps --create-namespace \
38+
helm --kubeconfig=${CLUSTER_CONFIG} upgrade --install kubeapps ./chart/kubeapps --namespace kubeapps --create-namespace \
3939
--values ./site/content/docs/latest/reference/manifests/kubeapps-local-dev-values.yaml \
4040
--values ./site/content/docs/latest/reference/manifests/kubeapps-local-dev-auth-proxy-values.yaml \
4141
--values ./site/content/docs/latest/reference/manifests/kubeapps-local-dev-additional-kind-cluster.yaml \

0 commit comments

Comments
 (0)