39 lines
9.4 KiB
JSON
39 lines
9.4 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"channel": "homelab-runtime",
|
|
"command_id": "SUPPORT-260918-INFRA-PVE1-MOLDOVA-CURRENT-PROD-CALLPATH-READONLY-556R2",
|
|
"status": "OK",
|
|
"rc": 0,
|
|
"host": "pve01",
|
|
"mode": "read-only",
|
|
"component": "infra-pve1-moldova-current-prod-callpath-readonly",
|
|
"started_at_utc": "2026-09-18T21:05:06Z",
|
|
"finished_at_utc": "2026-09-18T21:05:06Z",
|
|
"reference_register_checked": true,
|
|
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
|
|
"error_register_checked": true,
|
|
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
|
|
"command_sha256": "37ce436636242efdcf203b90c1a92dfa69ada981da23f62e14b4602369702589",
|
|
"duplicate_failed_command_blocked": false,
|
|
"block_reason": null,
|
|
"execution_started": true,
|
|
"change_declared": false,
|
|
"result_contract_valid": true,
|
|
"result_contract_status": null,
|
|
"result_contract_error": null,
|
|
"command_rc": 0,
|
|
"changes_made": false,
|
|
"rollback_started": false,
|
|
"rollback_restored": null,
|
|
"mutation_outcome": "NO_MUTATION",
|
|
"sanitized": true,
|
|
"secrets_included": false,
|
|
"private_addresses_included": false,
|
|
"raw_evidence_retained_locally": true,
|
|
"raw_evidence_sha256": "883672d81581efc0c1d92a09229e4b23c9e7899d7bd8e2f7a4a5a768e0902898",
|
|
"sanitized_output_sha256": "0e12c81ca87dc2aca47e61e36d9079f2d2971793fe68f8a3f4c1dae3974247cb",
|
|
"output_truncated_in_json": false,
|
|
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
|
|
"output": "ERROR_REGISTER_CHECK=OK\nREFERENCE_CHECK=OK\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nPROD_ENTRY_PRESENT=True\nPROD_ENTRY_IS_SYMLINK=False\nPROD_ENTRY_RESOLVED=/usr/local/sbin/homelab-backup-v2\nPROD_ENTRY_SIZE=1656\nPROD_ENTRY_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2\nPROD_CALLPATH_MATCH_LINE_COUNT=3\nPROD_CALLPATH_MATCH_LINES=3,4,24\nPROD_CALLPATH_CONTEXT_01_RANGE=1-11\nPROD_CALLPATH_CONTEXT_01_LINE_0001=#!/usr/bin/python3\nPROD_CALLPATH_CONTEXT_01_LINE_0002=from __future__ import annotations\nPROD_CALLPATH_CONTEXT_01_LINE_0003=import hashlib, importlib, os, pathlib, stat, sys\nPROD_CALLPATH_CONTEXT_01_LINE_0004=ACCEPTED=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b')\nPROD_CALLPATH_CONTEXT_01_LINE_0005=EXPECTED={'fresh_lxc_helper.py': 'dbb3e6dbb71b10797df736431d9501a752a0f8c439163c9a0bddb7f76747f011', 'producer_exec_helper.py': 'b3b97099bcd7126670f866e81faae6a42a96d869d9989e6a67f6ea6c871c90b3', 'lxc_adapter.py': '3fa7d194010d76f7c8bc95035ae8876262e9337903e310f45f45df88c266dc8d', 'qemu_adapter.py': '1906db42bd34bbe85eb46fd9797b3572d46e0a41c29d1c29be5f9df5e448f15b', 'scheduler_adapter.py': 'a6f67159a64067773323f028126e3109e15cf17a8142cea5e6129970f1d4da96', 'entry504.py': 'ca6876fa9c3b1465b045344a8ad46962de16972c7da...\nPROD_CALLPATH_CONTEXT_01_LINE_0006=def sha(p):\nPROD_CALLPATH_CONTEXT_01_LINE_0007=h=hashlib.sha256()\nPROD_CALLPATH_CONTEXT_01_LINE_0008=with open(p,'rb',buffering=0) as f:\nPROD_CALLPATH_CONTEXT_01_LINE_0009=while True:\nPROD_CALLPATH_CONTEXT_01_LINE_0010=b=f.read(1048576)\nPROD_CALLPATH_CONTEXT_01_LINE_0011=if not b: break\nPROD_CALLPATH_CONTEXT_02_RANGE=20-26\nPROD_CALLPATH_CONTEXT_02_LINE_0020=p=ACCEPTED/name; s=os.lstat(p)\nPROD_CALLPATH_CONTEXT_02_LINE_0021=if not stat.S_ISREG(s.st_mode) or stat.S_ISLNK(s.st_mode) or s.st_uid!=0 or s.st_gid!=0 or stat.S_IMODE(s.st_mode)!=0o400 or sha(p)!=want: raise SystemExit('RELEASE_FILE_IDENTITY_'+name)\nPROD_CALLPATH_CONTEXT_02_LINE_0022=sys.dont_write_bytecode=True\nPROD_CALLPATH_CONTEXT_02_LINE_0023=sys.path.insert(0,str(ACCEPTED))\nPROD_CALLPATH_CONTEXT_02_LINE_0024=e=importlib.import_module('entry504')\nPROD_CALLPATH_CONTEXT_02_LINE_0025=return int(e.main())\nPROD_CALLPATH_CONTEXT_02_LINE_0026=if __name__=='__main__': raise SystemExit(main())\nPROD_RELEVANT_FUNCTION_COUNT=0\nPROD_IMPORT_COUNT=7\nPROD_IMPORT_01_LINE=2\nPROD_IMPORT_01_NAME=__future__.annotations\nPROD_IMPORT_02_LINE=3\nPROD_IMPORT_02_NAME=hashlib\nPROD_IMPORT_03_LINE=3\nPROD_IMPORT_03_NAME=importlib\nPROD_IMPORT_04_LINE=3\nPROD_IMPORT_04_NAME=os\nPROD_IMPORT_05_LINE=3\nPROD_IMPORT_05_NAME=pathlib\nPROD_IMPORT_06_LINE=3\nPROD_IMPORT_06_NAME=stat\nPROD_IMPORT_07_LINE=3\nPROD_IMPORT_07_NAME=sys\nPROD_EXEC_CALL_COUNT=0\nPROD_REFERENCED_PATH_COUNT=1\nPROD_REF_01_PATH=/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b\nPROD_REF_01_EXISTS=True\nPROD_REF_01_IS_FILE=False\nPROD_TRANSPORT_SIGNATURE_COUNT=0\nACCEPTED_TRANSPORT_SIGNATURE_COUNT=34\nACCEPTED_TRANSPORT_SIG_01_LINE=16\nACCEPTED_TRANSPORT_SIG_01_TEXT=OPERATOR_KEY=pathlib.Path('[SENSITIVE_PATH]\nACCEPTED_TRANSPORT_SIG_02_LINE=17\nACCEPTED_TRANSPORT_SIG_02_TEXT=VPS_KNOWN_HOSTS=CONFIG_ROOT/'vps_known_hosts'\nACCEPTED_TRANSPORT_SIG_03_LINE=24\nACCEPTED_TRANSPORT_SIG_03_TEXT=OPERATOR_KEY_FINGERPRINT='SHA256:wipXiBB3cpAwyWap9LcB185WjEEmDxtRJsI/UuMVAp0'\nACCEPTED_TRANSPORT_SIG_04_LINE=413\nACCEPTED_TRANSPORT_SIG_04_TEXT=return run([SSH,'-o','BatchMode=yes','-o','StrictHostKeyChecking=yes','root@'+node,cmd],input=input,timeout=timeout,check=check)\nACCEPTED_TRANSPORT_SIG_05_LINE=492\nACCEPTED_TRANSPORT_SIG_05_TEXT=cmd=[SSH,'-o','BatchMode=yes','-o','StrictHostKeyChecking=yes','root@'+node,remote]\nACCEPTED_TRANSPORT_SIG_06_LINE=537\nACCEPTED_TRANSPORT_SIG_06_TEXT=else: run([SCP,'-q','-o','BatchMode=yes','-o','StrictHostKeyChecking=yes','root@'+node+':'+src,str(local)],timeout=7200)\nACCEPTED_TRANSPORT_SIG_07_LINE=543\nACCEPTED_TRANSPORT_SIG_07_TEXT=def operator_key_fingerprint():\nACCEPTED_TRANSPORT_SIG_08_LINE=544\nACCEPTED_TRANSPORT_SIG_08_TEXT=if not OPERATOR_KEY.is_file() or OPERATOR_KEY.is_symlink(): raise BackupError('OPERATOR_KEY_MISSING')\nACCEPTED_TRANSPORT_SIG_09_LINE=545\nACCEPTED_TRANSPORT_SIG_09_TEXT=p=run(['ssh-keygen','-lf',str(OPERATOR_KEY),'-E','sha256'],timeout=30)\nACCEPTED_TRANSPORT_SIG_10_LINE=548\nACCEPTED_TRANSPORT_SIG_10_TEXT=if not m or m.group(1)!=OPERATOR_KEY_FINGERPRINT: raise BackupError('OPERATOR_KEY_FINGERPRINT_MISMATCH')\nACCEPTED_TRANSPORT_SIG_11_LINE=565\nACCEPTED_TRANSPORT_SIG_11_TEXT=def ensure_vps_known_hosts(targets):\nACCEPTED_TRANSPORT_SIG_12_LINE=570\nACCEPTED_TRANSPORT_SIG_12_TEXT=atomic_write(VPS_KNOWN_HOSTS,('\\n'.join(lines)+'\\n').encode(),0o600)\nACCEPTED_TRANSPORT_SIG_13_LINE=572\nACCEPTED_TRANSPORT_SIG_13_TEXT=def vps_ssh_argv(t, *, use_agent=False):\nACCEPTED_TRANSPORT_SIG_14_LINE=573\nACCEPTED_TRANSPORT_SIG_14_TEXT=a=[SSH,'-p',str(t['port']),'-o','BatchMode=yes','-o','StrictHostKeyChecking=yes','-o','UserKnownHostsFile='+str(VPS_KNOWN_HOSTS),'-o','ConnectTimeout=15']\nACCEPTED_TRANSPORT_SIG_15_LINE=575\nACCEPTED_TRANSPORT_SIG_15_TEXT=a += ['-o','IdentitiesOnly=no']\nACCEPTED_TRANSPORT_SIG_16_LINE=577\nACCEPTED_TRANSPORT_SIG_16_TEXT=a += ['-i',str(OPERATOR_KEY),'-o','IdentitiesOnly=yes','-o','IdentityAgent=none']\nACCEPTED_TRANSPORT_SIG_17_LINE=581\nACCEPTED_TRANSPORT_SIG_17_TEXT=def vps_run(t, remote_argv, *, input=None, timeout=300, use_agent=False, check=True):\nACCEPTED_TRANSPORT_SIG_18_LINE=583\nACCEPTED_TRANSPORT_SIG_18_TEXT=return run(vps_ssh_argv(t,use_agent=use_agent)+[remote],input=input,timeout=timeout,check=check)\nACCEPTED_TRANSPORT_SIG_19_LINE=586\nACCEPTED_TRANSPORT_SIG_19_TEXT=operator_key_fingerprint()\nACCEPTED_TRANSPORT_SIG_20_LINE=587\nACCEPTED_TRANSPORT_SIG_20_TEXT=ensure_vps_known_hosts(targets)\nACCEPTED_TRANSPORT_SIG_21_LINE=588\nACCEPTED_TRANSPORT_SIG_21_TEXT=pub=run(['ssh-keygen','-y','-f',str(OPERATOR_KEY)],timeout=30).stdout.strip()+b'\\n'\nACCEPTED_TRANSPORT_SIG_22_LINE=592\nACCEPTED_TRANSPORT_SIG_22_TEXT=probe=vps_run(t,['true'],timeout=30,use_agent=False,check=False)\nACCEPTED_TRANSPORT_SIG_23_LINE=594\nACCEPTED_TRANSPORT_SIG_23_TEXT=results[t['logical_id']]='ALREADY_OPERATOR_KEY'; continue\nACCEPTED_TRANSPORT_SIG_24_LINE=600\nACCEPTED_TRANSPORT_SIG_24_TEXT=vps_run(t,['true'],timeout=30,use_agent=False)\nACCEPTED_TRANSPORT_SIG_25_LINE=604\nACCEPTED_TRANSPORT_SIG_25_TEXT=vps_run(us,['true'],timeout=30,use_agent=False)\nACCEPTED_TRANSPORT_SIG_26_LINE=605\nACCEPTED_TRANSPORT_SIG_26_TEXT=results[us['logical_id']]='ALREADY_US_OPERATOR_KEY'\nACCEPTED_TRANSPORT_SIG_27_LINE=609\nACCEPTED_TRANSPORT_SIG_27_TEXT=p=vps_run(t,['sh','-c',command],timeout=120,use_agent=False)\nACCEPTED_TRANSPORT_SIG_28_LINE=617\nACCEPTED_TRANSPORT_SIG_28_TEXT=argv=vps_ssh_argv(t,use_agent=False)+[remote]\nACCEPTED_TRANSPORT_SIG_29_LINE=627\nACCEPTED_TRANSPORT_SIG_29_TEXT=argv=vps_ssh_argv(t,use_agent=False)+[remote]\nACCEPTED_TRANSPORT_SIG_30_LINE=664\nACCEPTED_TRANSPORT_SIG_30_TEXT=argv=vps_ssh_argv(t,use_agent=False)+[remote]\nACCEPTED_TRANSPORT_SIG_31_LINE=851\nACCEPTED_TRANSPORT_SIG_31_TEXT=if OPERATOR_KEY.exists(): p.append('root/.ssh/id_ed25519_netbird_operator')\nACCEPTED_TRANSPORT_SIG_32_LINE=852\nACCEPTED_TRANSPORT_SIG_32_TEXT=if pathlib.Path(str(OPERATOR_KEY)+'.pub').exists(): p.append('root/.ssh/id_ed25519_netbird_operator.pub')\nACCEPTED_TRANSPORT_SIG_33_LINE=868\nACCEPTED_TRANSPORT_SIG_33_TEXT=pipe_to_zstd([SSH,'-o','BatchMode=yes','-o','StrictHostKeyChecking=yes','root@'+node,remote],payload,timeout=600)\nACCEPTED_TRANSPORT_SIG_34_LINE=933\nACCEPTED_TRANSPORT_SIG_34_TEXT=print('VPS_OPERATOR_KEY_BOOTSTRAP='+json.dumps(boots,sort_keys=True,separators=(',',':')))\nVPS556R2_DECISION=CURRENT_PROD_ENTRY_DELEGATES_TO_LOCAL_COMPONENT\nVPS556R2_NEXT_GATE=READ_CURRENT_DELEGATED_COMPONENT\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-260918-INFRA-PVE1-MOLDOVA-CURRENT-PROD-CALLPATH-READONLY-556R2\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n"
|
|
}
|