diff --git a/app/vmstorage/main.go b/app/vmstorage/main.go index 20faa81b6a..f925e7e98b 100644 --- a/app/vmstorage/main.go +++ b/app/vmstorage/main.go @@ -241,12 +241,27 @@ func requestHandler(w http.ResponseWriter, r *http.Request, strg *storage.Storag case "/delete": w.Header().Set("Content-Type", "application/json") snapshotName := r.FormValue("snapshot") - if err := strg.DeleteSnapshot(snapshotName); err != nil { - err = fmt.Errorf("cannot delete snapshot %q: %w", snapshotName, err) + + snapshots, err := strg.ListSnapshots() + if err != nil { + err = fmt.Errorf("cannot list snapshots: %w", err) jsonResponseError(w, err) return true } - fmt.Fprintf(w, `{"status":"ok"}`) + for _, snName := range snapshots { + if snName == snapshotName { + if err := strg.DeleteSnapshot(snName); err != nil { + err = fmt.Errorf("cannot delete snapshot %q: %w", snName, err) + jsonResponseError(w, err) + return true + } + fmt.Fprintf(w, `{"status":"ok"}`) + return true + } + } + + err = fmt.Errorf("cannot find snapshot %q: %w", snapshotName, err) + jsonResponseError(w, err) return true case "/delete_all": w.Header().Set("Content-Type", "application/json")