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

Method restore_persisted_sandbox

crates/openshell-driver-vm/src/driver.rs:1222–1325  ·  view source on GitHub ↗
(&self, sandbox: Sandbox, state_dir: PathBuf)

Source from the content-addressed store, hash-verified

1220 }
1221
1222 async fn restore_persisted_sandbox(&self, sandbox: Sandbox, state_dir: PathBuf) {
1223 let Some(image_ref) = self.resolved_sandbox_image(&sandbox) else {
1224 warn!(
1225 sandbox_id = %sandbox.id,
1226 sandbox_name = %sandbox.name,
1227 "vm driver: cannot restore persisted sandbox without image"
1228 );
1229 return;
1230 };
1231 let tls_paths = match self.config.tls_paths() {
1232 Ok(paths) => paths,
1233 Err(err) => {
1234 warn!(
1235 sandbox_id = %sandbox.id,
1236 sandbox_name = %sandbox.name,
1237 error = %err,
1238 "vm driver: cannot restore persisted sandbox TLS configuration"
1239 );
1240 return;
1241 }
1242 };
1243
1244 if let Err(err) = self.ensure_extension_state_dirs(&state_dir).await {
1245 warn!(
1246 sandbox_id = %sandbox.id,
1247 sandbox_name = %sandbox.name,
1248 state_dir = %state_dir.display(),
1249 error = %err.message(),
1250 "vm driver: cannot restore persisted sandbox extension state"
1251 );
1252 return;
1253 }
1254
1255 let persisted = RestoreContext {
1256 sandbox: sandbox.clone(),
1257 state_dir: state_dir.clone(),
1258 };
1259 if let Err(err) = self.lifecycle_extensions.before_restore(&persisted).await {
1260 warn!(
1261 sandbox_id = %sandbox.id,
1262 sandbox_name = %sandbox.name,
1263 state_dir = %state_dir.display(),
1264 error = %err,
1265 "vm driver: lifecycle extension rejected persisted sandbox restore"
1266 );
1267 return;
1268 }
1269
1270 let snapshot = sandbox_snapshot(&sandbox, provisioning_condition(), false);
1271 {
1272 let mut registry = self.registry.lock().await;
1273 if registry.contains_key(&sandbox.id) {
1274 return;
1275 }
1276 registry.insert(
1277 sandbox.id.clone(),
1278 SandboxRecord {
1279 snapshot: snapshot.clone(),

Callers 1

Calls 13

sandbox_snapshotFunction · 0.85
tls_pathsMethod · 0.80
contains_keyMethod · 0.80
publish_snapshotMethod · 0.80
abortMethod · 0.80
provisioning_conditionFunction · 0.70
platform_eventFunction · 0.70
spawnFunction · 0.50
before_restoreMethod · 0.45

Tested by

no test coverage detected