From b566caf2e11ad6083169cc29c785c247a47cd768 Mon Sep 17 00:00:00 2001 From: "andy.lee" Date: Mon, 11 Nov 2024 12:25:32 +0800 Subject: [PATCH] disable cluster link if harvester version lower than v1.3.0 Signed-off-by: andy.lee --- .../harvesterhci.io.management.cluster.vue | 6 +++++ pkg/harvester/l10n/en-us.yaml | 1 + .../harvesterhci.io.management.cluster.vue | 12 +++++++++- .../harvesterhci.io.management.cluster.js | 23 ++++++++++++++++++- 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/pkg/harvester/edit/harvesterhci.io.management.cluster.vue b/pkg/harvester/edit/harvesterhci.io.management.cluster.vue index 93860b88..41c8484e 100644 --- a/pkg/harvester/edit/harvesterhci.io.management.cluster.vue +++ b/pkg/harvester/edit/harvesterhci.io.management.cluster.vue @@ -113,6 +113,12 @@ export default { @finish="saveOverride" @error="e=>errors = e" > + + {{ t('harvesterManager.cluster.supportMessage') }} + >
Harvester Web Site or read the the Harvester Docs description: Harvester is a modern Hyperconverged infrastructure (HCI) solution built for bare metal servers using enterprise-grade open source technologies including Kubernetes, Kubevirt and Longhorn. + supportMessage: Harvester UI Extension only supports Harvester cluster version >= 1.3.0 plugins: loadError: Error loading harvester plugin rke: diff --git a/pkg/harvester/list/harvesterhci.io.management.cluster.vue b/pkg/harvester/list/harvesterhci.io.management.cluster.vue index 4e6f47db..ac52bc64 100644 --- a/pkg/harvester/list/harvesterhci.io.management.cluster.vue +++ b/pkg/harvester/list/harvesterhci.io.management.cluster.vue @@ -87,6 +87,16 @@ export default { }, methods: { + disableClusterLink(row) { + // eslint-disable-next-line no-console + console.log('🚀 ~ disableClusterLink ~ row:', row); + if (!row.isSupportedHarvesterVersion) { + return true; + } + + return this.navigating ? true : null; + }, + async goToCluster(row) { const timeout = setTimeout(() => { // Don't show loading indicator for quickly fetched plugins @@ -148,7 +158,7 @@ export default { {{ row.nameDisplay }} diff --git a/pkg/harvester/models/harvesterhci.io.management.cluster.js b/pkg/harvester/models/harvesterhci.io.management.cluster.js index 6a2a407e..758dae60 100644 --- a/pkg/harvester/models/harvesterhci.io.management.cluster.js +++ b/pkg/harvester/models/harvesterhci.io.management.cluster.js @@ -2,7 +2,8 @@ import ProvCluster from '@shell/models/provisioning.cattle.io.cluster'; import { DEFAULT_WORKSPACE, HCI, MANAGEMENT } from '@shell/config/types'; import { HARVESTER_NAME, HARVESTER_NAME as VIRTUAL } from '@shell/config/features'; import { SETTING } from '@shell/config/settings'; - +import semver from 'semver'; +import { serverVersion } from '../utils/feature-flags'; export default class HciCluster extends ProvCluster { get stateObj() { return this._stateObj; @@ -29,6 +30,26 @@ export default class HciCluster extends ProvCluster { return false; } + get stateDescription() { + if (!this.isSupportedHarvesterVersion) { + return this.t('harvesterManager.cluster.supportMessage'); + } + + return ''; + } + + /** + * harvester ui extension only supports harvester cluster version >= 1.3.0 + */ + get isSupportedHarvesterVersion() { + const version = serverVersion(this.$rootGetters); + + // eslint-disable-next-line no-console + console.log('🚀 ~ HciCluster ~ getisSupportedHarvesterVersion ~ version:', version); + + return semver.gte(version, '1.3.0'); + } + /** * Fetch and cache the response for /ui-info *