From 5f9c892e48f4e0cc3fe2ff332046b583741c298c Mon Sep 17 00:00:00 2001 From: Jianyong Wu Date: Thu, 5 Jan 2023 14:15:52 +0800 Subject: [PATCH] kata-types: add single_container support For now, only pod_sandbox and pod_container are supported. It doesn't cover the case that container started by ctr which is a single_container defined in kata 2.0. port the single_container kata type from kata 2.0 to kata 3.0. Fixes: #6006 Signed-off-by: Jianyong Wu --- src/libs/kata-sys-util/src/spec.rs | 2 +- src/libs/kata-types/src/container.rs | 5 +++++ src/libs/kata-types/src/k8s.rs | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/libs/kata-sys-util/src/spec.rs b/src/libs/kata-sys-util/src/spec.rs index b606d1194d..24bcf16e91 100644 --- a/src/libs/kata-sys-util/src/spec.rs +++ b/src/libs/kata-sys-util/src/spec.rs @@ -68,7 +68,7 @@ pub fn get_container_type(spec: &oci::Spec) -> Result { pub fn get_shim_id_info() -> Result { let spec = load_oci_spec()?; match get_container_type(&spec)? { - ContainerType::PodSandbox => Ok(ShimIdInfo::Sandbox), + ContainerType::PodSandbox | ContainerType::SingleContainer => Ok(ShimIdInfo::Sandbox), ContainerType::PodContainer => { for k in CRI_SANDBOX_ID_KEY_LIST { if let Some(sandbox_id) = spec.annotations.get(*k) { diff --git a/src/libs/kata-types/src/container.rs b/src/libs/kata-types/src/container.rs index 3a64a4dd7f..31e729ab85 100644 --- a/src/libs/kata-types/src/container.rs +++ b/src/libs/kata-types/src/container.rs @@ -19,6 +19,8 @@ pub(crate) const SANDBOX: &str = "sandbox"; // docker: a sandbox sandbox container pub(crate) const PODSANDBOX: &str = "podsandbox"; +pub(crate) const SINGLE_CONTAINER: &str = "single_container"; + const STATE_READY: &str = "ready"; const STATE_RUNNING: &str = "running"; const STATE_STOPPED: &str = "stopped"; @@ -45,6 +47,8 @@ pub enum ContainerType { PodContainer, /// A pod sandbox. PodSandbox, + /// A single container. + SingleContainer, } impl ContainerType { @@ -64,6 +68,7 @@ impl Display for ContainerType { match self { ContainerType::PodContainer => write!(f, "{}", POD_CONTAINER), ContainerType::PodSandbox => write!(f, "{}", POD_SANDBOX), + ContainerType::SingleContainer => write!(f, "{}", SINGLE_CONTAINER), } } } diff --git a/src/libs/kata-types/src/k8s.rs b/src/libs/kata-types/src/k8s.rs index ee392a94a8..2b5971ccc1 100644 --- a/src/libs/kata-types/src/k8s.rs +++ b/src/libs/kata-types/src/k8s.rs @@ -69,7 +69,7 @@ pub fn container_type(spec: &oci::Spec) -> ContainerType { } } - ContainerType::PodSandbox + ContainerType::SingleContainer } /// Determine the k8s sandbox ID from OCI annotations. @@ -269,7 +269,7 @@ mod tests { // default assert_eq!( container_type_with_id(&spec), - (ContainerType::PodSandbox, None) + (ContainerType::SingleContainer, None) ); // crio sandbox