From 4b52d479634009fae916cc4468f33df378c243d9 Mon Sep 17 00:00:00 2001 From: Steve Goodwin Date: Thu, 14 May 2026 14:07:39 -0400 Subject: [PATCH] OCPBUGS-59404: Allow VolumeSnapshot restore when parent PVC is deleted --- .../modals/restore-pvc/restore-pvc-modal.tsx | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/frontend/packages/console-app/src/components/modals/restore-pvc/restore-pvc-modal.tsx b/frontend/packages/console-app/src/components/modals/restore-pvc/restore-pvc-modal.tsx index ab3ee054d30..719c136c940 100644 --- a/frontend/packages/console-app/src/components/modals/restore-pvc/restore-pvc-modal.tsx +++ b/frontend/packages/console-app/src/components/modals/restore-pvc/restore-pvc-modal.tsx @@ -80,11 +80,17 @@ const RestorePVCModal: FC = ({ close, cancel, resource }) >(PersistentVolumeClaimModel, resource?.spec?.source?.persistentVolumeClaimName, namespace); const pvcStorageClassName = pvcResource?.spec?.storageClassName; + const pvcNotFound = pvcResourceLoaded && !pvcResource; const [scResource, scResourceLoaded, scResourceLoadError] = useK8sGet( StorageClassModel, pvcStorageClassName, ); + // Form is ready when either: + // - PVC was found and its StorageClass has loaded + // - PVC was not found (deleted) — annotations and snapshot status provide sufficient data + const formReady = pvcNotFound || (!!pvcStorageClassName && scResourceLoaded); + const [volumeMode, setVolumeMode] = useState(''); const requestedSizeInputChange = ({ value, unit }) => { setRequestedSize(value); @@ -156,13 +162,16 @@ const RestorePVCModal: FC = ({ close, cancel, resource }) /> - {!pvcStorageClassName || !scResourceLoaded ? ( + {!formReady ? (
) : ( - onlyPvcSCs(scObj, scResourceLoadError, scResource) + filter={ + pvcNotFound + ? undefined + : (scObj: StorageClassResourceKind) => + onlyPvcSCs(scObj, scResourceLoadError, scResource) } id="restore-storage-class" required @@ -190,14 +199,17 @@ const RestorePVCModal: FC = ({ close, cancel, resource }) availableVolumeMode={volumeSnapshotAnnotations?.[snapshotPVCVolumeModeAnnotation]} /> - {!!pvcStorageClassName && scResourceLoaded ? ( + {formReady ? ( ) : (