mirror of
https://github.com/harvester/harvester-ui-extension.git
synced 2025-12-13 21:21:44 +00:00
restruct feature config and add harvester version fallback logic
This commit is contained in:
parent
4c981f6380
commit
78ca1e2f49
@ -1,33 +1,18 @@
|
|||||||
|
|
||||||
// https://github.com/harvester/harvester/wiki/Roadmap
|
|
||||||
const FEATURES = {
|
|
||||||
cpuPinning: false,
|
|
||||||
usbPassthrough: false,
|
|
||||||
volumeEncryption: false,
|
|
||||||
schedulingVMBackup: false,
|
|
||||||
vmSnapshotQuota: false,
|
|
||||||
longhornV2LVMSupport: false,
|
|
||||||
improveMaintainMode: false,
|
|
||||||
autoRotateRke2CertsSetting: false,
|
|
||||||
kubeconfigDefaultTokenTTLMinutesSetting: false,
|
|
||||||
supportBundleNodeCollectionTimeoutSetting: false
|
|
||||||
};
|
|
||||||
|
|
||||||
// https://github.com/harvester/dashboard/releases/tag/v1.3.0
|
// https://github.com/harvester/dashboard/releases/tag/v1.3.0
|
||||||
const releaseV130 = { ...FEATURES };
|
const featuresV130 = [];
|
||||||
|
|
||||||
// https://github.com/harvester/dashboard/releases/tag/v1.3.1
|
// https://github.com/harvester/dashboard/releases/tag/v1.3.1
|
||||||
const releaseV131 = {
|
const featuresV131 = [
|
||||||
...releaseV130,
|
'autoRotateRke2CertsSetting',
|
||||||
autoRotateRke2CertsSetting: true,
|
'supportBundleNodeCollectionTimeoutSetting'
|
||||||
supportBundleNodeCollectionTimeoutSetting: true
|
];
|
||||||
};
|
|
||||||
|
|
||||||
// https://github.com/harvester/dashboard/releases/tag/v1.3.2
|
// https://github.com/harvester/dashboard/releases/tag/v1.3.2
|
||||||
const releaseV132 = {
|
const featuresV132 = [
|
||||||
...releaseV131,
|
'autoRotateRke2CertsSetting',
|
||||||
kubeconfigDefaultTokenTTLMinutesSetting: true,
|
'supportBundleNodeCollectionTimeoutSetting',
|
||||||
};
|
'kubeconfigDefaultTokenTTLMinutesSetting',
|
||||||
|
];
|
||||||
|
|
||||||
// TODO: change to https://github.com/harvester/dashboard/releases/tag/v1.4.0 after v1.4.0 release
|
// TODO: change to https://github.com/harvester/dashboard/releases/tag/v1.4.0 after v1.4.0 release
|
||||||
// https://github.com/harvester/dashboard/releases/tag/v1.4.0-rc5
|
// https://github.com/harvester/dashboard/releases/tag/v1.4.0-rc5
|
||||||
@ -35,20 +20,22 @@ const releaseV132 = {
|
|||||||
// https://github.com/harvester/dashboard/releases/tag/v1.4.0-rc3
|
// https://github.com/harvester/dashboard/releases/tag/v1.4.0-rc3
|
||||||
// https://github.com/harvester/dashboard/releases/tag/v1.4.0-rc2
|
// https://github.com/harvester/dashboard/releases/tag/v1.4.0-rc2
|
||||||
// https://github.com/harvester/dashboard/releases/tag/v1.4.0-rc1
|
// https://github.com/harvester/dashboard/releases/tag/v1.4.0-rc1
|
||||||
const releaseV140 = {
|
const featuresV140 = [
|
||||||
...releaseV132,
|
'autoRotateRke2CertsSetting',
|
||||||
cpuPinning: true,
|
'supportBundleNodeCollectionTimeoutSetting',
|
||||||
usbPassthrough: true,
|
'kubeconfigDefaultTokenTTLMinutesSetting',
|
||||||
volumeEncryption: true,
|
'cpuPinning',
|
||||||
schedulingVMBackup: true,
|
'usbPassthrough',
|
||||||
vmSnapshotQuota: true,
|
'volumeEncryption',
|
||||||
longhornV2LVMSupport: true,
|
'schedulingVMBackup',
|
||||||
improveMaintainMode: true,
|
'vmSnapshotQuota',
|
||||||
};
|
'longhornV2LVMSupport',
|
||||||
|
'improveMaintainMode',
|
||||||
|
];
|
||||||
|
|
||||||
export const RELEASE_FEATURES = {
|
export const RELEASE_FEATURES = {
|
||||||
'v1.4.0': releaseV140,
|
'v1.3.0': featuresV130,
|
||||||
'v1.3.2': releaseV132,
|
'v1.3.1': featuresV131,
|
||||||
'v1.3.1': releaseV132,
|
'v1.3.2': featuresV132,
|
||||||
'v1.3.0': releaseV130,
|
'v1.4.0': featuresV140,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -12,13 +12,15 @@ export function serverVersion(getters) {
|
|||||||
const v = getters['harvester/byId'](HCI.SETTING, 'server-version')?.value;
|
const v = getters['harvester/byId'](HCI.SETTING, 'server-version')?.value;
|
||||||
|
|
||||||
return `v${ semver.major(v) }.${ semver.minor(v) }.${ semver.patch(v) }`;
|
return `v${ semver.major(v) }.${ semver.minor(v) }.${ semver.patch(v) }`;
|
||||||
} catch (error) {}
|
} catch (error) {
|
||||||
|
// fallback to the latest version
|
||||||
return '';
|
return Object.keys(RELEASE_FEATURES).sort((a, b) => semver.compare(a, b)).pop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const featureEnabled = (getters, featureKey) => {
|
export const featureEnabled = (getters, featureKey) => {
|
||||||
const version = serverVersion(getters);
|
const version = serverVersion(getters);
|
||||||
|
const releasedFeatures = RELEASE_FEATURES[version] || [];
|
||||||
|
|
||||||
return !!RELEASE_FEATURES[version]?.[featureKey] || false;
|
return releasedFeatures.includes(featureKey);
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user