MCPcopy Create free account
hub / github.com/NVIDIA/OpenShell / prepare_sandbox_overlay_image

Function prepare_sandbox_overlay_image

crates/openshell-driver-vm/src/driver.rs:4601–4650  ·  view source on GitHub ↗
(
    template_path: &Path,
    overlay_disk: &Path,
    tls_materials: Option<&GuestTlsMaterials>,
    sandbox_token: Option<&str>,
    preparation: OverlayPreparation,
    expected_size_bytes: u64,

Source from the content-addressed store, hash-verified

4599}
4600
4601fn prepare_sandbox_overlay_image(
4602 template_path: &Path,
4603 overlay_disk: &Path,
4604 tls_materials: Option<&GuestTlsMaterials>,
4605 sandbox_token: Option<&str>,
4606 preparation: OverlayPreparation,
4607 expected_size_bytes: u64,
4608) -> Result<(), String> {
4609 if preparation == OverlayPreparation::PreserveExisting {
4610 match fs::metadata(overlay_disk) {
4611 Ok(metadata) if metadata.is_file() && metadata.len() == expected_size_bytes => {
4612 if let Some(tls) = tls_materials {
4613 inject_guest_tls_materials(overlay_disk, tls)?;
4614 }
4615 if let Some(token) = sandbox_token {
4616 inject_guest_sandbox_token(overlay_disk, token)?;
4617 }
4618 return Ok(());
4619 }
4620 Ok(metadata) if metadata.is_file() => {
4621 return Err(format!(
4622 "existing overlay disk '{}' has size {}, expected {}",
4623 overlay_disk.display(),
4624 metadata.len(),
4625 expected_size_bytes
4626 ));
4627 }
4628 Ok(_) => {
4629 return Err(format!(
4630 "existing overlay path '{}' is not a file",
4631 overlay_disk.display()
4632 ));
4633 }
4634 Err(err) if err.kind() == std::io::ErrorKind::NotFound => {}
4635 Err(err) => {
4636 return Err(format!(
4637 "stat overlay disk {}: {err}",
4638 overlay_disk.display()
4639 ));
4640 }
4641 }
4642 }
4643
4644 create_sandbox_overlay_image_from_template(
4645 template_path,
4646 overlay_disk,
4647 tls_materials,
4648 sandbox_token,
4649 )
4650}
4651
4652fn inject_guest_tls_materials(
4653 overlay_disk: &Path,

Calls 4

lenMethod · 0.80