mirror of
https://github.com/harvester/harvester-ui-extension.git
synced 2025-12-13 21:21:44 +00:00
Refactoring feature flags store functions
Signed-off-by: Francesco Torchia <francesco.torchia@suse.com>
This commit is contained in:
parent
8ba4dbd9e8
commit
021a64a5ec
@ -21,7 +21,9 @@ export default {
|
||||
},
|
||||
|
||||
upgradeLink() {
|
||||
return docLink(DOC.UPGRADE_URL, this.$store.getters);
|
||||
const version = this.$rootGetters['harvester-common/getServerVersion']();
|
||||
|
||||
return docLink(DOC.UPGRADE_URL, version);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@ -88,7 +88,9 @@ export default {
|
||||
|
||||
computed: {
|
||||
storageNetworkExampleLink() {
|
||||
return docLink(DOC.STORAGE_NETWORK_EXAMPLE, this.$store.getters);
|
||||
const version = this.$rootGetters['harvester-common/getServerVersion']();
|
||||
|
||||
return docLink(DOC.STORAGE_NETWORK_EXAMPLE, version);
|
||||
},
|
||||
clusterNetworkOptions() {
|
||||
const inStore = this.$store.getters['currentProduct'].inStore;
|
||||
|
||||
@ -1,16 +1,18 @@
|
||||
// https://github.com/harvester/dashboard/releases/tag/v1.3.0
|
||||
const featuresV130 = [];
|
||||
const featuresV130 = [
|
||||
'supportHarvesterClusterVersion'
|
||||
];
|
||||
|
||||
// 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 = [
|
||||
'autoRotateRke2CertsSetting',
|
||||
'supportBundleNodeCollectionTimeoutSetting',
|
||||
...featuresV131,
|
||||
'kubeconfigDefaultTokenTTLMinutesSetting',
|
||||
'improveMaintenanceMode',
|
||||
];
|
||||
@ -22,9 +24,7 @@ const featuresV132 = [
|
||||
// https://github.com/harvester/dashboard/releases/tag/v1.4.0-rc2
|
||||
// https://github.com/harvester/dashboard/releases/tag/v1.4.0-rc1
|
||||
const featuresV140 = [
|
||||
'autoRotateRke2CertsSetting',
|
||||
'supportBundleNodeCollectionTimeoutSetting',
|
||||
'kubeconfigDefaultTokenTTLMinutesSetting',
|
||||
...featuresV132,
|
||||
'cpuPinning',
|
||||
'usbPassthrough',
|
||||
'volumeEncryption',
|
||||
|
||||
@ -91,7 +91,9 @@ export default {
|
||||
},
|
||||
|
||||
ksmtunedLink() {
|
||||
return docLink(DOC.KSMTUNED_MODE, this.$store.getters);
|
||||
const version = this.$rootGetters['harvester-common/getServerVersion']();
|
||||
|
||||
return docLink(DOC.KSMTUNED_MODE, version);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@ -167,7 +167,9 @@ export default {
|
||||
},
|
||||
|
||||
consoleDocLink() {
|
||||
return docLink(DOC.CONSOLE_URL, this.$store.getters);
|
||||
const version = this.$rootGetters['harvester-common/getServerVersion']();
|
||||
|
||||
return docLink(DOC.CONSOLE_URL, version);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
@ -15,7 +15,6 @@ import { ucFirst } from '@shell/utils/string';
|
||||
import HarvesterResource from '../harvester';
|
||||
import { PRODUCT_NAME as HARVESTER_PRODUCT } from '../../config/harvester';
|
||||
import { HCI } from '../../types';
|
||||
import { featureEnabled } from '../../utils/feature-flags';
|
||||
|
||||
const ALLOW_SYSTEM_LABEL_KEYS = [
|
||||
'topology.kubernetes.io/zone',
|
||||
@ -371,7 +370,7 @@ export default class HciNode extends HarvesterResource {
|
||||
}
|
||||
|
||||
get cpuPinningFeatureEnabled() {
|
||||
return featureEnabled(this.$rootGetters, 'cpuPinning');
|
||||
return this.$rootGetters['harvester-common/getFeatureEnabled']('cpuPinning');
|
||||
}
|
||||
|
||||
get isCPUManagerEnabled() {
|
||||
|
||||
@ -13,7 +13,6 @@ import { parseVolumeClaimTemplates } from '@pkg/utils/vm';
|
||||
import { BACKUP_TYPE } from '../config/types';
|
||||
import { HCI } from '../types';
|
||||
import HarvesterResource from './harvester';
|
||||
import { featureEnabled } from '../utils/feature-flags';
|
||||
|
||||
export const OFF = 'Off';
|
||||
|
||||
@ -481,7 +480,7 @@ export default class VirtVm extends HarvesterResource {
|
||||
}
|
||||
|
||||
get cpuPinningFeatureEnabled() {
|
||||
return featureEnabled(this.$rootGetters, 'cpuPinning');
|
||||
return this.$rootGetters['harvester-common/getFeatureEnabled']('cpuPinning');
|
||||
}
|
||||
|
||||
get isCpuPinning() {
|
||||
|
||||
@ -76,7 +76,9 @@ export default {
|
||||
},
|
||||
|
||||
rancherIntegrationLink() {
|
||||
return docLink(DOC.RANCHER_INTEGRATION_URL, this.$store.getters);
|
||||
const version = this.$rootGetters['harvester-common/getServerVersion']();
|
||||
|
||||
return docLink(DOC.RANCHER_INTEGRATION_URL, version);
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import Parse from 'url-parse';
|
||||
import { HCI } from '../types';
|
||||
import { PRODUCT_NAME } from '../config/harvester';
|
||||
import { featureEnabled } from '../utils/feature-flags';
|
||||
import { featureEnabled, featureVersion } from '../utils/feature-flags';
|
||||
|
||||
const state = function() {
|
||||
return {
|
||||
@ -71,8 +71,16 @@ const getters = {
|
||||
return (name) => state.uploadingImageError[name];
|
||||
},
|
||||
|
||||
getFeatureEnabled: (_state, _getters, _rootState, rootGetters) => (feature) => {
|
||||
return featureEnabled(rootGetters, feature);
|
||||
getServerVersion: (_state, _getters, _rootState, rootGetters) => () => {
|
||||
const serverVersion = rootGetters['harvester/byId'](HCI.SETTING, 'server-version')?.value;
|
||||
|
||||
return featureVersion(serverVersion);
|
||||
},
|
||||
|
||||
getFeatureEnabled: (_state, _getters, _rootState, rootGetters) => (feature, version) => {
|
||||
const serverVersion = version || rootGetters['harvester/byId'](HCI.SETTING, 'server-version')?.value;
|
||||
|
||||
return featureEnabled(feature, serverVersion);
|
||||
},
|
||||
|
||||
getHarvesterClusterUrl: (state, getters, rootState, rootGetters) => (url) => {
|
||||
|
||||
@ -1,24 +1,19 @@
|
||||
import semver from 'semver';
|
||||
import { HCI } from '../types';
|
||||
import { RELEASE_FEATURES } from '../config/feature-flags';
|
||||
|
||||
export const docLink = (suffix, getter) => {
|
||||
const v = serverVersion(getter);
|
||||
|
||||
const docVersion = `v${ semver.major(v) }.${ semver.minor(v) }`;
|
||||
export const docLink = (suffix, version) => {
|
||||
const docVersion = `v${ semver.major(version) }.${ semver.minor(version) }`;
|
||||
|
||||
return `https://docs.harvesterhci.io/${ docVersion }${ suffix }`;
|
||||
};
|
||||
|
||||
export function serverVersion(getters) {
|
||||
export function featureVersion(v) {
|
||||
// e.g v1.4.0
|
||||
if (process.env.VUE_APP_SERVER_VERSION) {
|
||||
return process.env.VUE_APP_SERVER_VERSION;
|
||||
}
|
||||
|
||||
try {
|
||||
const v = getters['harvester/byId'](HCI.SETTING, 'server-version')?.value;
|
||||
|
||||
return `v${ semver.major(v) }.${ semver.minor(v) }.${ semver.patch(v) }`;
|
||||
} catch (error) {
|
||||
// fallback to the latest version
|
||||
@ -26,8 +21,8 @@ export function serverVersion(getters) {
|
||||
}
|
||||
}
|
||||
|
||||
export const featureEnabled = (getters, featureKey) => {
|
||||
const version = serverVersion(getters);
|
||||
export const featureEnabled = (featureKey, serverVersion) => {
|
||||
const version = featureVersion(serverVersion);
|
||||
const releasedFeatures = RELEASE_FEATURES[version] || [];
|
||||
|
||||
return releasedFeatures.includes(featureKey);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user