Can backup vm disks as images
This commit is contained in:
		@@ -1,4 +1,5 @@
 | 
			
		||||
import { APIClient } from "./ApiClient";
 | 
			
		||||
import { VMFileDisk, VMInfo } from "./VMApi";
 | 
			
		||||
 | 
			
		||||
export type DiskImageFormat =
 | 
			
		||||
  | { format: "Raw"; is_sparse: boolean }
 | 
			
		||||
@@ -77,6 +78,22 @@ export class DiskImageApi {
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Backup VM disk into image disks library
 | 
			
		||||
   */
 | 
			
		||||
  static async BackupVMDisk(
 | 
			
		||||
    vm: VMInfo,
 | 
			
		||||
    disk: VMFileDisk,
 | 
			
		||||
    dest_file_name: string,
 | 
			
		||||
    format: DiskImageFormat
 | 
			
		||||
  ): Promise<void> {
 | 
			
		||||
    await APIClient.exec({
 | 
			
		||||
      uri: `/vm/${vm.uuid}/disk/${disk.name}/backup`,
 | 
			
		||||
      method: "POST",
 | 
			
		||||
      jsonData: { ...format, dest_file_name },
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Delete disk image file
 | 
			
		||||
   */
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import { APIClient } from "./ApiClient";
 | 
			
		||||
import { DiskImageFormat } from "./DiskImageApi";
 | 
			
		||||
 | 
			
		||||
export type VMState =
 | 
			
		||||
  | "NoState"
 | 
			
		||||
@@ -385,20 +384,4 @@ export class VMApi {
 | 
			
		||||
      encodeURIComponent(token)
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Backup VM disk
 | 
			
		||||
   */
 | 
			
		||||
  static async BackupDisk(
 | 
			
		||||
    vm: VMInfo,
 | 
			
		||||
    disk: VMFileDisk,
 | 
			
		||||
    file_name: string,
 | 
			
		||||
    format: DiskImageFormat
 | 
			
		||||
  ): Promise<void> {
 | 
			
		||||
    await APIClient.exec({
 | 
			
		||||
      uri: `/vm/${vm.uuid}/disk/${disk.name}/backup`,
 | 
			
		||||
      method: "POST",
 | 
			
		||||
      jsonData: { ...format, file_name },
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ import {
 | 
			
		||||
import React from "react";
 | 
			
		||||
import { DiskImage, DiskImageApi, DiskImageFormat } from "../api/DiskImageApi";
 | 
			
		||||
import { ServerApi } from "../api/ServerApi";
 | 
			
		||||
import { VMApi, VMFileDisk, VMInfo } from "../api/VMApi";
 | 
			
		||||
import { VMFileDisk, VMInfo } from "../api/VMApi";
 | 
			
		||||
import { useAlert } from "../hooks/providers/AlertDialogProvider";
 | 
			
		||||
import { useLoadingMessage } from "../hooks/providers/LoadingMessageProvider";
 | 
			
		||||
import { useSnackbar } from "../hooks/providers/SnackbarProvider";
 | 
			
		||||
@@ -60,7 +60,8 @@ export function ConvertDiskImageDialog(
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
      // Perform the conversion / backup operation
 | 
			
		||||
      if (p.backup) await VMApi.BackupDisk(p.vm, p.disk, filename, format);
 | 
			
		||||
      if (p.backup)
 | 
			
		||||
        await DiskImageApi.BackupVMDisk(p.vm, p.disk, filename, format);
 | 
			
		||||
      else await DiskImageApi.Convert(p.image, filename, format);
 | 
			
		||||
 | 
			
		||||
      p.onFinished();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user