import json,pathlib,subprocess,stat root=pathlib.Path('/home/ps/huobao-gpu-selection') def run(*a):return subprocess.check_output(a,text=True,stderr=subprocess.STDOUT) report={'workers':{},'existing_gpu1_services':{}} for name in ('huobao-comfy-gpu1','comfyui','h3-caption-gpu3-canary-8a5f'): d=json.loads(run('docker','inspect',name))[0] report['workers'][name]={'running':d['State']['Running'],'started_at':d['State']['StartedAt'],'gpu':d['HostConfig'].get('DeviceRequests'),'networks':list(d['NetworkSettings']['Networks'])} if name=='huobao-comfy-gpu1': assert not d['HostConfig']['PortBindings'] and d['HostConfig']['ReadonlyRootfs'] and not d['HostConfig']['Privileged'] assert list(d['NetworkSettings']['Networks'])==['zq-platform-network'] assert d['HostConfig']['DeviceRequests'][0]['DeviceIDs']==['1'] for name in ('comfyui-manju','canvas-minimax-lipsync','canvas-cosyvoice','followup-audio-asr'): d=json.loads(run('docker','inspect',name))[0] report['existing_gpu1_services'][name]={'running':d['State']['Running'],'started_at':d['State']['StartedAt']} assert d['State']['Running'] d=json.loads(run('docker','inspect','canvas-h3-prompt-normalizer-healthy-20261026'))[0] tokens=pathlib.Path(next(m['Source'] for m in d['Mounts'] if m['Destination']=='/run/h3-workers')) assert stat.S_IMODE((tokens/'gpu1.token').stat().st_mode)&0o007==0 report['gpu1_token_not_world_readable']=True state=json.loads((root/'state.json').read_text());report['admission']=json.loads(pathlib.Path(state['admission']).read_text()) assert set(report['admission']['admit'])=={'default','gpu1','gpu3'} assert all(v['running'] for v in report['workers'].values()) (root/'final-audit.json').write_text(json.dumps(report,indent=2)) print(json.dumps(report,ensure_ascii=False)) print(run('nvidia-smi','--query-gpu=index,memory.total,memory.used,memory.free','--format=csv,noheader'))