1use crate::error::OciSpecError;
2use derive_builder::Builder;
3use getset::{CopyGetters, Getters, Setters};
4use serde::{Deserialize, Serialize};
5use std::collections::HashMap;
6
7#[derive(
8 Builder,
9 Clone,
10 Debug,
11 Default,
12 Deserialize,
13 Eq,
14 CopyGetters,
15 Getters,
16 Setters,
17 PartialEq,
18 Serialize,
19)]
20#[serde(rename_all = "camelCase")]
21#[builder(
22 default,
23 pattern = "owned",
24 setter(into, strip_option),
25 build_fn(error = "OciSpecError")
26)]
27pub struct Windows {
30 #[serde(default, skip_serializing_if = "Option::is_none")]
31 #[getset(get = "pub", set = "pub")]
32 layer_folders: Option<Vec<String>>,
35
36 #[serde(default, skip_serializing_if = "Option::is_none")]
37 #[getset(get = "pub", set = "pub")]
38 devices: Option<Vec<WindowsDevice>>,
40
41 #[serde(default, skip_serializing_if = "Option::is_none")]
42 #[getset(get_copy = "pub", set = "pub")]
43 resources: Option<WindowsResources>,
46
47 #[serde(default, skip_serializing_if = "Option::is_none")]
48 #[getset(get = "pub", set = "pub")]
49 credential_spec: Option<HashMap<String, Option<serde_json::Value>>>,
52
53 #[serde(default, skip_serializing_if = "Option::is_none")]
54 #[getset(get_copy = "pub", set = "pub")]
55 servicing: Option<bool>,
58
59 #[serde(default, skip_serializing_if = "Option::is_none")]
60 #[getset(get_copy = "pub", set = "pub")]
61 ignore_flushes_during_boot: Option<bool>,
65
66 #[serde(default, skip_serializing_if = "Option::is_none")]
67 #[getset(get = "pub", set = "pub")]
68 hyperv: Option<WindowsHyperV>,
71
72 #[serde(default, skip_serializing_if = "Option::is_none")]
73 #[getset(get = "pub", set = "pub")]
74 network: Option<WindowsNetwork>,
76}
77
78#[derive(
79 Builder, Clone, Debug, Default, Deserialize, Eq, Getters, Setters, PartialEq, Serialize,
80)]
81#[serde(rename_all = "camelCase")]
82#[builder(
83 default,
84 pattern = "owned",
85 setter(into, strip_option),
86 build_fn(error = "OciSpecError")
87)]
88#[getset(get = "pub", set = "pub")]
89pub struct WindowsDevice {
92 id: String,
94
95 id_type: String,
97}
98
99#[derive(
100 Builder, Clone, Copy, Debug, Default, Deserialize, Eq, Getters, Setters, PartialEq, Serialize,
101)]
102#[builder(
103 default,
104 pattern = "owned",
105 setter(into, strip_option),
106 build_fn(error = "OciSpecError")
107)]
108#[getset(get_copy = "pub", set = "pub")]
109pub struct WindowsResources {
111 #[serde(default, skip_serializing_if = "Option::is_none")]
112 memory: Option<WindowsMemoryResources>,
114
115 #[serde(default, skip_serializing_if = "Option::is_none")]
116 cpu: Option<WindowsCPUResources>,
118
119 #[serde(default, skip_serializing_if = "Option::is_none")]
120 storage: Option<WindowsStorageResources>,
122}
123
124#[derive(
125 Builder, Clone, Copy, Debug, Default, Deserialize, Eq, Getters, Setters, PartialEq, Serialize,
126)]
127#[builder(
128 default,
129 pattern = "owned",
130 setter(into, strip_option),
131 build_fn(error = "OciSpecError")
132)]
133#[getset(get_copy = "pub", set = "pub")]
134pub struct WindowsMemoryResources {
136 #[serde(default, skip_serializing_if = "Option::is_none")]
137 limit: Option<u64>,
139}
140
141#[derive(
142 Builder, Clone, Copy, Debug, Default, Deserialize, Eq, Getters, Setters, PartialEq, Serialize,
143)]
144#[builder(
145 default,
146 pattern = "owned",
147 setter(into, strip_option),
148 build_fn(error = "OciSpecError")
149)]
150#[getset(get_copy = "pub", set = "pub")]
151pub struct WindowsCPUResources {
153 #[serde(default, skip_serializing_if = "Option::is_none")]
154 count: Option<u64>,
156
157 #[serde(default, skip_serializing_if = "Option::is_none")]
158 shares: Option<u16>,
160
161 #[serde(default, skip_serializing_if = "Option::is_none")]
162 maximum: Option<u16>,
165}
166
167#[derive(
168 Builder, Clone, Copy, Debug, Default, Deserialize, Eq, Getters, Setters, PartialEq, Serialize,
169)]
170#[serde(rename_all = "camelCase")]
171#[builder(
172 default,
173 pattern = "owned",
174 setter(into, strip_option),
175 build_fn(error = "OciSpecError")
176)]
177#[getset(get_copy = "pub", set = "pub")]
178pub struct WindowsStorageResources {
180 #[serde(default, skip_serializing_if = "Option::is_none")]
181 iops: Option<u64>,
183
184 #[serde(default, skip_serializing_if = "Option::is_none")]
185 bps: Option<u64>,
187
188 #[serde(default, skip_serializing_if = "Option::is_none")]
189 sandbox_size: Option<u64>,
192}
193
194#[derive(
195 Builder, Clone, Debug, Default, Deserialize, Eq, Getters, Setters, PartialEq, Serialize,
196)]
197#[serde(rename_all = "camelCase")]
198#[builder(
199 default,
200 pattern = "owned",
201 setter(into, strip_option),
202 build_fn(error = "OciSpecError")
203)]
204#[getset(get = "pub", set = "pub")]
205pub struct WindowsHyperV {
208 #[serde(default, skip_serializing_if = "Option::is_none")]
209 utility_vm_path: Option<String>,
212}
213
214#[derive(
215 Builder, Clone, Debug, Default, Deserialize, Eq, Getters, Setters, PartialEq, Serialize,
216)]
217#[serde(rename_all = "camelCase")]
218#[builder(
219 default,
220 pattern = "owned",
221 setter(into, strip_option),
222 build_fn(error = "OciSpecError")
223)]
224pub struct WindowsNetwork {
226 #[serde(default, skip_serializing_if = "Option::is_none")]
227 #[getset(get = "pub", set = "pub")]
228 endpoint_list: Option<Vec<String>>,
230
231 #[serde(
232 default,
233 skip_serializing_if = "Option::is_none",
234 rename = "allowUnqualifiedDNSQuery"
235 )]
236 #[getset(get_copy = "pub", set = "pub")]
237 allow_unqualified_dns_query: Option<bool>,
239
240 #[serde(
241 default,
242 skip_serializing_if = "Option::is_none",
243 rename = "DNSSearchList"
244 )]
245 #[getset(get = "pub", set = "pub")]
246 dns_search_list: Option<Vec<String>>,
248
249 #[serde(default, skip_serializing_if = "Option::is_none")]
250 #[getset(get = "pub", set = "pub")]
251 network_shared_container_name: Option<String>,
254
255 #[serde(default, skip_serializing_if = "Option::is_none")]
256 #[getset(get = "pub", set = "pub")]
257 network_namespace: Option<String>,
260}