diff --git a/experiments/perception/worker/Invoke-E10IntegratedPerception.ps1 b/experiments/perception/worker/Invoke-E10IntegratedPerception.ps1 index 303ef5b..1fb2d30 100644 --- a/experiments/perception/worker/Invoke-E10IntegratedPerception.ps1 +++ b/experiments/perception/worker/Invoke-E10IntegratedPerception.ps1 @@ -12,12 +12,13 @@ param( [ValidateRange(1, 1000)] [int]$FreeGiBFloor = 360, [string]$RuntimeRoot = "D:\NDC_MISSIONCORE\runtime", [string]$ModelRoot = "D:\NDC_MISSIONCORE\runtime\models\yolox_s", - [string]$TritonContainer = "mission-core-triton", + [string]$TritonContainer = "ndc-mission-core-triton", [string]$ContainerImage = "nvcr.io/nvidia/tritonserver:26.06-py3" ) $ErrorActionPreference = "Stop" $ProgressPreference = "SilentlyContinue" +. (Join-Path $PSScriptRoot "MissionCoreDockerNames.ps1") function Assert-LastExitCode([string]$Operation) { if ($LASTEXITCODE -ne 0) { throw "$Operation failed with exit code $LASTEXITCODE" } @@ -131,6 +132,10 @@ $freeBytesBefore = Assert-FreeSpace "preflight" $workingSetReserve & docker image inspect $ContainerImage *> $null Assert-LastExitCode "Existing container image inspection" +$TritonContainer = Resolve-NdcDockerContainerName ` + -RequestedName $TritonContainer ` + -CanonicalName $script:NdcMissionCoreTritonContainer ` + -LegacyNames @("mission-core-triton") $tritonState = docker inspect --format "{{.State.Running}}" $TritonContainer Assert-LastExitCode "Triton container inspection" if ($tritonState.Trim().ToLowerInvariant() -ne "true") { throw "LAB E10 requires the existing Triton container" } diff --git a/experiments/perception/worker/Invoke-E15PersistentShadowRun.ps1 b/experiments/perception/worker/Invoke-E15PersistentShadowRun.ps1 index 16db93e..45dd40c 100644 --- a/experiments/perception/worker/Invoke-E15PersistentShadowRun.ps1 +++ b/experiments/perception/worker/Invoke-E15PersistentShadowRun.ps1 @@ -3,7 +3,7 @@ param( [switch]$TokenStdin, [ValidatePattern("^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$")] [string]$RequestId = ("physical-k1-shadow-{0}" -f [Guid]::NewGuid().ToString("N")), - [string]$PersistentContainer = "mission-core-perception-worker", + [string]$PersistentContainer = "ndc-mission-core-perception-worker", [string]$PersistentOutputRoot = "D:\NDC_MISSIONCORE\runtime\derived\.perception-persistent-publish", [ValidateRange(1024, 65535)] [int]$PersistentPort = 18020, [ValidateRange(5, 3600)] [int]$MaximumDurationSeconds = 20, @@ -12,6 +12,7 @@ param( $ErrorActionPreference = "Stop" $ProgressPreference = "SilentlyContinue" +. (Join-Path $PSScriptRoot "MissionCoreDockerNames.ps1") function Assert-LastExitCode([string]$Operation) { if ($LASTEXITCODE -ne 0) { throw "$Operation failed with exit code $LASTEXITCODE" } @@ -35,6 +36,10 @@ if (-not $token -or $token.Length -lt 40 -or $token.Length -gt 512) { } $outputRoot = Resolve-DDirectory $PersistentOutputRoot "Persistent output root" +$PersistentContainer = Resolve-NdcDockerContainerName ` + -RequestedName $PersistentContainer ` + -CanonicalName $script:NdcMissionCorePerceptionContainer ` + -LegacyNames @("mission-core-perception-worker") $freeBefore = Get-DFreeBytes if ($freeBefore -lt ([int64]$FreeGiBFloor * 1GB + 512MB)) { throw "D: lacks the guarded persistent-run reserve" diff --git a/experiments/perception/worker/Invoke-E15ShadowInference.ps1 b/experiments/perception/worker/Invoke-E15ShadowInference.ps1 index ca5278d..784fdfd 100644 --- a/experiments/perception/worker/Invoke-E15ShadowInference.ps1 +++ b/experiments/perception/worker/Invoke-E15ShadowInference.ps1 @@ -21,8 +21,8 @@ param( [string]$RuntimeRoot = "D:\NDC_MISSIONCORE\runtime", [string]$ModelRoot = "D:\NDC_MISSIONCORE\runtime\models\yolox_s", [string]$MediaRuntimeRoot = "D:\NDC_MISSIONCORE\runtime\derived\perception-e15-media-pyav180-lz445-v1", - [string]$TritonContainer = "mission-core-triton", - [string]$PersistentContainer = "mission-core-perception-worker", + [string]$TritonContainer = "ndc-mission-core-triton", + [string]$PersistentContainer = "ndc-mission-core-perception-worker", [string]$PersistentOutputRoot = "D:\NDC_MISSIONCORE\runtime\derived\.perception-persistent-publish", [ValidateRange(1024, 65535)] [int]$PersistentPort = 18020, [string]$ContainerImage = "nvcr.io/nvidia/tritonserver:26.06-py3@sha256:58df7489c3f2276f9591d500a012dee03e23d35543ce3c390b4c001e6bf90794" @@ -30,6 +30,7 @@ param( $ErrorActionPreference = "Stop" $ProgressPreference = "SilentlyContinue" +. (Join-Path $PSScriptRoot "MissionCoreDockerNames.ps1") function Assert-LastExitCode([string]$Operation) { if ($LASTEXITCODE -ne 0) { throw "$Operation failed with exit code $LASTEXITCODE" } @@ -213,6 +214,14 @@ $freeBytesBefore = Assert-FreeSpace "preflight" 512MB & docker image inspect $ContainerImage *> $null Assert-LastExitCode "Pinned container image inspection" +$TritonContainer = Resolve-NdcDockerContainerName ` + -RequestedName $TritonContainer ` + -CanonicalName $script:NdcMissionCoreTritonContainer ` + -LegacyNames @("mission-core-triton") +$PersistentContainer = Resolve-NdcDockerContainerName ` + -RequestedName $PersistentContainer ` + -CanonicalName $script:NdcMissionCorePerceptionContainer ` + -LegacyNames @("mission-core-perception-worker") $tritonState = docker inspect --format "{{.State.Running}}" $TritonContainer Assert-LastExitCode "Triton container inspection" if ($tritonState.Trim().ToLowerInvariant() -ne "true") { @@ -336,6 +345,10 @@ if ($PersistentService) { $serveArgs = @( "run", "--detach", "--name", $PersistentContainer, + "--label", "com.nodedc.product=mission-core", + "--label", "com.nodedc.stack=ndc-mission-core-compute", + "--label", "com.nodedc.role=perception-worker", + "--label", "com.nodedc.managed-by=mission-core-worker", "--label", "missioncore.role=perception-persistent-worker", "--label", ("missioncore.runner.sha256={0}" -f $runnerSha256), "--label", ("missioncore.live.sha256={0}" -f $liveProfileSha256), diff --git a/experiments/perception/worker/Invoke-E5InstanceTracking.ps1 b/experiments/perception/worker/Invoke-E5InstanceTracking.ps1 index 99a676f..b9c02b5 100644 --- a/experiments/perception/worker/Invoke-E5InstanceTracking.ps1 +++ b/experiments/perception/worker/Invoke-E5InstanceTracking.ps1 @@ -25,13 +25,14 @@ param( [string]$ModelRoot = "D:\NDC_MISSIONCORE\runtime\models\yolox_s", - [string]$TritonContainer = "mission-core-triton", + [string]$TritonContainer = "ndc-mission-core-triton", [string]$ContainerImage = "nvcr.io/nvidia/tritonserver:26.06-py3" ) $ErrorActionPreference = "Stop" $ProgressPreference = "SilentlyContinue" +. (Join-Path $PSScriptRoot "MissionCoreDockerNames.ps1") function Assert-LastExitCode { param([string]$Operation) @@ -188,6 +189,10 @@ $freeBytesBefore = Assert-FreeSpace "preflight" $workingSetReserve & docker image inspect $ContainerImage *> $null Assert-LastExitCode "Existing container image inspection" +$TritonContainer = Resolve-NdcDockerContainerName ` + -RequestedName $TritonContainer ` + -CanonicalName $script:NdcMissionCoreTritonContainer ` + -LegacyNames @("mission-core-triton") $tritonState = docker inspect --format "{{.State.Running}}" $TritonContainer Assert-LastExitCode "Triton container inspection" if ($tritonState.Trim().ToLowerInvariant() -ne "true") { diff --git a/experiments/perception/worker/Invoke-E8RealtimeTracking.ps1 b/experiments/perception/worker/Invoke-E8RealtimeTracking.ps1 index c2b1528..32c5be6 100644 --- a/experiments/perception/worker/Invoke-E8RealtimeTracking.ps1 +++ b/experiments/perception/worker/Invoke-E8RealtimeTracking.ps1 @@ -25,13 +25,14 @@ param( [string]$ModelRoot = "D:\NDC_MISSIONCORE\runtime\models\yolox_s", - [string]$TritonContainer = "mission-core-triton", + [string]$TritonContainer = "ndc-mission-core-triton", [string]$ContainerImage = "nvcr.io/nvidia/tritonserver:26.06-py3" ) $ErrorActionPreference = "Stop" $ProgressPreference = "SilentlyContinue" +. (Join-Path $PSScriptRoot "MissionCoreDockerNames.ps1") function Assert-LastExitCode { param([string]$Operation) @@ -186,6 +187,10 @@ $freeBytesBefore = Assert-FreeSpace "preflight" $workingSetReserve & docker image inspect $ContainerImage *> $null Assert-LastExitCode "Existing container image inspection" +$TritonContainer = Resolve-NdcDockerContainerName ` + -RequestedName $TritonContainer ` + -CanonicalName $script:NdcMissionCoreTritonContainer ` + -LegacyNames @("mission-core-triton") $tritonState = docker inspect --format "{{.State.Running}}" $TritonContainer Assert-LastExitCode "Triton container inspection" if ($tritonState.Trim().ToLowerInvariant() -ne "true") { diff --git a/experiments/perception/worker/Invoke-E9MultiratePerception.ps1 b/experiments/perception/worker/Invoke-E9MultiratePerception.ps1 index 535344b..bba6859 100644 --- a/experiments/perception/worker/Invoke-E9MultiratePerception.ps1 +++ b/experiments/perception/worker/Invoke-E9MultiratePerception.ps1 @@ -11,12 +11,13 @@ param( [ValidateRange(1, 1000)] [int]$FreeGiBFloor = 360, [string]$RuntimeRoot = "D:\NDC_MISSIONCORE\runtime", [string]$ModelRoot = "D:\NDC_MISSIONCORE\runtime\models\yolox_s", - [string]$TritonContainer = "mission-core-triton", + [string]$TritonContainer = "ndc-mission-core-triton", [string]$ContainerImage = "nvcr.io/nvidia/tritonserver:26.06-py3" ) $ErrorActionPreference = "Stop" $ProgressPreference = "SilentlyContinue" +. (Join-Path $PSScriptRoot "MissionCoreDockerNames.ps1") function Assert-LastExitCode { param([string]$Operation) @@ -140,6 +141,10 @@ $freeBytesBefore = Assert-FreeSpace "preflight" $workingSetReserve & docker image inspect $ContainerImage *> $null Assert-LastExitCode "Existing container image inspection" +$TritonContainer = Resolve-NdcDockerContainerName ` + -RequestedName $TritonContainer ` + -CanonicalName $script:NdcMissionCoreTritonContainer ` + -LegacyNames @("mission-core-triton") $tritonState = docker inspect --format "{{.State.Running}}" $TritonContainer Assert-LastExitCode "Triton container inspection" if ($tritonState.Trim().ToLowerInvariant() -ne "true") { diff --git a/experiments/perception/worker/MissionCoreDockerNames.ps1 b/experiments/perception/worker/MissionCoreDockerNames.ps1 new file mode 100644 index 0000000..1167479 --- /dev/null +++ b/experiments/perception/worker/MissionCoreDockerNames.ps1 @@ -0,0 +1,29 @@ +$script:NdcMissionCoreTritonContainer = "ndc-mission-core-triton" +$script:NdcMissionCorePerceptionContainer = "ndc-mission-core-perception-worker" + +function Resolve-NdcDockerContainerName { + [CmdletBinding()] + param( + [Parameter(Mandatory = $true)] [string]$RequestedName, + [Parameter(Mandatory = $true)] [string]$CanonicalName, + [string[]]$LegacyNames = @() + ) + + $knownNames = @($CanonicalName) + @($LegacyNames) + $candidates = if ($RequestedName -in $knownNames) { + @($RequestedName) + @($knownNames | Where-Object { $_ -ne $RequestedName }) + } + else { + @($RequestedName) + } + + foreach ($candidate in $candidates) { + & docker inspect $candidate *> $null + if ($LASTEXITCODE -eq 0) { + return $candidate + } + } + + # Creation paths need the requested canonical name even before it exists. + return $RequestedName +}