From fbb4b7b41b2c28c6b6c41d85613d24d544fc59a6 Mon Sep 17 00:00:00 2001 From: Andy Lee Date: Fri, 31 Jul 2026 17:18:13 +0800 Subject: [PATCH] refactor: copilot review Signed-off-by: Andy Lee --- .../vm-migration/ConfigureMappingsStep.vue | 12 ++++++++--- .../components/vm-migration/MappingColumn.vue | 3 ++- .../vm-migration/StorageDefaultsModal.vue | 21 ++++++++++--------- pkg/harvester/l10n/en-us.yaml | 2 +- 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/pkg/harvester/components/vm-migration/ConfigureMappingsStep.vue b/pkg/harvester/components/vm-migration/ConfigureMappingsStep.vue index fed7b2fa..561e4dd0 100644 --- a/pkg/harvester/components/vm-migration/ConfigureMappingsStep.vue +++ b/pkg/harvester/components/vm-migration/ConfigureMappingsStep.vue @@ -7,14 +7,15 @@ import { STORAGE_CLASS, NETWORK_ATTACHMENT } from '@shell/config/types'; import { useI18n } from '@shell/composables/useI18n'; import { randomStr } from '@shell/utils/string'; import { HCI } from '../../types'; +import { VOLUME_MODE, ACCESS_MODE } from '../../config/types'; import { FORKLIFT_NAMESPACE } from '../../config/harvester-map'; import { buildNetworkMapEntries, buildStorageMapEntries } from '../../utils/forklift'; import { isInternalStorageClass } from '../../utils/storage-class'; import MappingColumn from './MappingColumn.vue'; import StorageDefaultsModal from './StorageDefaultsModal.vue'; -const DEFAULT_VOLUME_MODE = 'Filesystem'; -const DEFAULT_ACCESS_MODES = ['ReadWriteMany']; +const DEFAULT_VOLUME_MODE = VOLUME_MODE.FILE_SYSTEM; +const DEFAULT_ACCESS_MODES = [ACCESS_MODE.READ_WRITE_MANY]; const props = defineProps({ providerName: { type: String, default: '' }, @@ -190,7 +191,12 @@ const applyStorageDefaults = ({ volumeMode, accessModes }) => { if (editingStorageEntry.value) { editingStorageEntry.value.volumeMode = volumeMode; editingStorageEntry.value.accessModes = accessModes; - editingStorageEntry.value.overridden = true; + + const inheritedVolumeMode = editingStorageEntry.value.inheritedVolumeMode; + const inheritedAccessMode = editingStorageEntry.value.inheritedAccessModes?.[0]; + const selectedAccessMode = accessModes?.[0]; + + editingStorageEntry.value.overridden = volumeMode !== inheritedVolumeMode || selectedAccessMode !== inheritedAccessMode; } }; diff --git a/pkg/harvester/components/vm-migration/MappingColumn.vue b/pkg/harvester/components/vm-migration/MappingColumn.vue index e7d83749..1e3d7176 100644 --- a/pkg/harvester/components/vm-migration/MappingColumn.vue +++ b/pkg/harvester/components/vm-migration/MappingColumn.vue @@ -3,6 +3,7 @@ import { useStore } from 'vuex'; import LabeledSelect from '@shell/components/form/LabeledSelect'; import { RcItemCard } from '@components/RcItemCard'; import { useI18n } from '@shell/composables/useI18n'; +import { VOLUME_MODE } from '../../config/types'; const store = useStore(); const { t } = useI18n(store); @@ -46,7 +47,7 @@ const optionsFor = (entry) => { }; const formatModes = (entry) => { - const volumeMode = entry.volumeMode || 'Filesystem'; + const volumeMode = entry.volumeMode || VOLUME_MODE.FILE_SYSTEM; const accessModes = (entry.accessModes || []).join(', '); return t('harvester.addons.vmMigration.storageDefaults.summary', { volumeMode, accessModes }); diff --git a/pkg/harvester/components/vm-migration/StorageDefaultsModal.vue b/pkg/harvester/components/vm-migration/StorageDefaultsModal.vue index b513679c..3226834c 100644 --- a/pkg/harvester/components/vm-migration/StorageDefaultsModal.vue +++ b/pkg/harvester/components/vm-migration/StorageDefaultsModal.vue @@ -5,18 +5,19 @@ import { Card } from '@components/Card'; import LabeledSelect from '@shell/components/form/LabeledSelect'; import AppModal from '@shell/components/AppModal'; import { useI18n } from '@shell/composables/useI18n'; +import { VOLUME_MODE, ACCESS_MODE } from '../../config/types'; -const VOLUME_MODE_OPTIONS = ['Filesystem', 'Block']; -const ACCESS_MODE_OPTIONS = ['ReadWriteOnce', 'ReadWriteMany', 'ReadOnlyMany']; +const VOLUME_MODE_OPTIONS = [VOLUME_MODE.FILE_SYSTEM, VOLUME_MODE.BLOCK]; +const ACCESS_MODE_OPTIONS = [ACCESS_MODE.READ_WRITE_ONCE, ACCESS_MODE.READ_WRITE_MANY, ACCESS_MODE.READ_ONLY_MANY]; const props = defineProps({ storageClassName: { type: String, default: '' }, providerName: { type: String, default: '' }, showInherited: { type: Boolean, default: false }, - volumeMode: { type: String, default: 'Filesystem' }, - accessModes: { type: Array, default: () => ['ReadWriteMany'] }, - inheritedVolumeMode: { type: String, default: 'Filesystem' }, - inheritedAccessModes: { type: Array, default: () => ['ReadWriteMany'] }, + volumeMode: { type: String, default: VOLUME_MODE.FILE_SYSTEM }, + accessModes: { type: Array, default: () => [ACCESS_MODE.READ_WRITE_MANY] }, + inheritedVolumeMode: { type: String, default: VOLUME_MODE.FILE_SYSTEM }, + inheritedAccessModes: { type: Array, default: () => [ACCESS_MODE.READ_WRITE_MANY] }, }); const emit = defineEmits(['apply', 'close']); @@ -24,8 +25,8 @@ const emit = defineEmits(['apply', 'close']); const store = useStore(); const { t } = useI18n(store); -const localVolumeMode = ref(props.volumeMode || 'Filesystem'); -const localAccessMode = ref(props.accessModes?.[0] || 'ReadWriteMany'); +const localVolumeMode = ref(props.volumeMode || VOLUME_MODE.FILE_SYSTEM); +const localAccessMode = ref(props.accessModes?.[0] || ACCESS_MODE.READ_WRITE_MANY); const volumeModeOptions = VOLUME_MODE_OPTIONS.map((value) => ({ label: value, value })); const accessModeOptions = ACCESS_MODE_OPTIONS.map((value) => ({ label: value, value })); @@ -40,8 +41,8 @@ const apply = () => { // Repopulate the dropdowns with the provider default values; the user then applies. const reset = () => { - localVolumeMode.value = props.inheritedVolumeMode || 'Filesystem'; - localAccessMode.value = props.inheritedAccessModes?.[0] || 'ReadWriteMany'; + localVolumeMode.value = props.inheritedVolumeMode || VOLUME_MODE.FILE_SYSTEM; + localAccessMode.value = props.inheritedAccessModes?.[0] || ACCESS_MODE.READ_WRITE_MANY; }; const cancel = () => { diff --git a/pkg/harvester/l10n/en-us.yaml b/pkg/harvester/l10n/en-us.yaml index 6c98b8dd..f4cdd073 100644 --- a/pkg/harvester/l10n/en-us.yaml +++ b/pkg/harvester/l10n/en-us.yaml @@ -1987,7 +1987,7 @@ harvester: title: 'Storage defaults — {name}' description: 'Set the volume mode and access modes applied to every datastore in this storage map that maps to {name}.' descriptionInherited: 'Applies to every datastore in this storage map that maps to {name}. The provider default for {provider} stays unchanged.' - summary: 'Volume mode : {volumeMode} · Access mode : {accessModes}' + summary: 'Volume mode: {volumeMode} · Access mode: {accessModes}' inherited: 'Inherited from provider {provider}' volumeMode: Volume Mode accessMode: Access Mode