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

Method create_sandbox_inner

crates/openshell-driver-docker/src/lib.rs:663–720  ·  view source on GitHub ↗
(&self, sandbox: &DriverSandbox)

Source from the content-addressed store, hash-verified

661 }
662
663 async fn create_sandbox_inner(&self, sandbox: &DriverSandbox) -> Result<(), Status> {
664 let validated = Self::validated_sandbox(sandbox, &self.config)?;
665 Self::validate_sandbox_auth(sandbox)?;
666 self.validate_user_volume_mounts_available(&validated.driver_config)
667 .await?;
668 let gpu_devices = self
669 .resolve_gpu_cdi_devices(
670 validated.gpu_requirements,
671 &validated.driver_config,
672 CdiGpuDefaultSelector::peek_device_ids,
673 )
674 .await?;
675 let _ = build_container_create_body_with_gpu_devices(
676 sandbox,
677 &self.config,
678 &validated.driver_config,
679 gpu_devices.as_deref(),
680 )?;
681
682 if self
683 .find_managed_container_summary(&sandbox.id, &sandbox.name)
684 .await?
685 .is_some()
686 {
687 return Err(Status::already_exists("sandbox already exists"));
688 }
689
690 self.reserve_pending_sandbox(sandbox).await?;
691 let image = sandbox_image(sandbox).unwrap_or_default();
692 self.publish_docker_progress(
693 &sandbox.id,
694 "Scheduled",
695 format!("Docker sandbox accepted for image \"{image}\""),
696 HashMap::from([("image_ref".to_string(), image)]),
697 );
698 self.publish_sandbox_snapshot(pending_sandbox_snapshot(
699 sandbox,
700 &self.config.sandbox_namespace,
701 provisioning_condition(),
702 false,
703 ));
704
705 let driver = self.clone();
706 let sandbox_for_task = sandbox.clone();
707 let sandbox_id = sandbox.id.clone();
708 let task = tokio::spawn(async move {
709 driver.provision_sandbox(sandbox_for_task).await;
710 });
711
712 let mut pending = self.pending.lock().await;
713 if let Some(record) = pending.get_mut(&sandbox_id) {
714 record.task = Some(task);
715 } else {
716 task.abort();
717 }
718
719 Ok(())
720 }

Callers 1

create_sandboxMethod · 0.80

Calls 13

sandbox_imageFunction · 0.85
pending_sandbox_snapshotFunction · 0.85
abortMethod · 0.80
provisioning_conditionFunction · 0.70
spawnFunction · 0.50

Tested by

no test coverage detected