from pathlib import Path import http.client,hashlib,json release=Path(__file__).resolve().parent manifest=json.loads((release/'manifest.json').read_text()) asset=next(r for r in manifest if '/dist/js/model-catalog-' in r['path'] and r['path'].endswith('.js')) path='/' + asset['path'].split('/dist/',1)[1] checks=[('/',200,'GET'),('/api/health',200,'GET'),('/api/models',401,'GET'),('/api/models/test',401,'POST'),(path,200,'GET')] statuses={} for endpoint,wanted,method in checks: c=http.client.HTTPConnection('192.168.110.111',8369,timeout=20,source_address=('192.168.123.43',0)) try: c.request(method,endpoint,body=b'{"provider_id":"deployment-probe"}' if method=='POST' else None,headers={'Content-Type':'application/json'}) response=c.getresponse();data=response.read() assert response.status==wanted,(endpoint,response.status) if endpoint==path:assert hashlib.sha256(data).hexdigest()==asset['sha256'] if endpoint=='/':assert data==(release/'payload/admin-web/apps/web-antd/dist/index.html').read_bytes() statuses[method+' '+endpoint]=response.status finally:c.close() (release/'lan-verification.json').write_text(json.dumps(statuses,indent=2),encoding='utf-8') print(json.dumps(statuses))