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

Function resolve_container_engine

e2e/rust/src/harness/container.rs:340–373  ·  view source on GitHub ↗
(
    legacy_selector: Option<&str>,
    explicit_engine: Option<&str>,
    e2e_driver: Option<&str>,
    probe: &impl ContainerEngineProbe,
)

Source from the content-addressed store, hash-verified

338}
339
340fn resolve_container_engine(
341 legacy_selector: Option<&str>,
342 explicit_engine: Option<&str>,
343 e2e_driver: Option<&str>,
344 probe: &impl ContainerEngineProbe,
345) -> Result<ResolvedContainerEngine, String> {
346 if normalized_env(legacy_selector).is_some() {
347 return Err(
348 "OPENSHELL_E2E_CONTAINER_ENGINE is no longer supported; set CONTAINER_ENGINE=docker|podman instead"
349 .to_string(),
350 );
351 }
352
353 let explicit_engine = normalized_env(explicit_engine)
354 .map(|value| validate_container_engine("CONTAINER_ENGINE", value))
355 .transpose()?;
356 let required_engine = required_engine_from_driver(e2e_driver);
357
358 if let (Some(explicit), Some(required)) = (&explicit_engine, &required_engine)
359 && explicit != required
360 {
361 return Err(format!(
362 "CONTAINER_ENGINE={explicit} conflicts with OPENSHELL_E2E_DRIVER={required}; use CONTAINER_ENGINE={required} or unset CONTAINER_ENGINE"
363 ));
364 }
365
366 if let Some(engine) = explicit_engine {
367 require_engine_available(&engine, probe)
368 } else if let Some(engine) = required_engine {
369 require_engine_available(&engine, probe)
370 } else {
371 auto_detect_container_engine(probe)
372 }
373}
374
375impl Drop for ContainerHttpServer {
376 fn drop(&mut self) {

Callers 2

from_envMethod · 0.85
resolveFunction · 0.85

Calls 5

normalized_envFunction · 0.85
require_engine_availableFunction · 0.85

Tested by

no test coverage detected