ignition_config/v3_3/
schema.rs

1// Generated code; do not modify
2
3#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
4pub struct HttpHeadersItem {
5    pub name: String,
6    #[serde(default)]
7    pub value: Option<String>,
8}
9impl HttpHeadersItem {
10    pub fn new(name: String) -> Self {
11        Self { name, value: None }
12    }
13}
14pub type HttpHeaders = Vec<HttpHeadersItem>;
15#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
16#[serde(rename = "ignition-config")]
17pub struct IgnitionConfig {
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub merge: Option<Vec<Resource>>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub replace: Option<Resource>,
22}
23#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
24#[serde(rename = "proxy")]
25pub struct Proxy {
26    #[serde(default)]
27    #[serde(rename = "httpProxy")]
28    pub http_proxy: Option<String>,
29    #[serde(default)]
30    #[serde(rename = "httpsProxy")]
31    pub https_proxy: Option<String>,
32    #[serde(skip_serializing_if = "Option::is_none")]
33    #[serde(rename = "noProxy")]
34    pub no_proxy: Option<Vec<Option<String>>>,
35}
36#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
37pub struct SecurityTls {
38    #[serde(skip_serializing_if = "Option::is_none")]
39    #[serde(rename = "certificateAuthorities")]
40    pub certificate_authorities: Option<Vec<Resource>>,
41}
42#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
43#[serde(rename = "security")]
44pub struct Security {
45    #[serde(skip_serializing_if = "Option::is_none")]
46    pub tls: Option<SecurityTls>,
47}
48#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
49#[serde(rename = "timeouts")]
50pub struct Timeouts {
51    #[serde(default)]
52    #[serde(rename = "httpResponseHeaders")]
53    pub http_response_headers: Option<i64>,
54    #[serde(default)]
55    #[serde(rename = "httpTotal")]
56    pub http_total: Option<i64>,
57}
58#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
59#[serde(rename = "ignition")]
60pub struct Ignition {
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub config: Option<IgnitionConfig>,
63    #[serde(skip_serializing_if = "Option::is_none")]
64    pub proxy: Option<Proxy>,
65    #[serde(skip_serializing_if = "Option::is_none")]
66    pub security: Option<Security>,
67    #[serde(skip_serializing_if = "Option::is_none")]
68    pub timeouts: Option<Timeouts>,
69    #[serde(skip_serializing_if = "Option::is_none")]
70    pub version: Option<String>,
71}
72pub type KernelArgument = String;
73#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
74#[serde(rename = "kernelArguments")]
75pub struct KernelArguments {
76    #[serde(skip_serializing_if = "Option::is_none")]
77    #[serde(rename = "shouldExist")]
78    pub should_exist: Option<Vec<KernelArgument>>,
79    #[serde(skip_serializing_if = "Option::is_none")]
80    #[serde(rename = "shouldNotExist")]
81    pub should_not_exist: Option<Vec<KernelArgument>>,
82}
83#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
84#[serde(rename = "group")]
85pub struct Group {
86    #[serde(default)]
87    pub gid: Option<i64>,
88    pub name: String,
89    #[serde(default)]
90    #[serde(rename = "passwordHash")]
91    pub password_hash: Option<String>,
92    #[serde(default)]
93    #[serde(rename = "shouldExist")]
94    pub should_exist: Option<bool>,
95    #[serde(default)]
96    pub system: Option<bool>,
97}
98impl Group {
99    pub fn new(name: String) -> Self {
100        Self {
101            gid: None,
102            name,
103            password_hash: None,
104            should_exist: None,
105            system: None,
106        }
107    }
108}
109#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
110#[serde(rename = "user")]
111pub struct User {
112    #[serde(default)]
113    pub gecos: Option<String>,
114    #[serde(skip_serializing_if = "Option::is_none")]
115    pub groups: Option<Vec<String>>,
116    #[serde(default)]
117    #[serde(rename = "homeDir")]
118    pub home_dir: Option<String>,
119    pub name: String,
120    #[serde(default)]
121    #[serde(rename = "noCreateHome")]
122    pub no_create_home: Option<bool>,
123    #[serde(default)]
124    #[serde(rename = "noLogInit")]
125    pub no_log_init: Option<bool>,
126    #[serde(default)]
127    #[serde(rename = "noUserGroup")]
128    pub no_user_group: Option<bool>,
129    #[serde(default)]
130    #[serde(rename = "passwordHash")]
131    pub password_hash: Option<String>,
132    #[serde(default)]
133    #[serde(rename = "primaryGroup")]
134    pub primary_group: Option<String>,
135    #[serde(default)]
136    pub shell: Option<String>,
137    #[serde(default)]
138    #[serde(rename = "shouldExist")]
139    pub should_exist: Option<bool>,
140    #[serde(skip_serializing_if = "Option::is_none")]
141    #[serde(rename = "sshAuthorizedKeys")]
142    pub ssh_authorized_keys: Option<Vec<String>>,
143    #[serde(default)]
144    pub system: Option<bool>,
145    #[serde(default)]
146    pub uid: Option<i64>,
147}
148impl User {
149    pub fn new(name: String) -> Self {
150        Self {
151            gecos: None,
152            groups: None,
153            home_dir: None,
154            name,
155            no_create_home: None,
156            no_log_init: None,
157            no_user_group: None,
158            password_hash: None,
159            primary_group: None,
160            shell: None,
161            should_exist: None,
162            ssh_authorized_keys: None,
163            system: None,
164            uid: None,
165        }
166    }
167}
168#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
169#[serde(rename = "passwd")]
170pub struct Passwd {
171    #[serde(skip_serializing_if = "Option::is_none")]
172    pub groups: Option<Vec<Group>>,
173    #[serde(skip_serializing_if = "Option::is_none")]
174    pub users: Option<Vec<User>>,
175}
176#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
177#[serde(rename = "resource")]
178pub struct Resource {
179    #[serde(default)]
180    pub compression: Option<String>,
181    #[serde(skip_serializing_if = "Option::is_none")]
182    #[serde(rename = "httpHeaders")]
183    pub http_headers: Option<HttpHeaders>,
184    #[serde(default)]
185    pub source: Option<String>,
186    #[serde(skip_serializing_if = "Option::is_none")]
187    pub verification: Option<Verification>,
188}
189#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
190#[serde(rename = "clevis")]
191pub struct Clevis {
192    #[serde(skip_serializing_if = "Option::is_none")]
193    pub custom: Option<ClevisCustom>,
194    #[serde(skip_serializing_if = "Option::is_none")]
195    pub tang: Option<Vec<Tang>>,
196    #[serde(default)]
197    pub threshold: Option<i64>,
198    #[serde(default)]
199    #[serde(rename = "tpm2")]
200    pub tpm2: Option<bool>,
201}
202#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
203#[serde(rename = "clevisCustom")]
204pub struct ClevisCustom {
205    #[serde(default)]
206    pub config: Option<String>,
207    #[serde(default)]
208    #[serde(rename = "needsNetwork")]
209    pub needs_network: Option<bool>,
210    #[serde(default)]
211    pub pin: Option<String>,
212}
213#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
214#[serde(rename = "directory")]
215pub struct Directory {
216    #[serde(skip_serializing_if = "Option::is_none")]
217    pub group: Option<NodeGroup>,
218    #[serde(default)]
219    pub mode: Option<i64>,
220    #[serde(default)]
221    pub overwrite: Option<bool>,
222    pub path: String,
223    #[serde(skip_serializing_if = "Option::is_none")]
224    pub user: Option<NodeUser>,
225}
226impl Directory {
227    pub fn new(path: String) -> Self {
228        Self {
229            group: None,
230            mode: None,
231            overwrite: None,
232            path,
233            user: None,
234        }
235    }
236}
237#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
238#[serde(rename = "disk")]
239pub struct Disk {
240    pub device: String,
241    #[serde(skip_serializing_if = "Option::is_none")]
242    pub partitions: Option<Vec<Partition>>,
243    #[serde(default)]
244    #[serde(rename = "wipeTable")]
245    pub wipe_table: Option<bool>,
246}
247impl Disk {
248    pub fn new(device: String) -> Self {
249        Self {
250            device,
251            partitions: None,
252            wipe_table: None,
253        }
254    }
255}
256#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
257#[serde(rename = "file")]
258pub struct File {
259    #[serde(skip_serializing_if = "Option::is_none")]
260    pub append: Option<Vec<Resource>>,
261    #[serde(skip_serializing_if = "Option::is_none")]
262    pub contents: Option<Resource>,
263    #[serde(skip_serializing_if = "Option::is_none")]
264    pub group: Option<NodeGroup>,
265    #[serde(default)]
266    pub mode: Option<i64>,
267    #[serde(default)]
268    pub overwrite: Option<bool>,
269    pub path: String,
270    #[serde(skip_serializing_if = "Option::is_none")]
271    pub user: Option<NodeUser>,
272}
273impl File {
274    pub fn new(path: String) -> Self {
275        Self {
276            append: None,
277            contents: None,
278            group: None,
279            mode: None,
280            overwrite: None,
281            path,
282            user: None,
283        }
284    }
285}
286#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
287#[serde(rename = "filesystem")]
288pub struct Filesystem {
289    pub device: String,
290    #[serde(default)]
291    pub format: Option<String>,
292    #[serde(default)]
293    pub label: Option<String>,
294    #[serde(skip_serializing_if = "Option::is_none")]
295    #[serde(rename = "mountOptions")]
296    pub mount_options: Option<Vec<String>>,
297    #[serde(skip_serializing_if = "Option::is_none")]
298    pub options: Option<Vec<String>>,
299    #[serde(default)]
300    pub path: Option<String>,
301    #[serde(default)]
302    pub uuid: Option<String>,
303    #[serde(default)]
304    #[serde(rename = "wipeFilesystem")]
305    pub wipe_filesystem: Option<bool>,
306}
307impl Filesystem {
308    pub fn new(device: String) -> Self {
309        Self {
310            device,
311            format: None,
312            label: None,
313            mount_options: None,
314            options: None,
315            path: None,
316            uuid: None,
317            wipe_filesystem: None,
318        }
319    }
320}
321#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
322#[serde(rename = "link")]
323pub struct Link {
324    #[serde(skip_serializing_if = "Option::is_none")]
325    pub group: Option<NodeGroup>,
326    #[serde(default)]
327    pub hard: Option<bool>,
328    #[serde(default)]
329    pub overwrite: Option<bool>,
330    pub path: String,
331    #[serde(default)]
332    pub target: Option<String>,
333    #[serde(skip_serializing_if = "Option::is_none")]
334    pub user: Option<NodeUser>,
335}
336impl Link {
337    pub fn new(path: String) -> Self {
338        Self {
339            group: None,
340            hard: None,
341            overwrite: None,
342            path,
343            target: None,
344            user: None,
345        }
346    }
347}
348#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
349#[serde(rename = "luks")]
350pub struct Luks {
351    #[serde(skip_serializing_if = "Option::is_none")]
352    pub clevis: Option<Clevis>,
353    #[serde(default)]
354    pub device: Option<String>,
355    #[serde(skip_serializing_if = "Option::is_none")]
356    #[serde(rename = "keyFile")]
357    pub key_file: Option<Resource>,
358    #[serde(default)]
359    pub label: Option<String>,
360    pub name: String,
361    #[serde(skip_serializing_if = "Option::is_none")]
362    pub options: Option<Vec<String>>,
363    #[serde(default)]
364    pub uuid: Option<String>,
365    #[serde(default)]
366    #[serde(rename = "wipeVolume")]
367    pub wipe_volume: Option<bool>,
368}
369impl Luks {
370    pub fn new(name: String) -> Self {
371        Self {
372            clevis: None,
373            device: None,
374            key_file: None,
375            label: None,
376            name,
377            options: None,
378            uuid: None,
379            wipe_volume: None,
380        }
381    }
382}
383#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
384pub struct NodeGroup {
385    #[serde(default)]
386    pub id: Option<i64>,
387    #[serde(default)]
388    pub name: Option<String>,
389}
390#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
391pub struct NodeUser {
392    #[serde(default)]
393    pub id: Option<i64>,
394    #[serde(default)]
395    pub name: Option<String>,
396}
397#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
398#[serde(rename = "node")]
399pub struct Node {
400    #[serde(skip_serializing_if = "Option::is_none")]
401    pub group: Option<NodeGroup>,
402    #[serde(default)]
403    pub overwrite: Option<bool>,
404    pub path: String,
405    #[serde(skip_serializing_if = "Option::is_none")]
406    pub user: Option<NodeUser>,
407}
408impl Node {
409    pub fn new(path: String) -> Self {
410        Self {
411            group: None,
412            overwrite: None,
413            path,
414            user: None,
415        }
416    }
417}
418#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
419#[serde(rename = "partition")]
420pub struct Partition {
421    #[serde(default)]
422    pub guid: Option<String>,
423    #[serde(default)]
424    pub label: Option<String>,
425    #[serde(skip_serializing_if = "Option::is_none")]
426    pub number: Option<i64>,
427    #[serde(default)]
428    pub resize: Option<bool>,
429    #[serde(default)]
430    #[serde(rename = "shouldExist")]
431    pub should_exist: Option<bool>,
432    #[serde(default)]
433    #[serde(rename = "sizeMiB")]
434    pub size_mib: Option<i64>,
435    #[serde(default)]
436    #[serde(rename = "startMiB")]
437    pub start_mib: Option<i64>,
438    #[serde(default)]
439    #[serde(rename = "typeGuid")]
440    pub type_guid: Option<String>,
441    #[serde(default)]
442    #[serde(rename = "wipePartitionEntry")]
443    pub wipe_partition_entry: Option<bool>,
444}
445#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
446#[serde(rename = "raid")]
447pub struct Raid {
448    #[serde(skip_serializing_if = "Option::is_none")]
449    pub devices: Option<Vec<String>>,
450    #[serde(default)]
451    pub level: Option<String>,
452    pub name: String,
453    #[serde(skip_serializing_if = "Option::is_none")]
454    pub options: Option<Vec<String>>,
455    #[serde(default)]
456    pub spares: Option<i64>,
457}
458impl Raid {
459    pub fn new(name: String) -> Self {
460        Self {
461            devices: None,
462            level: None,
463            name,
464            options: None,
465            spares: None,
466        }
467    }
468}
469#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
470#[serde(rename = "tang")]
471pub struct Tang {
472    #[serde(default)]
473    pub thumbprint: Option<String>,
474    #[serde(skip_serializing_if = "Option::is_none")]
475    pub url: Option<String>,
476}
477#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
478#[serde(rename = "storage")]
479pub struct Storage {
480    #[serde(skip_serializing_if = "Option::is_none")]
481    pub directories: Option<Vec<Directory>>,
482    #[serde(skip_serializing_if = "Option::is_none")]
483    pub disks: Option<Vec<Disk>>,
484    #[serde(skip_serializing_if = "Option::is_none")]
485    pub files: Option<Vec<File>>,
486    #[serde(skip_serializing_if = "Option::is_none")]
487    pub filesystems: Option<Vec<Filesystem>>,
488    #[serde(skip_serializing_if = "Option::is_none")]
489    pub links: Option<Vec<Link>>,
490    #[serde(skip_serializing_if = "Option::is_none")]
491    pub luks: Option<Vec<Luks>>,
492    #[serde(skip_serializing_if = "Option::is_none")]
493    pub raid: Option<Vec<Raid>>,
494}
495#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
496#[serde(rename = "dropin")]
497pub struct Dropin {
498    #[serde(default)]
499    pub contents: Option<String>,
500    pub name: String,
501}
502impl Dropin {
503    pub fn new(name: String) -> Self {
504        Self {
505            contents: None,
506            name,
507        }
508    }
509}
510#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
511#[serde(rename = "unit")]
512pub struct Unit {
513    #[serde(default)]
514    pub contents: Option<String>,
515    #[serde(skip_serializing_if = "Option::is_none")]
516    pub dropins: Option<Vec<Dropin>>,
517    #[serde(default)]
518    pub enabled: Option<bool>,
519    #[serde(default)]
520    pub mask: Option<bool>,
521    pub name: String,
522}
523impl Unit {
524    pub fn new(name: String) -> Self {
525        Self {
526            contents: None,
527            dropins: None,
528            enabled: None,
529            mask: None,
530            name,
531        }
532    }
533}
534#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
535#[serde(rename = "systemd")]
536pub struct Systemd {
537    #[serde(skip_serializing_if = "Option::is_none")]
538    pub units: Option<Vec<Unit>>,
539}
540#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
541#[serde(rename = "verification")]
542pub struct Verification {
543    #[serde(default)]
544    pub hash: Option<String>,
545}
546#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
547pub struct Config {
548    pub ignition: Ignition,
549    #[serde(skip_serializing_if = "Option::is_none")]
550    #[serde(rename = "kernelArguments")]
551    pub kernel_arguments: Option<KernelArguments>,
552    #[serde(skip_serializing_if = "Option::is_none")]
553    pub passwd: Option<Passwd>,
554    #[serde(skip_serializing_if = "Option::is_none")]
555    pub storage: Option<Storage>,
556    #[serde(skip_serializing_if = "Option::is_none")]
557    pub systemd: Option<Systemd>,
558}
559impl Config {
560    pub fn new(ignition: Ignition) -> Self {
561        Self {
562            ignition,
563            kernel_arguments: None,
564            passwd: None,
565            storage: None,
566            systemd: None,
567        }
568    }
569}