From be64329776b9d5c6577b18b17c5d2c3b51048ad1 Mon Sep 17 00:00:00 2001 From: Andy Lee Date: Fri, 17 Apr 2026 11:00:10 +0800 Subject: [PATCH] feat: pop up dialog when enabling nvidia driver addon (#811) * feat: add nvidia driver toolkit dialog Signed-off-by: Andy Lee * refactor: add disable button guard Signed-off-by: Andy Lee * refactor: based on feedback Signed-off-by: Andy Lee --------- Signed-off-by: Andy Lee --- .../HarvesterEnableNvidiaDriverToolkit.vue | 154 ++++++++++++++++++ pkg/harvester/l10n/en-us.yaml | 2 + pkg/harvester/models/harvesterhci.io.addon.js | 11 ++ 3 files changed, 167 insertions(+) create mode 100644 pkg/harvester/dialog/HarvesterEnableNvidiaDriverToolkit.vue diff --git a/pkg/harvester/dialog/HarvesterEnableNvidiaDriverToolkit.vue b/pkg/harvester/dialog/HarvesterEnableNvidiaDriverToolkit.vue new file mode 100644 index 00000000..846f6882 --- /dev/null +++ b/pkg/harvester/dialog/HarvesterEnableNvidiaDriverToolkit.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/pkg/harvester/l10n/en-us.yaml b/pkg/harvester/l10n/en-us.yaml index 4813437a..a0714716 100644 --- a/pkg/harvester/l10n/en-us.yaml +++ b/pkg/harvester/l10n/en-us.yaml @@ -1764,6 +1764,8 @@ harvester: repository: Image Repository driver: location: Driver Location + enable: + title: Enable NVIDIA Driver Toolkit parsingSpecError: The field 'spec.valuesContent' has invalid format. usbController: diff --git a/pkg/harvester/models/harvesterhci.io.addon.js b/pkg/harvester/models/harvesterhci.io.addon.js index 72766845..138493b1 100644 --- a/pkg/harvester/models/harvesterhci.io.addon.js +++ b/pkg/harvester/models/harvesterhci.io.addon.js @@ -4,6 +4,8 @@ import { HCI as HCI_ANNOTATIONS } from '../config/labels-annotations'; import HarvesterResource from './harvester'; import { HCI } from '../types'; +const HARVESTER_NVIDIA_DRIVER_TOOLKIT = 'harvester-system/nvidia-driver-toolkit'; + export default class HciAddonConfig extends HarvesterResource { get availableActions() { const out = super._availableActions; @@ -45,6 +47,15 @@ export default class HciAddonConfig extends HarvesterResource { } } + if (!this.spec.enabled && this.id === HARVESTER_NVIDIA_DRIVER_TOOLKIT) { + this.$dispatch('promptModal', { + resources: [this], + component: 'HarvesterEnableNvidiaDriverToolkit', + }); + + return; + } + this.spec.enabled = !this.spec.enabled; await this.save(); } catch (err) {