mirror of
https://github.com/harvester/harvester-ui-extension.git
synced 2025-12-13 13:11:43 +00:00
Refactor feature flags structure (#276)
* refactor feature flags structure Signed-off-by: Andy Lee <andy.lee@suse.com> * Replace with FEATURE_FLAGS and valid and sort versions Signed-off-by: Andy Lee <andy.lee@suse.com> --------- Signed-off-by: Andy Lee <andy.lee@suse.com>
This commit is contained in:
parent
1e270268d8
commit
f8079c5924
@ -1,87 +1,56 @@
|
||||
// https://github.com/harvester/dashboard/releases/tag/v1.3.0
|
||||
const featuresV130 = [
|
||||
'supportHarvesterClusterVersion'
|
||||
];
|
||||
import semver from 'semver';
|
||||
|
||||
// https://github.com/harvester/dashboard/releases/tag/v1.3.1
|
||||
const featuresV131 = [
|
||||
...featuresV130,
|
||||
'autoRotateRke2CertsSetting',
|
||||
'supportBundleNodeCollectionTimeoutSetting'
|
||||
];
|
||||
|
||||
// https://github.com/harvester/dashboard/releases/tag/v1.3.2
|
||||
const featuresV132 = [
|
||||
...featuresV131,
|
||||
'kubeconfigDefaultTokenTTLMinutesSetting',
|
||||
'improveMaintenanceMode',
|
||||
];
|
||||
|
||||
// TODO: add v1.3.3 official release note
|
||||
// https://github.com/harvester/dashboard/releases/tag/v1.3.3-dev-20250105
|
||||
const featuresV133 = [
|
||||
...featuresV132,
|
||||
];
|
||||
|
||||
// https://github.com/harvester/dashboard/releases/tag/v1.4.0
|
||||
const featuresV140 = [
|
||||
...featuresV133,
|
||||
'cpuPinning',
|
||||
'usbPassthrough',
|
||||
'volumeEncryption',
|
||||
'schedulingVMBackup',
|
||||
'vmSnapshotQuota',
|
||||
'longhornV2LVMSupport',
|
||||
'improveMaintenanceMode',
|
||||
];
|
||||
|
||||
// https://github.com/harvester/dashboard/releases/tag/v1.4.1
|
||||
const featuresV141 = [
|
||||
...featuresV140
|
||||
];
|
||||
|
||||
// https://github.com/harvester/dashboard/releases/tag/v1.4.2
|
||||
const featuresV142 = [
|
||||
...featuresV141,
|
||||
'refreshIntervalInSecond',
|
||||
'allowEmptySnapshotClassName'
|
||||
];
|
||||
|
||||
// TODO: https://github.com/harvester/dashboard/releases/tag/v1.4.3
|
||||
const featuresV143 = [
|
||||
...featuresV142,
|
||||
];
|
||||
|
||||
// https://github.com/harvester/harvester-ui-extension/releases/tag/v1.5.0
|
||||
const featuresV150 = [
|
||||
...featuresV143,
|
||||
'tpmPersistentState',
|
||||
'efiPersistentState',
|
||||
'untaggedNetworkSetting',
|
||||
'skipSingleReplicaDetachedVol',
|
||||
'thirdPartyStorage'
|
||||
];
|
||||
|
||||
// TODO: https://github.com/harvester/harvester-ui-extension/releases/tag/v1.5.1
|
||||
const featuresV151 = [
|
||||
...featuresV150
|
||||
];
|
||||
|
||||
// TODO: https://github.com/harvester/harvester-ui-extension/releases/tag/v1.6.0
|
||||
const featuresV160 = [
|
||||
...featuresV151
|
||||
];
|
||||
|
||||
export const RELEASE_FEATURES = {
|
||||
'v1.3.0': featuresV130,
|
||||
'v1.3.1': featuresV131,
|
||||
'v1.3.2': featuresV132,
|
||||
'v1.3.3': featuresV133,
|
||||
'v1.4.0': featuresV140,
|
||||
'v1.4.1': featuresV141,
|
||||
'v1.4.2': featuresV142,
|
||||
'v1.4.3': featuresV143,
|
||||
'v1.5.0': featuresV150,
|
||||
'v1.5.1': featuresV151,
|
||||
'v1.6.0': featuresV160
|
||||
const FEATURE_FLAGS = {
|
||||
'v1.3.0': [
|
||||
'supportHarvesterClusterVersion'
|
||||
],
|
||||
'v1.3.1': [
|
||||
'autoRotateRke2CertsSetting',
|
||||
'supportBundleNodeCollectionTimeoutSetting'
|
||||
],
|
||||
'v1.3.2': [
|
||||
'kubeconfigDefaultTokenTTLMinutesSetting',
|
||||
'improveMaintenanceMode',
|
||||
],
|
||||
'v1.3.3': [],
|
||||
'v1.4.0': [
|
||||
'cpuPinning',
|
||||
'usbPassthrough',
|
||||
'volumeEncryption',
|
||||
'schedulingVMBackup',
|
||||
'vmSnapshotQuota',
|
||||
'longhornV2LVMSupport',
|
||||
'improveMaintenanceMode',
|
||||
],
|
||||
'v1.4.1': [],
|
||||
'v1.4.2': [
|
||||
'refreshIntervalInSecond',
|
||||
'allowEmptySnapshotClassName'
|
||||
],
|
||||
'v1.4.3': [],
|
||||
'v1.5.0': [
|
||||
'tpmPersistentState',
|
||||
'efiPersistentState',
|
||||
'untaggedNetworkSetting',
|
||||
'skipSingleReplicaDetachedVol',
|
||||
'thirdPartyStorage'
|
||||
],
|
||||
'v1.5.1': [],
|
||||
'v1.6.0': []
|
||||
};
|
||||
|
||||
const generateFeatureFlags = () => {
|
||||
const versions = [...Object.keys(FEATURE_FLAGS)].filter((version) => semver.valid(version)).sort(semver.compare);
|
||||
|
||||
const generatedFlags = {};
|
||||
|
||||
versions.forEach((version, index) => {
|
||||
const previousVersion = versions[index - 1];
|
||||
|
||||
generatedFlags[version] = previousVersion ? [...generatedFlags[previousVersion], ...FEATURE_FLAGS[version]] : [...FEATURE_FLAGS[version]];
|
||||
});
|
||||
|
||||
return generatedFlags;
|
||||
};
|
||||
|
||||
export const RELEASE_FEATURES = generateFeatureFlags();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user