blob: d7ce67fd63e0ac8f47868b9d7ac1edcb2dfc874d [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
use std::fmt;
#[derive(Copy, Clone)]
pub enum DiskOpType {
Create,
Resize,
}
impl Default for DiskOpType {
fn default() -> Self {
DiskOpType::Create
}
}
#[derive(Copy, Clone, Debug)]
pub enum VmDiskImageType {
Raw,
Qcow2,
Auto,
PluginVm,
}
impl fmt::Display for VmDiskImageType {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
VmDiskImageType::Raw => write!(f, "raw"),
VmDiskImageType::Qcow2 => write!(f, "qcow2"),
VmDiskImageType::Auto => write!(f, "auto"),
VmDiskImageType::PluginVm => write!(f, "pvm"),
}
}
}
impl Default for VmDiskImageType {
fn default() -> Self {
VmDiskImageType::Auto
}
}
/// Information about a single VM disk image.
#[derive(Default, Debug)]
pub struct DiskInfo {
/// Name of the VM contained in this disk.
pub name: String,
/// Size of the disk in bytes.
pub size: u64,
/// Minimum size the disk image may be resized to, if known.
pub min_size: Option<u64>,
/// Disk image type (raw, QCOW2, etc.).
pub image_type: VmDiskImageType,
/// Whether the disk size is user-specified (true) or automatically sized (false).
pub user_chosen_size: bool,
}