mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-04-30 20:54:26 +00:00
oci: fix two incompatible issues with OCI spec
The first incompatible issue is caused by a typo, "swapiness" should be "swappiness". The second incompatible issue is caused by a serde format. The struct LinuxBlockIODevice is introduced for convenience, but it also changes serialized data, so "#[serde(flatten)]" should be used for compatibility with OCI spec. Fixes: #1211 Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
This commit is contained in:
parent
406a91ffdd
commit
9321e1b21b
@ -302,6 +302,7 @@ pub struct LinuxBlockIODevice {
|
|||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
|
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
|
||||||
pub struct LinuxWeightDevice {
|
pub struct LinuxWeightDevice {
|
||||||
|
#[serde(flatten)]
|
||||||
pub blk: LinuxBlockIODevice,
|
pub blk: LinuxBlockIODevice,
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||||
pub weight: Option<u16>,
|
pub weight: Option<u16>,
|
||||||
@ -315,6 +316,7 @@ pub struct LinuxWeightDevice {
|
|||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
|
#[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq)]
|
||||||
pub struct LinuxThrottleDevice {
|
pub struct LinuxThrottleDevice {
|
||||||
|
#[serde(flatten)]
|
||||||
pub blk: LinuxBlockIODevice,
|
pub blk: LinuxBlockIODevice,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub rate: u64,
|
pub rate: u64,
|
||||||
@ -375,7 +377,7 @@ pub struct LinuxMemory {
|
|||||||
#[serde(default, skip_serializing_if = "Option::is_none", rename = "kernelTCP")]
|
#[serde(default, skip_serializing_if = "Option::is_none", rename = "kernelTCP")]
|
||||||
pub kernel_tcp: Option<i64>,
|
pub kernel_tcp: Option<i64>,
|
||||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||||
pub swapiness: Option<i64>,
|
pub swappiness: Option<i64>,
|
||||||
#[serde(
|
#[serde(
|
||||||
default,
|
default,
|
||||||
skip_serializing_if = "Option::is_none",
|
skip_serializing_if = "Option::is_none",
|
||||||
@ -833,7 +835,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_deserialize_sepc() {
|
fn test_deserialize_spec() {
|
||||||
let data = r#"{
|
let data = r#"{
|
||||||
"ociVersion": "1.0.1",
|
"ociVersion": "1.0.1",
|
||||||
"process": {
|
"process": {
|
||||||
@ -1118,36 +1120,28 @@ mod tests {
|
|||||||
"leafWeight": 10,
|
"leafWeight": 10,
|
||||||
"weightDevice": [
|
"weightDevice": [
|
||||||
{
|
{
|
||||||
"blk": {
|
"major": 8,
|
||||||
"major": 8,
|
"minor": 0,
|
||||||
"minor": 0
|
|
||||||
},
|
|
||||||
"weight": 500,
|
"weight": 500,
|
||||||
"leafWeight": 300
|
"leafWeight": 300
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"blk":{
|
"major": 8,
|
||||||
"major": 8,
|
"minor": 16,
|
||||||
"minor": 16
|
|
||||||
},
|
|
||||||
"weight": 500
|
"weight": 500
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"throttleReadBpsDevice": [
|
"throttleReadBpsDevice": [
|
||||||
{
|
{
|
||||||
"blk":{
|
"major": 8,
|
||||||
"major": 8,
|
"minor": 0,
|
||||||
"minor": 0
|
|
||||||
},
|
|
||||||
"rate": 600
|
"rate": 600
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"throttleWriteIOPSDevice": [
|
"throttleWriteIOPSDevice": [
|
||||||
{
|
{
|
||||||
"blk":{
|
"major": 8,
|
||||||
"major": 8,
|
"minor": 16,
|
||||||
"minor": 16
|
|
||||||
},
|
|
||||||
"rate": 300
|
"rate": 300
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -1436,8 +1430,7 @@ mod tests {
|
|||||||
swap: Some(536870912),
|
swap: Some(536870912),
|
||||||
kernel: Some(-1),
|
kernel: Some(-1),
|
||||||
kernel_tcp: Some(-1),
|
kernel_tcp: Some(-1),
|
||||||
// incompatible with oci
|
swappiness: Some(0),
|
||||||
swapiness: None,
|
|
||||||
disable_oom_killer: Some(false),
|
disable_oom_killer: Some(false),
|
||||||
}),
|
}),
|
||||||
cpu: Some(crate::LinuxCPU {
|
cpu: Some(crate::LinuxCPU {
|
||||||
@ -1590,25 +1583,6 @@ mod tests {
|
|||||||
vm: None,
|
vm: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
// warning : incompatible with oci : https://github.com/opencontainers/runtime-spec/blob/master/config.md
|
|
||||||
// 1. User use addtionalGids while oci use additionalGids
|
|
||||||
// 2. LinuxMemory use swapiness while oci use swappiness
|
|
||||||
// 3. LinuxWeightDevice with blk
|
|
||||||
// {
|
|
||||||
// "blk": {
|
|
||||||
// "major": 8,
|
|
||||||
// "minor": 0
|
|
||||||
// },
|
|
||||||
// "weight": 500,
|
|
||||||
// "leafWeight": 300
|
|
||||||
// }
|
|
||||||
// oci without blk
|
|
||||||
// {
|
|
||||||
// "major": 8,
|
|
||||||
// "minor": 0,
|
|
||||||
// "weight": 500,
|
|
||||||
// "leafWeight": 300
|
|
||||||
// }
|
|
||||||
let current: crate::Spec = serde_json::from_str(data).unwrap();
|
let current: crate::Spec = serde_json::from_str(data).unwrap();
|
||||||
assert_eq!(expected, current);
|
assert_eq!(expected, current);
|
||||||
}
|
}
|
||||||
|
@ -423,13 +423,13 @@ fn set_memory_resources(cg: &cgroups::Cgroup, memory: &LinuxMemory, update: bool
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(swapiness) = memory.swapiness {
|
if let Some(swappiness) = memory.swappiness {
|
||||||
if swapiness >= 0 && swapiness <= 100 {
|
if swappiness >= 0 && swappiness <= 100 {
|
||||||
mem_controller.set_swappiness(swapiness as u64)?;
|
mem_controller.set_swappiness(swappiness as u64)?;
|
||||||
} else {
|
} else {
|
||||||
return Err(anyhow!(
|
return Err(anyhow!(
|
||||||
"invalid value:{}. valid memory swappiness range is 0-100",
|
"invalid value:{}. valid memory swappiness range is 0-100",
|
||||||
swapiness
|
swappiness
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -310,7 +310,7 @@ pub fn resources_grpc_to_oci(res: &grpcLinuxResources) -> ociLinuxResources {
|
|||||||
swap: Some(mem.Swap),
|
swap: Some(mem.Swap),
|
||||||
kernel: Some(mem.Kernel),
|
kernel: Some(mem.Kernel),
|
||||||
kernel_tcp: Some(mem.KernelTCP),
|
kernel_tcp: Some(mem.KernelTCP),
|
||||||
swapiness: Some(mem.Swappiness as i64),
|
swappiness: Some(mem.Swappiness as i64),
|
||||||
disable_oom_killer: Some(mem.DisableOOMKiller),
|
disable_oom_killer: Some(mem.DisableOOMKiller),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user