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

Method provision_sandbox_inner

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

Source from the content-addressed store, hash-verified

731 }
732
733 async fn provision_sandbox_inner(
734 &self,
735 sandbox: &DriverSandbox,
736 ) -> Result<(), DockerProvisioningFailure> {
737 let validated = Self::validated_sandbox(sandbox, &self.config).map_err(|status| {
738 DockerProvisioningFailure::new("ContainerCreateFailed", status.message())
739 })?;
740 let template = validated.template;
741 self.ensure_image_available(&sandbox.id, &template.image)
742 .await
743 .map_err(|status| {
744 DockerProvisioningFailure::new("ImagePullFailed", status.message())
745 })?;
746 let token_file_created = write_sandbox_token_file(sandbox, &self.config)
747 .await
748 .map_err(|status| {
749 DockerProvisioningFailure::new("SandboxTokenWriteFailed", status.message())
750 })?;
751
752 let container_name = container_name_for_sandbox(sandbox);
753 let gpu_devices = self
754 .resolve_gpu_cdi_devices(
755 validated.gpu_requirements,
756 &validated.driver_config,
757 CdiGpuDefaultSelector::next_device_ids,
758 )
759 .await
760 .map_err(|status| {
761 if token_file_created {
762 cleanup_sandbox_token_file(sandbox, &self.config);
763 }
764 DockerProvisioningFailure::new("ContainerCreateFailed", status.message())
765 })?;
766 let create_body = build_container_create_body_with_gpu_devices(
767 sandbox,
768 &self.config,
769 &validated.driver_config,
770 gpu_devices.as_deref(),
771 )
772 .map_err(|status| {
773 if token_file_created {
774 cleanup_sandbox_token_file(sandbox, &self.config);
775 }
776 DockerProvisioningFailure::new("ContainerCreateFailed", status.message())
777 })?;
778 self.docker
779 .create_container(
780 Some(
781 CreateContainerOptionsBuilder::default()
782 .name(container_name.as_str())
783 .build(),
784 ),
785 create_body,
786 )
787 .await
788 .map_err(|err| {
789 if token_file_created {
790 cleanup_sandbox_token_file(sandbox, &self.config);

Callers 1

provision_sandboxMethod · 0.45

Calls 15

messageMethod · 0.80
create_containerMethod · 0.80
start_containerMethod · 0.80
remove_containerMethod · 0.80
write_sandbox_token_fileFunction · 0.70

Tested by

no test coverage detected