CHAT_OUTPUT_BEGIN
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
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=37ce436636242efdcf203b90c1a92dfa69ada981da23f62e14b4602369702589
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
RESULT_CONTRACT_VALID=true
RESULT_CONTRACT_STATUS=NOT_APPLICABLE
RESULT_CONTRACT_ERROR=NONE
COMMAND_RC=0
CHANGES_MADE=false
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=883672d81581efc0c1d92a09229e4b23c9e7899d7bd8e2f7a4a5a768e0902898
SANITIZED_OUTPUT_SHA256=0e12c81ca87dc2aca47e61e36d9079f2d2971793fe68f8a3f4c1dae3974247cb
OUTPUT_BEGIN
ERROR_REGISTER_CHECK=OK
REFERENCE_CHECK=OK
AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED
PROD_ENTRY_PRESENT=True
PROD_ENTRY_IS_SYMLINK=False
PROD_ENTRY_RESOLVED=/usr/local/sbin/homelab-backup-v2
PROD_ENTRY_SIZE=1656
PROD_ENTRY_SHA256=5077444065c732451cb84898680f62361b21a24ef9eb4f191253e82ead524ea2
PROD_CALLPATH_MATCH_LINE_COUNT=3
PROD_CALLPATH_MATCH_LINES=3,4,24
PROD_CALLPATH_CONTEXT_01_RANGE=1-11
PROD_CALLPATH_CONTEXT_01_LINE_0001=#!/usr/bin/python3
PROD_CALLPATH_CONTEXT_01_LINE_0002=from __future__ import annotations
PROD_CALLPATH_CONTEXT_01_LINE_0003=import hashlib, importlib, os, pathlib, stat, sys
PROD_CALLPATH_CONTEXT_01_LINE_0004=ACCEPTED=pathlib.Path('/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b')
PROD_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...
PROD_CALLPATH_CONTEXT_01_LINE_0006=def sha(p):
PROD_CALLPATH_CONTEXT_01_LINE_0007=h=hashlib.sha256()
PROD_CALLPATH_CONTEXT_01_LINE_0008=with open(p,'rb',buffering=0) as f:
PROD_CALLPATH_CONTEXT_01_LINE_0009=while True:
PROD_CALLPATH_CONTEXT_01_LINE_0010=b=f.read(1048576)
PROD_CALLPATH_CONTEXT_01_LINE_0011=if not b: break
PROD_CALLPATH_CONTEXT_02_RANGE=20-26
PROD_CALLPATH_CONTEXT_02_LINE_0020=p=ACCEPTED/name; s=os.lstat(p)
PROD_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)
PROD_CALLPATH_CONTEXT_02_LINE_0022=sys.dont_write_bytecode=True
PROD_CALLPATH_CONTEXT_02_LINE_0023=sys.path.insert(0,str(ACCEPTED))
PROD_CALLPATH_CONTEXT_02_LINE_0024=e=importlib.import_module('entry504')
PROD_CALLPATH_CONTEXT_02_LINE_0025=return int(e.main())
PROD_CALLPATH_CONTEXT_02_LINE_0026=if __name__=='__main__': raise SystemExit(main())
PROD_RELEVANT_FUNCTION_COUNT=0
PROD_IMPORT_COUNT=7
PROD_IMPORT_01_LINE=2
PROD_IMPORT_01_NAME=__future__.annotations
PROD_IMPORT_02_LINE=3
PROD_IMPORT_02_NAME=hashlib
PROD_IMPORT_03_LINE=3
PROD_IMPORT_03_NAME=importlib
PROD_IMPORT_04_LINE=3
PROD_IMPORT_04_NAME=os
PROD_IMPORT_05_LINE=3
PROD_IMPORT_05_NAME=pathlib
PROD_IMPORT_06_LINE=3
PROD_IMPORT_06_NAME=stat
PROD_IMPORT_07_LINE=3
PROD_IMPORT_07_NAME=sys
PROD_EXEC_CALL_COUNT=0
PROD_REFERENCED_PATH_COUNT=1
PROD_REF_01_PATH=/opt/homelab-backup-v2/releases/backup-v2-overlay-504r1-ca6876fa9c3b
PROD_REF_01_EXISTS=True
PROD_REF_01_IS_FILE=False
PROD_TRANSPORT_SIGNATURE_COUNT=0
ACCEPTED_TRANSPORT_SIGNATURE_COUNT=34
ACCEPTED_TRANSPORT_SIG_01_LINE=16
ACCEPTED_TRANSPORT_SIG_01_TEXT=OPERATOR_KEY=pathlib.Path('[SENSITIVE_PATH]
ACCEPTED_TRANSPORT_SIG_02_LINE=17
ACCEPTED_TRANSPORT_SIG_02_TEXT=VPS_KNOWN_HOSTS=CONFIG_ROOT/'vps_known_hosts'
ACCEPTED_TRANSPORT_SIG_03_LINE=24
ACCEPTED_TRANSPORT_SIG_03_TEXT=OPERATOR_KEY_FINGERPRINT='SHA256:wipXiBB3cpAwyWap9LcB185WjEEmDxtRJsI/UuMVAp0'
ACCEPTED_TRANSPORT_SIG_04_LINE=413
ACCEPTED_TRANSPORT_SIG_04_TEXT=return run([SSH,'-o','BatchMode=yes','-o','StrictHostKeyChecking=yes','root@'+node,cmd],input=input,timeout=timeout,check=check)
ACCEPTED_TRANSPORT_SIG_05_LINE=492
ACCEPTED_TRANSPORT_SIG_05_TEXT=cmd=[SSH,'-o','BatchMode=yes','-o','StrictHostKeyChecking=yes','root@'+node,remote]
ACCEPTED_TRANSPORT_SIG_06_LINE=537
ACCEPTED_TRANSPORT_SIG_06_TEXT=else: run([SCP,'-q','-o','BatchMode=yes','-o','StrictHostKeyChecking=yes','root@'+node+':'+src,str(local)],timeout=7200)
ACCEPTED_TRANSPORT_SIG_07_LINE=543
ACCEPTED_TRANSPORT_SIG_07_TEXT=def operator_key_fingerprint():
ACCEPTED_TRANSPORT_SIG_08_LINE=544
ACCEPTED_TRANSPORT_SIG_08_TEXT=if not OPERATOR_KEY.is_file() or OPERATOR_KEY.is_symlink(): raise BackupError('OPERATOR_KEY_MISSING')
ACCEPTED_TRANSPORT_SIG_09_LINE=545
ACCEPTED_TRANSPORT_SIG_09_TEXT=p=run(['ssh-keygen','-lf',str(OPERATOR_KEY),'-E','sha256'],timeout=30)
ACCEPTED_TRANSPORT_SIG_10_LINE=548
ACCEPTED_TRANSPORT_SIG_10_TEXT=if not m or m.group(1)!=OPERATOR_KEY_FINGERPRINT: raise BackupError('OPERATOR_KEY_FINGERPRINT_MISMATCH')
ACCEPTED_TRANSPORT_SIG_11_LINE=565
ACCEPTED_TRANSPORT_SIG_11_TEXT=def ensure_vps_known_hosts(targets):
ACCEPTED_TRANSPORT_SIG_12_LINE=570
ACCEPTED_TRANSPORT_SIG_12_TEXT=atomic_write(VPS_KNOWN_HOSTS,('\n'.join(lines)+'\n').encode(),0o600)
ACCEPTED_TRANSPORT_SIG_13_LINE=572
ACCEPTED_TRANSPORT_SIG_13_TEXT=def vps_ssh_argv(t, *, use_agent=False):
ACCEPTED_TRANSPORT_SIG_14_LINE=573
ACCEPTED_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']
ACCEPTED_TRANSPORT_SIG_15_LINE=575
ACCEPTED_TRANSPORT_SIG_15_TEXT=a += ['-o','IdentitiesOnly=no']
ACCEPTED_TRANSPORT_SIG_16_LINE=577
ACCEPTED_TRANSPORT_SIG_16_TEXT=a += ['-i',str(OPERATOR_KEY),'-o','IdentitiesOnly=yes','-o','IdentityAgent=none']
ACCEPTED_TRANSPORT_SIG_17_LINE=581
ACCEPTED_TRANSPORT_SIG_17_TEXT=def vps_run(t, remote_argv, *, input=None, timeout=300, use_agent=False, check=True):
ACCEPTED_TRANSPORT_SIG_18_LINE=583
ACCEPTED_TRANSPORT_SIG_18_TEXT=return run(vps_ssh_argv(t,use_agent=use_agent)+[remote],input=input,timeout=timeout,check=check)
ACCEPTED_TRANSPORT_SIG_19_LINE=586
ACCEPTED_TRANSPORT_SIG_19_TEXT=operator_key_fingerprint()
ACCEPTED_TRANSPORT_SIG_20_LINE=587
ACCEPTED_TRANSPORT_SIG_20_TEXT=ensure_vps_known_hosts(targets)
ACCEPTED_TRANSPORT_SIG_21_LINE=588
ACCEPTED_TRANSPORT_SIG_21_TEXT=pub=run(['ssh-keygen','-y','-f',str(OPERATOR_KEY)],timeout=30).stdout.strip()+b'\n'
ACCEPTED_TRANSPORT_SIG_22_LINE=592
ACCEPTED_TRANSPORT_SIG_22_TEXT=probe=vps_run(t,['true'],timeout=30,use_agent=False,check=False)
ACCEPTED_TRANSPORT_SIG_23_LINE=594
ACCEPTED_TRANSPORT_SIG_23_TEXT=results[t['logical_id']]='ALREADY_OPERATOR_KEY'; continue
ACCEPTED_TRANSPORT_SIG_24_LINE=600
ACCEPTED_TRANSPORT_SIG_24_TEXT=vps_run(t,['true'],timeout=30,use_agent=False)
ACCEPTED_TRANSPORT_SIG_25_LINE=604
ACCEPTED_TRANSPORT_SIG_25_TEXT=vps_run(us,['true'],timeout=30,use_agent=False)
ACCEPTED_TRANSPORT_SIG_26_LINE=605
ACCEPTED_TRANSPORT_SIG_26_TEXT=results[us['logical_id']]='ALREADY_US_OPERATOR_KEY'
ACCEPTED_TRANSPORT_SIG_27_LINE=609
ACCEPTED_TRANSPORT_SIG_27_TEXT=p=vps_run(t,['sh','-c',command],timeout=120,use_agent=False)
ACCEPTED_TRANSPORT_SIG_28_LINE=617
ACCEPTED_TRANSPORT_SIG_28_TEXT=argv=vps_ssh_argv(t,use_agent=False)+[remote]
ACCEPTED_TRANSPORT_SIG_29_LINE=627
ACCEPTED_TRANSPORT_SIG_29_TEXT=argv=vps_ssh_argv(t,use_agent=False)+[remote]
ACCEPTED_TRANSPORT_SIG_30_LINE=664
ACCEPTED_TRANSPORT_SIG_30_TEXT=argv=vps_ssh_argv(t,use_agent=False)+[remote]
ACCEPTED_TRANSPORT_SIG_31_LINE=851
ACCEPTED_TRANSPORT_SIG_31_TEXT=if OPERATOR_KEY.exists(): p.append('root/.ssh/id_ed25519_netbird_operator')
ACCEPTED_TRANSPORT_SIG_32_LINE=852
ACCEPTED_TRANSPORT_SIG_32_TEXT=if pathlib.Path(str(OPERATOR_KEY)+'.pub').exists(): p.append('root/.ssh/id_ed25519_netbird_operator.pub')
ACCEPTED_TRANSPORT_SIG_33_LINE=868
ACCEPTED_TRANSPORT_SIG_33_TEXT=pipe_to_zstd([SSH,'-o','BatchMode=yes','-o','StrictHostKeyChecking=yes','root@'+node,remote],payload,timeout=600)
ACCEPTED_TRANSPORT_SIG_34_LINE=933
ACCEPTED_TRANSPORT_SIG_34_TEXT=print('VPS_OPERATOR_KEY_BOOTSTRAP='+json.dumps(boots,sort_keys=True,separators=(',',':')))
VPS556R2_DECISION=CURRENT_PROD_ENTRY_DELEGATES_TO_LOCAL_COMPONENT
VPS556R2_NEXT_GATE=READ_CURRENT_DELEGATED_COMPONENT
HOMELAB_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}

OUTPUT_END
CHAT_OUTPUT_END
