2219 lines
75 KiB
Plaintext
2219 lines
75 KiB
Plaintext
CHAT_OUTPUT_BEGIN
|
|
COMMAND_ID=SUPPORT-261005-SKLADCHIK-DURABILITY-BACKUP-PRODUCER-RCA-99578R1
|
|
STATUS=FAIL
|
|
RC=43
|
|
HOST=pve01
|
|
MODE=read-only
|
|
COMPONENT=skladchik-durability-backup-producer-rca
|
|
REFERENCE_REGISTER_CHECK=OK
|
|
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
|
|
ERROR_REGISTER_CHECK=OK
|
|
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
|
|
COMMAND_SHA256=6d4e000caabe0b4f15d31ba419f9633c5004c1b83d9c535098b8901ae634bb59
|
|
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=43
|
|
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=16ba01850d81f6abbd81c5322dfb90ebe83f2780ce7f91f057ae10bce56216b0
|
|
SANITIZED_OUTPUT_SHA256=16ba01850d81f6abbd81c5322dfb90ebe83f2780ce7f91f057ae10bce56216b0
|
|
OUTPUT_BEGIN
|
|
SKLADCHIK_DURABILITY_BACKUP_PRODUCER_RCA=V1
|
|
NO_MAIL_SEND=true
|
|
NO_SERVICE_RESTART=true
|
|
NO_TIMER_MUTATION=true
|
|
NO_NETWORK_MUTATION=true
|
|
NO_SOURCE_MUTATION=true
|
|
NO_BACKUP_MUTATION=true
|
|
NO_GIT_PUSH=true
|
|
MODE=read-only
|
|
HOST_PVE01=true
|
|
PRODUCER_VM170_QM_RC=0
|
|
PRODUCER_VM170_STDERR_PRESENT=false
|
|
PRODUCER_VM170_JSON=true
|
|
PRODUCER_VM170_GUEST_EXITCODE=0
|
|
VM170_MONITOR_SHA=19123e359f2f7b9a2d373fd7e4464dd426d31b91cabc567c252e70cad40d77c8
|
|
VM170_TIMER_ACTIVE=active
|
|
VM170_TIMER_ENABLED=enabled
|
|
VM170_SERVICE_RESULT=success
|
|
VM170_HEALTH_STATUS=OK\nVM170_HEALTH_TS=2026-10-05T06:43:23Z\nVM170_HEALTH_REPORTS=22\nVM170_HEALTH_OPEN=13\nVM170_HEALTH_RESOLVED=9\n
|
|
VM170_BASELINE_OK=false
|
|
SUPERVISOR_PRESENT=true
|
|
SUPERVISOR_SHA=3a9bf9f3f9c28dbf670300f0851a5b7f86eb41fa41cdf44d0935337ae8ef02a2
|
|
SUPERVISOR_BASENAME=skladchik-reports-monitor-supervisor
|
|
SUPERVISOR_AST_OK=true
|
|
SUPERVISOR_FUNCTION_COUNT=16
|
|
SUPERVISOR_FUNCTIONS=now,iso,log,run,parse_env_text,read_env_file,age_seconds_from_ts,ssh_edge,edge_mail,systemctl_props,gather,render_body,write_health,read_state,write_state,main
|
|
SUPERVISOR_CLI_OPTION_COUNT=0
|
|
SUPERVISOR_CLI_OPTIONS=NONE
|
|
SUPERVISOR_ENV_NAME_COUNT=5
|
|
SUPERVISOR_ENV_NAMES=SKLADCHIK_BACKUP_HEALTH_MAX_SECONDS,SKLADCHIK_COOKIE_EXPIRY_WARN_SECONDS,SKLADCHIK_EDGE,SKLADCHIK_MONITOR_HEALTH_MAX_SECONDS,SKLADCHIK_RESTORE_HEALTH_MAX_SECONDS
|
|
SUPERVISOR_RELEVANT_FUNCTION_COUNT=4
|
|
SUPERVISOR_FUNC_1_NAME=parse_env_text
|
|
SUPERVISOR_FUNC_1_LINENO=51
|
|
SUPERVISOR_FUNC_1_ENDLINENO=58
|
|
SUPERVISOR_FUNC_1_NAMES=d,k,line,split,splitlines,startswith,strip,text,v
|
|
SUPERVISOR_FUNC_1_AST_BEGIN
|
|
FunctionDef(
|
|
name='parse_env_text',
|
|
args=arguments(
|
|
args=[
|
|
arg(arg='text')]),
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='d', ctx=Store())],
|
|
value=Dict()),
|
|
For(
|
|
target=Name(id='line', ctx=Store()),
|
|
iter=Call(
|
|
func=Attribute(
|
|
value=BoolOp(
|
|
op=Or(),
|
|
values=[
|
|
Name(id='text', ctx=Load()),
|
|
Constant(value='')]),
|
|
attr='splitlines',
|
|
ctx=Load())),
|
|
body=[
|
|
If(
|
|
test=BoolOp(
|
|
op=Or(),
|
|
values=[
|
|
UnaryOp(
|
|
op=Not(),
|
|
operand=Name(id='line', ctx=Load())),
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='line', ctx=Load()),
|
|
attr='startswith',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='#')]),
|
|
Compare(
|
|
left=Constant(value='='),
|
|
ops=[
|
|
NotIn()],
|
|
comparators=[
|
|
Name(id='line', ctx=Load())])]),
|
|
body=[
|
|
Continue()]),
|
|
Assign(
|
|
targets=[
|
|
Tuple(
|
|
elts=[
|
|
Name(id='k', ctx=Store()),
|
|
Name(id='v', ctx=Store())],
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='line', ctx=Load()),
|
|
attr='split',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='='),
|
|
Constant(value=1)])),
|
|
Assign(
|
|
targets=[
|
|
Subscript(
|
|
value=Name(id='d', ctx=Load()),
|
|
slice=Call(
|
|
func=Attribute(
|
|
value=Name(id='k', ctx=Load()),
|
|
attr='strip',
|
|
ctx=Load())),
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='v', ctx=Load()),
|
|
attr='strip',
|
|
ctx=Load())))]),
|
|
Return(
|
|
value=Name(id='d', ctx=Load()))])
|
|
SUPERVISOR_FUNC_1_AST_END
|
|
SUPERVISOR_FUNC_2_NAME=gather
|
|
SUPERVISOR_FUNC_2_LINENO=110
|
|
SUPERVISOR_FUNC_2_ENDLINENO=347
|
|
SUPERVISOR_FUNC_2_NAMES=APP_FRESHNESS_PROBE,Exception,M,MONITOR_HEALTH_AGE_MAX,Path,S,age_seconds_from_ts,append,base,core_cmd,facts,files,get,group,health_age,int,items,k,local_units,m,mon,name,opened,out,p,parse_env_text,probe,probe_out,probe_rc,problems,props,quote,rc,re,read_text,reg_cmd,reg_out,reg_rc,registry_source,replace,reports,resolved,route,route_lines,run,search,section,shlex,splitlines,ssh_edge,startswith,str,strip,systemctl_props,timer_active,timer_enabled,timers_text,u,wm,worker_path,worker_target,worker_text
|
|
SUPERVISOR_FUNC_2_AST_BEGIN
|
|
FunctionDef(
|
|
name='gather',
|
|
args=arguments(),
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='facts', ctx=Store())],
|
|
value=Dict()),
|
|
Assign(
|
|
targets=[
|
|
Name(id='problems', ctx=Store())],
|
|
value=List(ctx=Load())),
|
|
Assign(
|
|
targets=[
|
|
Name(id='core_cmd', ctx=Store())],
|
|
value=Constant(value='<STR len=870 sha=810f6d32471c23a6>')),
|
|
Assign(
|
|
targets=[
|
|
Tuple(
|
|
elts=[
|
|
Name(id='rc', ctx=Store()),
|
|
Name(id='out', ctx=Store())],
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='ssh_edge', ctx=Load()),
|
|
args=[
|
|
Name(id='core_cmd', ctx=Load())],
|
|
keywords=[
|
|
keyword(
|
|
arg='timeout',
|
|
value=Constant(value=45))])),
|
|
Assign(
|
|
targets=[
|
|
Subscript(
|
|
value=Name(id='facts', ctx=Load()),
|
|
slice=Constant(value='core_ssh_rc'),
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='str', ctx=Load()),
|
|
args=[
|
|
Name(id='rc', ctx=Load())])),
|
|
If(
|
|
test=Compare(
|
|
left=Name(id='rc', ctx=Load()),
|
|
ops=[
|
|
NotEq()],
|
|
comparators=[
|
|
Constant(value=0)]),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='problems', ctx=Load()),
|
|
attr='append',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='core_ssh_failed')]))]),
|
|
FunctionDef(
|
|
name='section',
|
|
args=arguments(
|
|
args=[
|
|
arg(arg='name')]),
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='m', ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='re', ctx=Load()),
|
|
attr='search',
|
|
ctx=Load()),
|
|
args=[
|
|
JoinedStr(
|
|
values=[
|
|
Constant(value='__'),
|
|
FormattedValue(
|
|
value=Name(id='name', ctx=Load()),
|
|
conversion=-1),
|
|
Constant(value='_BEGIN__\\n(.*?)\\n__'),
|
|
FormattedValue(
|
|
value=Name(id='name', ctx=Load()),
|
|
conversion=-1),
|
|
Constant(value='_END__')]),
|
|
Name(id='out', ctx=Load()),
|
|
Attribute(
|
|
value=Name(id='re', ctx=Load()),
|
|
attr='S',
|
|
ctx=Load())])),
|
|
Return(
|
|
value=IfExp(
|
|
test=Name(id='m', ctx=Load()),
|
|
body=Call(
|
|
func=Attribute(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='m', ctx=Load()),
|
|
attr='group',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value=1)]),
|
|
attr='strip',
|
|
ctx=Load())),
|
|
orelse=Constant(value='')))]),
|
|
Assign(
|
|
targets=[
|
|
Name(id='mon', ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='parse_env_text', ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Name(id='section', ctx=Load()),
|
|
args=[
|
|
Constant(value='MONITOR_HEALTH')])])),
|
|
Assign(
|
|
targets=[
|
|
Subscript(
|
|
value=Name(id='facts', ctx=Load()),
|
|
slice=Constant(value='monitor_status'),
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='mon', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='STATUS'),
|
|
Constant(value='MISSING')])),
|
|
Assign(
|
|
targets=[
|
|
Subscript(
|
|
value=Name(id='facts', ctx=Load()),
|
|
slice=Constant(value='monitor_reports'),
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='mon', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='reports'),
|
|
Constant(value='')])),
|
|
Assign(
|
|
targets=[
|
|
Subscript(
|
|
value=Name(id='facts', ctx=Load()),
|
|
slice=Constant(value='monitor_open'),
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='mon', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='open'),
|
|
Constant(value='')])),
|
|
Assign(
|
|
targets=[
|
|
Subscript(
|
|
value=Name(id='facts', ctx=Load()),
|
|
slice=Constant(value='monitor_resolved'),
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='mon', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='resolved'),
|
|
Constant(value='')])),
|
|
Assign(
|
|
targets=[
|
|
Subscript(
|
|
value=Name(id='facts', ctx=Load()),
|
|
slice=Constant(value='monitor_smtp_configured'),
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='mon', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='smtp_configured'),
|
|
Constant(value='')])),
|
|
Assign(
|
|
targets=[
|
|
Subscript(
|
|
value=Name(id='facts', ctx=Load()),
|
|
slice=Constant(value='monitor_health_age_seconds'),
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='str', ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Name(id='age_seconds_from_ts', ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='mon', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='TS')])])])),
|
|
If(
|
|
test=Compare(
|
|
left=Subscript(
|
|
value=Name(id='facts', ctx=Load()),
|
|
slice=Constant(value='monitor_status'),
|
|
ctx=Load()),
|
|
ops=[
|
|
NotEq()],
|
|
comparators=[
|
|
Constant(value='OK')]),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='problems', ctx=Load()),
|
|
attr='append',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_status_not_ok')]))]),
|
|
Try(
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='health_age', ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='int', ctx=Load()),
|
|
args=[
|
|
Subscript(
|
|
value=Name(id='facts', ctx=Load()),
|
|
slice=Constant(value='monitor_health_age_seconds'),
|
|
ctx=Load())])),
|
|
If(
|
|
test=Compare(
|
|
left=Name(id='health_age', ctx=Load()),
|
|
ops=[
|
|
Gt()],
|
|
comparators=[
|
|
Name(id='MONITOR_HEALTH_AGE_MAX', ctx=Load())]),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='problems', ctx=Load()),
|
|
attr='append',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_health_stale')]))])],
|
|
handlers=[
|
|
ExceptHandler(
|
|
type=Name(id='Exception', ctx=Load()),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='problems', ctx=Load()),
|
|
attr='append',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_health_age_invalid')]))])]),
|
|
Try(
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='reports', ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='int', ctx=Load()),
|
|
args=[
|
|
Subscript(
|
|
value=Name(id='facts', ctx=Load()),
|
|
slice=Constant(value='monitor_reports'),
|
|
ctx=Load())])),
|
|
Assign(
|
|
targets=[
|
|
Name(id='opened', ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='int', ctx=Load()),
|
|
args=[
|
|
Subscript(
|
|
value=Name(id='facts', ctx=Load()),
|
|
slice=Constant(value='monitor_open'),
|
|
ctx=Load())])),
|
|
Assign(
|
|
targets=[
|
|
Name(id='resolved', ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='int', ctx=Load()),
|
|
args=[
|
|
Subscript(
|
|
value=Name(id='facts', ctx=Load()),
|
|
slice=Constant(value='monitor_resolved'),
|
|
ctx=Load())])),
|
|
If(
|
|
test=Compare(
|
|
left=Name(id='reports', ctx=Load()),
|
|
ops=[
|
|
LtE()],
|
|
comparators=[
|
|
Constant(value=0)]),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='problems', ctx=Load()),
|
|
attr='append',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_reports_zero_or_missing')]))]),
|
|
If(
|
|
test=BoolOp(
|
|
op=Or(),
|
|
values=[
|
|
Compare(
|
|
left=Name(id='opened', ctx=Load()),
|
|
ops=[
|
|
Lt()],
|
|
comparators=[
|
|
Constant(value=0)]),
|
|
Compare(
|
|
left=Name(id='resolved', ctx=Load()),
|
|
ops=[
|
|
Lt()],
|
|
comparators=[
|
|
Constant(value=0)]),
|
|
Compare(
|
|
left=BinOp(
|
|
left=Name(id='opened', ctx=Load()),
|
|
op=Add(),
|
|
right=Name(id='resolved', ctx=Load())),
|
|
ops=[
|
|
NotEq()],
|
|
comparators=[
|
|
Name(id='reports', ctx=Load())])]),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='problems', ctx=Load()),
|
|
attr='append',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_counts_invalid')]))])],
|
|
handlers=[
|
|
ExceptHandler(
|
|
type=Name(id='Exception', ctx=Load()),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='problems', ctx=Load()),
|
|
attr='append',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_counts_missing')]))])]),
|
|
If(
|
|
test=Compare(
|
|
left=Subscript(
|
|
value=Name(id='facts', ctx=Load()),
|
|
slice=Constant(value='monitor_smtp_configured'),
|
|
ctx=Load()),
|
|
ops=[
|
|
NotEq()],
|
|
comparators=[
|
|
Constant(value='yes')]),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='problems', ctx=Load()),
|
|
attr='append',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_smtp_not_configured')]))]),
|
|
Assign(
|
|
targets=[
|
|
Name(id='timers_text', ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='section', ctx=Load()),
|
|
args=[
|
|
Constant(value='TIMERS')])),
|
|
Assign(
|
|
targets=[
|
|
Name(id='m', ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='re', ctx=Load()),
|
|
attr='search',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='skladchik-reports-monitor\\.timer\\s+enabled=([^\\s]+)\\s+active=([^\\s]+)'),
|
|
Name(id='timers_text', ctx=Load())])),
|
|
Assign(
|
|
targets=[
|
|
Name(id='timer_enabled', ctx=Store())],
|
|
value=IfExp(
|
|
test=Name(id='m', ctx=Load()),
|
|
body=Call(
|
|
func=Attribute(
|
|
value=Name(id='m', ctx=Load()),
|
|
attr='group',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value=1)]),
|
|
orelse=Constant(value='missing'))),
|
|
Assign(
|
|
targets=[
|
|
Name(id='timer_active', ctx=Store())],
|
|
value=IfExp(
|
|
test=Name(id='m', ctx=Load()),
|
|
body=Call(
|
|
func=Attribute(
|
|
value=Name(id='m', ctx=Load()),
|
|
attr='group',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value=2)]),
|
|
orelse=Constant(value='missing'))),
|
|
Assign(
|
|
targets=[
|
|
Subscript(
|
|
value=Name(id='facts', ctx=Load()),
|
|
slice=Constant(value='monitor_timer_enabled'),
|
|
ctx=Store())],
|
|
value=Name(id='timer_enabled', ctx=Load())),
|
|
Assign(
|
|
targets=[
|
|
Subscript(
|
|
value=Name(id='facts', ctx=Load()),
|
|
slice=Constant(value='monitor_timer_active'),
|
|
ctx=Store())],
|
|
value=Name(id='timer_active', ctx=Load())),
|
|
If(
|
|
test=Compare(
|
|
left=Name(id='timer_enabled', ctx=Load()),
|
|
ops=[
|
|
NotEq()],
|
|
comparators=[
|
|
Constant(value='enabled')]),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='problems', ctx=Load()),
|
|
attr='append',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_timer_not_enabled')]))]),
|
|
If(
|
|
test=Compare(
|
|
left=Name(id='timer_active', ctx=Load()),
|
|
ops=[
|
|
NotEq()],
|
|
comparators=[
|
|
Constant(value='active')]),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='problems', ctx=Load()),
|
|
attr='append',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_timer_not_active')]))]),
|
|
Assign(
|
|
targets=[
|
|
Name(id='route_lines', ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Call(
|
|
func=Name(id='section', ctx=Load()),
|
|
args=[
|
|
Constant(value='ROUTE')]),
|
|
att
|
|
<TRUNCATED len=32262 sha=ed5d6c179095d9303280fce46b2a815ee2f05348c6e2774d6db13ee393436cb6>
|
|
SUPERVISOR_FUNC_2_AST_END
|
|
SUPERVISOR_FUNC_3_NAME=render_body
|
|
SUPERVISOR_FUNC_3_LINENO=349
|
|
SUPERVISOR_FUNC_3_ENDLINENO=378
|
|
SUPERVISOR_FUNC_3_NAMES=facts,get,join,lines,none_text,problems,status,str
|
|
SUPERVISOR_FUNC_3_AST_BEGIN
|
|
FunctionDef(
|
|
name='render_body',
|
|
args=arguments(
|
|
args=[
|
|
arg(arg='status'),
|
|
arg(arg='facts'),
|
|
arg(arg='problems'),
|
|
arg(arg='mode')]),
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='none_text', ctx=Store())],
|
|
value=Constant(value='нет')),
|
|
Assign(
|
|
targets=[
|
|
Name(id='lines', ctx=Store())],
|
|
value=List(
|
|
elts=[
|
|
Constant(value='Надзор мониторинга жалоб Складчика'),
|
|
Constant(value=''),
|
|
BinOp(
|
|
left=Constant(value='Статус: '),
|
|
op=Add(),
|
|
right=Name(id='status', ctx=Load())),
|
|
BinOp(
|
|
left=Constant(value='Проблемы: '),
|
|
op=Add(),
|
|
right=IfExp(
|
|
test=Name(id='problems', ctx=Load()),
|
|
body=Call(
|
|
func=Attribute(
|
|
value=Constant(value=', '),
|
|
attr='join',
|
|
ctx=Load()),
|
|
args=[
|
|
Name(id='problems', ctx=Load())]),
|
|
orelse=Name(id='none_text', ctx=Load()))),
|
|
Constant(value=''),
|
|
Constant(value='Основной монитор:'),
|
|
Constant(value='<STR len=33 sha=40b00748b4622055>'),
|
|
BinOp(
|
|
left=Constant(value='- status: '),
|
|
op=Add(),
|
|
right=Call(
|
|
func=Name(id='str', ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_status'),
|
|
Constant(value='')])])),
|
|
BinOp(
|
|
left=Constant(value='- reports: '),
|
|
op=Add(),
|
|
right=Call(
|
|
func=Name(id='str', ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_reports'),
|
|
Constant(value='')])])),
|
|
BinOp(
|
|
left=Constant(value='- open: '),
|
|
op=Add(),
|
|
right=Call(
|
|
func=Name(id='str', ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_open'),
|
|
Constant(value='')])])),
|
|
BinOp(
|
|
left=Constant(value='- resolved: '),
|
|
op=Add(),
|
|
right=Call(
|
|
func=Name(id='str', ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_resolved'),
|
|
Constant(value='')])])),
|
|
BinOp(
|
|
left=Constant(value='- route: '),
|
|
op=Add(),
|
|
right=Call(
|
|
func=Name(id='str', ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='netbird_route'),
|
|
Constant(value='')])])),
|
|
Constant(value=''),
|
|
Constant(value='Canonical backup:'),
|
|
BinOp(
|
|
left=Constant(value='- decision: '),
|
|
op=Add(),
|
|
right=Call(
|
|
func=Name(id='str', ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='canonical_backup_decision'),
|
|
Constant(value='')])])),
|
|
BinOp(
|
|
left=Constant(value='- generation: '),
|
|
op=Add(),
|
|
right=Call(
|
|
func=Name(id='str', ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='canonical_backup_generation'),
|
|
Constant(value='')])])),
|
|
BinOp(
|
|
left=Constant(value='- registry source: '),
|
|
op=Add(),
|
|
right=Call(
|
|
func=Name(id='str', ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='registry_source'),
|
|
Constant(value='')])])),
|
|
BinOp(
|
|
left=Constant(value='- worker target: '),
|
|
op=Add(),
|
|
right=Call(
|
|
func=Name(id='str', ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='worker_target'),
|
|
Constant(value='')])]))],
|
|
ctx=Load())),
|
|
Return(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Constant(value='\n'),
|
|
attr='join',
|
|
ctx=Load()),
|
|
args=[
|
|
Name(id='lines', ctx=Load())]))])
|
|
SUPERVISOR_FUNC_3_AST_END
|
|
SUPERVISOR_FUNC_4_NAME=main
|
|
SUPERVISOR_FUNC_4_LINENO=395
|
|
SUPERVISOR_FUNC_4_ENDLINENO=515
|
|
SUPERVISOR_FUNC_4_NAMES=append,argv,edge_mail,facts,gather,get,join,len,log,mail_sent,mode,old,old_status,print,problems,read_state,render_body,status,stderr,subject,sys,write_health,write_state
|
|
SUPERVISOR_FUNC_4_AST_BEGIN
|
|
FunctionDef(
|
|
name='main',
|
|
args=arguments(),
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='mode', ctx=Store())],
|
|
value=IfExp(
|
|
test=Compare(
|
|
left=Call(
|
|
func=Name(id='len', ctx=Load()),
|
|
args=[
|
|
Attribute(
|
|
value=Name(id='sys', ctx=Load()),
|
|
attr='argv',
|
|
ctx=Load())]),
|
|
ops=[
|
|
Gt()],
|
|
comparators=[
|
|
Constant(value=1)]),
|
|
body=Subscript(
|
|
value=Attribute(
|
|
value=Name(id='sys', ctx=Load()),
|
|
attr='argv',
|
|
ctx=Load()),
|
|
slice=Constant(value=1),
|
|
ctx=Load()),
|
|
orelse=Constant(value='check'))),
|
|
If(
|
|
test=Compare(
|
|
left=Name(id='mode', ctx=Load()),
|
|
ops=[
|
|
NotIn()],
|
|
comparators=[
|
|
Tuple(
|
|
elts=[
|
|
Constant(value='check'),
|
|
Constant(value='test')],
|
|
ctx=Load())]),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='print', ctx=Load()),
|
|
args=[
|
|
Constant(value='usage: skladchik-reports-monitor-supervisor [check|test]')],
|
|
keywords=[
|
|
keyword(
|
|
arg='file',
|
|
value=Attribute(
|
|
value=Name(id='sys', ctx=Load()),
|
|
attr='stderr',
|
|
ctx=Load()))])),
|
|
Return(
|
|
value=Constant(value=2))]),
|
|
Assign(
|
|
targets=[
|
|
Tuple(
|
|
elts=[
|
|
Name(id='facts', ctx=Store()),
|
|
Name(id='problems', ctx=Store())],
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='gather', ctx=Load()))),
|
|
Assign(
|
|
targets=[
|
|
Name(id='status', ctx=Store())],
|
|
value=IfExp(
|
|
test=UnaryOp(
|
|
op=Not(),
|
|
operand=Name(id='problems', ctx=Load())),
|
|
body=Constant(value='OK'),
|
|
orelse=Constant(value='FAIL'))),
|
|
If(
|
|
test=Compare(
|
|
left=Name(id='mode', ctx=Load()),
|
|
ops=[
|
|
Eq()],
|
|
comparators=[
|
|
Constant(value='test')]),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='print', ctx=Load()),
|
|
args=[
|
|
JoinedStr(
|
|
values=[
|
|
Constant(value='SUPERVISOR_STATUS='),
|
|
FormattedValue(
|
|
value=Name(id='status', ctx=Load()),
|
|
conversion=-1)])])),
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='print', ctx=Load()),
|
|
args=[
|
|
BinOp(
|
|
left=Constant(value='SUPERVISOR_PROBLEMS='),
|
|
op=Add(),
|
|
right=IfExp(
|
|
test=Name(id='problems', ctx=Load()),
|
|
body=Call(
|
|
func=Attribute(
|
|
value=Constant(value=','),
|
|
attr='join',
|
|
ctx=Load()),
|
|
args=[
|
|
Name(id='problems', ctx=Load())]),
|
|
orelse=Constant(value='none')))])),
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='print', ctx=Load()),
|
|
args=[
|
|
JoinedStr(
|
|
values=[
|
|
Constant(value='MONITOR='),
|
|
FormattedValue(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_status')]),
|
|
conversion=-1),
|
|
Constant(value=' reports='),
|
|
FormattedValue(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_reports')]),
|
|
conversion=-1),
|
|
Constant(value=' open='),
|
|
FormattedValue(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_open')]),
|
|
conversion=-1),
|
|
Constant(value=' resolved='),
|
|
FormattedValue(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='monitor_resolved')]),
|
|
conversion=-1)])])),
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='print', ctx=Load()),
|
|
args=[
|
|
JoinedStr(
|
|
values=[
|
|
Constant(value='CANONICAL_BACKUP='),
|
|
FormattedValue(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='canonical_backup_decision')]),
|
|
conversion=-1),
|
|
Constant(value=' generation='),
|
|
FormattedValue(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='canonical_backup_generation')]),
|
|
conversion=-1)])])),
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='print', ctx=Load()),
|
|
args=[
|
|
JoinedStr(
|
|
values=[
|
|
Constant(value='REGISTRY_SOURCE='),
|
|
FormattedValue(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='registry_source')]),
|
|
conversion=-1)])])),
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='print', ctx=Load()),
|
|
args=[
|
|
JoinedStr(
|
|
values=[
|
|
Constant(value='WORKER_TARGET='),
|
|
FormattedValue(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='worker_target')]),
|
|
conversion=-1)])])),
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='print', ctx=Load()),
|
|
args=[
|
|
JoinedStr(
|
|
values=[
|
|
Constant(value='NETBIRD_ROUTE='),
|
|
FormattedValue(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='facts', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='netbird_route')]),
|
|
conversion=-1)])])),
|
|
Return(
|
|
value=IfExp(
|
|
test=Compare(
|
|
left=Name(id='status', ctx=Load()),
|
|
ops=[
|
|
Eq()],
|
|
comparators=[
|
|
Constant(value='OK')]),
|
|
body=Constant(value=0),
|
|
orelse=Constant(value=1)))]),
|
|
Assign(
|
|
targets=[
|
|
Name(id='old', ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='read_state', ctx=Load()))),
|
|
Assign(
|
|
targets=[
|
|
Name(id='old_status', ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='old', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='LAST_STATUS'),
|
|
Constant(value='')])),
|
|
Assign(
|
|
targets=[
|
|
Name(id='mail_sent', ctx=Store())],
|
|
value=Constant(value=False)),
|
|
If(
|
|
test=BoolOp(
|
|
op=And(),
|
|
values=[
|
|
Compare(
|
|
left=Name(id='status', ctx=Load()),
|
|
ops=[
|
|
NotEq()],
|
|
comparators=[
|
|
Constant(value='OK')]),
|
|
Compare(
|
|
left=Name(id='old_status', ctx=Load()),
|
|
ops=[
|
|
NotEq()],
|
|
comparators=[
|
|
Constant(value='FAIL')])]),
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='subject', ctx=Store())],
|
|
value=Constant(value='[Складчик] ТРЕВОГА: мониторинг жалоб')),
|
|
Assign(
|
|
targets=[
|
|
Name(id='mail_sent', ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='edge_mail', ctx=Load()),
|
|
args=[
|
|
Name(id='subject', ctx=Load()),
|
|
Call(
|
|
func=Name(id='render_body', ctx=Load()),
|
|
args=[
|
|
Name(id='status', ctx=Load()),
|
|
Name(id='facts', ctx=Load()),
|
|
Name(id='problems', ctx=Load()),
|
|
Name(id='mode', ctx=Load())])])),
|
|
If(
|
|
test=UnaryOp(
|
|
op=Not(),
|
|
operand=Name(id='mail_sent', ctx=Load())),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='problems', ctx=Load()),
|
|
attr='append',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='supervisor_mail_send_failed')])),
|
|
Assign(
|
|
targets=[
|
|
Name(id='status', ctx=Store())],
|
|
value=Constant(value='FAIL'))])],
|
|
orelse=[
|
|
If(
|
|
test=BoolOp(
|
|
op=And(),
|
|
values=[
|
|
Compare(
|
|
left=Name(id='status', ctx=Load()),
|
|
ops=[
|
|
Eq()],
|
|
comparators=[
|
|
Constant(value='OK')]),
|
|
Compare(
|
|
left=Name(id='old_status', ctx=Load()),
|
|
ops=[
|
|
Eq()],
|
|
comparators=[
|
|
Constant(value='FAIL')])]),
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='subject', ctx=Store())],
|
|
value=Constant(value='[Складчик] ВОССТАНОВЛЕНО: мониторинг жалоб и backup снова OK')),
|
|
Assign(
|
|
targets=[
|
|
Name(id='mail_sent', ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='edge_mail', ctx=Load()),
|
|
args=[
|
|
Name(id='subject', ctx=Load()),
|
|
Call(
|
|
func=Name(id='render_body', ctx=Load()),
|
|
args=[
|
|
Name(id='status', ctx=Load()),
|
|
Name(id='facts', ctx=Load()),
|
|
Name(id='problems', ctx=Load()),
|
|
Name(id='mode', ctx=Load())])])),
|
|
If(
|
|
test=UnaryOp(
|
|
op=Not(),
|
|
operand=Name(id='mail_sent', ctx=Load())),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='problems', ctx=Load()),
|
|
attr='append',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='supervisor_mail_send_failed')])),
|
|
Assign(
|
|
targets=[
|
|
Name(id='status', ctx=Store())],
|
|
value=Constant(value='FAIL'))])])]),
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='write_health', ctx=Load()),
|
|
args=[
|
|
Name(id='status', ctx=Load()),
|
|
Name(id='facts', ctx=Load()),
|
|
Name(id='problems', ctx=Load()),
|
|
Name(id='mail_sent', ctx=Load())])),
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='write_state', ctx=Load()),
|
|
args=[
|
|
Name(id='status', ctx=Load()),
|
|
Name(id='problems', ctx=Load())])),
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='print', ctx=Load()),
|
|
args=[
|
|
JoinedStr(
|
|
values=[
|
|
Constant(value='SUPERVISOR_STATUS='),
|
|
FormattedValue(
|
|
value=Name(id='status', ctx=Load()),
|
|
conversion=-1)])])),
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='print', ctx=Load()),
|
|
args=[
|
|
JoinedStr(
|
|
values=[
|
|
Constant(value='SUPERVISOR_MAIL_SENT='),
|
|
FormattedValue(
|
|
value=IfExp(
|
|
test=Name(id='mail_sent', ctx=Load()),
|
|
body=Constant(value='yes'),
|
|
orelse=Constant(value='no')),
|
|
conversion=-1)])])),
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='print', ctx=Load()),
|
|
args=[
|
|
BinOp(
|
|
left=Constant(value='SUPERVISOR_PROBLEMS='),
|
|
op=Add(),
|
|
right=IfExp(
|
|
test=Name(id='problems', ctx=Load()),
|
|
body=Call(
|
|
func=Attribute(
|
|
value=Constant(value=','),
|
|
attr='join',
|
|
ctx=Load()),
|
|
args=[
|
|
Name(id='problems', ctx=Load())]),
|
|
orelse=Constant(value='none')))])),
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='print', ctx=Load()),
|
|
args=[
|
|
JoinedStr(
|
|
values=[
|
|
Constant(value='MONITOR='),
|
|
FormattedValue(
|
|
value=Call(
|
|
|
|
<TRUNCATED len=18945 sha=f4a4af5518b9647f5f52013dd810094b555b6d99d4ad6f11ff77ca4917259a39>
|
|
SUPERVISOR_FUNC_4_AST_END
|
|
BACKUP_AUDIT_PRESENT=true
|
|
BACKUP_AUDIT_SHA=1c2cd8a00859492c010ed35baf5eb67f4278544809de8c2563421a6f3e356ed3
|
|
BACKUP_AUDIT_BASENAME=homelab-backup-audit
|
|
BACKUP_AUDIT_AST_OK=true
|
|
BACKUP_AUDIT_FUNCTION_COUNT=7
|
|
BACKUP_AUDIT_FUNCTIONS=run,collect,parse_epoch,latest_legacy,unit_ok,parse_app_plan,expected_v2_heavy_lock_owner
|
|
BACKUP_AUDIT_CLI_OPTION_COUNT=0
|
|
BACKUP_AUDIT_CLI_OPTIONS=NONE
|
|
BACKUP_AUDIT_ENV_NAME_COUNT=0
|
|
BACKUP_AUDIT_ENV_NAMES=NONE
|
|
BACKUP_AUDIT_RELEVANT_FUNCTION_COUNT=4
|
|
BACKUP_AUDIT_FUNC_1_NAME=collect
|
|
BACKUP_AUDIT_FUNC_1_LINENO=34
|
|
BACKUP_AUDIT_FUNC_1_ENDLINENO=39
|
|
BACKUP_AUDIT_FUNC_1_NAMES=append,collect,dict,get,isinstance,list,obj,out,str,v,values
|
|
BACKUP_AUDIT_FUNC_1_AST_BEGIN
|
|
FunctionDef(
|
|
name='collect',
|
|
args=arguments(
|
|
args=[
|
|
arg(arg='obj'),
|
|
arg(arg='out')]),
|
|
body=[
|
|
If(
|
|
test=Call(
|
|
func=Name(id='isinstance', ctx=Load()),
|
|
args=[
|
|
Name(id='obj', ctx=Load()),
|
|
Name(id='dict', ctx=Load())]),
|
|
body=[
|
|
If(
|
|
test=Call(
|
|
func=Name(id='isinstance', ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='obj', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='logical_id')]),
|
|
Name(id='str', ctx=Load())]),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='out', ctx=Load()),
|
|
attr='append',
|
|
ctx=Load()),
|
|
args=[
|
|
Name(id='obj', ctx=Load())]))]),
|
|
For(
|
|
target=Name(id='v', ctx=Store()),
|
|
iter=Call(
|
|
func=Attribute(
|
|
value=Name(id='obj', ctx=Load()),
|
|
attr='values',
|
|
ctx=Load())),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='collect', ctx=Load()),
|
|
args=[
|
|
Name(id='v', ctx=Load()),
|
|
Name(id='out', ctx=Load())]))])],
|
|
orelse=[
|
|
If(
|
|
test=Call(
|
|
func=Name(id='isinstance', ctx=Load()),
|
|
args=[
|
|
Name(id='obj', ctx=Load()),
|
|
Name(id='list', ctx=Load())]),
|
|
body=[
|
|
For(
|
|
target=Name(id='v', ctx=Store()),
|
|
iter=Name(id='obj', ctx=Load()),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Name(id='collect', ctx=Load()),
|
|
args=[
|
|
Name(id='v', ctx=Load()),
|
|
Name(id='out', ctx=Load())]))])])])])
|
|
BACKUP_AUDIT_FUNC_1_AST_END
|
|
BACKUP_AUDIT_FUNC_2_NAME=latest_legacy
|
|
BACKUP_AUDIT_FUNC_2_LINENO=53
|
|
BACKUP_AUDIT_FUNC_2_ENDLINENO=77
|
|
BACKUP_AUDIT_FUNC_2_NAMES=APPREST,Exception,QROOT,VMREST,age,best,best_epoch,d,epoch,gen,get,glob,int,is_dir,is_file,json,kind,loads,logical,max,obj,p,parse_epoch,read_text,restore,rev,rj,rroot,score,st_mtime,stat,str,strict,time
|
|
BACKUP_AUDIT_FUNC_2_AST_BEGIN
|
|
FunctionDef(
|
|
name='latest_legacy',
|
|
args=arguments(
|
|
args=[
|
|
arg(arg='logical'),
|
|
arg(arg='kind')]),
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='d', ctx=Store())],
|
|
value=BinOp(
|
|
left=Name(id='QROOT', ctx=Load()),
|
|
op=Div(),
|
|
right=Name(id='logical', ctx=Load()))),
|
|
Assign(
|
|
targets=[
|
|
Name(id='best', ctx=Store())],
|
|
value=Constant(value=None)),
|
|
Assign(
|
|
targets=[
|
|
Name(id='best_epoch', ctx=Store())],
|
|
value=UnaryOp(
|
|
op=USub(),
|
|
operand=Constant(value=1))),
|
|
If(
|
|
test=UnaryOp(
|
|
op=Not(),
|
|
operand=Call(
|
|
func=Attribute(
|
|
value=Name(id='d', ctx=Load()),
|
|
attr='is_dir',
|
|
ctx=Load()))),
|
|
body=[
|
|
Return(
|
|
value=Constant(value=None))]),
|
|
For(
|
|
target=Name(id='p', ctx=Store()),
|
|
iter=Call(
|
|
func=Attribute(
|
|
value=Name(id='d', ctx=Load()),
|
|
attr='glob',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='*.json')]),
|
|
body=[
|
|
Try(
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='obj', ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='json', ctx=Load()),
|
|
attr='loads',
|
|
ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='p', ctx=Load()),
|
|
attr='read_text',
|
|
ctx=Load()),
|
|
keywords=[
|
|
keyword(
|
|
arg='encoding',
|
|
value=Constant(value='utf-8'))])]))],
|
|
handlers=[
|
|
ExceptHandler(
|
|
type=Name(id='Exception', ctx=Load()),
|
|
body=[
|
|
Continue()])]),
|
|
Assign(
|
|
targets=[
|
|
Name(id='epoch', ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='parse_epoch', ctx=Load()),
|
|
args=[
|
|
Name(id='obj', ctx=Load())])),
|
|
Assign(
|
|
targets=[
|
|
Name(id='score', ctx=Store())],
|
|
value=IfExp(
|
|
test=Compare(
|
|
left=Name(id='epoch', ctx=Load()),
|
|
ops=[
|
|
IsNot()],
|
|
comparators=[
|
|
Constant(value=None)]),
|
|
body=Name(id='epoch', ctx=Load()),
|
|
orelse=Call(
|
|
func=Name(id='int', ctx=Load()),
|
|
args=[
|
|
Attribute(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='p', ctx=Load()),
|
|
attr='stat',
|
|
ctx=Load())),
|
|
attr='st_mtime',
|
|
ctx=Load())]))),
|
|
If(
|
|
test=Compare(
|
|
left=Name(id='score', ctx=Load()),
|
|
ops=[
|
|
Gt()],
|
|
comparators=[
|
|
Name(id='best_epoch', ctx=Load())]),
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='best_epoch', ctx=Store())],
|
|
value=Name(id='score', ctx=Load())),
|
|
Assign(
|
|
targets=[
|
|
Name(id='best', ctx=Store())],
|
|
value=Tuple(
|
|
elts=[
|
|
Name(id='p', ctx=Load()),
|
|
Name(id='obj', ctx=Load()),
|
|
Name(id='score', ctx=Load())],
|
|
ctx=Load()))])]),
|
|
If(
|
|
test=UnaryOp(
|
|
op=Not(),
|
|
operand=Name(id='best', ctx=Load())),
|
|
body=[
|
|
Return(
|
|
value=Constant(value=None))]),
|
|
Assign(
|
|
targets=[
|
|
Tuple(
|
|
elts=[
|
|
Name(id='p', ctx=Store()),
|
|
Name(id='obj', ctx=Store()),
|
|
Name(id='epoch', ctx=Store())],
|
|
ctx=Store())],
|
|
value=Name(id='best', ctx=Load())),
|
|
Assign(
|
|
targets=[
|
|
Name(id='gen', ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='obj', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='generation')])),
|
|
Assign(
|
|
targets=[
|
|
Name(id='strict', ctx=Store())],
|
|
value=BoolOp(
|
|
op=And(),
|
|
values=[
|
|
Compare(
|
|
left=Call(
|
|
func=Attribute(
|
|
value=Name(id='obj', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='status')]),
|
|
ops=[
|
|
Eq()],
|
|
comparators=[
|
|
Constant(value='SEALED')]),
|
|
Compare(
|
|
left=Call(
|
|
func=Attribute(
|
|
value=Name(id='obj', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='cloud_quorum')]),
|
|
ops=[
|
|
Eq()],
|
|
comparators=[
|
|
Constant(value=2)]),
|
|
Compare(
|
|
left=Call(
|
|
func=Attribute(
|
|
value=Name(id='obj', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='cloud_a_verified')]),
|
|
ops=[
|
|
Is()],
|
|
comparators=[
|
|
Constant(value=True)]),
|
|
Compare(
|
|
left=Call(
|
|
func=Attribute(
|
|
value=Name(id='obj', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='cloud_b_verified')]),
|
|
ops=[
|
|
Is()],
|
|
comparators=[
|
|
Constant(value=True)]),
|
|
Compare(
|
|
left=Call(
|
|
func=Attribute(
|
|
value=Name(id='obj', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='part_hashes_verified')]),
|
|
ops=[
|
|
Is()],
|
|
comparators=[
|
|
Constant(value=True)]),
|
|
Compare(
|
|
left=Call(
|
|
func=Attribute(
|
|
value=Name(id='obj', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='seal_written')]),
|
|
ops=[
|
|
Is()],
|
|
comparators=[
|
|
Constant(value=True)]),
|
|
Compare(
|
|
left=Call(
|
|
func=Attribute(
|
|
value=Name(id='obj', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='local_payload_present')]),
|
|
ops=[
|
|
Is()],
|
|
comparators=[
|
|
Constant(value=False)]),
|
|
Compare(
|
|
left=Call(
|
|
func=Attribute(
|
|
value=Name(id='obj', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='local_cleanup')]),
|
|
ops=[
|
|
Eq()],
|
|
comparators=[
|
|
Constant(value='OK')])])),
|
|
Assign(
|
|
targets=[
|
|
Name(id='rroot', ctx=Store())],
|
|
value=IfExp(
|
|
test=Compare(
|
|
left=Name(id='kind', ctx=Load()),
|
|
ops=[
|
|
Eq()],
|
|
comparators=[
|
|
Constant(value='VM')]),
|
|
body=Name(id='VMREST', ctx=Load()),
|
|
orelse=Name(id='APPREST', ctx=Load()))),
|
|
Assign(
|
|
targets=[
|
|
Name(id='rev', ctx=Store())],
|
|
value=IfExp(
|
|
test=Name(id='gen', ctx=Load()),
|
|
body=BinOp(
|
|
left=BinOp(
|
|
left=Name(id='rroot', ctx=Load()),
|
|
op=Div(),
|
|
right=Name(id='logical', ctx=Load())),
|
|
op=Div(),
|
|
right=BinOp(
|
|
left=Call(
|
|
func=Name(id='str', ctx=Load()),
|
|
args=[
|
|
Name(id='gen', ctx=Load())]),
|
|
op=Add(),
|
|
right=Constant(value='.json'))),
|
|
orelse=Constant(value=None))),
|
|
Assign(
|
|
targets=[
|
|
Name(id='restore', ctx=Store())],
|
|
value=Constant(value=False)),
|
|
If(
|
|
test=BoolOp(
|
|
op=And(),
|
|
values=[
|
|
Name(id='rev', ctx=Load()),
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='rev', ctx=Load()),
|
|
attr='is_file',
|
|
ctx=Load()))]),
|
|
body=[
|
|
Try(
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='rj', ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='json', ctx=Load()),
|
|
attr='loads',
|
|
ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='rev', ctx=Load()),
|
|
attr='read_text',
|
|
ctx=Load()),
|
|
keywords=[
|
|
keyword(
|
|
arg='encoding',
|
|
value=Constant(value='utf-8'))])])),
|
|
Assign(
|
|
targets=[
|
|
Name(id='restore', ctx=Store())],
|
|
value=Compare(
|
|
left=Call(
|
|
func=Attribute(
|
|
value=Name(id='rj', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='result')]),
|
|
ops=[
|
|
Eq()],
|
|
comparators=[
|
|
Constant(value='OK')]))],
|
|
handlers=[
|
|
ExceptHandler(
|
|
type=Name(id='Exception', ctx=Load()),
|
|
body=[
|
|
Pass()])])]),
|
|
Assign(
|
|
targets=[
|
|
Name(id='age', ctx=Store())],
|
|
value=IfExp(
|
|
test=Name(id='epoch', ctx=Load()),
|
|
body=Call(
|
|
func=Name(id='max', ctx=Load()),
|
|
args=[
|
|
Constant(value=0),
|
|
Call(
|
|
func=Name(id='int', ctx=Load()),
|
|
args=[
|
|
BinOp(
|
|
left=Call(
|
|
func=Attribute(
|
|
value=Name(id='time', ctx=Load()),
|
|
attr='time',
|
|
ctx=Load())),
|
|
op=Sub(),
|
|
right=Name(id='epoch', ctx=Load()))])]),
|
|
orelse=Constant(value=None))),
|
|
Return(
|
|
value=Dict(
|
|
keys=[
|
|
Constant(value='generation'),
|
|
Constant(value='strict'),
|
|
Constant(value='restore_ok'),
|
|
Constant(value='age_seconds'),
|
|
Constant(value='state_file'),
|
|
Constant(value='obj')],
|
|
values=[
|
|
Name(id='gen', ctx=Load()),
|
|
Name(id='strict', ctx=Load()),
|
|
Name(id='restore', ctx=Load()),
|
|
Name(id='age', ctx=Load()),
|
|
Call(
|
|
func=Name(id='str', ctx=Load()),
|
|
args=[
|
|
Name(id='p', ctx=Load())]),
|
|
Name(id='obj', ctx=Load())]))])
|
|
BACKUP_AUDIT_FUNC_2_AST_END
|
|
BACKUP_AUDIT_FUNC_3_NAME=parse_app_plan
|
|
BACKUP_AUDIT_FUNC_3_LINENO=84
|
|
BACKUP_AUDIT_FUNC_3_ENDLINENO=93
|
|
BACKUP_AUDIT_FUNC_3_NAMES=d,get,k,line,r,split,splitlines,startswith,tok,txt,v
|
|
BACKUP_AUDIT_FUNC_3_AST_BEGIN
|
|
FunctionDef(
|
|
name='parse_app_plan',
|
|
args=arguments(
|
|
args=[
|
|
arg(arg='txt')]),
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='d', ctx=Store())],
|
|
value=Dict()),
|
|
For(
|
|
target=Name(id='line', ctx=Store()),
|
|
iter=Call(
|
|
func=Attribute(
|
|
value=Name(id='txt', ctx=Load()),
|
|
attr='splitlines',
|
|
ctx=Load())),
|
|
body=[
|
|
If(
|
|
test=Call(
|
|
func=Attribute(
|
|
value=Name(id='line', ctx=Load()),
|
|
attr='startswith',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='QUEUE_FRESHNESS_PLAN APP=')]),
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='r', ctx=Store())],
|
|
value=Dict()),
|
|
For(
|
|
target=Name(id='tok', ctx=Store()),
|
|
iter=Subscript(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='line', ctx=Load()),
|
|
attr='split',
|
|
ctx=Load())),
|
|
slice=Slice(
|
|
lower=Constant(value=1)),
|
|
ctx=Load()),
|
|
body=[
|
|
If(
|
|
test=Compare(
|
|
left=Constant(value='='),
|
|
ops=[
|
|
In()],
|
|
comparators=[
|
|
Name(id='tok', ctx=Load())]),
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Tuple(
|
|
elts=[
|
|
Name(id='k', ctx=Store()),
|
|
Name(id='v', ctx=Store())],
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='tok', ctx=Load()),
|
|
attr='split',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='='),
|
|
Constant(value=1)])),
|
|
Assign(
|
|
targets=[
|
|
Subscript(
|
|
value=Name(id='r', ctx=Load()),
|
|
slice=Name(id='k', ctx=Load()),
|
|
ctx=Store())],
|
|
value=Name(id='v', ctx=Load()))])]),
|
|
If(
|
|
test=Call(
|
|
func=Attribute(
|
|
value=Name(id='r', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='APP')]),
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Subscript(
|
|
value=Name(id='d', ctx=Load()),
|
|
slice=Subscript(
|
|
value=Name(id='r', ctx=Load()),
|
|
slice=Constant(value='APP'),
|
|
ctx=Load()),
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='r', ctx=Load()),
|
|
attr='get',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value='DECISION')]))])])]),
|
|
Return(
|
|
value=Name(id='d', ctx=Load()))])
|
|
BACKUP_AUDIT_FUNC_3_AST_END
|
|
BACKUP_AUDIT_FUNC_4_NAME=expected_v2_heavy_lock_owner
|
|
BACKUP_AUDIT_FUNC_4_LINENO=188
|
|
BACKUP_AUDIT_FUNC_4_ENDLINENO=200
|
|
BACKUP_AUDIT_FUNC_4_NAMES=Exception,_,a,add,arc,fe,fo,frc,int,isdigit,owners,pid,pid_text,prc,replace,run,set,split,strip,tok
|
|
BACKUP_AUDIT_FUNC_4_AST_BEGIN
|
|
FunctionDef(
|
|
name='expected_v2_heavy_lock_owner',
|
|
args=arguments(),
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Tuple(
|
|
elts=[
|
|
Name(id='arc', ctx=Store()),
|
|
Name(id='a', ctx=Store()),
|
|
Name(id='_', ctx=Store())],
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='run', ctx=Load()),
|
|
args=[
|
|
List(
|
|
elts=[
|
|
Constant(value='systemctl'),
|
|
Constant(value='show'),
|
|
Constant(value='homelab-backup-v2.service'),
|
|
Constant(value='-p'),
|
|
Constant(value='ActiveState'),
|
|
Constant(value='--value')],
|
|
ctx=Load()),
|
|
Constant(value=10)])),
|
|
Assign(
|
|
targets=[
|
|
Tuple(
|
|
elts=[
|
|
Name(id='prc', ctx=Store()),
|
|
Name(id='pid_text', ctx=Store()),
|
|
Name(id='_', ctx=Store())],
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='run', ctx=Load()),
|
|
args=[
|
|
List(
|
|
elts=[
|
|
Constant(value='systemctl'),
|
|
Constant(value='show'),
|
|
Constant(value='homelab-backup-v2.service'),
|
|
Constant(value='-p'),
|
|
Constant(value='MainPID'),
|
|
Constant(value='--value')],
|
|
ctx=Load()),
|
|
Constant(value=10)])),
|
|
If(
|
|
test=BoolOp(
|
|
op=Or(),
|
|
values=[
|
|
Compare(
|
|
left=Name(id='arc', ctx=Load()),
|
|
ops=[
|
|
NotEq()],
|
|
comparators=[
|
|
Constant(value=0)]),
|
|
Compare(
|
|
left=Name(id='prc', ctx=Load()),
|
|
ops=[
|
|
NotEq()],
|
|
comparators=[
|
|
Constant(value=0)]),
|
|
Compare(
|
|
left=Call(
|
|
func=Attribute(
|
|
value=Name(id='a', ctx=Load()),
|
|
attr='strip',
|
|
ctx=Load())),
|
|
ops=[
|
|
NotIn()],
|
|
comparators=[
|
|
Tuple(
|
|
elts=[
|
|
Constant(value='active'),
|
|
Constant(value='activating')],
|
|
ctx=Load())])]),
|
|
body=[
|
|
Return(
|
|
value=Constant(value=False))]),
|
|
Try(
|
|
body=[
|
|
Assign(
|
|
targets=[
|
|
Name(id='pid', ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='int', ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Attribute(
|
|
value=Name(id='pid_text', ctx=Load()),
|
|
attr='strip',
|
|
ctx=Load()))]))],
|
|
handlers=[
|
|
ExceptHandler(
|
|
type=Name(id='Exception', ctx=Load()),
|
|
body=[
|
|
Return(
|
|
value=Constant(value=False))])]),
|
|
If(
|
|
test=Compare(
|
|
left=Name(id='pid', ctx=Load()),
|
|
ops=[
|
|
LtE()],
|
|
comparators=[
|
|
Constant(value=0)]),
|
|
body=[
|
|
Return(
|
|
value=Constant(value=False))]),
|
|
Assign(
|
|
targets=[
|
|
Tuple(
|
|
elts=[
|
|
Name(id='frc', ctx=Store()),
|
|
Name(id='fo', ctx=Store()),
|
|
Name(id='fe', ctx=Store())],
|
|
ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='run', ctx=Load()),
|
|
args=[
|
|
List(
|
|
elts=[
|
|
Constant(value='fuser'),
|
|
Constant(value='/run/homelab-backup-heavy.lock')],
|
|
ctx=Load()),
|
|
Constant(value=10)])),
|
|
Assign(
|
|
targets=[
|
|
Name(id='owners', ctx=Store())],
|
|
value=Call(
|
|
func=Name(id='set', ctx=Load()))),
|
|
For(
|
|
target=Name(id='tok', ctx=Store()),
|
|
iter=Call(
|
|
func=Attribute(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=BinOp(
|
|
left=BinOp(
|
|
left=Name(id='fo', ctx=Load()),
|
|
op=Add(),
|
|
right=Constant(value=' ')),
|
|
op=Add(),
|
|
right=Name(id='fe', ctx=Load())),
|
|
attr='replace',
|
|
ctx=Load()),
|
|
args=[
|
|
Constant(value=':'),
|
|
Constant(value=' ')]),
|
|
attr='split',
|
|
ctx=Load())),
|
|
body=[
|
|
If(
|
|
test=Call(
|
|
func=Attribute(
|
|
value=Name(id='tok', ctx=Load()),
|
|
attr='isdigit',
|
|
ctx=Load())),
|
|
body=[
|
|
Expr(
|
|
value=Call(
|
|
func=Attribute(
|
|
value=Name(id='owners', ctx=Load()),
|
|
attr='add',
|
|
ctx=Load()),
|
|
args=[
|
|
Call(
|
|
func=Name(id='int', ctx=Load()),
|
|
args=[
|
|
Name(id='tok', ctx=Load())])]))])]),
|
|
Return(
|
|
value=BoolOp(
|
|
op=And(),
|
|
values=[
|
|
Compare(
|
|
left=Name(id='frc', ctx=Load()),
|
|
ops=[
|
|
Eq()],
|
|
comparators=[
|
|
Constant(value=0)]),
|
|
Compare(
|
|
left=Name(id='owners', ctx=Load()),
|
|
ops=[
|
|
Eq()],
|
|
comparators=[
|
|
Set(
|
|
elts=[
|
|
Name(id='pid', ctx=Load())])])]))])
|
|
BACKUP_AUDIT_FUNC_4_AST_END
|
|
QUORUM_HOMELAB_APP_CLOUD_QUORUM_QUEUE_PRESENT=true
|
|
QUORUM_HOMELAB_APP_CLOUD_QUORUM_QUEUE_SHA=1f959049cca2710a2cb820cc1f6acab16399c6b6711b9e4522e0ecd49e0e4650
|
|
QUORUM_HOMELAB_APP_CLOUD_QUORUM_QUEUE_BASENAME=homelab-app-cloud-quorum-queue
|
|
QUORUM_HOMELAB_APP_CLOUD_QUORUM_QUEUE_AST_OK=false
|
|
QUORUM_HOMELAB_APP_CLOUD_QUORUM_QUEUE_AST_ERROR=SyntaxError
|
|
QUORUM_HOMELAB_APP_CLOUD_QUORUM_QUEUE_HELP_RC=64
|
|
QUORUM_HOMELAB_APP_CLOUD_QUORUM_QUEUE_HELP_SHA=53bc0423b5ea9142a7be1f687f1572975bc52349a1fd28f97d6c0748b2b445e1
|
|
QUORUM_HOMELAB_APP_CLOUD_QUORUM_QUEUE_HELP_BEGIN
|
|
|
|
APP_QUORUM_QUEUE_ERROR=ACTION_INVALID
|
|
QUORUM_HOMELAB_APP_CLOUD_QUORUM_QUEUE_HELP_END
|
|
PRODUCER_SCRIPT_COUNT=3
|
|
PRODUCER_UNIT_COUNT=4
|
|
PRODUCER_UNIT_1_NAME=homelab-app-cloud-quorum-queue.service
|
|
PRODUCER_UNIT_1_SHOW_RC=0
|
|
PRODUCER_UNIT_1_LOADSTATE=loaded
|
|
PRODUCER_UNIT_1_ACTIVESTATE=inactive
|
|
PRODUCER_UNIT_1_UNITFILESTATE=static
|
|
PRODUCER_UNIT_1_RESULT=success
|
|
PRODUCER_UNIT_1_EXECMAINSTATUS=0
|
|
PRODUCER_UNIT_1_FRAGMENT_BASENAME=homelab-app-cloud-quorum-queue.service
|
|
PRODUCER_UNIT_1_FRAGMENT_SHA=afaa997bd85dafdb29d2cd2b53527996171c21fd5e80ae559f8f2bee0dcbbf1a
|
|
PRODUCER_UNIT_1_EXECSTART_SHA=22094bb14d8dc5f7399744e183b096583a9c9625527a2f00981f2ec5cd8e1713
|
|
PRODUCER_UNIT_1_EXEC_COMPONENTS=NONE
|
|
PRODUCER_UNIT_1_ENVFILES_SHA=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
PRODUCER_UNIT_2_NAME=homelab-app-cloud-quorum-queue.timer
|
|
PRODUCER_UNIT_2_SHOW_RC=0
|
|
PRODUCER_UNIT_2_LOADSTATE=loaded
|
|
PRODUCER_UNIT_2_ACTIVESTATE=active
|
|
PRODUCER_UNIT_2_UNITFILESTATE=enabled
|
|
PRODUCER_UNIT_2_RESULT=success
|
|
PRODUCER_UNIT_2_EXECMAINSTATUS=
|
|
PRODUCER_UNIT_2_FRAGMENT_BASENAME=homelab-app-cloud-quorum-queue.timer
|
|
PRODUCER_UNIT_2_FRAGMENT_SHA=af2eedce3df53029b591d31715a3f3e6688ddb997b4823f487e70c339ce88078
|
|
PRODUCER_UNIT_2_EXECSTART_SHA=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
PRODUCER_UNIT_2_EXEC_COMPONENTS=NONE
|
|
PRODUCER_UNIT_2_ENVFILES_SHA=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
PRODUCER_UNIT_3_NAME=skladchik-reports-monitor-supervisor.service
|
|
PRODUCER_UNIT_3_SHOW_RC=0
|
|
PRODUCER_UNIT_3_LOADSTATE=loaded
|
|
PRODUCER_UNIT_3_ACTIVESTATE=inactive
|
|
PRODUCER_UNIT_3_UNITFILESTATE=static
|
|
PRODUCER_UNIT_3_RESULT=success
|
|
PRODUCER_UNIT_3_EXECMAINSTATUS=0
|
|
PRODUCER_UNIT_3_FRAGMENT_BASENAME=skladchik-reports-monitor-supervisor.service
|
|
PRODUCER_UNIT_3_FRAGMENT_SHA=e874fb03573b76181f3eb812c7285848e60705923c172a2f102504a7b9100ef7
|
|
PRODUCER_UNIT_3_EXECSTART_SHA=27a2477643cbfc4f8676fd88ebc5cff23e471bc80f89094941123fa62e3edc5f
|
|
PRODUCER_UNIT_3_EXEC_COMPONENTS=skladchik-reports-monitor-supervisor
|
|
PRODUCER_UNIT_3_ENVFILES_SHA=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
PRODUCER_UNIT_4_NAME=skladchik-reports-monitor-supervisor.timer
|
|
PRODUCER_UNIT_4_SHOW_RC=0
|
|
PRODUCER_UNIT_4_LOADSTATE=loaded
|
|
PRODUCER_UNIT_4_ACTIVESTATE=active
|
|
PRODUCER_UNIT_4_UNITFILESTATE=enabled
|
|
PRODUCER_UNIT_4_RESULT=success
|
|
PRODUCER_UNIT_4_EXECMAINSTATUS=
|
|
PRODUCER_UNIT_4_FRAGMENT_BASENAME=skladchik-reports-monitor-supervisor.timer
|
|
PRODUCER_UNIT_4_FRAGMENT_SHA=3c3e38a40b3dfbfaa77d99a1c2bea4b58009130eac7a5197356dead1137a5ef6
|
|
PRODUCER_UNIT_4_EXECSTART_SHA=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
PRODUCER_UNIT_4_EXEC_COMPONENTS=NONE
|
|
PRODUCER_UNIT_4_ENVFILES_SHA=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
APPID_CONFIG_MATCH_COUNT=565
|
|
APPID_CONFIG_1_BASENAME=targets.json
|
|
APPID_CONFIG_1_PATH_HINT=//etc/homelab-backup/targets.json
|
|
APPID_CONFIG_1_SHA=2f526330152d49461ff66f50adab57d1a195ea5d1b4c292945d523411b8a68a8
|
|
APPID_CONFIG_1_LINE_NOS=115
|
|
APPID_CONFIG_2_BASENAME=targets.json.before-skladchik-core-apps-20261003T205612Z.bak
|
|
APPID_CONFIG_2_PATH_HINT=//etc/homelab-backup/targets.json.before-skladchik-core-apps-20261003T205612Z.bak
|
|
APPID_CONFIG_2_SHA=6ecf034ca03b52a1e6beceeae81d86a623885462c095d50b133aea4048a4626e
|
|
APPID_CONFIG_2_LINE_NOS=115
|
|
APPID_CONFIG_3_BASENAME=task.json
|
|
APPID_CONFIG_3_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T192441Z-1666483-preflight/task.json
|
|
APPID_CONFIG_3_SHA=0574665bd3a394e6471a28f0803d6a0134d61fd382ffe702f923a3336a845bcb
|
|
APPID_CONFIG_3_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_4_BASENAME=task.json
|
|
APPID_CONFIG_4_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T192627Z-1668009-prepare/task.json
|
|
APPID_CONFIG_4_SHA=0574665bd3a394e6471a28f0803d6a0134d61fd382ffe702f923a3336a845bcb
|
|
APPID_CONFIG_4_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_5_BASENAME=task.json
|
|
APPID_CONFIG_5_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T192843Z-1681558-dry-run/task.json
|
|
APPID_CONFIG_5_SHA=0574665bd3a394e6471a28f0803d6a0134d61fd382ffe702f923a3336a845bcb
|
|
APPID_CONFIG_5_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_6_BASENAME=task.json
|
|
APPID_CONFIG_6_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T193210Z-1692269-apply/task.json
|
|
APPID_CONFIG_6_SHA=0574665bd3a394e6471a28f0803d6a0134d61fd382ffe702f923a3336a845bcb
|
|
APPID_CONFIG_6_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_7_BASENAME=task.json
|
|
APPID_CONFIG_7_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T193950Z-1722753-preflight/task.json
|
|
APPID_CONFIG_7_SHA=0574665bd3a394e6471a28f0803d6a0134d61fd382ffe702f923a3336a845bcb
|
|
APPID_CONFIG_7_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_8_BASENAME=task.json
|
|
APPID_CONFIG_8_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T193952Z-1722941-prepare/task.json
|
|
APPID_CONFIG_8_SHA=0574665bd3a394e6471a28f0803d6a0134d61fd382ffe702f923a3336a845bcb
|
|
APPID_CONFIG_8_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_9_BASENAME=task.json
|
|
APPID_CONFIG_9_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T193952Z-1723022-dry-run/task.json
|
|
APPID_CONFIG_9_SHA=0574665bd3a394e6471a28f0803d6a0134d61fd382ffe702f923a3336a845bcb
|
|
APPID_CONFIG_9_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_10_BASENAME=task.json
|
|
APPID_CONFIG_10_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T194508Z-1738655-apply/task.json
|
|
APPID_CONFIG_10_SHA=0574665bd3a394e6471a28f0803d6a0134d61fd382ffe702f923a3336a845bcb
|
|
APPID_CONFIG_10_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_11_BASENAME=task.json
|
|
APPID_CONFIG_11_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T200841Z-1818714-preflight/task.json
|
|
APPID_CONFIG_11_SHA=8741a7407c135ebe5303056da44186d280b410efbca3714054a990d0f0340aec
|
|
APPID_CONFIG_11_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_12_BASENAME=task.json
|
|
APPID_CONFIG_12_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T200843Z-1818903-prepare/task.json
|
|
APPID_CONFIG_12_SHA=8741a7407c135ebe5303056da44186d280b410efbca3714054a990d0f0340aec
|
|
APPID_CONFIG_12_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_13_BASENAME=task.json
|
|
APPID_CONFIG_13_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T200843Z-1818980-dry-run/task.json
|
|
APPID_CONFIG_13_SHA=8741a7407c135ebe5303056da44186d280b410efbca3714054a990d0f0340aec
|
|
APPID_CONFIG_13_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_14_BASENAME=task.json
|
|
APPID_CONFIG_14_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T201139Z-1833098-apply/task.json
|
|
APPID_CONFIG_14_SHA=8741a7407c135ebe5303056da44186d280b410efbca3714054a990d0f0340aec
|
|
APPID_CONFIG_14_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_15_BASENAME=task.json
|
|
APPID_CONFIG_15_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T201939Z-1860663-preflight/task.json
|
|
APPID_CONFIG_15_SHA=c121d768f5aaf7dc111cf176f890bbd7508650813760b99ed97aa19613c94e68
|
|
APPID_CONFIG_15_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_16_BASENAME=task.json
|
|
APPID_CONFIG_16_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T201941Z-1860857-prepare/task.json
|
|
APPID_CONFIG_16_SHA=c121d768f5aaf7dc111cf176f890bbd7508650813760b99ed97aa19613c94e68
|
|
APPID_CONFIG_16_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_17_BASENAME=task.json
|
|
APPID_CONFIG_17_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T201941Z-1860933-dry-run/task.json
|
|
APPID_CONFIG_17_SHA=c121d768f5aaf7dc111cf176f890bbd7508650813760b99ed97aa19613c94e68
|
|
APPID_CONFIG_17_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_18_BASENAME=task.json
|
|
APPID_CONFIG_18_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T202241Z-1874939-apply/task.json
|
|
APPID_CONFIG_18_SHA=c121d768f5aaf7dc111cf176f890bbd7508650813760b99ed97aa19613c94e68
|
|
APPID_CONFIG_18_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_19_BASENAME=task.json
|
|
APPID_CONFIG_19_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T204310Z-1946040-preflight/task.json
|
|
APPID_CONFIG_19_SHA=51ff18905717a2c1871cb25b56f4959d87d7ee798296f720b263332af8785bf2
|
|
APPID_CONFIG_19_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_20_BASENAME=task.json
|
|
APPID_CONFIG_20_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T204311Z-1946265-prepare/task.json
|
|
APPID_CONFIG_20_SHA=51ff18905717a2c1871cb25b56f4959d87d7ee798296f720b263332af8785bf2
|
|
APPID_CONFIG_20_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_21_BASENAME=task.json
|
|
APPID_CONFIG_21_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T204311Z-1946345-dry-run/task.json
|
|
APPID_CONFIG_21_SHA=51ff18905717a2c1871cb25b56f4959d87d7ee798296f720b263332af8785bf2
|
|
APPID_CONFIG_21_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_22_BASENAME=task.json
|
|
APPID_CONFIG_22_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T204533Z-1956057-apply/task.json
|
|
APPID_CONFIG_22_SHA=51ff18905717a2c1871cb25b56f4959d87d7ee798296f720b263332af8785bf2
|
|
APPID_CONFIG_22_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_23_BASENAME=task.json
|
|
APPID_CONFIG_23_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T205721Z-1989628-preflight/task.json
|
|
APPID_CONFIG_23_SHA=51ff18905717a2c1871cb25b56f4959d87d7ee798296f720b263332af8785bf2
|
|
APPID_CONFIG_23_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_24_BASENAME=task.json
|
|
APPID_CONFIG_24_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T205722Z-1989815-prepare/task.json
|
|
APPID_CONFIG_24_SHA=51ff18905717a2c1871cb25b56f4959d87d7ee798296f720b263332af8785bf2
|
|
APPID_CONFIG_24_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_25_BASENAME=task.json
|
|
APPID_CONFIG_25_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T205722Z-1989891-dry-run/task.json
|
|
APPID_CONFIG_25_SHA=51ff18905717a2c1871cb25b56f4959d87d7ee798296f720b263332af8785bf2
|
|
APPID_CONFIG_25_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_26_BASENAME=stderr.log
|
|
APPID_CONFIG_26_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T210034Z-2011730-apply/stderr.log
|
|
APPID_CONFIG_26_SHA=bbc5b7b614a73219147a06614942e2c67176375af10bcb85aeac5565cb8c2532
|
|
APPID_CONFIG_26_LINE_NOS=7,8
|
|
APPID_CONFIG_27_BASENAME=stdout.log
|
|
APPID_CONFIG_27_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T210034Z-2011730-apply/stdout.log
|
|
APPID_CONFIG_27_SHA=cdf49d288d7b019b1a5f5099fe8b3e4f5ed1432294051a3c2020a4369c4afd41
|
|
APPID_CONFIG_27_LINE_NOS=24,31,32,35
|
|
APPID_CONFIG_28_BASENAME=task.json
|
|
APPID_CONFIG_28_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T210034Z-2011730-apply/task.json
|
|
APPID_CONFIG_28_SHA=51ff18905717a2c1871cb25b56f4959d87d7ee798296f720b263332af8785bf2
|
|
APPID_CONFIG_28_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_29_BASENAME=task.json
|
|
APPID_CONFIG_29_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T211239Z-2049968-preflight/task.json
|
|
APPID_CONFIG_29_SHA=4d850b025c6a9ad347015321775f9d0466149fb9d5a70212f91b6535adc3c0e3
|
|
APPID_CONFIG_29_LINE_NOS=44,55,56,81,86
|
|
APPID_CONFIG_30_BASENAME=task.json
|
|
APPID_CONFIG_30_PATH_HINT=lib/homelab-admin/runs/backup-app-cloud-quorum-cutover-v1/20260808T213313Z-2127686-preflight/task.json
|
|
APPID_CONFIG_30_SHA=d98bdf83ab6a9fda0d864e3ccac4a0d01e7813fec9f1173a6d4d5e8712c8e238
|
|
APPID_CONFIG_30_LINE_NOS=44,55,56,81,86
|
|
GEN_JOURNAL_MATCH_COUNT=3
|
|
GEN_JOURNAL_1_UNIT=skladchik-reports-monitor-supervisor.service
|
|
GEN_JOURNAL_1_IDENT=skladchik-reports-monitor-supervisor
|
|
GEN_JOURNAL_1_EXE_BASENAME=python3.13
|
|
GEN_JOURNAL_1_PID=932988
|
|
GEN_JOURNAL_1_MESSAGE_SHA=93a0f7b08cf701cc4f77f2d02c659932db4ca849640cbbe55327693c1e4365eb
|
|
GEN_JOURNAL_1_FLAGS=generation,backup,sealed
|
|
GEN_JOURNAL_2_UNIT=homelab-backup-audit.service
|
|
GEN_JOURNAL_2_IDENT=homelab-backup-audit
|
|
GEN_JOURNAL_2_EXE_BASENAME=python3.13
|
|
GEN_JOURNAL_2_PID=966882
|
|
GEN_JOURNAL_2_MESSAGE_SHA=c8c9e905543f63dbee767d26e1c1824c99e7a23094405dba984b18361a36527f
|
|
GEN_JOURNAL_2_FLAGS=generation,fresh,skip_fresh
|
|
GEN_JOURNAL_3_UNIT=skladchik-reports-monitor-supervisor.service
|
|
GEN_JOURNAL_3_IDENT=skladchik-reports-monitor-supervisor
|
|
GEN_JOURNAL_3_EXE_BASENAME=python3.13
|
|
GEN_JOURNAL_3_PID=968339
|
|
GEN_JOURNAL_3_MESSAGE_SHA=93a0f7b08cf701cc4f77f2d02c659932db4ca849640cbbe55327693c1e4365eb
|
|
GEN_JOURNAL_3_FLAGS=generation,backup,sealed
|
|
QUORUM_SCRIPT_READY=false
|
|
QUORUM_UNIT_READY=true
|
|
APPID_CONFIG_READY=true
|
|
BACKUP_PRODUCER_TOPOLOGY_READY=false
|
|
MAIL_SENT_BY_COMMAND=false
|
|
CHANGES_MADE=false
|
|
ROLLBACK_STARTED=false
|
|
ROLLBACK_RESTORED=null
|
|
MUTATION_OUTCOME=NO_MUTATION
|
|
DECISION=HOLD_BACKUP_PRODUCER_RCA
|
|
NEXT_GATE=BACKUP_PRODUCER_RECONCILE
|
|
TASK_RESULT=SKLADCHIK_DURABILITY_BACKUP_PRODUCER_RCA
|
|
|
|
OUTPUT_END
|
|
CHAT_OUTPUT_END
|