fix sort order of rke2/k3s kubernetes version list (#8462)

This commit is contained in:
Nancy 2023-03-23 11:39:11 -07:00 committed by GitHub
parent 6f102d0bff
commit bda1a5dc43
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 13 deletions

View File

@ -1313,8 +1313,9 @@ cluster:
manageAction: Manage
kubernetesVersion:
label: Kubernetes Version
experimental: experimental
deprecated: deprecated
current: (current)
experimental: (experimental)
deprecated: (deprecated)
deprecatedPatches: Show deprecated Kubernetes patch versions
deprecatedPatchWarning: We recommend using the latest patch version for each minor Kubernetes version. Deprecated patch versions can be useful for migration purposes.
toolsTip: Use the new Cluster Tools to manage and install Monitoring, Logging and other tools

View File

@ -427,8 +427,8 @@ export default {
const existingRke2 = this.mode === _EDIT && cur.includes('rke2');
const existingK3s = this.mode === _EDIT && cur.includes('k3s');
let allValidRke2Versions = this.getAllOptionsAfterMinVersion(this.rke2Versions, (existingRke2 ? cur : null), this.defaultRke2);
let allValidK3sVersions = this.getAllOptionsAfterMinVersion(this.k3sVersions, (existingK3s ? cur : null), this.defaultK3s);
let allValidRke2Versions = this.getAllOptionsAfterCurrentVersion(this.rke2Versions, (existingRke2 ? cur : null), this.defaultRke2);
let allValidK3sVersions = this.getAllOptionsAfterCurrentVersion(this.k3sVersions, (existingK3s ? cur : null), this.defaultK3s);
if (!this.showDeprecatedPatchVersions) {
// Normally, we only want to show the most recent patch version
@ -463,8 +463,6 @@ export default {
if ( existing ) {
existing.disabled = false;
} else {
out.unshift({ label: `${ cur } (current)`, value: cur });
}
}
@ -863,7 +861,7 @@ export default {
const first = all[0]?.value;
const preferred = all.find(x => x.value === this.defaultRke2)?.value;
const rke2 = this.getAllOptionsAfterMinVersion(this.rke2Versions, null);
const rke2 = this.getAllOptionsAfterCurrentVersion(this.rke2Versions, null);
const showRke2 = rke2.length;
let out;
@ -1699,21 +1697,32 @@ export default {
set(this.value.spec.rkeConfig.registries, 'configs', configs);
},
getAllOptionsAfterMinVersion(versions, minVersion, defaultVersion) {
getAllOptionsAfterCurrentVersion(versions, currentVersion, defaultVersion) {
const out = (versions || []).filter(obj => !!obj.serverArgs).map((obj) => {
let disabled = false;
let experimental = false;
let isCurrentVersion = false;
let label = obj.id;
if ( minVersion ) {
disabled = compare(obj.id, minVersion) < 0;
if ( currentVersion ) {
disabled = compare(obj.id, currentVersion) < 0;
isCurrentVersion = compare(obj.id, currentVersion) === 0;
}
if ( defaultVersion ) {
experimental = compare(defaultVersion, obj.id) < 0;
}
if (isCurrentVersion) {
label = `${ label } ${ this.t('cluster.kubernetesVersion.current') }`;
}
if (experimental) {
label = `${ label } ${ this.t('cluster.kubernetesVersion.experimental') }`;
}
return {
label: obj.id + (experimental ? ` (${ this.t('cluster.kubernetesVersion.experimental') })` : ''),
label,
value: obj.id,
sort: sortable(obj.id),
serverArgs: obj.serverArgs,
@ -1722,6 +1731,15 @@ export default {
disabled,
};
});
if (currentVersion && !out.find(obj => obj.value === currentVersion)) {
out.push({
label: `${ currentVersion } ${ this.t('cluster.kubernetesVersion.current') }`,
value: currentVersion,
sort: sortable(currentVersion),
});
}
const sorted = sortBy(out, 'sort:desc');
const mostRecentPatchVersions = this.getMostRecentPatchVersions(sorted);
@ -1735,7 +1753,7 @@ export default {
return {
...optionData,
label: `${ optionData.label } (${ this.t('cluster.kubernetesVersion.deprecated') })`
label: `${ optionData.label } ${ this.t('cluster.kubernetesVersion.deprecated') }`
};
});
@ -1773,7 +1791,7 @@ export default {
const majorMinor = `${ semver.major(version.value) }.${ semver.minor(version.value) }`;
// Always show current version, else show if we haven't shown anything for this major.minor version yet
if (version === currentVersion || mostRecentPatchVersions[majorMinor] === version.value) {
if (version.value === currentVersion || mostRecentPatchVersions[majorMinor] === version.value) {
return true;
}