pub trait SandboxRuntime: Send + Sync {
Show 17 methods
// Required methods
fn create_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
spec: &'life1 SandboxSpec,
) -> Pin<Box<dyn Future<Output = CiabResult<SandboxInfo>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn get_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<SandboxInfo>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn list_sandboxes<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: Option<SandboxState>,
provider: Option<&'life1 str>,
labels: &'life2 HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = CiabResult<Vec<SandboxInfo>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn start_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn stop_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn pause_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn resume_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn terminate_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn exec<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
request: &'life2 ExecRequest,
) -> Pin<Box<dyn Future<Output = CiabResult<ExecResult>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn read_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
path: &'life2 str,
) -> Pin<Box<dyn Future<Output = CiabResult<Vec<u8>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn write_file<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
path: &'life2 str,
content: &'life3 [u8],
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait;
fn list_files<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
path: &'life2 str,
) -> Pin<Box<dyn Future<Output = CiabResult<Vec<FileInfo>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn get_stats<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<ResourceStats>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn stream_logs<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
options: &'life2 LogOptions,
) -> Pin<Box<dyn Future<Output = CiabResult<Receiver<String>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
// Provided methods
fn exec_streaming<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
request: &'life2 ExecRequest,
) -> Pin<Box<dyn Future<Output = CiabResult<(Receiver<String>, JoinHandle<CiabResult<ExecResult>>)>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait { ... }
fn exec_streaming_interactive<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
request: &'life2 ExecRequest,
) -> Pin<Box<dyn Future<Output = CiabResult<(Receiver<String>, Sender<String>, JoinHandle<CiabResult<ExecResult>>)>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait { ... }
fn kill_exec<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
}Required Methods§
Sourcefn create_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
spec: &'life1 SandboxSpec,
) -> Pin<Box<dyn Future<Output = CiabResult<SandboxInfo>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
spec: &'life1 SandboxSpec,
) -> Pin<Box<dyn Future<Output = CiabResult<SandboxInfo>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Create a new sandbox from the given spec.
Sourcefn get_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<SandboxInfo>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<SandboxInfo>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get info about a sandbox by ID.
Sourcefn list_sandboxes<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: Option<SandboxState>,
provider: Option<&'life1 str>,
labels: &'life2 HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = CiabResult<Vec<SandboxInfo>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn list_sandboxes<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
state: Option<SandboxState>,
provider: Option<&'life1 str>,
labels: &'life2 HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = CiabResult<Vec<SandboxInfo>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
List all sandboxes, optionally filtered by state, provider, and labels.
Sourcefn start_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn start_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Start a sandbox.
Sourcefn stop_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn stop_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Stop a sandbox.
Sourcefn pause_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn pause_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Pause a sandbox.
Sourcefn resume_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn resume_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Resume a paused sandbox.
Sourcefn terminate_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn terminate_sandbox<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Terminate and remove a sandbox.
Sourcefn exec<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
request: &'life2 ExecRequest,
) -> Pin<Box<dyn Future<Output = CiabResult<ExecResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn exec<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
request: &'life2 ExecRequest,
) -> Pin<Box<dyn Future<Output = CiabResult<ExecResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute a command inside a sandbox.
Sourcefn read_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
path: &'life2 str,
) -> Pin<Box<dyn Future<Output = CiabResult<Vec<u8>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn read_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
path: &'life2 str,
) -> Pin<Box<dyn Future<Output = CiabResult<Vec<u8>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Read a file from a sandbox.
Sourcefn write_file<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
path: &'life2 str,
content: &'life3 [u8],
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn write_file<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
path: &'life2 str,
content: &'life3 [u8],
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Write a file to a sandbox.
Sourcefn list_files<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
path: &'life2 str,
) -> Pin<Box<dyn Future<Output = CiabResult<Vec<FileInfo>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn list_files<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
path: &'life2 str,
) -> Pin<Box<dyn Future<Output = CiabResult<Vec<FileInfo>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
List files in a directory inside a sandbox.
Sourcefn get_stats<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<ResourceStats>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_stats<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<ResourceStats>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get resource stats for a sandbox.
Sourcefn stream_logs<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
options: &'life2 LogOptions,
) -> Pin<Box<dyn Future<Output = CiabResult<Receiver<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn stream_logs<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
options: &'life2 LogOptions,
) -> Pin<Box<dyn Future<Output = CiabResult<Receiver<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Stream logs from a sandbox.
Provided Methods§
Sourcefn exec_streaming<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
request: &'life2 ExecRequest,
) -> Pin<Box<dyn Future<Output = CiabResult<(Receiver<String>, JoinHandle<CiabResult<ExecResult>>)>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn exec_streaming<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
request: &'life2 ExecRequest,
) -> Pin<Box<dyn Future<Output = CiabResult<(Receiver<String>, JoinHandle<CiabResult<ExecResult>>)>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute a command inside a sandbox, streaming stdout lines as they arrive. Returns a receiver of output lines and a join handle for the final ExecResult.
Default implementation falls back to exec() and sends all lines at once.
Sourcefn exec_streaming_interactive<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
request: &'life2 ExecRequest,
) -> Pin<Box<dyn Future<Output = CiabResult<(Receiver<String>, Sender<String>, JoinHandle<CiabResult<ExecResult>>)>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn exec_streaming_interactive<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 Uuid,
request: &'life2 ExecRequest,
) -> Pin<Box<dyn Future<Output = CiabResult<(Receiver<String>, Sender<String>, JoinHandle<CiabResult<ExecResult>>)>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute a command with bidirectional streaming. Returns (stdout lines receiver, stdin sender, join handle). Send lines to the stdin sender to write to the process’s stdin.