Skip to content

Commit 8a23215

Browse files
committed
fixup! Add SandboxBuilder
Signed-off-by: Jorge Prendes <jorge.prendes@gmail.com>
1 parent 0a2ba9c commit 8a23215

2 files changed

Lines changed: 15 additions & 11 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
55
## [Prerelease] - Unreleased
66

77
### Added
8+
* `SandboxBuilder`, the entry point for creating a sandbox. It gathers machine
9+
configuration, host functions, init data and memory mappings, then builds a
10+
`MultiUseSandbox` from a guest binary on disk, a guest binary in memory, or a
11+
snapshot by @jprendes in https://github.com/hyperlight-dev/hyperlight/pull/1725
812

913
### Changed
1014
* **Breaking:** Guest MSR state is now saved and restored across snapshots.

‎src/hyperlight_host/src/sandbox/builder.rs‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ pub struct SandboxBuilder {
8787
init_data: Option<(Vec<u8>, MemoryRegionFlags)>,
8888
mapped_file_cow: Vec<(std::path::PathBuf, u64)>,
8989
mapped_memory_regions: Vec<MemoryRegion>,
90-
max_guest_log_level: Option<LevelFilter>,
90+
guest_log_level: Option<LevelFilter>,
9191
}
9292

9393
impl SandboxBuilder {
@@ -132,8 +132,8 @@ impl SandboxBuilder {
132132
uninitialized_sandbox.map_file_cow(&path, guest_base)?;
133133
}
134134

135-
if let Some(max_log_level) = self.max_guest_log_level {
136-
uninitialized_sandbox.set_max_guest_log_level(max_log_level);
135+
if let Some(log_level) = self.guest_log_level {
136+
uninitialized_sandbox.set_max_guest_log_level(log_level);
137137
}
138138

139139
let mut sandbox = uninitialized_sandbox.evolve()?;
@@ -151,7 +151,7 @@ impl SandboxBuilder {
151151
///
152152
/// # Errors
153153
///
154-
/// Returns an error if [`Self::init_data`] or [`Self::max_guest_log_level`]
154+
/// Returns an error if [`Self::init_data`] or [`Self::guest_log_level`]
155155
/// are set. The snapshot already carries both, so they have no effect here.
156156
pub fn build_from_snapshot(self, snapshot: Arc<Snapshot>) -> Result<Sandbox> {
157157
if self.init_data.is_some() {
@@ -160,9 +160,9 @@ impl SandboxBuilder {
160160
));
161161
}
162162

163-
if self.max_guest_log_level.is_some() {
163+
if self.guest_log_level.is_some() {
164164
return Err(new_error!(
165-
"max_guest_log_level has no effect when building from a snapshot, as the snapshot already contains it"
165+
"guest_log_level has no effect when building from a snapshot, as the snapshot already contains it"
166166
));
167167
}
168168

@@ -227,14 +227,14 @@ impl SandboxBuilder {
227227
///
228228
/// Note: [`Self::build_from_snapshot`] errors if this setting is set, as the log level is
229229
/// already captured in the snapshot.
230-
pub fn max_guest_log_level(mut self, level: LevelFilter) -> Self {
231-
self.max_guest_log_level = Some(level);
230+
pub fn guest_log_level(mut self, level: LevelFilter) -> Self {
231+
self.guest_log_level = Some(level);
232232
self
233233
}
234234

235235
/// The maximum log level for guest code execution, or `None` if not set.
236-
pub fn get_max_guest_log_level(&self) -> Option<LevelFilter> {
237-
self.max_guest_log_level
236+
pub fn get_guest_log_level(&self) -> Option<LevelFilter> {
237+
self.guest_log_level
238238
}
239239
}
240240

@@ -470,7 +470,7 @@ mod tests {
470470

471471
assert!(
472472
SandboxBuilder::new()
473-
.max_guest_log_level(LevelFilter::INFO)
473+
.guest_log_level(LevelFilter::INFO)
474474
.build_from_snapshot(snapshot)
475475
.is_err()
476476
);

0 commit comments

Comments
 (0)