dashboard/shell/utils/cluster.js

46 lines
1.4 KiB
JavaScript

import semver from 'semver';
import { CAPI } from '@shell/config/labels-annotations';
import { MANAGEMENT, VIRTUAL_HARVESTER_PROVIDER } from '@shell/config/types';
import { SETTING } from '@shell/config/settings';
// Filter out any clusters that are not Kubernetes Clusters
// Currently this removes Harvester clusters
export function filterOnlyKubernetesClusters(mgmtClusters) {
return mgmtClusters.filter((c) => {
return !c.isHarvester;
});
}
export function isHarvesterCluster(mgmtCluster) {
// Use the provider if it is set otherwise use the label
const provider = mgmtCluster?.status?.provider || mgmtCluster?.metadata?.labels?.[CAPI.PROVIDER];
return provider === VIRTUAL_HARVESTER_PROVIDER;
}
export function isHarvesterSatisfiesVersion(version = '') {
if (version.startsWith('v1.21.4+rke2r')) {
const rkeVersion = version.replace(/.+rke2r/i, '');
return Number(rkeVersion) >= 4;
} else {
return semver.satisfies(semver.coerce(version), '>=v1.21.4+rke2r4');
}
}
export function filterHiddenLocalCluster(mgmtClusters, store) {
const hideLocalSetting = store.getters['management/byId'](MANAGEMENT.SETTING, SETTING.HIDE_LOCAL_CLUSTER) || {};
const value = hideLocalSetting.value || hideLocalSetting.default || 'false';
const hideLocal = value === 'true';
if (!hideLocal) {
return mgmtClusters;
}
return mgmtClusters.filter((c) => {
const target = c.mgmt || c;
return !target.isLocal;
});
}