feat(forklift): small fixes after Copilot

Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com>
This commit is contained in:
Marcelo Fukumoto
2026-07-07 13:37:12 +02:00
parent 5c7dd1953d
commit 2deb0aa254
8 changed files with 126 additions and 216 deletions
@@ -69,17 +69,17 @@ const rows = computed(() => {
overallProgress += (stepPct / 100) * stepWeight;
if (!currentStep) {
currentStep = step.name || `Step ${ idx + 1 }`;
currentStep = step.name || t('harvester.addons.vmMigration.dashboard.progress.step', { index: idx + 1 });
}
if (step.error && !errorMsg) {
const reasons = (step.error.reasons || []).join('; ') || t('harvester.addons.vmMigration.plan.states.error');
errorMsg = `${ step.name || `Step ${ idx + 1 }` }: ${ reasons }`;
errorMsg = `${ step.name || t('harvester.addons.vmMigration.dashboard.progress.step', { index: idx + 1 }) }: ${ reasons }`;
}
if (step.phase === 'Failed' && !errorMsg) {
errorMsg = `${ step.name || `Step ${ idx + 1 }` }: ${ t('harvester.addons.vmMigration.dashboard.progress.failed') }`;
errorMsg = `${ step.name || t('harvester.addons.vmMigration.dashboard.progress.step', { index: idx + 1 }) }: ${ t('harvester.addons.vmMigration.dashboard.progress.failed') }`;
}
}
});
@@ -215,7 +215,7 @@ init();
</div>
</template>
<template #cell:vmCount="{ row }">
{{ (row.spec.vms || []).length }} VMs
{{ t('harvester.addons.vmMigration.dashboard.progress.vmCount', { count: (row.spec.vms || []).length }) }}
</template>
<template #cell:progress="{ row }">
<div
@@ -230,7 +230,7 @@ init();
<div class="vm-progress-header">
<div class="vm-name-block">
<span class="vm-name">{{ vm.vmName }}</span>
<span class="text-muted vm-id">id: {{ vm.vmId }}</span>
<span class="text-muted vm-id">{{ t('harvester.addons.vmMigration.dashboard.progress.vmId', { id: vm.vmId }) }}</span>
</div>
</div>
<div class="vm-pct-block">
@@ -246,7 +246,7 @@ init();
v-if="vm.progress >= 100"
class="step-label text-muted"
>
Finished Successfully
{{ t('harvester.addons.vmMigration.dashboard.progress.finishedSuccessfully') }}
</div>
<div
v-else-if="vm.errorMsg"
@@ -258,7 +258,7 @@ init();
v-else-if="vm.canceled"
class="step-label text-muted"
>
Canceled
{{ t('harvester.addons.vmMigration.plan.states.canceled') }}
</div>
<div
v-else-if="vm.currentStep"
@@ -203,13 +203,17 @@ const init = async() => {
);
if (secret?.data) {
try {
stepData.provider.username = atob(secret.data.user || '');
stepData.provider.password = atob(secret.data.password || '');
stepData.provider.skipTlsVerify = atob(secret.data.insecureSkipVerify || '') === 'true';
} catch (e) {
errors.value = [t('harvester.addons.vmMigration.errors.failedDecodeCredentials')];
}
const decode = (val) => {
try {
return atob(val || '');
} catch (e) {
return '';
}
};
stepData.provider.username = decode(secret.data.user);
stepData.provider.password = decode(secret.data.password);
stepData.provider.skipTlsVerify = decode(secret.data.insecureSkipVerify) === 'true';
stepData.provider.createdSecret = secret;
}
}
@@ -230,7 +234,7 @@ const init = async() => {
// Maps may not exist yet
}
} catch (err) {
errors.value = [`Failed to load provider: ${ err.message || err }`];
errors.value = [t('harvester.addons.vmMigration.errors.failedLoadProvider', { error: err.message || err })];
}
initialLoading.value = false;
@@ -15,14 +15,11 @@ const { t } = useI18n(store);
const cruRef = ref(null);
const providerStepRef = ref(null);
const mappingsStepRef = ref(null);
const reviewStepRef = ref(null);
const providerName = ref('');
const provider = ref(null);
const selectedVMs = ref([]);
const networkMapName = ref('');
const storageMapName = ref('');
const errors = ref([]);
const providerReady = ref(false);
@@ -263,7 +260,6 @@ const onCancel = () => {
</template>
<template #configure-mappings>
<ConfigureMappingsStep
ref="mappingsStepRef"
:provider-name="providerName"
:provider="provider"
:selected-vms="selectedVMs"
@@ -277,8 +273,6 @@ const onCancel = () => {
:provider-name="providerName"
:provider="provider"
:selected-vms="selectedVMs"
:network-map-name="networkMapName"
:storage-map-name="storageMapName"
:mapping-entries="stepData.mappings"
:step-data="stepData.review"
@ready="onReviewReady"