use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct PveQemuNetConfig {
#[serde(rename = "bridge", skip_serializing_if = "Option::is_none")]
pub bridge: Option<String>,
#[serde(rename = "e1000", skip_serializing_if = "Option::is_none")]
pub e1000: Option<String>,
#[serde(rename = "e1000-82540em", skip_serializing_if = "Option::is_none")]
pub e1000_82540em: Option<String>,
#[serde(rename = "e1000-82544gc", skip_serializing_if = "Option::is_none")]
pub e1000_82544gc: Option<String>,
#[serde(rename = "e1000-82545em", skip_serializing_if = "Option::is_none")]
pub e1000_82545em: Option<String>,
#[serde(rename = "e1000e", skip_serializing_if = "Option::is_none")]
pub e1000e: Option<String>,
#[serde(rename = "firewall", skip_serializing_if = "Option::is_none")]
pub firewall: Option<models::PveBoolean>,
#[serde(rename = "i82551", skip_serializing_if = "Option::is_none")]
pub i82551: Option<String>,
#[serde(rename = "i82557b", skip_serializing_if = "Option::is_none")]
pub i82557b: Option<String>,
#[serde(rename = "i82559er", skip_serializing_if = "Option::is_none")]
pub i82559er: Option<String>,
#[serde(rename = "link_down", skip_serializing_if = "Option::is_none")]
pub link_down: Option<models::PveBoolean>,
#[serde(rename = "macaddr", skip_serializing_if = "Option::is_none")]
pub macaddr: Option<String>,
#[serde(rename = "model")]
pub model: models::PveModelEnum,
#[serde(rename = "mtu", skip_serializing_if = "Option::is_none")]
pub mtu: Option<i32>,
#[serde(rename = "ne2k_isa", skip_serializing_if = "Option::is_none")]
pub ne2k_isa: Option<String>,
#[serde(rename = "ne2k_pci", skip_serializing_if = "Option::is_none")]
pub ne2k_pci: Option<String>,
#[serde(rename = "pcnet", skip_serializing_if = "Option::is_none")]
pub pcnet: Option<String>,
#[serde(rename = "queues", skip_serializing_if = "Option::is_none")]
pub queues: Option<i32>,
#[serde(rename = "rate", skip_serializing_if = "Option::is_none")]
pub rate: Option<f64>,
#[serde(rename = "rtl8139", skip_serializing_if = "Option::is_none")]
pub rtl8139: Option<String>,
#[serde(rename = "tag", skip_serializing_if = "Option::is_none")]
pub tag: Option<i32>,
#[serde(rename = "trunks", skip_serializing_if = "Option::is_none")]
pub trunks: Option<String>,
#[serde(rename = "virtio", skip_serializing_if = "Option::is_none")]
pub virtio: Option<String>,
#[serde(rename = "vmxnet3", skip_serializing_if = "Option::is_none")]
pub vmxnet3: Option<String>,
}
impl PveQemuNetConfig {
pub fn new(model: models::PveModelEnum) -> PveQemuNetConfig {
PveQemuNetConfig {
bridge: None,
e1000: None,
e1000_82540em: None,
e1000_82544gc: None,
e1000_82545em: None,
e1000e: None,
firewall: None,
i82551: None,
i82557b: None,
i82559er: None,
link_down: None,
macaddr: None,
model,
mtu: None,
ne2k_isa: None,
ne2k_pci: None,
pcnet: None,
queues: None,
rate: None,
rtl8139: None,
tag: None,
trunks: None,
virtio: None,
vmxnet3: None,
}
}
}
impl PveQemuNetConfig {
pub fn to_shorthand(&self) -> String {
let mut parts: Vec<String> = Vec::new();
parts.push(format!("{}", self.model));
if let Some(ref v) = self.bridge {
parts.push(format!("bridge={}", v));
}
if let Some(ref v) = self.e1000 {
parts.push(format!("macaddr={}", v));
}
if let Some(ref v) = self.e1000_82540em {
parts.push(format!("macaddr={}", v));
}
if let Some(ref v) = self.e1000_82544gc {
parts.push(format!("macaddr={}", v));
}
if let Some(ref v) = self.e1000_82545em {
parts.push(format!("macaddr={}", v));
}
if let Some(ref v) = self.e1000e {
parts.push(format!("macaddr={}", v));
}
if let Some(ref v) = self.firewall {
parts.push(format!("firewall={}", v));
}
if let Some(ref v) = self.i82551 {
parts.push(format!("macaddr={}", v));
}
if let Some(ref v) = self.i82557b {
parts.push(format!("macaddr={}", v));
}
if let Some(ref v) = self.i82559er {
parts.push(format!("macaddr={}", v));
}
if let Some(ref v) = self.link_down {
parts.push(format!("link_down={}", v));
}
if let Some(ref v) = self.macaddr {
parts.push(format!("macaddr={}", v));
}
if let Some(ref v) = self.mtu {
parts.push(format!("mtu={}", v));
}
if let Some(ref v) = self.ne2k_isa {
parts.push(format!("macaddr={}", v));
}
if let Some(ref v) = self.ne2k_pci {
parts.push(format!("macaddr={}", v));
}
if let Some(ref v) = self.pcnet {
parts.push(format!("macaddr={}", v));
}
if let Some(ref v) = self.queues {
parts.push(format!("queues={}", v));
}
if let Some(ref v) = self.rate {
parts.push(format!("rate={}", v));
}
if let Some(ref v) = self.rtl8139 {
parts.push(format!("macaddr={}", v));
}
if let Some(ref v) = self.tag {
parts.push(format!("tag={}", v));
}
if let Some(ref v) = self.trunks {
parts.push(format!("trunks={}", v));
}
if let Some(ref v) = self.virtio {
parts.push(format!("macaddr={}", v));
}
if let Some(ref v) = self.vmxnet3 {
parts.push(format!("macaddr={}", v));
}
parts.join(",")
}
}