1
0
Files
homelab-public-context/runtime/latest.json
T
2026-10-07 17:33:28 +00:00

39 lines
49 KiB
JSON

{
"schema_version": 1,
"channel": "homelab-runtime",
"command_id": "SUPPORT-261007-CT112-DNS-VM130-FINAL-RCA-99789R1",
"status": "OK",
"rc": 0,
"host": "pve01",
"mode": "read-only",
"component": "ct112-dns-vm130-final-rca",
"started_at_utc": "2026-10-07T17:33:19Z",
"finished_at_utc": "2026-10-07T17:33:27Z",
"reference_register_checked": true,
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
"error_register_checked": true,
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
"command_sha256": "885666c9d57f84edfa9d1fd3234f1fc6888d360c338bd60d7fd2e00a0f9bd8eb",
"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": "45a7d0df223ce5a48be093a0e3ef84cd7ce33615fa53ded2c8b7fdc3ce4e468c",
"sanitized_output_sha256": "45a7d0df223ce5a48be093a0e3ef84cd7ce33615fa53ded2c8b7fdc3ce4e468c",
"output_truncated_in_json": false,
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
"output": "CT112_DNS_VM130_FINAL_RCA=V1\nMODE=read-only\nNO_MUTATION=true\nBACKUP_V2_ACTIVE=inactive\nBACKUP_V2_RESULT=success\nBACKUP_V2_EXEC_STATUS=0\nBACKUP_V2_TIMER_ACTIVE=active\nBACKUP_V2_TIMER_ENABLED=enabled\nBACKUP_V2_LAST_TRIGGER=Wed 2026-10-07 20:05:53 MSK\nCT112_STATUS=running\nREC|CT112_CONFIG|features: nesting=1\nREC|CT112_CONFIG|rootfs: local-lvm:vm-112-disk-0,size=8G\nREC|CT112_CONFIG|unprivileged: 1\nREC|CT112_API|KEY=rootfs|VOLID_SHA256=21a1228ea539097d621b44cc86b77b3de95b0487a5e074f6644ac3ed80376ef8|OPTS_SHA256=ebbd4ffc7a6d79cb0293f44d7e93509b8e2c9feb6cf8faa8098a6d09ed8dde99\nREC|CT112_API|KEY=unprivileged|VALUE_SHA256=6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\nREC|CT112_API|KEY=features|VALUE_SHA256=9202e3e75af57ec143fd326adec10e608231ac71dd55a48ddf6b77bcb174539b\nREC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm112|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=806|legacy_age_seconds=2887672|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=2672|legacy_age_seconds=2889538|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=4429|legacy_age_seconds=2891296|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=6259|legacy_age_seconds=2893125|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=8029|legacy_age_seconds=2894896|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=9846|legacy_age_seconds=2896712|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=11569|legacy_age_seconds=2898436|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm190|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=13388|legacy_age_seconds=2900254|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=app-hbarhub|root_cause=APP_QUORUM_NOT_FRESH\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=15284|legacy_age_seconds=2902150|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=app-hbarhub|root_cause=APP_QUORUM_NOT_FRESH\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=17030|legacy_age_seconds=2903896|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=app-hbarhub|root_cause=APP_QUORUM_NOT_FRESH\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=18878|legacy_age_seconds=2905744|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=app-hbarhub|root_cause=APP_QUORUM_NOT_FRESH\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=20605|legacy_age_seconds=2907471|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=22404|legacy_age_seconds=2909270|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm170|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=24230|legacy_age_seconds=2911096|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm171|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=26024|legacy_age_seconds=2912890|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=27830|legacy_age_seconds=2914696|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=29630|legacy_age_seconds=2916496|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=31388|legacy_age_seconds=2918254|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=33230|legacy_age_seconds=2920096|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=34964|legacy_age_seconds=2921830|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=36884|legacy_age_seconds=2923750|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=38636|legacy_age_seconds=2925502|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=40370|legacy_age_seconds=2927236|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=42230|legacy_age_seconds=2929096|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=GREEN|ACTIVE_COUNT=15|ISSUE_COUNT=0|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_AUDIT_RECENT|TARGET|logical_id=vm112|kind=VM|state=FRESH|source=V2|v2_age_seconds=44048|legacy_age_seconds=2930914|replica_count=2|state_id=ct112|generation=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|BACKUP_AUDIT_RECENT|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm9130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\nREC|BACKUP_AUDIT_RECENT|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nBACKUP_AUDIT_CURRENT_RESULT=exit-code\nBACKUP_AUDIT_CURRENT_EXEC=1\nREC|BACKUP_LATEST_SUMMARY|SUMMARY|AUDIT_STATUS=OK|BACKUP_STATUS=RED|ACTIVE_COUNT=15|ISSUE_COUNT=1|CLOUD_A=OK|CLOUD_B=OK|CLOUD_B_DRILL=OK|DR_PROVEN=YES|SOURCE_OFFHOST=OK\nREC|BACKUP_LATEST_ISSUE|ISSUE|severity=HIGH|code=RPO_BREACH|logical_id=vm9130|root_cause=NO_FRESH_V2_OR_SEALED_QUORUM\nBACKUP_EXEC_SHA256=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c\nREC|CT112_SOURCE_FILE|IDX=1|BASENAME=pve282.py|SHA256=73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012|SIZE=6195\nSRC|CT112|1|26: need(core.valid_hash(expected_config) and job.get('config_sha256')==expected_config,'CT112_PLAN_CONFIG_ANCHOR')\nSRC|CT112|1|32: need(TARGET_VMID in by_id,'CT112_MISSING_FROM_ACCEPTED265')\nSRC|CT112|1|38: need(len(selected)==1,'CT112_NOT_UNIQUE')\nSRC|CT112|1|41: need(job.get('compression_dependent') is False and job.get('configured_full_cycle_fits') is True,'CT112_FULL_CYCLE_SPACE_UNPROVEN')\nSRC|CT112|1|42: disks=job.get('disks');need(type(disks) is list and len(disks)==1,'CT112_SINGLE_ROOTFS_REQUIRED')\nSRC|CT112|1|44: need(disk.get('slot')=='rootfs' and disk.get('class')=='managed-volume' and disk.get('backup_setting') in ('included','included_default_rootfs'),'CT112_MANAGED_ROOTFS_REQUIRED')\nSRC|CT112|1|46: need(type(size) is int and 0<size<=stream.MAX_BYTES and size==disk.get('configured_size_bytes'),'CT112_ROOTFS_SIZE_INVALID')\nSRC|CT112|1|59: need(rc==0,'CT112_GATE_READ_FAILED')\nSRC|CT112|1|61: except (ValueError,UnicodeError):raise old.PVEError('CT112_GATE_JSON') from None\nREC|CT112_SOURCE_FILE|IDX=2|BASENAME=wrapper.py|SHA256=84d2da3fa7c8ab1d9e15db88b6f3835be9c8815bd50ea78022c67adff2f16056|SIZE=5055\nSRC|CT112|2|6:CT_ID='guest-pve01-lxc-112'\nSRC|CT112|2|12: if spec is None or spec.loader is None: raise RuntimeError('MODULE_SPEC')\nSRC|CT112|2|33: if type(due) is not int or due<=0: raise legacy.BackupError('CT112_CADENCE')\nSRC|CT112|2|44: r=ct112.run_target(t,state_writer=legacy.write_state)\nSRC|CT112|2|47: except BaseException:\nSRC|CT112|2|48: try: legacy.write_state(CT_ID,'FAIL',reason='CT112_PIPELINE_FAILED')\nSRC|CT112|2|49: except BaseException: pass\nSRC|CT112|2|50: raise legacy.BackupError('CT112_PIPELINE_FAILED') from None\nSRC|CT112|2|56: if legacy.PART_SIZE!=536870912: raise RuntimeError('LEGACY_PART_SIZE')\nSRC|CT112|2|57: if len(legacy.REMOTES)!=13 or len({p for _,p in legacy.REMOTES})!=13: raise RuntimeError('LEGACY_REMOTES')\nSRC|CT112|2|59: if not isinstance(d,list) or len(d)<28: raise RuntimeError('LEGACY_DEFAULT_TARGET_COUNT')\nSRC|CT112|2|61: if {t.get('logical_id') for t in d if isinstance(t,dict) and t.get('green1')}!=want: raise RuntimeError('LEGACY_DEFAULT_GREEN_SET')\nSRC|CT112|2|62: if legacy._pve_dumpdir_spec('lxc')!=(0o710,100000) or legacy._pve_dumpdir_spec('qemu')!=(0o700,0): raise RuntimeError('LEGACY_DUMPDIR_SPEC')\nSRC|CT112|2|63: if legacy.GUEST266_SHA!='86433bc424d5fa5017c20f7a237c82874b02357a3283660d8a6b0039ef2bc868': raise RuntimeError('LEGACY_GUEST266_SHA')\nSRC|CT112|2|64: if legacy.P282_SHA!='73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012': raise RuntimeError('LEGACY_P282_SHA')\nSRC|CT112|2|71: if len(eff)!=29 or sum(1 for x in eff if x.get('logical_id')==CT_ID)!=1: raise RuntimeError('EFFECTIVE_TARGETS')\nSRC|CT112|2|73: if [x['logical_id'] for x in legacy_rows]!=list(LEGACY_IDS) or ct.get('vmid')!=112: raise RuntimeError('REPRESENTATIVE_PARTITION')\nSRC|CT112|2|74: if ct112.selftest() is not True: raise RuntimeError('CT112_HANDLER_SELFTEST')\nSRC|CT112|2|81: except OSError as e:\nREC|CT112_SOURCE_FILE|IDX=3|BASENAME=representative_driver.py|SHA256=b3050a8f95e6d9826a4f0786cd3ca32012b6ab10486d10e4981b50b8a0affff2|SIZE=4214\nSRC|CT112|3|25:CT112_ID='guest-pve01-lxc-112'\nSRC|CT112|3|26:REPRESENTATIVE_IDS=(CT112_ID,)+LEGACY_IDS\nSRC|CT112|3|53: return legacy, selected[CT112_ID]\nSRC|CT112|3|65: except BaseException:\nSRC|CT112|3|67: except FileNotFoundError: pass\nSRC|CT112|3|72: def write_state(logical_id,result,**kw):\nSRC|CT112|3|77: return write_state\nSRC|CT112|3|86: previous=getattr(engine,'write_state',None)\nSRC|CT112|3|89: engine.write_state=_state_writer(STATE_ROOT)\nSRC|CT112|3|93: engine.write_state=previous\nSRC|CT112|3|97: raise ContractError('CT112_RESULT_SCHEMA')\nSRC|CT112|3|98: if result.get('logical_id')!=CT112_ID or result.get('status')!='OK':\nSRC|CT112|3|99: raise ContractError('CT112_RESULT_STATUS')\nSRC|CT112|3|101: raise ContractError('CT112_RESTORE_NOT_VERIFIED')\nSRC|CT112|3|103: raise ContractError('CT112_LOCAL_PAYLOAD_REMAINS')\nSRC|CT112|3|108: raise ContractError('CT112_CALLBACK_REQUIRED')\nREC|CT112_SOURCE_FILE|IDX=4|BASENAME=ct112_handler.py|SHA256=e7b027de9a53d7219dd80c9d8e05f0eae0f53db90a53363c64dfa016815c0d00|SIZE=7923\nSRC|CT112|4|9:CT_ID='guest-pve01-lxc-112'\nSRC|CT112|4|27: if p.returncode!=0 or len(p.stdout)>4*1024*1024:raise RuntimeError('PVESH_READ_FAILED')\nSRC|CT112|4|29: except (ValueError,UnicodeError):raise RuntimeError('PVESH_JSON') from None\nSRC|CT112|4|33: if t.sha(b)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')\nSRC|CT112|4|35: except (ValueError,UnicodeError):raise RuntimeError('PLAN_REFERENCE_JSON') from None\nSRC|CT112|4|39: if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or st.st_size>1024*1024:raise RuntimeError('VZDUMP_DEFAULTS_FILE')\nSRC|CT112|4|45: if not isinstance(rows,list) or not isinstance(stores,list):raise RuntimeError('PVE_RESOURCE_SCHEMA')\nSRC|CT112|4|50: if type(vmid) is not int:raise RuntimeError('PVE_VMID_SCHEMA')\nSRC|CT112|4|57: if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or not (st.st_mode&0o111) or _sha(path)!=want:raise RuntimeError('TOOL_IDENTITY')\nSRC|CT112|4|63: if len(entries)!=13 or len({x['account_id'] for x in entries})!=13:raise RuntimeError('RCLONE_INVENTORY')\nSRC|CT112|4|64: if hashlib.sha256(binding.encode()).hexdigest()!=BINDING_FP:raise RuntimeError('RCLONE_BINDING')\nSRC|CT112|4|83: if e!=self.entries or bind!=self.binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')\nSRC|CT112|4|100:def run_target(target,state_writer=None):\nSRC|CT112|4|101: if not isinstance(target,dict) or target.get('logical_id')!=CT_ID or target.get('vmid')!=112:return (_ for _ in ()).throw(RuntimeError('CT112_DESCRIPTOR'))\nSRC|CT112|4|102: if _sha(PLAN,1024*1024)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')\nSRC|CT112|4|109: if _sha(PVESH)!=pvesh_sha:raise RuntimeError('PVESH_CHANGED')\nSRC|CT112|4|117: if e!=entries or b!=binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')\nSRC|CT112|4|127: if not isinstance(reps,list) or len(reps)!=2 or len({x.get('account_id') for x in reps})!=2:raise RuntimeError('REPLICA_PHYSICAL_INDEPENDENCE')\nSRC|CT112|4|128: if r.get('archive_cloud_restore_verified') is not True or r.get('local_payload_files_remaining')!=0:raise RuntimeError('CT112_RESTORE_CONTRACT')\nSRC|CT112|4|131: if work.exists():raise RuntimeError('CT112_WORKSPACE_CLEANUP')\nSRC|CT112|4|135: except BaseException:\nSRC|CT112|4|137: except BaseException:pass\nREC|CT112_SOURCE_FILE|IDX=5|BASENAME=pve282.py|SHA256=73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012|SIZE=6195\nSRC|CT112|5|26: need(core.valid_hash(expected_config) and job.get('config_sha256')==expected_config,'CT112_PLAN_CONFIG_ANCHOR')\nSRC|CT112|5|32: need(TARGET_VMID in by_id,'CT112_MISSING_FROM_ACCEPTED265')\nSRC|CT112|5|38: need(len(selected)==1,'CT112_NOT_UNIQUE')\nSRC|CT112|5|41: need(job.get('compression_dependent') is False and job.get('configured_full_cycle_fits') is True,'CT112_FULL_CYCLE_SPACE_UNPROVEN')\nSRC|CT112|5|42: disks=job.get('disks');need(type(disks) is list and len(disks)==1,'CT112_SINGLE_ROOTFS_REQUIRED')\nSRC|CT112|5|44: need(disk.get('slot')=='rootfs' and disk.get('class')=='managed-volume' and disk.get('backup_setting') in ('included','included_default_rootfs'),'CT112_MANAGED_ROOTFS_REQUIRED')\nSRC|CT112|5|46: need(type(size) is int and 0<size<=stream.MAX_BYTES and size==disk.get('configured_size_bytes'),'CT112_ROOTFS_SIZE_INVALID')\nSRC|CT112|5|59: need(rc==0,'CT112_GATE_READ_FAILED')\nSRC|CT112|5|61: except (ValueError,UnicodeError):raise old.PVEError('CT112_GATE_JSON') from None\nREC|CT112_SOURCE_FILE|IDX=6|BASENAME=wrapper.py|SHA256=e5b0cd618eb7925da84255a8d7e348ae513da5953937d0bce8c3a139b965c3b2|SIZE=5055\nSRC|CT112|6|6:CT_ID='guest-pve01-lxc-112'\nSRC|CT112|6|12: if spec is None or spec.loader is None: raise RuntimeError('MODULE_SPEC')\nSRC|CT112|6|33: if type(due) is not int or due<=0: raise legacy.BackupError('CT112_CADENCE')\nSRC|CT112|6|44: r=ct112.run_target(t,state_writer=legacy.write_state)\nSRC|CT112|6|47: except BaseException:\nSRC|CT112|6|48: try: legacy.write_state(CT_ID,'FAIL',reason='CT112_PIPELINE_FAILED')\nSRC|CT112|6|49: except BaseException: pass\nSRC|CT112|6|50: raise legacy.BackupError('CT112_PIPELINE_FAILED') from None\nSRC|CT112|6|56: if legacy.PART_SIZE!=536870912: raise RuntimeError('LEGACY_PART_SIZE')\nSRC|CT112|6|57: if len(legacy.REMOTES)!=13 or len({p for _,p in legacy.REMOTES})!=13: raise RuntimeError('LEGACY_REMOTES')\nSRC|CT112|6|59: if not isinstance(d,list) or len(d)<28: raise RuntimeError('LEGACY_DEFAULT_TARGET_COUNT')\nSRC|CT112|6|61: if {t.get('logical_id') for t in d if isinstance(t,dict) and t.get('green1')}!=want: raise RuntimeError('LEGACY_DEFAULT_GREEN_SET')\nSRC|CT112|6|62: if legacy._pve_dumpdir_spec('lxc')!=(0o710,100000) or legacy._pve_dumpdir_spec('qemu')!=(0o700,0): raise RuntimeError('LEGACY_DUMPDIR_SPEC')\nSRC|CT112|6|63: if legacy.GUEST266_SHA!='86433bc424d5fa5017c20f7a237c82874b02357a3283660d8a6b0039ef2bc868': raise RuntimeError('LEGACY_GUEST266_SHA')\nSRC|CT112|6|64: if legacy.P282_SHA!='73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012': raise RuntimeError('LEGACY_P282_SHA')\nSRC|CT112|6|71: if len(eff)!=29 or sum(1 for x in eff if x.get('logical_id')==CT_ID)!=1: raise RuntimeError('EFFECTIVE_TARGETS')\nSRC|CT112|6|73: if [x['logical_id'] for x in legacy_rows]!=list(LEGACY_IDS) or ct.get('vmid')!=112: raise RuntimeError('REPRESENTATIVE_PARTITION')\nSRC|CT112|6|74: if ct112.selftest() is not True: raise RuntimeError('CT112_HANDLER_SELFTEST')\nSRC|CT112|6|81: except OSError as e:\nREC|CT112_SOURCE_FILE|IDX=7|BASENAME=representative_driver.py|SHA256=b3050a8f95e6d9826a4f0786cd3ca32012b6ab10486d10e4981b50b8a0affff2|SIZE=4214\nSRC|CT112|7|25:CT112_ID='guest-pve01-lxc-112'\nSRC|CT112|7|26:REPRESENTATIVE_IDS=(CT112_ID,)+LEGACY_IDS\nSRC|CT112|7|53: return legacy, selected[CT112_ID]\nSRC|CT112|7|65: except BaseException:\nSRC|CT112|7|67: except FileNotFoundError: pass\nSRC|CT112|7|72: def write_state(logical_id,result,**kw):\nSRC|CT112|7|77: return write_state\nSRC|CT112|7|86: previous=getattr(engine,'write_state',None)\nSRC|CT112|7|89: engine.write_state=_state_writer(STATE_ROOT)\nSRC|CT112|7|93: engine.write_state=previous\nSRC|CT112|7|97: raise ContractError('CT112_RESULT_SCHEMA')\nSRC|CT112|7|98: if result.get('logical_id')!=CT112_ID or result.get('status')!='OK':\nSRC|CT112|7|99: raise ContractError('CT112_RESULT_STATUS')\nSRC|CT112|7|101: raise ContractError('CT112_RESTORE_NOT_VERIFIED')\nSRC|CT112|7|103: raise ContractError('CT112_LOCAL_PAYLOAD_REMAINS')\nSRC|CT112|7|108: raise ContractError('CT112_CALLBACK_REQUIRED')\nREC|CT112_SOURCE_FILE|IDX=8|BASENAME=ct112_handler.py|SHA256=e7b027de9a53d7219dd80c9d8e05f0eae0f53db90a53363c64dfa016815c0d00|SIZE=7923\nSRC|CT112|8|9:CT_ID='guest-pve01-lxc-112'\nSRC|CT112|8|27: if p.returncode!=0 or len(p.stdout)>4*1024*1024:raise RuntimeError('PVESH_READ_FAILED')\nSRC|CT112|8|29: except (ValueError,UnicodeError):raise RuntimeError('PVESH_JSON') from None\nSRC|CT112|8|33: if t.sha(b)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')\nSRC|CT112|8|35: except (ValueError,UnicodeError):raise RuntimeError('PLAN_REFERENCE_JSON') from None\nSRC|CT112|8|39: if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or st.st_size>1024*1024:raise RuntimeError('VZDUMP_DEFAULTS_FILE')\nSRC|CT112|8|45: if not isinstance(rows,list) or not isinstance(stores,list):raise RuntimeError('PVE_RESOURCE_SCHEMA')\nSRC|CT112|8|50: if type(vmid) is not int:raise RuntimeError('PVE_VMID_SCHEMA')\nSRC|CT112|8|57: if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or not (st.st_mode&0o111) or _sha(path)!=want:raise RuntimeError('TOOL_IDENTITY')\nSRC|CT112|8|63: if len(entries)!=13 or len({x['account_id'] for x in entries})!=13:raise RuntimeError('RCLONE_INVENTORY')\nSRC|CT112|8|64: if hashlib.sha256(binding.encode()).hexdigest()!=BINDING_FP:raise RuntimeError('RCLONE_BINDING')\nSRC|CT112|8|83: if e!=self.entries or bind!=self.binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')\nSRC|CT112|8|100:def run_target(target,state_writer=None):\nSRC|CT112|8|101: if not isinstance(target,dict) or target.get('logical_id')!=CT_ID or target.get('vmid')!=112:return (_ for _ in ()).throw(RuntimeError('CT112_DESCRIPTOR'))\nSRC|CT112|8|102: if _sha(PLAN,1024*1024)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')\nSRC|CT112|8|109: if _sha(PVESH)!=pvesh_sha:raise RuntimeError('PVESH_CHANGED')\nSRC|CT112|8|117: if e!=entries or b!=binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')\nSRC|CT112|8|127: if not isinstance(reps,list) or len(reps)!=2 or len({x.get('account_id') for x in reps})!=2:raise RuntimeError('REPLICA_PHYSICAL_INDEPENDENCE')\nSRC|CT112|8|128: if r.get('archive_cloud_restore_verified') is not True or r.get('local_payload_files_remaining')!=0:raise RuntimeError('CT112_RESTORE_CONTRACT')\nSRC|CT112|8|131: if work.exists():raise RuntimeError('CT112_WORKSPACE_CLEANUP')\nSRC|CT112|8|135: except BaseException:\nSRC|CT112|8|137: except BaseException:pass\nREC|CT112_SOURCE_FILE|IDX=9|BASENAME=pve282.py|SHA256=73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012|SIZE=6195\nSRC|CT112|9|26: need(core.valid_hash(expected_config) and job.get('config_sha256')==expected_config,'CT112_PLAN_CONFIG_ANCHOR')\nSRC|CT112|9|32: need(TARGET_VMID in by_id,'CT112_MISSING_FROM_ACCEPTED265')\nSRC|CT112|9|38: need(len(selected)==1,'CT112_NOT_UNIQUE')\nSRC|CT112|9|41: need(job.get('compression_dependent') is False and job.get('configured_full_cycle_fits') is True,'CT112_FULL_CYCLE_SPACE_UNPROVEN')\nSRC|CT112|9|42: disks=job.get('disks');need(type(disks) is list and len(disks)==1,'CT112_SINGLE_ROOTFS_REQUIRED')\nSRC|CT112|9|44: need(disk.get('slot')=='rootfs' and disk.get('class')=='managed-volume' and disk.get('backup_setting') in ('included','included_default_rootfs'),'CT112_MANAGED_ROOTFS_REQUIRED')\nSRC|CT112|9|46: need(type(size) is int and 0<size<=stream.MAX_BYTES and size==disk.get('configured_size_bytes'),'CT112_ROOTFS_SIZE_INVALID')\nSRC|CT112|9|59: need(rc==0,'CT112_GATE_READ_FAILED')\nSRC|CT112|9|61: except (ValueError,UnicodeError):raise old.PVEError('CT112_GATE_JSON') from None\nREC|CT112_SOURCE_FILE|IDX=10|BASENAME=wrapper.py|SHA256=d58b8bc842ac3ba3f1f9cf3dc844dd1445c196e0e93fda8ce5f4a0fd18f2e115|SIZE=5055\nSRC|CT112|10|6:CT_ID='guest-pve01-lxc-112'\nSRC|CT112|10|12: if spec is None or spec.loader is None: raise RuntimeError('MODULE_SPEC')\nSRC|CT112|10|33: if type(due) is not int or due<=0: raise legacy.BackupError('CT112_CADENCE')\nSRC|CT112|10|44: r=ct112.run_target(t,state_writer=legacy.write_state)\nSRC|CT112|10|47: except BaseException:\nSRC|CT112|10|48: try: legacy.write_state(CT_ID,'FAIL',reason='CT112_PIPELINE_FAILED')\nSRC|CT112|10|49: except BaseException: pass\nSRC|CT112|10|50: raise legacy.BackupError('CT112_PIPELINE_FAILED') from None\nSRC|CT112|10|56: if legacy.PART_SIZE!=536870912: raise RuntimeError('LEGACY_PART_SIZE')\nSRC|CT112|10|57: if len(legacy.REMOTES)!=13 or len({p for _,p in legacy.REMOTES})!=13: raise RuntimeError('LEGACY_REMOTES')\nSRC|CT112|10|59: if not isinstance(d,list) or len(d)<28: raise RuntimeError('LEGACY_DEFAULT_TARGET_COUNT')\nSRC|CT112|10|61: if {t.get('logical_id') for t in d if isinstance(t,dict) and t.get('green1')}!=want: raise RuntimeError('LEGACY_DEFAULT_GREEN_SET')\nSRC|CT112|10|62: if legacy._pve_dumpdir_spec('lxc')!=(0o710,100000) or legacy._pve_dumpdir_spec('qemu')!=(0o700,0): raise RuntimeError('LEGACY_DUMPDIR_SPEC')\nSRC|CT112|10|63: if legacy.GUEST266_SHA!='86433bc424d5fa5017c20f7a237c82874b02357a3283660d8a6b0039ef2bc868': raise RuntimeError('LEGACY_GUEST266_SHA')\nSRC|CT112|10|64: if legacy.P282_SHA!='73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012': raise RuntimeError('LEGACY_P282_SHA')\nSRC|CT112|10|71: if len(eff)!=29 or sum(1 for x in eff if x.get('logical_id')==CT_ID)!=1: raise RuntimeError('EFFECTIVE_TARGETS')\nSRC|CT112|10|73: if [x['logical_id'] for x in legacy_rows]!=list(LEGACY_IDS) or ct.get('vmid')!=112: raise RuntimeError('REPRESENTATIVE_PARTITION')\nSRC|CT112|10|74: if ct112.selftest() is not True: raise RuntimeError('CT112_HANDLER_SELFTEST')\nSRC|CT112|10|81: except OSError as e:\nREC|CT112_SOURCE_FILE|IDX=11|BASENAME=representative_driver.py|SHA256=b3050a8f95e6d9826a4f0786cd3ca32012b6ab10486d10e4981b50b8a0affff2|SIZE=4214\nSRC|CT112|11|25:CT112_ID='guest-pve01-lxc-112'\nSRC|CT112|11|26:REPRESENTATIVE_IDS=(CT112_ID,)+LEGACY_IDS\nSRC|CT112|11|53: return legacy, selected[CT112_ID]\nSRC|CT112|11|65: except BaseException:\nSRC|CT112|11|67: except FileNotFoundError: pass\nSRC|CT112|11|72: def write_state(logical_id,result,**kw):\nSRC|CT112|11|77: return write_state\nSRC|CT112|11|86: previous=getattr(engine,'write_state',None)\nSRC|CT112|11|89: engine.write_state=_state_writer(STATE_ROOT)\nSRC|CT112|11|93: engine.write_state=previous\nSRC|CT112|11|97: raise ContractError('CT112_RESULT_SCHEMA')\nSRC|CT112|11|98: if result.get('logical_id')!=CT112_ID or result.get('status')!='OK':\nSRC|CT112|11|99: raise ContractError('CT112_RESULT_STATUS')\nSRC|CT112|11|101: raise ContractError('CT112_RESTORE_NOT_VERIFIED')\nSRC|CT112|11|103: raise ContractError('CT112_LOCAL_PAYLOAD_REMAINS')\nSRC|CT112|11|108: raise ContractError('CT112_CALLBACK_REQUIRED')\nREC|CT112_SOURCE_FILE|IDX=12|BASENAME=ct112_handler.py|SHA256=1bad56934074d19bd17ec71471d562b3f3d1d4c2d8fdfbad1897048b50c09c06|SIZE=9799\nSRC|CT112|12|9:CT_ID='guest-pve01-lxc-112'\nSRC|CT112|12|27: if p.returncode!=0 or len(p.stdout)>4*1024*1024:raise RuntimeError('PVESH_READ_FAILED')\nSRC|CT112|12|29: except (ValueError,UnicodeError):raise RuntimeError('PVESH_JSON') from None\nSRC|CT112|12|33: if t.sha(b)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')\nSRC|CT112|12|35: except (ValueError,UnicodeError):raise RuntimeError('PLAN_REFERENCE_JSON') from None\nSRC|CT112|12|39: if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or st.st_size>1024*1024:raise RuntimeError('VZDUMP_DEFAULTS_FILE')\nSRC|CT112|12|45: if not isinstance(rows,list) or not isinstance(stores,list):raise RuntimeError('PVE_RESOURCE_SCHEMA')\nSRC|CT112|12|50: if type(vmid) is not int:raise RuntimeError('PVE_VMID_SCHEMA')\nSRC|CT112|12|57: if type(plan) is not dict or plan.get('schema_version')!=1 or plan.get('node')!='pve01':raise RuntimeError('CT112_PLAN_SCHEMA')\nSRC|CT112|12|59: if type(jobs) is not list or type(plan.get('local_guest_count')) is not int or plan.get('local_guest_count')!=len(jobs):raise RuntimeError('CT112_PLAN_SCHEMA')\nSRC|CT112|12|60: if plan.get('global_blockers')!=[]:raise RuntimeError('CT112_GLOBAL_BLOCKERS')\nSRC|CT112|12|62: if len(vmids)!=len(jobs) or len(vmids)!=len(set(vmids)):raise RuntimeError('CT112_PLAN_MEMBERSHIP')\nSRC|CT112|12|64: if len(matches)!=1:raise RuntimeError('CT112_PLAN_MEMBERSHIP')\nSRC|CT112|12|67: if job.get('node')!='pve01' or job.get('type')!='lxc':raise RuntimeError('CT112_PLAN_IDENTITY')\nSRC|CT112|12|68: if job.get('coverage_eligible') is not True or job.get('blockers')!=[]:raise RuntimeError('CT112_PLAN_BLOCKED')\nSRC|CT112|12|69: if job.get('compression_dependent') is not False or job.get('configured_full_cycle_fits') is not True:raise RuntimeError('CT112_CAPACITY_POLICY')\nSRC|CT112|12|70: if type(job.get('configured_archive_bound_bytes')) is not int or job.get('archive_cap_bytes')!=job.get('configured_archive_bound_bytes'):raise RuntimeError('CT112_CAPACITY_BOUND')\nSRC|CT112|12|71: if expected_config is not None and job.get('config_sha256')!=expected_config:raise RuntimeError('CT112_CONFIG_DRIFT')\nSRC|CT112|12|76: if type(pair) is not tuple or len(pair)!=2 or any(type(n) is not int for n in pair):raise RuntimeError('PVE_IDMAP_HOST_MAPPING_SCHEMA')\nSRC|CT112|12|84: if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or not (st.st_mode&0o111) or _sha(path)!=want:raise RuntimeError('TOOL_IDENTITY')\nSRC|CT112|12|90: if len(entries)!=13 or len({x['account_id'] for x in entries})!=13:raise RuntimeError('RCLONE_INVENTORY')\nSRC|CT112|12|91: if hashlib.sha256(binding.encode()).hexdigest()!=BINDING_FP:raise RuntimeError('RCLONE_BINDING')\nSRC|CT112|12|110: if e!=self.entries or bind!=self.binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')\nSRC|CT112|12|127:def run_target(target,state_writer=None):\nSRC|CT112|12|128: if not isinstance(target,dict) or target.get('logical_id')!=CT_ID or target.get('vmid')!=112:return (_ for _ in ()).throw(RuntimeError('CT112_DESCRIPTOR'))\nSRC|CT112|12|129: if _sha(PLAN,1024*1024)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')\nSRC|CT112|12|137: if _sha(PVESH)!=pvesh_sha:raise RuntimeError('PVESH_CHANGED')\nSRC|CT112|12|146: if e!=entries or b!=binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')\nSRC|CT112|12|156: if not isinstance(reps,list) or len(reps)!=2 or len({x.get('account_id') for x in reps})!=2:raise RuntimeError('REPLICA_PHYSICAL_INDEPENDENCE')\nSRC|CT112|12|157: if r.get('archive_cloud_restore_verified') is not True or r.get('local_payload_files_remaining')!=0:raise RuntimeError('CT112_RESTORE_CONTRACT')\nSRC|CT112|12|160: if work.exists():raise RuntimeError('CT112_WORKSPACE_CLEANUP')\nSRC|CT112|12|164: except BaseException:\nSRC|CT112|12|166: except BaseException:pass\nREC|CT112_SOURCE_FILE|IDX=13|BASENAME=representative_driver.py|SHA256=b3050a8f95e6d9826a4f0786cd3ca32012b6ab10486d10e4981b50b8a0affff2|SIZE=4214\nSRC|CT112|13|25:CT112_ID='guest-pve01-lxc-112'\nSRC|CT112|13|26:REPRESENTATIVE_IDS=(CT112_ID,)+LEGACY_IDS\nSRC|CT112|13|53: return legacy, selected[CT112_ID]\nSRC|CT112|13|65: except BaseException:\nSRC|CT112|13|67: except FileNotFoundError: pass\nSRC|CT112|13|72: def write_state(logical_id,result,**kw):\nSRC|CT112|13|77: return write_state\nSRC|CT112|13|86: previous=getattr(engine,'write_state',None)\nSRC|CT112|13|89: engine.write_state=_state_writer(STATE_ROOT)\nSRC|CT112|13|93: engine.write_state=previous\nSRC|CT112|13|97: raise ContractError('CT112_RESULT_SCHEMA')\nSRC|CT112|13|98: if result.get('logical_id')!=CT112_ID or result.get('status')!='OK':\nSRC|CT112|13|99: raise ContractError('CT112_RESULT_STATUS')\nSRC|CT112|13|101: raise ContractError('CT112_RESTORE_NOT_VERIFIED')\nSRC|CT112|13|103: raise ContractError('CT112_LOCAL_PAYLOAD_REMAINS')\nSRC|CT112|13|108: raise ContractError('CT112_CALLBACK_REQUIRED')\nREC|CT112_SOURCE_FILE|IDX=14|BASENAME=pve282.py|SHA256=73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012|SIZE=6195\nSRC|CT112|14|26: need(core.valid_hash(expected_config) and job.get('config_sha256')==expected_config,'CT112_PLAN_CONFIG_ANCHOR')\nSRC|CT112|14|32: need(TARGET_VMID in by_id,'CT112_MISSING_FROM_ACCEPTED265')\nSRC|CT112|14|38: need(len(selected)==1,'CT112_NOT_UNIQUE')\nSRC|CT112|14|41: need(job.get('compression_dependent') is False and job.get('configured_full_cycle_fits') is True,'CT112_FULL_CYCLE_SPACE_UNPROVEN')\nSRC|CT112|14|42: disks=job.get('disks');need(type(disks) is list and len(disks)==1,'CT112_SINGLE_ROOTFS_REQUIRED')\nSRC|CT112|14|44: need(disk.get('slot')=='rootfs' and disk.get('class')=='managed-volume' and disk.get('backup_setting') in ('included','included_default_rootfs'),'CT112_MANAGED_ROOTFS_REQUIRED')\nSRC|CT112|14|46: need(type(size) is int and 0<size<=stream.MAX_BYTES and size==disk.get('configured_size_bytes'),'CT112_ROOTFS_SIZE_INVALID')\nSRC|CT112|14|59: need(rc==0,'CT112_GATE_READ_FAILED')\nSRC|CT112|14|61: except (ValueError,UnicodeError):raise old.PVEError('CT112_GATE_JSON') from None\nREC|CT112_SOURCE_FILE|IDX=15|BASENAME=pve282.py|SHA256=73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012|SIZE=6195\nSRC|CT112|15|26: need(core.valid_hash(expected_config) and job.get('config_sha256')==expected_config,'CT112_PLAN_CONFIG_ANCHOR')\nSRC|CT112|15|32: need(TARGET_VMID in by_id,'CT112_MISSING_FROM_ACCEPTED265')\nSRC|CT112|15|38: need(len(selected)==1,'CT112_NOT_UNIQUE')\nSRC|CT112|15|41: need(job.get('compression_dependent') is False and job.get('configured_full_cycle_fits') is True,'CT112_FULL_CYCLE_SPACE_UNPROVEN')\nSRC|CT112|15|42: disks=job.get('disks');need(type(disks) is list and len(disks)==1,'CT112_SINGLE_ROOTFS_REQUIRED')\nSRC|CT112|15|44: need(disk.get('slot')=='rootfs' and disk.get('class')=='managed-volume' and disk.get('backup_setting') in ('included','included_default_rootfs'),'CT112_MANAGED_ROOTFS_REQUIRED')\nSRC|CT112|15|46: need(type(size) is int and 0<size<=stream.MAX_BYTES and size==disk.get('configured_size_bytes'),'CT112_ROOTFS_SIZE_INVALID')\nSRC|CT112|15|59: need(rc==0,'CT112_GATE_READ_FAILED')\nSRC|CT112|15|61: except (ValueError,UnicodeError):raise old.PVEError('CT112_GATE_JSON') from None\nREC|CT112_SOURCE_FILE|IDX=16|BASENAME=wrapper.py|SHA256=8e6ad619c39105d9c238c0a9f0bd9265dba941f65729cbe03e9f1acbd90ba6cd|SIZE=5055\nSRC|CT112|16|6:CT_ID='guest-pve01-lxc-112'\nSRC|CT112|16|12: if spec is None or spec.loader is None: raise RuntimeError('MODULE_SPEC')\nSRC|CT112|16|33: if type(due) is not int or due<=0: raise legacy.BackupError('CT112_CADENCE')\nSRC|CT112|16|44: r=ct112.run_target(t,state_writer=legacy.write_state)\nSRC|CT112|16|47: except BaseException:\nSRC|CT112|16|48: try: legacy.write_state(CT_ID,'FAIL',reason='CT112_PIPELINE_FAILED')\nSRC|CT112|16|49: except BaseException: pass\nSRC|CT112|16|50: raise legacy.BackupError('CT112_PIPELINE_FAILED') from None\nSRC|CT112|16|56: if legacy.PART_SIZE!=536870912: raise RuntimeError('LEGACY_PART_SIZE')\nSRC|CT112|16|57: if len(legacy.REMOTES)!=13 or len({p for _,p in legacy.REMOTES})!=13: raise RuntimeError('LEGACY_REMOTES')\nSRC|CT112|16|59: if not isinstance(d,list) or len(d)<28: raise RuntimeError('LEGACY_DEFAULT_TARGET_COUNT')\nSRC|CT112|16|61: if {t.get('logical_id') for t in d if isinstance(t,dict) and t.get('green1')}!=want: raise RuntimeError('LEGACY_DEFAULT_GREEN_SET')\nSRC|CT112|16|62: if legacy._pve_dumpdir_spec('lxc')!=(0o710,100000) or legacy._pve_dumpdir_spec('qemu')!=(0o700,0): raise RuntimeError('LEGACY_DUMPDIR_SPEC')\nSRC|CT112|16|63: if legacy.GUEST266_SHA!='86433bc424d5fa5017c20f7a237c82874b02357a3283660d8a6b0039ef2bc868': raise RuntimeError('LEGACY_GUEST266_SHA')\nSRC|CT112|16|64: if legacy.P282_SHA!='73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012': raise RuntimeError('LEGACY_P282_SHA')\nSRC|CT112|16|71: if len(eff)!=29 or sum(1 for x in eff if x.get('logical_id')==CT_ID)!=1: raise RuntimeError('EFFECTIVE_TARGETS')\nSRC|CT112|16|73: if [x['logical_id'] for x in legacy_rows]!=list(LEGACY_IDS) or ct.get('vmid')!=112: raise RuntimeError('REPRESENTATIVE_PARTITION')\nSRC|CT112|16|74: if ct112.selftest() is not True: raise RuntimeError('CT112_HANDLER_SELFTEST')\nSRC|CT112|16|81: except OSError as e:\nREC|CT112_SOURCE_FILE|IDX=17|BASENAME=representative_driver.py|SHA256=b3050a8f95e6d9826a4f0786cd3ca32012b6ab10486d10e4981b50b8a0affff2|SIZE=4214\nSRC|CT112|17|25:CT112_ID='guest-pve01-lxc-112'\nSRC|CT112|17|26:REPRESENTATIVE_IDS=(CT112_ID,)+LEGACY_IDS\nSRC|CT112|17|53: return legacy, selected[CT112_ID]\nSRC|CT112|17|65: except BaseException:\nSRC|CT112|17|67: except FileNotFoundError: pass\nSRC|CT112|17|72: def write_state(logical_id,result,**kw):\nSRC|CT112|17|77: return write_state\nSRC|CT112|17|86: previous=getattr(engine,'write_state',None)\nSRC|CT112|17|89: engine.write_state=_state_writer(STATE_ROOT)\nSRC|CT112|17|93: engine.write_state=previous\nSRC|CT112|17|97: raise ContractError('CT112_RESULT_SCHEMA')\nSRC|CT112|17|98: if result.get('logical_id')!=CT112_ID or result.get('status')!='OK':\nSRC|CT112|17|99: raise ContractError('CT112_RESULT_STATUS')\nSRC|CT112|17|101: raise ContractError('CT112_RESTORE_NOT_VERIFIED')\nSRC|CT112|17|103: raise ContractError('CT112_LOCAL_PAYLOAD_REMAINS')\nSRC|CT112|17|108: raise ContractError('CT112_CALLBACK_REQUIRED')\nREC|CT112_SOURCE_FILE|IDX=18|BASENAME=ct112_handler.py|SHA256=5d42a45a1a21c38f71d9ae805e831d2ed8dd24b111ad5972b1fd6c01f909e689|SIZE=9461\nSRC|CT112|18|9:CT_ID='guest-pve01-lxc-112'\nSRC|CT112|18|27: if p.returncode!=0 or len(p.stdout)>4*1024*1024:raise RuntimeError('PVESH_READ_FAILED')\nSRC|CT112|18|29: except (ValueError,UnicodeError):raise RuntimeError('PVESH_JSON') from None\nSRC|CT112|18|33: if t.sha(b)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')\nSRC|CT112|18|35: except (ValueError,UnicodeError):raise RuntimeError('PLAN_REFERENCE_JSON') from None\nSRC|CT112|18|39: if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or st.st_size>1024*1024:raise RuntimeError('VZDUMP_DEFAULTS_FILE')\nSRC|CT112|18|45: if not isinstance(rows,list) or not isinstance(stores,list):raise RuntimeError('PVE_RESOURCE_SCHEMA')\nSRC|CT112|18|50: if type(vmid) is not int:raise RuntimeError('PVE_VMID_SCHEMA')\nSRC|CT112|18|57: if type(plan) is not dict or plan.get('schema_version')!=1 or plan.get('node')!='pve01':raise RuntimeError('CT112_PLAN_SCHEMA')\nSRC|CT112|18|59: if type(jobs) is not list or type(plan.get('local_guest_count')) is not int or plan.get('local_guest_count')!=len(jobs):raise RuntimeError('CT112_PLAN_SCHEMA')\nSRC|CT112|18|60: if plan.get('global_blockers')!=[]:raise RuntimeError('CT112_GLOBAL_BLOCKERS')\nSRC|CT112|18|62: if len(vmids)!=len(jobs) or len(vmids)!=len(set(vmids)):raise RuntimeError('CT112_PLAN_MEMBERSHIP')\nSRC|CT112|18|64: if len(matches)!=1:raise RuntimeError('CT112_PLAN_MEMBERSHIP')\nSRC|CT112|18|67: if job.get('node')!='pve01' or job.get('type')!='lxc':raise RuntimeError('CT112_PLAN_IDENTITY')\nSRC|CT112|18|68: if job.get('coverage_eligible') is not True or job.get('blockers')!=[]:raise RuntimeError('CT112_PLAN_BLOCKED')\nSRC|CT112|18|69: if job.get('compression_dependent') is not False or job.get('configured_full_cycle_fits') is not True:raise RuntimeError('CT112_CAPACITY_POLICY')\nSRC|CT112|18|70: if type(job.get('configured_archive_bound_bytes')) is not int or job.get('archive_cap_bytes')!=job.get('configured_archive_bound_bytes'):raise RuntimeError('CT112_CAPACITY_BOUND')\nSRC|CT112|18|71: if expected_config is not None and job.get('config_sha256')!=expected_config:raise RuntimeError('CT112_CONFIG_DRIFT')\nSRC|CT112|18|76: if not stat.S_ISREG(st.st_mode) or st.st_uid!=0 or not (st.st_mode&0o111) or _sha(path)!=want:raise RuntimeError('TOOL_IDENTITY')\nSRC|CT112|18|82: if len(entries)!=13 or len({x['account_id'] for x in entries})!=13:raise RuntimeError('RCLONE_INVENTORY')\nSRC|CT112|18|83: if hashlib.sha256(binding.encode()).hexdigest()!=BINDING_FP:raise RuntimeError('RCLONE_BINDING')\nSRC|CT112|18|102: if e!=self.entries or bind!=self.binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')\nSRC|CT112|18|119:def run_target(target,state_writer=None):\nSRC|CT112|18|120: if not isinstance(target,dict) or target.get('logical_id')!=CT_ID or target.get('vmid')!=112:return (_ for _ in ()).throw(RuntimeError('CT112_DESCRIPTOR'))\nSRC|CT112|18|121: if _sha(PLAN,1024*1024)!=PLAN_SHA:raise RuntimeError('PLAN_REFERENCE_IDENTITY')\nSRC|CT112|18|129: if _sha(PVESH)!=pvesh_sha:raise RuntimeError('PVESH_CHANGED')\nSRC|CT112|18|138: if e!=entries or b!=binding:raise RuntimeError('RCLONE_SEMANTIC_DRIFT')\nSRC|CT112|18|148: if not isinstance(reps,list) or len(reps)!=2 or len({x.get('account_id') for x in reps})!=2:raise RuntimeError('REPLICA_PHYSICAL_INDEPENDENCE')\nSRC|CT112|18|149: if r.get('archive_cloud_restore_verified') is not True or r.get('local_payload_files_remaining')!=0:raise RuntimeError('CT112_RESTORE_CONTRACT')\nSRC|CT112|18|152: if work.exists():raise RuntimeError('CT112_WORKSPACE_CLEANUP')\nSRC|CT112|18|156: except BaseException:\nSRC|CT112|18|158: except BaseException:pass\nREC|CT112_SOURCE_FILE|IDX=19|BASENAME=pve282.py|SHA256=73c6cb7773eb8e82d1e7ed5ab4733b4afb88f74ae69c09125d0378d6e480e012|SIZE=6195\nSRC|CT112|19|26: need(core.valid_hash(expected_config) and job.get('config_sha256')==expected_config,'CT112_PLAN_CONFIG_ANCHOR')\nSRC|CT112|19|32: need(TARGET_VMID in by_id,'CT112_MISSING_FROM_ACCEPTED265')\nSRC|CT112|19|38: need(len(selected)==1,'CT112_NOT_UNIQUE')\nSRC|CT112|19|41: need(job.get('compression_dependent') is False and job.get('configured_full_cycle_fits') is True,'CT112_FULL_CYCLE_SPACE_UNPROVEN')\nSRC|CT112|19|42: disks=job.get('disks');need(type(disks) is list and len(disks)==1,'CT112_SINGLE_ROOTFS_REQUIRED')\nSRC|CT112|19|44: need(disk.get('slot')=='rootfs' and disk.get('class')=='managed-volume' and disk.get('backup_setting') in ('included','included_default_rootfs'),'CT112_MANAGED_ROOTFS_REQUIRED')\nSRC|CT112|19|46: need(type(size) is int and 0<size<=stream.MAX_BYTES and size==disk.get('configured_size_bytes'),'CT112_ROOTFS_SIZE_INVALID')\nSRC|CT112|19|59: need(rc==0,'CT112_GATE_READ_FAILED')\nSRC|CT112|19|61: except (ValueError,UnicodeError):raise old.PVEError('CT112_GATE_JSON') from None\nREC|CT112_SOURCE_FILE|IDX=20|BASENAME=wrapper.py|SHA256=ed04b2634fcba72bdf07811135aed8fd609e849afcde456d433f305be5bb956a|SIZE=4099\nSRC|CT112|20|6:CT_ID='guest-pve01-lxc-112'\nSRC|CT112|20|12: if spec is None or spec.loader is None: raise RuntimeError('MODULE_SPEC')\nSRC|CT112|20|33: if type(due) is not int or due<=0: raise legacy.BackupError('CT112_CADENCE')\nSRC|CT112|20|44: r=ct112.run_target(t,state_writer=legacy.write_state)\nSRC|CT112|20|47: except BaseException:\nSRC|CT112|20|48: try: legacy.write_state(CT_ID,'FAIL',reason='CT112_PIPELINE_FAILED')\nSRC|CT112|20|49: except BaseException: pass\nSRC|CT112|20|50: raise legacy.BackupError('CT112_PIPELINE_FAILED') from None\nSRC|CT112|20|57: if rc!=0: raise RuntimeError('LEGACY_SELFTEST')\nSRC|CT112|20|59: if len(eff)!=29 or sum(1 for x in eff if x.get('logical_id')==CT_ID)!=1: raise RuntimeError('EFFECTIVE_TARGETS')\nSRC|CT112|20|61: if [x['logical_id'] for x in legacy_rows]!=list(LEGACY_IDS) or ct.get('vmid')!=112: raise RuntimeError('REPRESENTATIVE_PARTITION')\nSRC|CT112|20|62: if ct112.selftest() is not True: raise RuntimeError('CT112_HANDLER_SELFTEST')\nSRC|CT112|20|69: except OSError as e:\nCT112_SOURCE_FILE_COUNT=20\nREC|CT112_STATE_FILE|IDX=1|BASENAME=ct112.json|PATH_SHA256=4650ea76820591a6e992aec1b18082b7e81a1ddb2613556f7c8139c0036ec824|SHA256=64f302f9156d0fd91c340023caf8f003810b8a66c84d446dccc063cbbb01a8cd|SIZE=609\nREC|CT112_STATE_FIELD|IDX=1|KEY=logical_id|VALUE=ct112\nREC|CT112_STATE_FIELD|IDX=1|KEY=result|VALUE=SUCCESS\nREC|CT112_STATE_FIELD|IDX=1|KEY=last_success_epoch|VALUE=1791348739\nREC|CT112_STATE_FIELD|IDX=1|KEY=last_attempt_epoch|VALUE=1791348739\nREC|CT112_STATE_FIELD|IDX=1|KEY=generation|VALUE=v2-ct112-20261007T045109Z-ce9503fc59c5\nREC|CT112_STATE_FILE|IDX=2|BASENAME=guest-pve01-lxc-112.json|PATH_SHA256=5211dfc0645d177de3ac4e85db86b9e305060b84bbebcf62f0aa6aa8b88b13ca|SHA256=b737b8c81c6e16f480c8227f0645e5236e412cf22de0da6af83ff6d6dc37e4bb|SIZE=845\nREC|CT112_STATE_FIELD|IDX=2|KEY=logical_id|VALUE=guest-pve01-lxc-112\nREC|CT112_STATE_FIELD|IDX=2|KEY=result|VALUE=FAIL\nREC|CT112_STATE_FIELD|IDX=2|KEY=reason|VALUE=CT112_PIPELINE_FAILED\nREC|CT112_STATE_FIELD|IDX=2|KEY=last_success_epoch|VALUE=1790297001\nREC|CT112_STATE_FIELD|IDX=2|KEY=last_attempt_epoch|VALUE=1791375479\nCT112_STATE_FILE_COUNT=2\nREC|ISSUE|BACKUP_NOT_GREEN\nREC|ISSUE|BACKUP_ISSUE_PRESENT\nDNS_NS_SHA256=876800f2ea41ad454f6f8fa25eac5fc4ef898632dd7f6cc6f0093c1848498853\nREC|DNS_LXC_IP|VMID=110|NODE=pve01|IDX=1|IP_SHA256=9ebe3b0dd23e6c9ec496e66c9839ed8f735dcb0a28ba79109f6c906bfd4e0b3e|MATCH_NS=false\nREC|DNS_LXC_IP|VMID=111|NODE=pve02|IDX=1|IP_SHA256=69dcd1b083ef51977c3fae0424def26fc5f0d590c28b53735f2db42667916b50|MATCH_NS=false\nREC|DNS_LXC_IP|VMID=112|NODE=pve01|IDX=1|IP_SHA256=93c04616b24b22434ca85ae6520617ebcdbfdd82da63c7611397e6d2b8add93c|MATCH_NS=false\nREC|DNS_LXC_IP|VMID=113|NODE=pve02|IDX=1|IP_SHA256=1d87ab378dbfd41bf18b819fd8ed963783f05c4523af0b7302ac8ddb3d09e596|MATCH_NS=false\n"
}