From e242f7c5f0540e8b7dad237b1650cc2a1fa96d84 Mon Sep 17 00:00:00 2001 From: Roberto Jimenez Sanchez Date: Thu, 18 Dec 2025 08:38:03 +0100 Subject: [PATCH] Simplify createSyncJob: calculate requiresMigration in caller - Remove syncTarget and migrateResources parameters from useCreateSyncJob hook - Calculate requiresMigration in SynchronizeStep based on sync target and checkbox value - Pass requiresMigration as parameter to createSyncJob function --- .../provisioning/Wizard/SynchronizeStep.tsx | 16 ++++++++---- .../Wizard/hooks/useCreateSyncJob.ts | 25 +++---------------- 2 files changed, 15 insertions(+), 26 deletions(-) diff --git a/public/app/features/provisioning/Wizard/SynchronizeStep.tsx b/public/app/features/provisioning/Wizard/SynchronizeStep.tsx index 569712babd2..e625cd53349 100644 --- a/public/app/features/provisioning/Wizard/SynchronizeStep.tsx +++ b/public/app/features/provisioning/Wizard/SynchronizeStep.tsx @@ -24,11 +24,10 @@ export const SynchronizeStep = memo(function SynchronizeStep({ onCancel, isCance const { setStepStatusInfo } = useStepStatus(); const repoName = watch('repositoryName') ?? ''; const syncTarget = watch('repository.sync.target'); - const { requiresMigration } = useResourceStats(repoName, syncTarget); + const { requiresMigration: baseRequiresMigration } = useResourceStats(repoName, syncTarget); + const { createSyncJob } = useCreateSyncJob({ repoName, - requiresMigration, - syncTarget, setStepStatusInfo, }); const [job, setJob] = useState(); @@ -65,8 +64,15 @@ export const SynchronizeStep = memo(function SynchronizeStep({ onCancel, isCance const isButtonDisabled = hasError || (checked !== undefined && isRepositoryHealthy === false) || healthStatusNotReady; const startSynchronization = async () => { - const migrateResources = getValues('migrate.migrateResources'); - const response = await createSyncJob({ migrateResources }); + // Calculate final requiresMigration based on sync target and user selection + // For instance sync: use the base requiresMigration + // For folder sync: only migrate if user explicitly opts in via checkbox + let finalRequiresMigration = baseRequiresMigration; + if (syncTarget === 'folder') { + finalRequiresMigration = getValues('migrate.migrateResources') ?? false; + } + + const response = await createSyncJob(finalRequiresMigration); if (response) { setJob(response); } diff --git a/public/app/features/provisioning/Wizard/hooks/useCreateSyncJob.ts b/public/app/features/provisioning/Wizard/hooks/useCreateSyncJob.ts index f00ef0af024..1aaa7a250f0 100644 --- a/public/app/features/provisioning/Wizard/hooks/useCreateSyncJob.ts +++ b/public/app/features/provisioning/Wizard/hooks/useCreateSyncJob.ts @@ -1,28 +1,17 @@ import { t } from '@grafana/i18n'; import { useCreateRepositoryJobsMutation } from 'app/api/clients/provisioning/v0alpha1'; -import { StepStatusInfo, Target } from '../types'; +import { StepStatusInfo } from '../types'; export interface UseCreateSyncJobParams { repoName: string; - requiresMigration: boolean; - syncTarget?: Target; setStepStatusInfo?: (info: StepStatusInfo) => void; } -export interface CreateSyncJobOptions { - migrateResources?: boolean; -} - -export function useCreateSyncJob({ - repoName, - requiresMigration, - syncTarget, - setStepStatusInfo, -}: UseCreateSyncJobParams) { +export function useCreateSyncJob({ repoName, setStepStatusInfo }: UseCreateSyncJobParams) { const [createJob, { isLoading }] = useCreateRepositoryJobsMutation(); - const createSyncJob = async (options?: CreateSyncJobOptions) => { + const createSyncJob = async (requiresMigration: boolean) => { if (!repoName) { setStepStatusInfo?.({ status: 'error', @@ -34,13 +23,7 @@ export function useCreateSyncJob({ try { setStepStatusInfo?.({ status: 'running' }); - // Determine if we should run a migration job: - // - For instance sync: always migrate if there are resources - // - For folder sync: migrate only if user explicitly opted in via checkbox - const shouldMigrate = - syncTarget === 'instance' ? requiresMigration : syncTarget === 'folder' && options?.migrateResources; - - const jobSpec = shouldMigrate + const jobSpec = requiresMigration ? { migrate: {}, }