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
|
import semver from 'semver';
|
||||||
const featuresV130 = [
|
|
||||||
'supportHarvesterClusterVersion'
|
|
||||||
];
|
|
||||||
|
|
||||||
// https://github.com/harvester/dashboard/releases/tag/v1.3.1
|
const FEATURE_FLAGS = {
|
||||||
const featuresV131 = [
|
'v1.3.0': [
|
||||||
...featuresV130,
|
'supportHarvesterClusterVersion'
|
||||||
'autoRotateRke2CertsSetting',
|
],
|
||||||
'supportBundleNodeCollectionTimeoutSetting'
|
'v1.3.1': [
|
||||||
];
|
'autoRotateRke2CertsSetting',
|
||||||
|
'supportBundleNodeCollectionTimeoutSetting'
|
||||||
// https://github.com/harvester/dashboard/releases/tag/v1.3.2
|
],
|
||||||
const featuresV132 = [
|
'v1.3.2': [
|
||||||
...featuresV131,
|
'kubeconfigDefaultTokenTTLMinutesSetting',
|
||||||
'kubeconfigDefaultTokenTTLMinutesSetting',
|
'improveMaintenanceMode',
|
||||||
'improveMaintenanceMode',
|
],
|
||||||
];
|
'v1.3.3': [],
|
||||||
|
'v1.4.0': [
|
||||||
// TODO: add v1.3.3 official release note
|
'cpuPinning',
|
||||||
// https://github.com/harvester/dashboard/releases/tag/v1.3.3-dev-20250105
|
'usbPassthrough',
|
||||||
const featuresV133 = [
|
'volumeEncryption',
|
||||||
...featuresV132,
|
'schedulingVMBackup',
|
||||||
];
|
'vmSnapshotQuota',
|
||||||
|
'longhornV2LVMSupport',
|
||||||
// https://github.com/harvester/dashboard/releases/tag/v1.4.0
|
'improveMaintenanceMode',
|
||||||
const featuresV140 = [
|
],
|
||||||
...featuresV133,
|
'v1.4.1': [],
|
||||||
'cpuPinning',
|
'v1.4.2': [
|
||||||
'usbPassthrough',
|
'refreshIntervalInSecond',
|
||||||
'volumeEncryption',
|
'allowEmptySnapshotClassName'
|
||||||
'schedulingVMBackup',
|
],
|
||||||
'vmSnapshotQuota',
|
'v1.4.3': [],
|
||||||
'longhornV2LVMSupport',
|
'v1.5.0': [
|
||||||
'improveMaintenanceMode',
|
'tpmPersistentState',
|
||||||
];
|
'efiPersistentState',
|
||||||
|
'untaggedNetworkSetting',
|
||||||
// https://github.com/harvester/dashboard/releases/tag/v1.4.1
|
'skipSingleReplicaDetachedVol',
|
||||||
const featuresV141 = [
|
'thirdPartyStorage'
|
||||||
...featuresV140
|
],
|
||||||
];
|
'v1.5.1': [],
|
||||||
|
'v1.6.0': []
|
||||||
// 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 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