Skip to content

Commit a0fac88

Browse files
authored
Merge pull request containerd#30 from Burning1020/get-rid-of-os-args
sandbox: use args from sandboxer instead of os
2 parents 5f2edcf + 76c7af0 commit a0fac88

File tree

2 files changed

+10
-11
lines changed

2 files changed

+10
-11
lines changed

crates/sandbox/examples/sandboxer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ async fn main() {
153153
let sandboxer = ExampleSandboxer {
154154
sandboxes: Default::default(),
155155
};
156-
run("io.containerd.sandboxer.example.v1", sandboxer)
156+
run("io.containerd.sandboxer.example.v1", "", "", sandboxer)
157157
.await
158158
.unwrap();
159159
}

crates/sandbox/src/lib.rs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use std::fmt::Debug;
22
use std::path::Path;
33
use std::sync::Arc;
44

5+
use anyhow::Context;
56
use async_trait::async_trait;
67
use futures::TryFutureExt;
78
use log::info;
@@ -120,23 +121,21 @@ pub trait Sandbox: Sync + Send {
120121
fn get_data(&self) -> Result<SandboxData>;
121122
}
122123

123-
pub async fn run<S>(name: &str, sandboxer: S) -> Result<()>
124+
pub async fn run<S>(name: &str, listening_addr: &str, working_dir: &str, sandboxer: S) -> Result<()>
124125
where
125126
S: Sandboxer + Sync + Send + 'static,
126127
{
127128
info!("start sandbox plugin: {}", name);
128-
let os_args: Vec<_> = std::env::args_os().collect();
129-
let flags = args::parse(&os_args[1..])?;
130-
if Path::new(&*flags.listen).exists() {
131-
tokio::fs::remove_file(&*flags.listen).await.unwrap();
129+
if Path::new(listening_addr).exists() {
130+
tokio::fs::remove_file(listening_addr).await?;
132131
}
133132

134-
if !Path::new(&*flags.dir).exists() {
135-
tokio::fs::create_dir_all(&*flags.dir).await.unwrap();
133+
if !Path::new(working_dir).exists() {
134+
tokio::fs::create_dir_all(working_dir).await?;
136135
}
137136

138137
let incoming = {
139-
let uds = UnixListener::bind(&*flags.listen).unwrap();
138+
let uds = UnixListener::bind(listening_addr)?;
140139
async_stream::stream! {
141140
loop {
142141
let item = uds.accept().map_ok(|(st, _)|unix::UnixStream(st)).await;
@@ -145,13 +144,13 @@ where
145144
}
146145
};
147146

148-
let sandbox_controller = SandboxController::new(flags.dir, sandboxer);
147+
let sandbox_controller = SandboxController::new(working_dir.to_string(), sandboxer);
149148
let sandbox_server = ControllerServer::new(sandbox_controller);
150149
Server::builder()
151150
.add_service(sandbox_server)
152151
.serve_with_incoming(incoming)
153152
.await
154-
.unwrap();
153+
.with_context(|| format!("gRPC server"))?;
155154

156155
Ok(())
157156
}

0 commit comments

Comments
 (0)