oci_runtime_spec/
spec.rs

1// Example code that deserializes and serializes the model.
2// extern crate serde;
3// #[macro_use]
4// extern crate serde_derive;
5// extern crate serde_json;
6//
7// use generated_module::[object Object];
8//
9// fn main() {
10//     let json = r#"{"answer": 42}"#;
11//     let model: [object Object] = serde_json::from_str(&json).unwrap();
12// }
13
14extern crate serde_json;
15use std::collections::HashMap;
16
17pub type ConfigLinux = Option<serde_json::Value>;
18pub type ConfigSolaris = Option<serde_json::Value>;
19pub type ConfigVm = Option<serde_json::Value>;
20pub type ConfigWindows = Option<serde_json::Value>;
21pub type DefsLinux = Option<serde_json::Value>;
22pub type DefsVm = Option<serde_json::Value>;
23pub type DefsWindows = Option<serde_json::Value>;
24pub type Defs = Option<serde_json::Value>;
25
26/// Open Container Initiative Runtime Specification Container Configuration Schema
27#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
28#[builder(setter(into))]
29pub struct ConfigSchema {
30    #[builder(default)]
31    pub annotations: Option<HashMap<String, Option<serde_json::Value>>>,
32    #[builder(default)]
33    pub hooks: Option<Hooks>,
34    #[builder(default)]
35    pub hostname: Option<String>,
36    #[builder(default)]
37    pub linux: Option<Linux>,
38    #[builder(default)]
39    pub mounts: Option<Vec<Mount>>,
40    #[serde(rename = "ociVersion")]
41    pub oci_version: String,
42    #[builder(default)]
43    pub process: Option<Process>,
44    /// Configures the container's root filesystem.
45    #[builder(default)]
46    pub root: Option<Root>,
47    #[builder(default)]
48    pub solaris: Option<Solaris>,
49    #[builder(default)]
50    pub vm: Option<Vm>,
51    #[builder(default)]
52    pub windows: Option<Windows>,
53}
54
55#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
56#[builder(setter(into))]
57pub struct Hooks {
58    #[builder(default)]
59    pub poststart: Option<Vec<Hook>>,
60    #[builder(default)]
61    pub poststop: Option<Vec<Hook>>,
62    #[builder(default)]
63    pub prestart: Option<Vec<Hook>>,
64}
65
66#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
67#[builder(setter(into))]
68pub struct Hook {
69    #[builder(default)]
70    pub args: Option<Vec<String>>,
71    #[builder(default)]
72    pub env: Option<Vec<String>>,
73    pub path: String,
74    #[builder(default)]
75    pub timeout: Option<i64>,
76}
77
78/// Linux platform-specific configurations
79#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
80#[builder(setter(into))]
81pub struct Linux {
82    #[serde(rename = "cgroupsPath")]
83    #[builder(default)]
84    pub cgroups_path: Option<String>,
85    #[builder(default)]
86    pub devices: Option<Vec<LinuxDevice>>,
87    #[serde(rename = "gidMappings")]
88    #[builder(default)]
89    pub gid_mappings: Option<Vec<IdMapping>>,
90    #[serde(rename = "intelRdt")]
91    #[builder(default)]
92    pub intel_rdt: Option<IntelRdt>,
93    #[serde(rename = "maskedPaths")]
94    #[builder(default)]
95    pub masked_paths: Option<Vec<String>>,
96    #[serde(rename = "mountLabel")]
97    #[builder(default)]
98    pub mount_label: Option<String>,
99    #[builder(default)]
100    pub namespaces: Option<Vec<NamespaceReference>>,
101    #[serde(rename = "readonlyPaths")]
102    #[builder(default)]
103    pub readonly_paths: Option<Vec<String>>,
104    #[builder(default)]
105    pub resources: Option<LinuxResources>,
106    #[serde(rename = "rootfsPropagation")]
107    #[builder(default)]
108    pub rootfs_propagation: Option<RootfsPropagation>,
109    #[builder(default)]
110    pub seccomp: Option<Seccomp>,
111    #[builder(default)]
112    pub sysctl: Option<HashMap<String, Option<serde_json::Value>>>,
113    #[serde(rename = "uidMappings")]
114    #[builder(default)]
115    pub uid_mappings: Option<Vec<IdMapping>>,
116}
117
118#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
119#[builder(setter(into))]
120pub struct LinuxDevice {
121    #[serde(rename = "fileMode")]
122    #[builder(default)]
123    pub file_mode: Option<i64>,
124    #[builder(default)]
125    pub gid: Option<i64>,
126    #[builder(default)]
127    pub major: Option<i64>,
128    #[builder(default)]
129    pub minor: Option<i64>,
130    pub path: String,
131    #[serde(rename = "type")]
132    pub device_type: String,
133    #[builder(default)]
134    pub uid: Option<i64>,
135}
136
137#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
138#[builder(setter(into))]
139pub struct IdMapping {
140    #[serde(rename = "containerID")]
141    pub container_id: i64,
142    #[serde(rename = "hostID")]
143    pub host_id: i64,
144    pub size: i64,
145}
146
147#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
148#[builder(setter(into))]
149pub struct IntelRdt {
150    #[serde(rename = "closID")]
151    #[builder(default)]
152    pub clos_id: Option<String>,
153    #[serde(rename = "l3CacheSchema")]
154    #[builder(default)]
155    pub l3_cache_schema: Option<String>,
156    #[serde(rename = "memBwSchema")]
157    #[builder(default)]
158    pub mem_bw_schema: Option<String>,
159}
160
161#[derive(Debug, Serialize, Deserialize, Clone, Builder, PartialEq)]
162#[builder(setter(into))]
163pub struct NamespaceReference {
164    #[builder(default)]
165    pub path: Option<String>,
166    #[serde(rename = "type")]
167    pub namespace_reference_type: NamespaceType,
168}
169
170#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
171#[builder(setter(into))]
172pub struct LinuxResources {
173    #[serde(rename = "blockIO")]
174    #[builder(default)]
175    pub block_io: Option<BlockIo>,
176    #[builder(default)]
177    pub cpu: Option<PurpleCpu>,
178    #[builder(default)]
179    pub devices: Option<Vec<DeviceCgroup>>,
180    #[serde(rename = "hugepageLimits")]
181    #[builder(default)]
182    pub hugepage_limits: Option<Vec<HugepageLimit>>,
183    #[builder(default)]
184    pub memory: Option<PurpleMemory>,
185    #[builder(default)]
186    pub network: Option<ResourcesNetwork>,
187    #[builder(default)]
188    pub pids: Option<Pids>,
189    #[builder(default)]
190    pub rdma: Option<HashMap<String, Rdma>>,
191}
192
193#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
194#[builder(setter(into))]
195pub struct BlockIo {
196    #[serde(rename = "leafWeight")]
197    #[builder(default)]
198    pub leaf_weight: Option<i64>,
199    #[serde(rename = "throttleReadBpsDevice")]
200    #[builder(default)]
201    pub throttle_read_bps_device: Option<Vec<BlockIoDeviceThrottle>>,
202    #[serde(rename = "throttleReadIOPSDevice")]
203    #[builder(default)]
204    pub throttle_read_iops_device: Option<Vec<BlockIoDeviceThrottle>>,
205    #[serde(rename = "throttleWriteBpsDevice")]
206    #[builder(default)]
207    pub throttle_write_bps_device: Option<Vec<BlockIoDeviceThrottle>>,
208    #[serde(rename = "throttleWriteIOPSDevice")]
209    #[builder(default)]
210    pub throttle_write_iops_device: Option<Vec<BlockIoDeviceThrottle>>,
211    #[builder(default)]
212    pub weight: Option<i64>,
213    #[serde(rename = "weightDevice")]
214    #[builder(default)]
215    pub weight_device: Option<Vec<BlockIoDeviceWeight>>,
216}
217
218#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
219#[builder(setter(into))]
220pub struct BlockIoDeviceThrottle {
221    pub major: i64,
222    pub minor: i64,
223    #[builder(default)]
224    pub rate: Option<i64>,
225}
226
227#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
228#[builder(setter(into))]
229pub struct BlockIoDeviceWeight {
230    pub major: i64,
231    pub minor: i64,
232    #[serde(rename = "leafWeight")]
233    #[builder(default)]
234    pub leaf_weight: Option<i64>,
235    #[builder(default)]
236    pub weight: Option<i64>,
237}
238
239#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
240#[builder(setter(into))]
241pub struct PurpleCpu {
242    #[builder(default)]
243    pub cpus: Option<String>,
244    #[builder(default)]
245    pub mems: Option<String>,
246    #[builder(default)]
247    pub period: Option<i64>,
248    #[builder(default)]
249    pub quota: Option<i64>,
250    #[serde(rename = "realtimePeriod")]
251    #[builder(default)]
252    pub realtime_period: Option<i64>,
253    #[serde(rename = "realtimeRuntime")]
254    #[builder(default)]
255    pub realtime_runtime: Option<i64>,
256    #[builder(default)]
257    pub shares: Option<i64>,
258}
259
260#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
261#[builder(setter(into))]
262pub struct DeviceCgroup {
263    #[builder(default)]
264    pub access: Option<String>,
265    pub allow: bool,
266    #[builder(default)]
267    pub major: Option<i64>,
268    #[builder(default)]
269    pub minor: Option<i64>,
270    #[serde(rename = "type")]
271    #[builder(default)]
272    pub device_cgroup_type: Option<String>,
273}
274
275#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
276#[builder(setter(into))]
277pub struct HugepageLimit {
278    pub limit: i64,
279    #[serde(rename = "pageSize")]
280    pub page_size: String,
281}
282
283#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
284#[builder(setter(into))]
285pub struct PurpleMemory {
286    #[serde(rename = "disableOOMKiller")]
287    #[builder(default)]
288    pub disable_oom_killer: Option<bool>,
289    #[builder(default)]
290    pub kernel: Option<i64>,
291    #[serde(rename = "kernelTCP")]
292    #[builder(default)]
293    pub kernel_tcp: Option<i64>,
294    #[builder(default)]
295    pub limit: Option<i64>,
296    #[builder(default)]
297    pub reservation: Option<i64>,
298    #[builder(default)]
299    pub swap: Option<i64>,
300    #[builder(default)]
301    pub swappiness: Option<i64>,
302}
303
304#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
305#[builder(setter(into))]
306pub struct ResourcesNetwork {
307    #[serde(rename = "classID")]
308    #[builder(default)]
309    pub class_id: Option<i64>,
310    #[builder(default)]
311    pub priorities: Option<Vec<NetworkInterfacePriority>>,
312}
313
314#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
315#[builder(setter(into))]
316pub struct NetworkInterfacePriority {
317    pub name: String,
318    pub priority: i64,
319}
320
321#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
322#[builder(setter(into))]
323pub struct Pids {
324    pub limit: i64,
325}
326
327#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
328#[builder(setter(into))]
329pub struct Rdma {
330    #[serde(rename = "hcaHandles")]
331    #[builder(default)]
332    pub hca_handles: Option<i64>,
333    #[serde(rename = "hcaObjects")]
334    #[builder(default)]
335    pub hca_objects: Option<i64>,
336}
337
338#[derive(Debug, Serialize, Deserialize, Clone, Builder, PartialEq)]
339#[builder(setter(into))]
340pub struct Seccomp {
341    #[builder(default)]
342    pub architectures: Option<Vec<SeccompArch>>,
343    #[serde(rename = "defaultAction")]
344    pub default_action: SeccompAction,
345    #[builder(default)]
346    pub syscalls: Option<Vec<Syscall>>,
347}
348
349#[derive(Debug, Serialize, Deserialize, Clone, Builder, PartialEq)]
350#[builder(setter(into))]
351pub struct Syscall {
352    pub action: SeccompAction,
353    #[builder(default)]
354    pub args: Option<Vec<SyscallArg>>,
355    pub names: Vec<String>,
356}
357
358#[derive(Debug, Serialize, Deserialize, Clone, Builder, PartialEq)]
359#[builder(setter(into))]
360pub struct SyscallArg {
361    pub index: i64,
362    pub op: SeccompOperators,
363    pub value: i64,
364    #[serde(rename = "valueTwo")]
365    #[builder(default)]
366    pub value_two: Option<i64>,
367}
368
369#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
370#[builder(setter(into))]
371pub struct Mount {
372    pub destination: String,
373    #[builder(default)]
374    pub options: Option<Vec<String>>,
375    #[builder(default)]
376    pub source: Option<String>,
377    #[serde(rename = "type")]
378    #[builder(default)]
379    pub mount_type: Option<String>,
380}
381
382#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
383#[builder(setter(into))]
384pub struct Process {
385    #[serde(rename = "apparmorProfile")]
386    #[builder(default)]
387    pub apparmor_profile: Option<String>,
388    pub args: Vec<String>,
389    #[builder(default)]
390    pub capabilities: Option<Capabilities>,
391    #[serde(rename = "consoleSize")]
392    #[builder(default)]
393    pub console_size: Option<ConsoleSize>,
394    pub cwd: String,
395    #[builder(default)]
396    pub env: Option<Vec<String>>,
397    #[serde(rename = "noNewPrivileges")]
398    #[builder(default)]
399    pub no_new_privileges: Option<bool>,
400    #[serde(rename = "oomScoreAdj")]
401    #[builder(default)]
402    pub oom_score_adj: Option<i64>,
403    #[builder(default)]
404    pub rlimits: Option<Vec<Rlimit>>,
405    #[serde(rename = "selinuxLabel")]
406    #[builder(default)]
407    pub selinux_label: Option<String>,
408    #[builder(default)]
409    pub terminal: Option<bool>,
410    #[builder(default)]
411    pub user: Option<User>,
412}
413
414#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
415#[builder(setter(into))]
416pub struct Capabilities {
417    #[builder(default)]
418    pub ambient: Option<Vec<String>>,
419    #[builder(default)]
420    pub bounding: Option<Vec<String>>,
421    #[builder(default)]
422    pub effective: Option<Vec<String>>,
423    #[builder(default)]
424    pub inheritable: Option<Vec<String>>,
425    #[builder(default)]
426    pub permitted: Option<Vec<String>>,
427}
428
429#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
430#[builder(setter(into))]
431pub struct ConsoleSize {
432    pub height: i64,
433    pub width: i64,
434}
435
436#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
437#[builder(setter(into))]
438pub struct Rlimit {
439    pub hard: i64,
440    pub soft: i64,
441    #[serde(rename = "type")]
442    pub rlimit_type: String,
443}
444
445#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
446#[builder(setter(into))]
447pub struct User {
448    #[serde(rename = "additionalGids")]
449    #[builder(default)]
450    pub additional_gids: Option<Vec<i64>>,
451    #[builder(default)]
452    pub gid: Option<i64>,
453    #[builder(default)]
454    pub uid: Option<i64>,
455    #[builder(default)]
456    pub username: Option<String>,
457}
458
459/// Configures the container's root filesystem.
460#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
461#[builder(setter(into))]
462pub struct Root {
463    pub path: String,
464    #[builder(default)]
465    pub readonly: Option<bool>,
466}
467
468/// Solaris platform-specific configurations
469#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
470#[builder(setter(into))]
471pub struct Solaris {
472    #[builder(default)]
473    pub anet: Option<Vec<Anet>>,
474    #[serde(rename = "cappedCPU")]
475    #[builder(default)]
476    pub capped_cpu: Option<CappedCpu>,
477    #[serde(rename = "cappedMemory")]
478    #[builder(default)]
479    pub capped_memory: Option<CappedMemory>,
480    #[builder(default)]
481    pub limitpriv: Option<String>,
482    #[serde(rename = "maxShmMemory")]
483    #[builder(default)]
484    pub max_shm_memory: Option<String>,
485    #[builder(default)]
486    pub milestone: Option<String>,
487}
488
489#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
490#[builder(setter(into))]
491pub struct Anet {
492    #[serde(rename = "allowedAddress")]
493    #[builder(default)]
494    pub allowed_address: Option<String>,
495    #[serde(rename = "configureAllowedAddress")]
496    #[builder(default)]
497    pub configure_allowed_address: Option<String>,
498    #[builder(default)]
499    pub defrouter: Option<String>,
500    #[builder(default)]
501    pub linkname: Option<String>,
502    #[serde(rename = "linkProtection")]
503    #[builder(default)]
504    pub link_protection: Option<String>,
505    #[serde(rename = "lowerLink")]
506    #[builder(default)]
507    pub lower_link: Option<String>,
508    #[serde(rename = "macAddress")]
509    #[builder(default)]
510    pub mac_address: Option<String>,
511}
512
513#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
514#[builder(setter(into))]
515pub struct CappedCpu {
516    #[builder(default)]
517    pub ncpus: Option<String>,
518}
519
520#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
521#[builder(setter(into))]
522pub struct CappedMemory {
523    #[builder(default)]
524    pub physical: Option<String>,
525    #[builder(default)]
526    pub swap: Option<String>,
527}
528
529/// configuration for virtual-machine-based containers
530#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
531#[builder(setter(into))]
532pub struct Vm {
533    /// hypervisor config used by VM-based containers
534    #[builder(default)]
535    pub hypervisor: Option<Hypervisor>,
536    /// root image config used by VM-based containers
537    #[builder(default)]
538    pub image: Option<Image>,
539    /// kernel config used by VM-based containers
540    pub kernel: Kernel,
541}
542
543/// hypervisor config used by VM-based containers
544#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
545#[builder(setter(into))]
546pub struct Hypervisor {
547    #[builder(default)]
548    pub parameters: Option<Vec<String>>,
549    pub path: String,
550}
551
552/// root image config used by VM-based containers
553#[derive(Debug, Serialize, Deserialize, Clone, Builder, PartialEq)]
554#[builder(setter(into))]
555pub struct Image {
556    pub format: RootImageFormat,
557    pub path: String,
558}
559
560/// kernel config used by VM-based containers
561#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
562#[builder(setter(into))]
563pub struct Kernel {
564    #[builder(default)]
565    pub initrd: Option<String>,
566    #[builder(default)]
567    pub parameters: Option<Vec<String>>,
568    pub path: String,
569}
570
571/// Windows platform-specific configurations
572#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
573#[builder(setter(into))]
574pub struct Windows {
575    #[serde(rename = "credentialSpec")]
576    #[builder(default)]
577    pub credential_spec: Option<HashMap<String, Option<serde_json::Value>>>,
578    #[builder(default)]
579    pub devices: Option<Vec<WindowsDevice>>,
580    #[builder(default)]
581    pub hyperv: Option<Hyperv>,
582    #[serde(rename = "ignoreFlushesDuringBoot")]
583    #[builder(default)]
584    pub ignore_flushes_during_boot: Option<bool>,
585    #[serde(rename = "layerFolders")]
586    pub layer_folders: Vec<String>,
587    #[builder(default)]
588    pub network: Option<WindowsNetwork>,
589    #[builder(default)]
590    pub resources: Option<WindowsResources>,
591    #[builder(default)]
592    pub servicing: Option<bool>,
593}
594
595#[derive(Debug, Serialize, Deserialize, Clone, Builder, PartialEq)]
596#[builder(setter(into))]
597pub struct WindowsDevice {
598    pub id: String,
599    #[serde(rename = "idType")]
600    pub id_type: IdType,
601}
602
603#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
604#[builder(setter(into))]
605pub struct Hyperv {
606    #[serde(rename = "utilityVMPath")]
607    #[builder(default)]
608    pub utility_vm_path: Option<String>,
609}
610
611#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
612#[builder(setter(into))]
613pub struct WindowsNetwork {
614    #[serde(rename = "allowUnqualifiedDNSQuery")]
615    #[builder(default)]
616    pub allow_unqualified_dns_query: Option<bool>,
617    #[serde(rename = "DNSSearchList")]
618    #[builder(default)]
619    pub dns_search_list: Option<Vec<String>>,
620    #[serde(rename = "endpointList")]
621    #[builder(default)]
622    pub endpoint_list: Option<Vec<String>>,
623    #[serde(rename = "networkNamespace")]
624    #[builder(default)]
625    pub network_namespace: Option<String>,
626    #[serde(rename = "networkSharedContainerName")]
627    #[builder(default)]
628    pub network_shared_container_name: Option<String>,
629}
630
631#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
632#[builder(setter(into))]
633pub struct WindowsResources {
634    #[builder(default)]
635    pub cpu: Option<FluffyCpu>,
636    #[builder(default)]
637    pub memory: Option<FluffyMemory>,
638    #[builder(default)]
639    pub storage: Option<Storage>,
640}
641
642#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
643#[builder(setter(into))]
644pub struct FluffyCpu {
645    #[builder(default)]
646    pub count: Option<i64>,
647    #[builder(default)]
648    pub maximum: Option<i64>,
649    #[builder(default)]
650    pub shares: Option<i64>,
651}
652
653#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
654#[builder(setter(into))]
655pub struct FluffyMemory {
656    #[builder(default)]
657    pub limit: Option<i64>,
658}
659
660#[derive(Debug, Serialize, Deserialize, Clone, Default, Builder, PartialEq)]
661#[builder(setter(into))]
662pub struct Storage {
663    #[builder(default)]
664    pub bps: Option<i64>,
665    #[builder(default)]
666    pub iops: Option<i64>,
667    #[serde(rename = "sandboxSize")]
668    #[builder(default)]
669    pub sandbox_size: Option<i64>,
670}
671
672/// Open Container Runtime State Schema
673#[derive(Debug, Serialize, Deserialize, Clone, Builder, PartialEq)]
674#[builder(setter(into))]
675pub struct StateSchema {
676    #[builder(default)]
677    pub annotations: Option<HashMap<String, Option<serde_json::Value>>>,
678    pub bundle: String,
679    /// the container's ID
680    pub id: String,
681    #[serde(rename = "ociVersion")]
682    pub oci_version: String,
683    #[builder(default)]
684    pub pid: Option<i64>,
685    pub status: Status,
686}
687
688#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
689pub enum NamespaceType {
690    #[serde(rename = "cgroup")]
691    Cgroup,
692    #[serde(rename = "ipc")]
693    Ipc,
694    #[serde(rename = "mount")]
695    Mount,
696    #[serde(rename = "network")]
697    Network,
698    #[serde(rename = "pid")]
699    Pid,
700    #[serde(rename = "user")]
701    User,
702    #[serde(rename = "uts")]
703    Uts,
704}
705
706#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
707pub enum RootfsPropagation {
708    #[serde(rename = "private")]
709    Private,
710    #[serde(rename = "shared")]
711    Shared,
712    #[serde(rename = "slave")]
713    Slave,
714    #[serde(rename = "unbindable")]
715    Unbindable,
716}
717
718#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
719pub enum SeccompArch {
720    #[serde(rename = "SCMP_ARCH_AARCH64")]
721    ScmpArchAarch64,
722    #[serde(rename = "SCMP_ARCH_ARM")]
723    ScmpArchArm,
724    #[serde(rename = "SCMP_ARCH_MIPS")]
725    ScmpArchMips,
726    #[serde(rename = "SCMP_ARCH_MIPS64")]
727    ScmpArchMips64,
728    #[serde(rename = "SCMP_ARCH_MIPS64N32")]
729    ScmpArchMips64N32,
730    #[serde(rename = "SCMP_ARCH_MIPSEL")]
731    ScmpArchMipsel,
732    #[serde(rename = "SCMP_ARCH_MIPSEL64")]
733    ScmpArchMipsel64,
734    #[serde(rename = "SCMP_ARCH_MIPSEL64N32")]
735    ScmpArchMipsel64N32,
736    #[serde(rename = "SCMP_ARCH_PARISC")]
737    ScmpArchParisc,
738    #[serde(rename = "SCMP_ARCH_PARISC64")]
739    ScmpArchParisc64,
740    #[serde(rename = "SCMP_ARCH_PPC")]
741    ScmpArchPpc,
742    #[serde(rename = "SCMP_ARCH_PPC64")]
743    ScmpArchPpc64,
744    #[serde(rename = "SCMP_ARCH_PPC64LE")]
745    ScmpArchPpc64Le,
746    #[serde(rename = "SCMP_ARCH_S390")]
747    ScmpArchS390,
748    #[serde(rename = "SCMP_ARCH_S390X")]
749    ScmpArchS390X,
750    #[serde(rename = "SCMP_ARCH_X32")]
751    ScmpArchX32,
752    #[serde(rename = "SCMP_ARCH_X86")]
753    ScmpArchX86,
754    #[serde(rename = "SCMP_ARCH_X86_64")]
755    ScmpArchX8664,
756}
757
758#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
759pub enum SeccompAction {
760    #[serde(rename = "SCMP_ACT_ALLOW")]
761    ScmpActAllow,
762    #[serde(rename = "SCMP_ACT_ERRNO")]
763    ScmpActErrno,
764    #[serde(rename = "SCMP_ACT_KILL")]
765    ScmpActKill,
766    #[serde(rename = "SCMP_ACT_TRACE")]
767    ScmpActTrace,
768    #[serde(rename = "SCMP_ACT_TRAP")]
769    ScmpActTrap,
770}
771
772#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
773pub enum SeccompOperators {
774    #[serde(rename = "SCMP_CMP_EQ")]
775    ScmpCmpEq,
776    #[serde(rename = "SCMP_CMP_GE")]
777    ScmpCmpGe,
778    #[serde(rename = "SCMP_CMP_GT")]
779    ScmpCmpGt,
780    #[serde(rename = "SCMP_CMP_LE")]
781    ScmpCmpLe,
782    #[serde(rename = "SCMP_CMP_LT")]
783    ScmpCmpLt,
784    #[serde(rename = "SCMP_CMP_MASKED_EQ")]
785    ScmpCmpMaskedEq,
786    #[serde(rename = "SCMP_CMP_NE")]
787    ScmpCmpNe,
788}
789
790#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
791pub enum RootImageFormat {
792    #[serde(rename = "qcow2")]
793    Qcow2,
794    #[serde(rename = "raw")]
795    Raw,
796    #[serde(rename = "vdi")]
797    Vdi,
798    #[serde(rename = "vhd")]
799    Vhd,
800    #[serde(rename = "vmdk")]
801    Vmdk,
802}
803
804#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
805pub enum IdType {
806    #[serde(rename = "class")]
807    Class,
808}
809
810#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
811pub enum Status {
812    #[serde(rename = "created")]
813    Created,
814    #[serde(rename = "creating")]
815    Creating,
816    #[serde(rename = "running")]
817    Running,
818    #[serde(rename = "stopped")]
819    Stopped,
820}