use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct PveQemuScsiConfig {
#[serde(rename = "aio", skip_serializing_if = "Option::is_none")]
pub aio: Option<models::PveAioEnum>,
#[serde(rename = "backup", skip_serializing_if = "Option::is_none")]
pub backup: Option<models::PveBoolean>,
#[serde(rename = "bps", skip_serializing_if = "Option::is_none")]
pub bps: Option<i64>,
#[serde(rename = "bps_max_length", skip_serializing_if = "Option::is_none")]
pub bps_max_length: Option<i64>,
#[serde(rename = "bps_rd", skip_serializing_if = "Option::is_none")]
pub bps_rd: Option<i64>,
#[serde(rename = "bps_rd_length", skip_serializing_if = "Option::is_none")]
pub bps_rd_length: Option<String>,
#[serde(rename = "bps_rd_max_length", skip_serializing_if = "Option::is_none")]
pub bps_rd_max_length: Option<i64>,
#[serde(rename = "bps_wr", skip_serializing_if = "Option::is_none")]
pub bps_wr: Option<i64>,
#[serde(rename = "bps_wr_length", skip_serializing_if = "Option::is_none")]
pub bps_wr_length: Option<String>,
#[serde(rename = "bps_wr_max_length", skip_serializing_if = "Option::is_none")]
pub bps_wr_max_length: Option<i64>,
#[serde(rename = "cache", skip_serializing_if = "Option::is_none")]
pub cache: Option<models::PveCacheEnum>,
#[serde(rename = "detect_zeroes", skip_serializing_if = "Option::is_none")]
pub detect_zeroes: Option<models::PveBoolean>,
#[serde(rename = "discard", skip_serializing_if = "Option::is_none")]
pub discard: Option<models::PveDiscardEnum>,
#[serde(rename = "file")]
pub file: String,
#[serde(rename = "format", skip_serializing_if = "Option::is_none")]
pub format: Option<models::PveFormatEnum>,
#[serde(rename = "iops", skip_serializing_if = "Option::is_none")]
pub iops: Option<i64>,
#[serde(rename = "iops_max", skip_serializing_if = "Option::is_none")]
pub iops_max: Option<i64>,
#[serde(rename = "iops_max_length", skip_serializing_if = "Option::is_none")]
pub iops_max_length: Option<i64>,
#[serde(rename = "iops_rd", skip_serializing_if = "Option::is_none")]
pub iops_rd: Option<i64>,
#[serde(rename = "iops_rd_length", skip_serializing_if = "Option::is_none")]
pub iops_rd_length: Option<String>,
#[serde(rename = "iops_rd_max", skip_serializing_if = "Option::is_none")]
pub iops_rd_max: Option<i64>,
#[serde(rename = "iops_rd_max_length", skip_serializing_if = "Option::is_none")]
pub iops_rd_max_length: Option<i64>,
#[serde(rename = "iops_wr", skip_serializing_if = "Option::is_none")]
pub iops_wr: Option<i64>,
#[serde(rename = "iops_wr_length", skip_serializing_if = "Option::is_none")]
pub iops_wr_length: Option<String>,
#[serde(rename = "iops_wr_max", skip_serializing_if = "Option::is_none")]
pub iops_wr_max: Option<i64>,
#[serde(rename = "iops_wr_max_length", skip_serializing_if = "Option::is_none")]
pub iops_wr_max_length: Option<i64>,
#[serde(rename = "iothread", skip_serializing_if = "Option::is_none")]
pub iothread: Option<models::PveBoolean>,
#[serde(rename = "mbps", skip_serializing_if = "Option::is_none")]
pub mbps: Option<f64>,
#[serde(rename = "mbps_max", skip_serializing_if = "Option::is_none")]
pub mbps_max: Option<f64>,
#[serde(rename = "mbps_rd", skip_serializing_if = "Option::is_none")]
pub mbps_rd: Option<f64>,
#[serde(rename = "mbps_rd_max", skip_serializing_if = "Option::is_none")]
pub mbps_rd_max: Option<f64>,
#[serde(rename = "mbps_wr", skip_serializing_if = "Option::is_none")]
pub mbps_wr: Option<f64>,
#[serde(rename = "mbps_wr_max", skip_serializing_if = "Option::is_none")]
pub mbps_wr_max: Option<f64>,
#[serde(rename = "media", skip_serializing_if = "Option::is_none")]
pub media: Option<models::PveMediaEnum>,
#[serde(rename = "product", skip_serializing_if = "Option::is_none")]
pub product: Option<String>,
#[serde(rename = "queues", skip_serializing_if = "Option::is_none")]
pub queues: Option<i64>,
#[serde(rename = "replicate", skip_serializing_if = "Option::is_none")]
pub replicate: Option<models::PveBoolean>,
#[serde(rename = "rerror", skip_serializing_if = "Option::is_none")]
pub rerror: Option<models::PveRerrorEnum>,
#[serde(rename = "ro", skip_serializing_if = "Option::is_none")]
pub ro: Option<models::PveBoolean>,
#[serde(rename = "scsiblock", skip_serializing_if = "Option::is_none")]
pub scsiblock: Option<models::PveBoolean>,
#[serde(rename = "serial", skip_serializing_if = "Option::is_none")]
pub serial: Option<String>,
#[serde(rename = "shared", skip_serializing_if = "Option::is_none")]
pub shared: Option<models::PveBoolean>,
#[serde(rename = "size", skip_serializing_if = "Option::is_none")]
pub size: Option<String>,
#[serde(rename = "snapshot", skip_serializing_if = "Option::is_none")]
pub snapshot: Option<models::PveBoolean>,
#[serde(rename = "ssd", skip_serializing_if = "Option::is_none")]
pub ssd: Option<models::PveBoolean>,
#[serde(rename = "vendor", skip_serializing_if = "Option::is_none")]
pub vendor: Option<String>,
#[serde(rename = "volume", skip_serializing_if = "Option::is_none")]
pub volume: Option<String>,
#[serde(rename = "werror", skip_serializing_if = "Option::is_none")]
pub werror: Option<models::PveWerrorEnum>,
#[serde(rename = "wwn", skip_serializing_if = "Option::is_none")]
pub wwn: Option<String>,
}
impl PveQemuScsiConfig {
pub fn new(file: String) -> PveQemuScsiConfig {
PveQemuScsiConfig {
aio: None,
backup: None,
bps: None,
bps_max_length: None,
bps_rd: None,
bps_rd_length: None,
bps_rd_max_length: None,
bps_wr: None,
bps_wr_length: None,
bps_wr_max_length: None,
cache: None,
detect_zeroes: None,
discard: None,
file,
format: None,
iops: None,
iops_max: None,
iops_max_length: None,
iops_rd: None,
iops_rd_length: None,
iops_rd_max: None,
iops_rd_max_length: None,
iops_wr: None,
iops_wr_length: None,
iops_wr_max: None,
iops_wr_max_length: None,
iothread: None,
mbps: None,
mbps_max: None,
mbps_rd: None,
mbps_rd_max: None,
mbps_wr: None,
mbps_wr_max: None,
media: None,
product: None,
queues: None,
replicate: None,
rerror: None,
ro: None,
scsiblock: None,
serial: None,
shared: None,
size: None,
snapshot: None,
ssd: None,
vendor: None,
volume: None,
werror: None,
wwn: None,
}
}
}
impl PveQemuScsiConfig {
pub fn to_shorthand(&self) -> String {
let mut parts: Vec<String> = Vec::new();
parts.push(format!("{}", self.file));
if let Some(ref v) = self.aio {
parts.push(format!("aio={}", v));
}
if let Some(ref v) = self.backup {
parts.push(format!("backup={}", v));
}
if let Some(ref v) = self.bps {
parts.push(format!("bps={}", v));
}
if let Some(ref v) = self.bps_max_length {
parts.push(format!("bps_max_length={}", v));
}
if let Some(ref v) = self.bps_rd {
parts.push(format!("bps_rd={}", v));
}
if let Some(ref v) = self.bps_rd_length {
parts.push(format!("bps_rd_max_length={}", v));
}
if let Some(ref v) = self.bps_rd_max_length {
parts.push(format!("bps_rd_max_length={}", v));
}
if let Some(ref v) = self.bps_wr {
parts.push(format!("bps_wr={}", v));
}
if let Some(ref v) = self.bps_wr_length {
parts.push(format!("bps_wr_max_length={}", v));
}
if let Some(ref v) = self.bps_wr_max_length {
parts.push(format!("bps_wr_max_length={}", v));
}
if let Some(ref v) = self.cache {
parts.push(format!("cache={}", v));
}
if let Some(ref v) = self.detect_zeroes {
parts.push(format!("detect_zeroes={}", v));
}
if let Some(ref v) = self.discard {
parts.push(format!("discard={}", v));
}
if let Some(ref v) = self.format {
parts.push(format!("format={}", v));
}
if let Some(ref v) = self.iops {
parts.push(format!("iops={}", v));
}
if let Some(ref v) = self.iops_max {
parts.push(format!("iops_max={}", v));
}
if let Some(ref v) = self.iops_max_length {
parts.push(format!("iops_max_length={}", v));
}
if let Some(ref v) = self.iops_rd {
parts.push(format!("iops_rd={}", v));
}
if let Some(ref v) = self.iops_rd_length {
parts.push(format!("iops_rd_max_length={}", v));
}
if let Some(ref v) = self.iops_rd_max {
parts.push(format!("iops_rd_max={}", v));
}
if let Some(ref v) = self.iops_rd_max_length {
parts.push(format!("iops_rd_max_length={}", v));
}
if let Some(ref v) = self.iops_wr {
parts.push(format!("iops_wr={}", v));
}
if let Some(ref v) = self.iops_wr_length {
parts.push(format!("iops_wr_max_length={}", v));
}
if let Some(ref v) = self.iops_wr_max {
parts.push(format!("iops_wr_max={}", v));
}
if let Some(ref v) = self.iops_wr_max_length {
parts.push(format!("iops_wr_max_length={}", v));
}
if let Some(ref v) = self.iothread {
parts.push(format!("iothread={}", v));
}
if let Some(ref v) = self.mbps {
parts.push(format!("mbps={}", v));
}
if let Some(ref v) = self.mbps_max {
parts.push(format!("mbps_max={}", v));
}
if let Some(ref v) = self.mbps_rd {
parts.push(format!("mbps_rd={}", v));
}
if let Some(ref v) = self.mbps_rd_max {
parts.push(format!("mbps_rd_max={}", v));
}
if let Some(ref v) = self.mbps_wr {
parts.push(format!("mbps_wr={}", v));
}
if let Some(ref v) = self.mbps_wr_max {
parts.push(format!("mbps_wr_max={}", v));
}
if let Some(ref v) = self.media {
parts.push(format!("media={}", v));
}
if let Some(ref v) = self.product {
parts.push(format!("product={}", v));
}
if let Some(ref v) = self.queues {
parts.push(format!("queues={}", v));
}
if let Some(ref v) = self.replicate {
parts.push(format!("replicate={}", v));
}
if let Some(ref v) = self.rerror {
parts.push(format!("rerror={}", v));
}
if let Some(ref v) = self.ro {
parts.push(format!("ro={}", v));
}
if let Some(ref v) = self.scsiblock {
parts.push(format!("scsiblock={}", v));
}
if let Some(ref v) = self.serial {
parts.push(format!("serial={}", v));
}
if let Some(ref v) = self.shared {
parts.push(format!("shared={}", v));
}
if let Some(ref v) = self.size {
parts.push(format!("size={}", v));
}
if let Some(ref v) = self.snapshot {
parts.push(format!("snapshot={}", v));
}
if let Some(ref v) = self.ssd {
parts.push(format!("ssd={}", v));
}
if let Some(ref v) = self.vendor {
parts.push(format!("vendor={}", v));
}
if let Some(ref v) = self.volume {
parts.push(format!("file={}", v));
}
if let Some(ref v) = self.werror {
parts.push(format!("werror={}", v));
}
if let Some(ref v) = self.wwn {
parts.push(format!("wwn={}", v));
}
parts.join(",")
}
}