use serde::{Deserialize, Serialize};
use std::collections::HashMap;
make_pub!(
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(
feature = "builder",
derive(derive_builder::Builder, getset::CopyGetters, getset::Getters),
builder(default, pattern = "owned", setter(into, strip_option))
)]
struct Windows {
#[cfg_attr(feature = "builder", getset(get = "pub"))]
layer_folders: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "builder", getset(get = "pub"))]
devices: Option<Vec<WindowsDevice>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "builder", getset(get_copy = "pub"))]
resources: Option<WindowsResources>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "builder", getset(get = "pub"))]
credential_spec: Option<HashMap<String, Option<serde_json::Value>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "builder", getset(get_copy = "pub"))]
servicing: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "builder", getset(get_copy = "pub"))]
ignore_flushes_during_boot: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "builder", getset(get = "pub"))]
hyperv: Option<WindowsHyperV>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "builder", getset(get = "pub"))]
network: Option<WindowsNetwork>,
}
);
make_pub!(
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(
feature = "builder",
derive(derive_builder::Builder, getset::Getters),
builder(default, pattern = "owned", setter(into, strip_option)),
getset(get = "pub")
)]
struct WindowsDevice {
id: String,
id_type: String,
}
);
make_pub!(
#[derive(Clone, Copy, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[cfg_attr(
feature = "builder",
derive(derive_builder::Builder, getset::CopyGetters),
builder(default, pattern = "owned", setter(into, strip_option)),
getset(get_copy = "pub")
)]
struct WindowsResources {
#[serde(default, skip_serializing_if = "Option::is_none")]
memory: Option<WindowsMemoryResources>,
#[serde(default, skip_serializing_if = "Option::is_none")]
cpu: Option<WindowsCPUResources>,
#[serde(default, skip_serializing_if = "Option::is_none")]
storage: Option<WindowsStorageResources>,
}
);
make_pub!(
#[derive(Clone, Copy, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[cfg_attr(
feature = "builder",
derive(derive_builder::Builder, getset::CopyGetters),
builder(default, pattern = "owned", setter(into, strip_option)),
getset(get_copy = "pub")
)]
struct WindowsMemoryResources {
#[serde(default, skip_serializing_if = "Option::is_none")]
limit: Option<u64>,
}
);
make_pub!(
#[derive(Clone, Copy, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[cfg_attr(
feature = "builder",
derive(derive_builder::Builder, getset::CopyGetters),
builder(default, pattern = "owned", setter(into, strip_option)),
getset(get_copy = "pub")
)]
struct WindowsCPUResources {
#[serde(default, skip_serializing_if = "Option::is_none")]
count: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
shares: Option<u16>,
#[serde(default, skip_serializing_if = "Option::is_none")]
maximum: Option<u16>,
}
);
make_pub!(
#[derive(Clone, Copy, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(
feature = "builder",
derive(derive_builder::Builder, getset::CopyGetters),
builder(default, pattern = "owned", setter(into, strip_option)),
getset(get_copy = "pub")
)]
struct WindowsStorageResources {
#[serde(default, skip_serializing_if = "Option::is_none")]
iops: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
bps: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
sandbox_size: Option<u64>,
}
);
make_pub!(
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(
feature = "builder",
derive(derive_builder::Builder, getset::Getters),
builder(default, pattern = "owned", setter(into, strip_option)),
getset(get = "pub")
)]
struct WindowsHyperV {
#[serde(default, skip_serializing_if = "Option::is_none")]
utility_vm_path: Option<String>,
}
);
make_pub!(
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "camelCase")]
#[cfg_attr(
feature = "builder",
derive(derive_builder::Builder, getset::CopyGetters, getset::Getters),
builder(default, pattern = "owned", setter(into, strip_option))
)]
struct WindowsNetwork {
#[serde(default, skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "builder", getset(get = "pub"))]
endpoint_list: Option<Vec<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "allowUnqualifiedDNSQuery"
)]
#[cfg_attr(feature = "builder", getset(get_copy = "pub"))]
allow_unqualified_dns_query: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "DNSSearchList"
)]
#[cfg_attr(feature = "builder", getset(get = "pub"))]
dns_search_list: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "builder", getset(get = "pub"))]
network_shared_container_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "builder", getset(get = "pub"))]
network_namespace: Option<String>,
}
);