diff --git a/src/runtime-rs/crates/runtimes/src/manager.rs b/src/runtime-rs/crates/runtimes/src/manager.rs index 0a2c894a18..c6471fa584 100644 --- a/src/runtime-rs/crates/runtimes/src/manager.rs +++ b/src/runtime-rs/crates/runtimes/src/manager.rs @@ -20,11 +20,12 @@ use kata_types::{annotations::Annotation, config::TomlConfig}; use linux_container::LinuxContainer; use persist::sandbox_persist::Persist; use tokio::sync::{mpsc::Sender, RwLock}; -use virt_container::sandbox::SandboxRestoreArgs; -use virt_container::sandbox::VirtSandbox; -use virt_container::sandbox_persist::{SandboxState, SandboxTYPE}; #[cfg(feature = "virt")] -use virt_container::VirtContainer; +use virt_container::{ + sandbox::{SandboxRestoreArgs, VirtSandbox}, + sandbox_persist::SandboxState, + VirtContainer, +}; #[cfg(feature = "wasm")] use wasm_container::WasmContainer; @@ -153,8 +154,19 @@ impl RuntimeHandlerManager { toml_config: TomlConfig::default(), sender, }; - match sandbox_state.sandbox_type { - SandboxTYPE::VIRTCONTAINER => { + match sandbox_state.sandbox_type.clone() { + #[cfg(feature = "linux")] + name if name == LinuxContainer::name() => { + // TODO :support linux container (https://github.com/kata-containers/kata-containers/issues/4905) + return Ok(()); + } + #[cfg(feature = "wasm")] + name if name == WasmContainer::name() => { + // TODO :support wasm container (https://github.com/kata-containers/kata-containers/issues/4906) + return Ok(()); + } + #[cfg(feature = "virt")] + name if name == VirtContainer::name() => { let sandbox = VirtSandbox::restore(sandbox_args, sandbox_state) .await .context("failed to restore the sandbox")?; @@ -163,12 +175,7 @@ impl RuntimeHandlerManager { .await .context("failed to cleanup the resource")?; } - SandboxTYPE::LINUXCONTAINER => { - // TODO :support linux container (https://github.com/kata-containers/kata-containers/issues/4905) - return Ok(()); - } - SandboxTYPE::WASMCONTAINER => { - // TODO :support wasm container (https://github.com/kata-containers/kata-containers/issues/4906) + _ => { return Ok(()); } } diff --git a/src/runtime-rs/crates/runtimes/virt_container/src/lib.rs b/src/runtime-rs/crates/runtimes/virt_container/src/lib.rs index 220de9d0d5..3af5e69e25 100644 --- a/src/runtime-rs/crates/runtimes/virt_container/src/lib.rs +++ b/src/runtime-rs/crates/runtimes/virt_container/src/lib.rs @@ -23,6 +23,7 @@ use common::{message::Message, RuntimeHandler, RuntimeInstance}; use hypervisor::{dragonball::Dragonball, Hypervisor, HYPERVISOR_DRAGONBALL}; use kata_types::config::{hypervisor::register_hypervisor_plugin, DragonballConfig, TomlConfig}; use resource::ResourceManager; +use sandbox::VIRTCONTAINER; use tokio::sync::mpsc::Sender; unsafe impl Send for VirtContainer {} @@ -39,7 +40,7 @@ impl RuntimeHandler for VirtContainer { } fn name() -> String { - "virt_container".to_string() + VIRTCONTAINER.to_string() } fn new_handler() -> Arc { diff --git a/src/runtime-rs/crates/runtimes/virt_container/src/sandbox.rs b/src/runtime-rs/crates/runtimes/virt_container/src/sandbox.rs index 067cf389ea..478bf391cf 100644 --- a/src/runtime-rs/crates/runtimes/virt_container/src/sandbox.rs +++ b/src/runtime-rs/crates/runtimes/virt_container/src/sandbox.rs @@ -28,8 +28,10 @@ use resource::{ }; use tokio::sync::{mpsc::Sender, Mutex, RwLock}; -use crate::{health_check::HealthCheck, sandbox_persist::SandboxTYPE}; +use crate::health_check::HealthCheck; use persist::{self, sandbox_persist::Persist}; + +pub(crate) const VIRTCONTAINER: &str = "virt_container"; pub struct SandboxRestoreArgs { pub sid: String, pub toml_config: TomlConfig, @@ -303,7 +305,7 @@ impl Persist for VirtSandbox { /// Save a state of Sandbox async fn save(&self) -> Result { let sandbox_state = crate::sandbox_persist::SandboxState { - sandbox_type: SandboxTYPE::VIRTCONTAINER, + sandbox_type: VIRTCONTAINER.to_string(), resource: Some(self.resource_manager.save().await?), hypervisor: Some(self.hypervisor.save_state().await?), }; diff --git a/src/runtime-rs/crates/runtimes/virt_container/src/sandbox_persist.rs b/src/runtime-rs/crates/runtimes/virt_container/src/sandbox_persist.rs index 5e693e0df3..5497b0eee2 100644 --- a/src/runtime-rs/crates/runtimes/virt_container/src/sandbox_persist.rs +++ b/src/runtime-rs/crates/runtimes/virt_container/src/sandbox_persist.rs @@ -8,16 +8,9 @@ use hypervisor::hypervisor_persist::HypervisorState; use resource::resource_persist::ResourceState; use serde::{Deserialize, Serialize}; -#[derive(Serialize, Deserialize)] -pub enum SandboxTYPE { - VIRTCONTAINER, - LINUXCONTAINER, - WASMCONTAINER, -} - #[derive(Serialize, Deserialize)] pub struct SandboxState { - pub sandbox_type: SandboxTYPE, + pub sandbox_type: String, pub resource: Option, pub hypervisor: Option, }