diff --git a/src/agent/oci/src/lib.rs b/src/agent/oci/src/lib.rs index ea10f79ed..19870db51 100644 --- a/src/agent/oci/src/lib.rs +++ b/src/agent/oci/src/lib.rs @@ -27,7 +27,7 @@ where *d == T::default() } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct Spec { #[serde( default, @@ -69,7 +69,7 @@ impl Spec { pub type LinuxRlimit = POSIXRlimit; -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct Process { #[serde(default)] pub terminal: bool, @@ -112,7 +112,7 @@ pub struct Process { pub selinux_label: String, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxCapabilities { #[serde(default, skip_serializing_if = "Vec::is_empty")] pub bounding: Vec, @@ -126,7 +126,7 @@ pub struct LinuxCapabilities { pub ambient: Vec, } -#[derive(Default, Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct Box { #[serde(default)] pub height: u32, @@ -134,7 +134,7 @@ pub struct Box { pub width: u32, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct User { #[serde(default)] pub uid: u32, @@ -150,7 +150,7 @@ pub struct User { pub username: String, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct Root { #[serde(default, skip_serializing_if = "String::is_empty")] pub path: String, @@ -158,7 +158,7 @@ pub struct Root { pub readonly: bool, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct Mount { #[serde(default)] pub destination: String, @@ -170,7 +170,7 @@ pub struct Mount { pub options: Vec, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct Hook { #[serde(default, skip_serializing_if = "String::is_empty")] pub path: String, @@ -182,7 +182,7 @@ pub struct Hook { pub timeout: Option, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct Hooks { #[serde(default, skip_serializing_if = "Vec::is_empty")] pub prestart: Vec, @@ -192,7 +192,7 @@ pub struct Hooks { pub poststop: Vec, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct Linux { #[serde(default, rename = "uidMappings", skip_serializing_if = "Vec::is_empty")] pub uid_mappings: Vec, @@ -238,7 +238,7 @@ pub struct Linux { pub intel_rdt: Option, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxNamespace { #[serde(default, skip_serializing_if = "String::is_empty")] pub r#type: LinuxNamespaceType, @@ -256,7 +256,7 @@ pub const USERNAMESPACE: &str = "user"; pub const UTSNAMESPACE: &str = "uts"; pub const CGROUPNAMESPACE: &str = "cgroup"; -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxIDMapping { #[serde(default, rename = "containerID")] pub container_id: u32, @@ -266,7 +266,7 @@ pub struct LinuxIDMapping { pub size: u32, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct POSIXRlimit { #[serde(default)] pub r#type: String, @@ -276,7 +276,7 @@ pub struct POSIXRlimit { pub soft: u64, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxHugepageLimit { #[serde(default, rename = "pageSize", skip_serializing_if = "String::is_empty")] pub page_size: String, @@ -284,7 +284,7 @@ pub struct LinuxHugepageLimit { pub limit: u64, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxInterfacePriority { #[serde(default, skip_serializing_if = "String::is_empty")] pub name: String, @@ -292,7 +292,7 @@ pub struct LinuxInterfacePriority { pub priority: u32, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxBlockIODevice { #[serde(default)] pub major: i64, @@ -300,7 +300,7 @@ pub struct LinuxBlockIODevice { pub minor: i64, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxWeightDevice { pub blk: LinuxBlockIODevice, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -313,14 +313,14 @@ pub struct LinuxWeightDevice { pub leaf_weight: Option, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxThrottleDevice { pub blk: LinuxBlockIODevice, #[serde(default)] pub rate: u64, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxBlockIO { #[serde(default, skip_serializing_if = "Option::is_none")] pub weight: Option, @@ -362,7 +362,7 @@ pub struct LinuxBlockIO { pub throttle_write_iops_device: Vec, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxMemory { #[serde(default, skip_serializing_if = "Option::is_none")] pub limit: Option, @@ -384,7 +384,7 @@ pub struct LinuxMemory { pub disable_oom_killer: Option, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxCPU { #[serde(default, skip_serializing_if = "Option::is_none")] pub shares: Option, @@ -410,13 +410,13 @@ pub struct LinuxCPU { pub mems: String, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxPids { #[serde(default)] pub limit: i64, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxNetwork { #[serde(default, skip_serializing_if = "Option::is_none", rename = "classID")] pub class_id: Option, @@ -424,7 +424,7 @@ pub struct LinuxNetwork { pub priorities: Vec, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxRdma { #[serde( default, @@ -440,7 +440,7 @@ pub struct LinuxRdma { pub hca_objects: Option, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxResources { #[serde(default, skip_serializing_if = "Vec::is_empty")] pub devices: Vec, @@ -464,7 +464,7 @@ pub struct LinuxResources { pub rdma: HashMap, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxDevice { #[serde(default, skip_serializing_if = "String::is_empty")] pub path: String, @@ -482,7 +482,7 @@ pub struct LinuxDevice { pub gid: Option, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxDeviceCgroup { #[serde(default)] pub allow: bool, @@ -496,7 +496,7 @@ pub struct LinuxDeviceCgroup { pub access: String, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct Solaris { #[serde(default, skip_serializing_if = "String::is_empty")] pub milestone: String, @@ -520,13 +520,13 @@ pub struct Solaris { pub capped_memory: Option, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct SolarisCappedCPU { #[serde(default, skip_serializing_if = "String::is_empty")] pub ncpus: String, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct SolarisCappedMemory { #[serde(default, skip_serializing_if = "String::is_empty")] pub physical: String, @@ -534,7 +534,7 @@ pub struct SolarisCappedMemory { pub swap: String, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct SolarisAnet { #[serde(default, skip_serializing_if = "String::is_empty", rename = "linkname")] pub link_name: String, @@ -572,7 +572,7 @@ pub struct SolarisAnet { pub mac_address: String, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct Windows { #[serde( default, @@ -594,7 +594,7 @@ pub struct Windows { pub network: Option, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct WindowsResources { #[serde(default, skip_serializing_if = "Option::is_none")] pub memory: Option, @@ -604,13 +604,13 @@ pub struct WindowsResources { pub storage: Option, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct WindowsMemoryResources { #[serde(default, skip_serializing_if = "Option::is_none")] pub limit: Option, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct WindowsCPUResources { #[serde(default, skip_serializing_if = "Option::is_none")] pub count: Option, @@ -620,7 +620,7 @@ pub struct WindowsCPUResources { pub maximum: Option, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct WindowsStorageResources { #[serde(default, skip_serializing_if = "Option::is_none")] pub iops: Option, @@ -634,7 +634,7 @@ pub struct WindowsStorageResources { pub sandbox_size: Option, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct WindowsNetwork { #[serde( default, @@ -658,7 +658,7 @@ pub struct WindowsNetwork { pub network_shared_container_name: String, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct WindowsHyperV { #[serde( default, @@ -668,14 +668,14 @@ pub struct WindowsHyperV { pub utility_vm_path: String, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct VM { pub hypervisor: VMHypervisor, pub kernel: VMKernel, pub image: VMImage, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct VMHypervisor { #[serde(default)] pub path: String, @@ -683,7 +683,7 @@ pub struct VMHypervisor { pub parameters: String, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct VMKernel { #[serde(default)] pub path: String, @@ -693,7 +693,7 @@ pub struct VMKernel { pub initrd: String, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct VMImage { #[serde(default)] pub path: String, @@ -701,7 +701,7 @@ pub struct VMImage { pub format: String, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxSeccomp { #[serde(default, rename = "defaultAction")] pub default_action: LinuxSeccompAction, @@ -750,7 +750,7 @@ pub const OPGREATEREQUAL: &str = "SCMP_CMP_GE"; pub const OPGREATERTHAN: &str = "SCMP_CMP_GT"; pub const OPMASKEDEQUAL: &str = "SCMP_CMP_MASKED_EQ"; -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxSeccompArg { #[serde(default)] pub index: u32, @@ -762,7 +762,7 @@ pub struct LinuxSeccompArg { pub op: LinuxSeccompOperator, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxSyscall { #[serde(default, skip_serializing_if = "Vec::is_empty")] pub names: Vec, @@ -772,7 +772,7 @@ pub struct LinuxSyscall { pub args: Vec, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct LinuxIntelRdt { #[serde( default, @@ -782,7 +782,7 @@ pub struct LinuxIntelRdt { pub l3_cache_schema: String, } -#[derive(Serialize, Deserialize, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)] pub struct State { #[serde( default, diff --git a/src/agent/src/sandbox.rs b/src/agent/src/sandbox.rs index b7e85b29e..414c2a745 100644 --- a/src/agent/src/sandbox.rs +++ b/src/agent/src/sandbox.rs @@ -282,7 +282,7 @@ mod tests { use super::Sandbox; use crate::{mount::BareMount, skip_if_not_root}; use nix::mount::MsFlags; - use protocols::oci::{Linux, Root, Spec}; + use oci::{Linux, Root, Spec}; use rustjail::container::LinuxContainer; use rustjail::specconv::CreateOpts; use slog::Logger; @@ -489,13 +489,13 @@ mod tests { } fn create_dummy_opts() -> CreateOpts { - let mut root = Root::new(); - root.Path = String::from("/"); + let mut root = Root::default(); + root.path = String::from("/"); - let linux = Linux::new(); - let mut spec = Spec::new(); - spec.Root = Some(root).into(); - spec.Linux = Some(linux).into(); + let linux = Linux::default(); + let mut spec = Spec::default(); + spec.root = Some(root).into(); + spec.linux = Some(linux).into(); CreateOpts { cgroup_name: "".to_string(),