diff --git a/crates/containerd-shim-wasm/src/sandbox/cli.rs b/crates/containerd-shim-wasm/src/sandbox/cli.rs index 6690f161b..1e9f12e9a 100644 --- a/crates/containerd-shim-wasm/src/sandbox/cli.rs +++ b/crates/containerd-shim-wasm/src/sandbox/cli.rs @@ -164,7 +164,6 @@ pub fn shim_main<'a, I>( config: Option, ) where I: 'static + Instance + Sync + Send, - I::Engine: Default, { #[cfg(unix)] zygote::Zygote::init(); @@ -203,7 +202,6 @@ fn shim_main_inner<'a, I>( config: Option, ) where I: 'static + Instance + Sync + Send, - I::Engine: Default, { #[cfg(feature = "opentelemetry")] { diff --git a/crates/containerd-shim-wasm/src/sandbox/instance.rs b/crates/containerd-shim-wasm/src/sandbox/instance.rs index ec8c0a681..c7a2eb1d8 100644 --- a/crates/containerd-shim-wasm/src/sandbox/instance.rs +++ b/crates/containerd-shim-wasm/src/sandbox/instance.rs @@ -33,9 +33,6 @@ pub struct InstanceConfig { /// This trait requires that any type implementing it is `'static`, similar to `std::any::Any`. /// This means that the type cannot contain a non-`'static` reference. pub trait Instance: 'static { - /// The WASI engine type - type Engine: Send + Sync + Clone; - /// Create a new instance fn new(id: String, cfg: &InstanceConfig) -> Result where diff --git a/crates/containerd-shim-wasm/src/sandbox/shim/cli.rs b/crates/containerd-shim-wasm/src/sandbox/shim/cli.rs index a85aeba7a..9a1f62f2e 100644 --- a/crates/containerd-shim-wasm/src/sandbox/shim/cli.rs +++ b/crates/containerd-shim-wasm/src/sandbox/shim/cli.rs @@ -1,5 +1,6 @@ use std::env::current_dir; use std::fmt::Debug; +use std::marker::PhantomData; use std::sync::Arc; use chrono::Utc; @@ -16,17 +17,16 @@ use crate::sandbox::shim::local::Local; /// Cli implements the containerd-shim cli interface using `Local` as the task service. pub struct Cli { - engine: T::Engine, namespace: String, containerd_address: String, exit: Arc, _id: String, + _phantom: PhantomData, } impl Debug for Cli where I: Instance + Sync + Send, - ::Engine: Default, { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!( @@ -40,18 +40,17 @@ where impl shim::Shim for Cli where I: Instance + Sync + Send, - ::Engine: Default, { type T = Local; #[cfg_attr(feature = "tracing", tracing::instrument(level = "Info"))] fn new(_runtime_id: &str, args: &Flags, _config: &mut shim::Config) -> Self { Cli { - engine: Default::default(), namespace: args.namespace.to_string(), containerd_address: args.address.clone(), exit: Arc::default(), _id: args.id.to_string(), + _phantom: PhantomData, } } @@ -88,14 +87,7 @@ where fn create_task_service(&self, publisher: RemotePublisher) -> Self::T { let events = RemoteEventSender::new(&self.namespace, publisher); let exit = self.exit.clone(); - let engine = self.engine.clone(); - Local::::new( - engine, - events, - exit, - &self.namespace, - &self.containerd_address, - ) + Local::::new(events, exit, &self.namespace, &self.containerd_address) } #[cfg_attr(feature = "tracing", tracing::instrument(level = "Info"))] diff --git a/crates/containerd-shim-wasm/src/sandbox/shim/local.rs b/crates/containerd-shim-wasm/src/sandbox/shim/local.rs index 0682ea3d1..866810877 100644 --- a/crates/containerd-shim-wasm/src/sandbox/shim/local.rs +++ b/crates/containerd-shim-wasm/src/sandbox/shim/local.rs @@ -87,7 +87,6 @@ type LocalInstances = RwLock>>>; /// Local implements the Task service for a containerd shim. /// It defers all task operations to the `Instance` implementation. pub struct Local { - pub engine: T::Engine, pub(super) instances: LocalInstances, events: E, exit: Arc, @@ -99,10 +98,9 @@ impl Local { /// Creates a new local task service. #[cfg_attr( feature = "tracing", - tracing::instrument(skip(engine, events, exit), level = "Debug") + tracing::instrument(skip(events, exit), level = "Debug") )] pub fn new( - engine: T::Engine, events: E, exit: Arc, namespace: impl AsRef + std::fmt::Debug, @@ -112,7 +110,6 @@ impl Local { let namespace = namespace.as_ref().to_string(); let containerd_address = containerd_address.as_ref().to_string(); Self { - engine, instances, events, exit, diff --git a/crates/containerd-shim-wasm/src/sandbox/shim/local/tests.rs b/crates/containerd-shim-wasm/src/sandbox/shim/local/tests.rs index 99ed5e3c2..9ff5d8562 100644 --- a/crates/containerd-shim-wasm/src/sandbox/shim/local/tests.rs +++ b/crates/containerd-shim-wasm/src/sandbox/shim/local/tests.rs @@ -23,7 +23,6 @@ pub struct InstanceStub { } impl Instance for InstanceStub { - type Engine = (); fn new(_id: String, _cfg: &InstanceConfig) -> Result { Ok(InstanceStub { exit_code: WaitableCell::new(), @@ -106,7 +105,6 @@ fn test_delete_after_create() { let (tx, _rx) = channel(); let local = Arc::new(Local::::new( - (), tx, Arc::new(ExitSignal::default()), "test_namespace", @@ -137,7 +135,6 @@ fn test_cri_task() -> Result<()> { let (etx, _erx) = channel(); let exit_signal = Arc::new(ExitSignal::default()); let local = Arc::new(Local::::new( - (), etx, exit_signal, "test_namespace", @@ -307,7 +304,6 @@ fn test_task_lifecycle() -> Result<()> { let (etx, _erx) = channel(); // TODO: check events let exit_signal = Arc::new(ExitSignal::default()); let local = Arc::new(Local::::new( - (), etx, exit_signal, "test_namespace", diff --git a/crates/containerd-shim-wasm/src/sys/unix/container/instance.rs b/crates/containerd-shim-wasm/src/sys/unix/container/instance.rs index 47f64f757..656314863 100644 --- a/crates/containerd-shim-wasm/src/sys/unix/container/instance.rs +++ b/crates/containerd-shim-wasm/src/sys/unix/container/instance.rs @@ -29,8 +29,6 @@ pub struct Instance { } impl SandboxInstance for Instance { - type Engine = E; - #[cfg_attr(feature = "tracing", tracing::instrument(level = "Info"))] fn new(id: String, cfg: &InstanceConfig) -> Result { // check if container is OCI image with wasm layers and attempt to read the module diff --git a/crates/containerd-shim-wasm/src/testing.rs b/crates/containerd-shim-wasm/src/testing.rs index 00fa93b77..d8ffdc724 100644 --- a/crates/containerd-shim-wasm/src/testing.rs +++ b/crates/containerd-shim-wasm/src/testing.rs @@ -25,10 +25,7 @@ use crate::sandbox::{Instance, InstanceConfig}; pub const TEST_NAMESPACE: &str = "runwasi-test"; pub const SIGKILL: u32 = 9; -pub struct WasiTestBuilder -where - WasiInstance::Engine: Default + Send + Sync + Clone, -{ +pub struct WasiTestBuilder { container_name: String, start_fn: String, namespaces: Vec, @@ -36,18 +33,12 @@ where _phantom: PhantomData, } -pub struct WasiTest -where - WasiInstance::Engine: Default + Send + Sync + Clone, -{ +pub struct WasiTest { instance: WasiInstance, tempdir: tempfile::TempDir, } -impl WasiTestBuilder -where - WasiInstance::Engine: Default + Send + Sync + Clone, -{ +impl WasiTestBuilder { pub fn new() -> Result { zygote::Zygote::init(); @@ -230,10 +221,7 @@ where } } -impl WasiTest -where - WasiInstance::Engine: Default + Send + Sync + Clone, -{ +impl WasiTest { pub fn builder() -> Result> { WasiTestBuilder::new() }