1
0
Files
homelab-public-context/runtime/latest.json
T

39 lines
128 KiB
JSON

{
"schema_version": 1,
"channel": "homelab-runtime",
"command_id": "SUPPORT-261004-SKLADCHIK-COMPLAINTS-TITLE-TOKEN-RCA-99564R1",
"status": "OK",
"rc": 0,
"host": "pve01",
"mode": "read-only",
"component": "skladchik-complaints-title-token-rca",
"started_at_utc": "2026-10-04T20:16:41Z",
"finished_at_utc": "2026-10-04T20:16:46Z",
"reference_register_checked": true,
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
"error_register_checked": true,
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
"command_sha256": "bbe4077da8ab20fa07a5b8458821ecbe544b502ccbb871742ef07ac2d14d220e",
"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": "f375d4e36d4d0a70ebad8412a2dd1f0e4faa25f8c6f2d4d648a215164c8f2d2c",
"sanitized_output_sha256": "f375d4e36d4d0a70ebad8412a2dd1f0e4faa25f8c6f2d4d648a215164c8f2d2c",
"output_truncated_in_json": false,
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
"output": "SKLADCHIK_COMPLAINTS_TITLE_TOKEN_RCA=V1\nMODE=read-only\nNO_MAIL_SEND=true\nNO_SERVICE_RESTART=true\nNO_TIMER_MUTATION=true\nNO_NETWORK_MUTATION=true\nNO_SOURCE_MUTATION=true\nHOST_PVE01=true\nVM170_STATUS=running\nHEALTH_SCAN=V1\nHEALTH_PRESENT=true\nHEALTH_SHA256=918f3d1db31c64fe5f7548c3da6183ca6bf8be80384fa0673c55f68826dcc717\nHEALTH_BYTES=16080\nHEALTH_FUNCTION_COUNT=22\nHEALTH_FUNC=utc_now:24:25\nHEALTH_FUNC=ts:28:29\nHEALTH_FUNC=log:32:35\nHEALTH_FUNC=run_cmd:38:43\nHEALTH_FUNC=parse_kv_file:46:54\nHEALTH_FUNC=iso_age_seconds:57:64\nHEALTH_FUNC=load_state:67:71\nHEALTH_FUNC=save_state:74:78\nHEALTH_FUNC=load_monitor_module:81:87\nHEALTH_FUNC=send_mail:90:93\nHEALTH_FUNC=systemd_value:96:98\nHEALTH_FUNC=route_ok:101:103\nHEALTH_FUNC=problem_to_ru:106:129\nHEALTH_FUNC=yes_no_ru:132:133\nHEALTH_FUNC=status_ru:136:145\nHEALTH_FUNC=build_status:148:206\nHEALTH_FUNC=status_to_body:209:253\nHEALTH_FUNC=write_alert_health:256:280\nHEALTH_FUNC=do_heartbeat:283:294\nHEALTH_FUNC=do_check:297:332\nHEALTH_FUNC=do_status:335:344\nHEALTH_FUNC=main:347:356\nHEALTH_RELEVANT_COUNT=9\nHEALTH_DUMP_BEGIN=parse_kv_file\nFunctionDef(\n name='parse_kv_file',\n args=arguments(\n args=[\n arg(\n arg='path',\n annotation=Name(id='Path', ctx=Load()))]),\n body=[\n Assign(\n targets=[\n Name(id='data', ctx=Store())],\n value=Dict()),\n If(\n test=UnaryOp(\n op=Not(),\n operand=Call(\n func=Attribute(\n value=Name(id='path', ctx=Load()),\n attr='exists',\n ctx=Load()))),\n body=[\n Return(\n value=Name(id='data', ctx=Load()))]),\n For(\n target=Name(id='raw', ctx=Store()),\n iter=Call(\n func=Attribute(\n value=Call(\n func=Attribute(\n value=Name(id='path', ctx=Load()),\n attr='read_text',\n ctx=Load()),\n keywords=[\n keyword(\n arg='encoding',\n value=Constant(value='utf-8')),\n keyword(\n arg='errors',\n value=Constant(value='replace'))]),\n attr='splitlines',\n ctx=Load())),\n body=[\n If(\n test=Compare(\n left=Constant(value='='),\n ops=[\n In()],\n comparators=[\n Name(id='raw', ctx=Load())]),\n body=[\n Assign(\n targets=[\n Tuple(\n elts=[\n Name(id='k', ctx=Store()),\n Name(id='v', ctx=Store())],\n ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='raw', ctx=Load()),\n attr='split',\n ctx=Load()),\n args=[\n Constant(value='='),\n Constant(value=1)])),\n Assign(\n targets=[\n Subscript(\n value=Name(id='data', ctx=Load()),\n slice=Call(\n func=Attribute(\n value=Name(id='k', ctx=Load()),\n attr='strip',\n ctx=Load())),\n ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='v', ctx=Load()),\n attr='strip',\n ctx=Load())))])]),\n Return(\n value=Name(id='data', ctx=Load()))])\nHEALTH_DUMP_SHA256=577b27aca6d27fc787beed7fda2903d72e67f386753fadfc23325e1279ff8082\nHEALTH_DUMP_TRUNCATED=false\nHEALTH_DUMP_END=parse_kv_file\nHEALTH_DUMP_BEGIN=send_mail\nFunctionDef(\n name='send_mail',\n args=arguments(\n args=[\n arg(\n arg='subject',\n annotation=Name(id='str', ctx=Load())),\n arg(\n arg='body',\n annotation=Name(id='str', ctx=Load()))]),\n body=[\n Assign(\n targets=[\n Name(id='mod', ctx=Store())],\n value=Call(\n func=Name(id='load_monitor_module', ctx=Load()))),\n Assign(\n targets=[\n Tuple(\n elts=[\n Name(id='cfg', ctx=Store()),\n Name(id='secrets', ctx=Store())],\n ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='mod', ctx=Load()),\n attr='load_config',\n ctx=Load()))),\n Return(\n value=Call(\n func=Name(id='bool', ctx=Load()),\n args=[\n Call(\n func=Attribute(\n value=Name(id='mod', ctx=Load()),\n attr='send_mail',\n ctx=Load()),\n args=[\n Name(id='cfg', ctx=Load()),\n Name(id='secrets', ctx=Load()),\n Name(id='subject', ctx=Load()),\n Name(id='body', ctx=Load())])]))],\n returns=Name(id='bool', ctx=Load()))\nHEALTH_DUMP_SHA256=949d900c876b9ee94a5fa7eca5792121fe1e77eee64b76fe447c8c8ba94b48c6\nHEALTH_DUMP_TRUNCATED=false\nHEALTH_DUMP_END=send_mail\nHEALTH_DUMP_BEGIN=route_ok\nFunctionDef(\n name='route_ok',\n args=arguments(),\n body=[\n Assign(\n targets=[\n Tuple(\n elts=[\n Name(id='rc', ctx=Store()),\n Name(id='out', ctx=Store())],\n ctx=Store())],\n value=Call(\n func=Name(id='run_cmd', ctx=Load()),\n args=[\n List(\n elts=[\n Constant(value='ip'),\n Constant(value='route'),\n Constant(value='get'),\n Constant(value='<STR len=14 sha=373b3de2d035>')],\n ctx=Load())],\n keywords=[\n keyword(\n arg='timeout',\n value=Constant(value=10))])),\n Return(\n value=Tuple(\n elts=[\n BoolOp(\n op=And(),\n values=[\n Compare(\n left=Name(id='rc', ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value=0)]),\n Compare(\n left=Constant(value=' dev wt0 '),\n ops=[\n In()],\n comparators=[\n JoinedStr(\n values=[\n Constant(value=' '),\n FormattedValue(\n value=Name(id='out', ctx=Load()),\n conversion=-1),\n Constant(value=' ')])])]),\n Name(id='out', ctx=Load())],\n ctx=Load()))])\nHEALTH_DUMP_SHA256=b3c72e69fe87a4333c66b82a8e898bc417dc642ecd71381f1bb45f6b26f7e255\nHEALTH_DUMP_TRUNCATED=false\nHEALTH_DUMP_END=route_ok\nHEALTH_DUMP_BEGIN=status_ru\nFunctionDef(\n name='status_ru',\n args=arguments(\n args=[\n arg(\n arg='value',\n annotation=Name(id='str', ctx=Load()))]),\n body=[\n If(\n test=Compare(\n left=Name(id='value', ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='OK')]),\n body=[\n Return(\n value=Constant(value='OK'))]),\n If(\n test=Compare(\n left=Name(id='value', ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='ALERT')]),\n body=[\n Return(\n value=Constant(value='ТРЕВОГА'))]),\n If(\n test=Compare(\n left=Name(id='value', ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='AUTH_REQUIRED')]),\n body=[\n Return(\n value=Constant(value='нужна повторная авторизация'))]),\n If(\n test=Compare(\n left=Name(id='value', ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='ERROR')]),\n body=[\n Return(\n value=Constant(value='ошибка'))]),\n Return(\n value=BoolOp(\n op=Or(),\n values=[\n Name(id='value', ctx=Load()),\n Constant(value='неизвестно')]))],\n returns=Name(id='str', ctx=Load()))\nHEALTH_DUMP_SHA256=177f282793ef16e747defa8dbd1fb35e704b9d54ffa892799e430ac9e0ecf22a\nHEALTH_DUMP_TRUNCATED=false\nHEALTH_DUMP_END=status_ru\nHEALTH_DUMP_BEGIN=build_status\nFunctionDef(\n name='build_status',\n args=arguments(),\n body=[\n Assign(\n targets=[\n Name(id='problems', ctx=Store())],\n value=List(ctx=Load())),\n Assign(\n targets=[\n Name(id='health', ctx=Store())],\n value=Call(\n func=Name(id='parse_kv_file', ctx=Load()),\n args=[\n Name(id='HEALTH_PATH', ctx=Load())])),\n Assign(\n targets=[\n Name(id='timer_active', ctx=Store())],\n value=Call(\n func=Name(id='systemd_value', ctx=Load()),\n args=[\n Constant(value='skladchik-reports-monitor.timer'),\n Constant(value='ActiveState')])),\n Assign(\n targets=[\n Tuple(\n elts=[\n Name(id='timer_enabled_rc', ctx=Store()),\n Name(id='timer_enabled', ctx=Store())],\n ctx=Store())],\n value=Call(\n func=Name(id='run_cmd', ctx=Load()),\n args=[\n List(\n elts=[\n Constant(value='systemctl'),\n Constant(value='is-enabled'),\n Constant(value='skladchik-reports-monitor.timer')],\n ctx=Load())],\n keywords=[\n keyword(\n arg='timeout',\n value=Constant(value=10))])),\n Assign(\n targets=[\n Tuple(\n elts=[\n Name(id='watchdog_enabled_rc', ctx=Store()),\n Name(id='watchdog_enabled', ctx=Store())],\n ctx=Store())],\n value=Call(\n func=Name(id='run_cmd', ctx=Load()),\n args=[\n List(\n elts=[\n Constant(value='systemctl'),\n Constant(value='is-enabled'),\n Constant(value='skladchik-reports-monitor-watchdog.timer')],\n ctx=Load())],\n keywords=[\n keyword(\n arg='timeout',\n value=Constant(value=10))])),\n Assign(\n targets=[\n Tuple(\n elts=[\n Name(id='heartbeat_enabled_rc', ctx=Store()),\n Name(id='heartbeat_enabled', ctx=Store())],\n ctx=Store())],\n value=Call(\n func=Name(id='run_cmd', ctx=Load()),\n args=[\n List(\n elts=[\n Constant(value='systemctl'),\n Constant(value='is-enabled'),\n Constant(value='skladchik-reports-monitor-heartbeat.timer')],\n ctx=Load())],\n keywords=[\n keyword(\n arg='timeout',\n value=Constant(value=10))])),\n Assign(\n targets=[\n Tuple(\n elts=[\n Name(id='r_ok', ctx=Store()),\n Name(id='route_text', ctx=Store())],\n ctx=Store())],\n value=Call(\n func=Name(id='route_ok', ctx=Load()))),\n If(\n test=Compare(\n left=Name(id='timer_active', ctx=Load()),\n ops=[\n NotEq()],\n comparators=[\n Constant(value='active')]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='problems', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='monitor_timer_not_active:'),\n FormattedValue(\n value=Name(id='timer_active', ctx=Load()),\n conversion=-1)])]))]),\n If(\n test=BoolOp(\n op=Or(),\n values=[\n Compare(\n left=Name(id='timer_enabled_rc', ctx=Load()),\n ops=[\n NotEq()],\n comparators=[\n Constant(value=0)]),\n Compare(\n left=Name(id='timer_enabled', ctx=Load()),\n ops=[\n NotEq()],\n comparators=[\n Constant(value='enabled')])]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='problems', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='monitor_timer_not_enabled:'),\n FormattedValue(\n value=Name(id='timer_enabled', ctx=Load()),\n conversion=-1)])]))]),\n If(\n test=UnaryOp(\n op=Not(),\n operand=Call(\n func=Attribute(\n value=Name(id='HEALTH_PATH', ctx=Load()),\n attr='exists',\n ctx=Load()))),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='problems', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n Constant(value='monitor_health_missing')]))]),\n If(\n test=Compare(\n left=Call(\n func=Attribute(\n value=Name(id='health', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='STATUS')]),\n ops=[\n NotEq()],\n comparators=[\n Constant(value='OK')]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='problems', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='monitor_status_not_ok:'),\n FormattedValue(\n value=Call(\n func=Attribute(\n value=Name(id='health', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='STATUS'),\n Constant(value='missing')]),\n conversion=-1)])]))]),\n Assign(\n targets=[\n Name(id='age', ctx=Store())],\n value=Call(\n func=Name(id='iso_age_seconds', ctx=Load()),\n args=[\n Call(\n func=Attribute(\n value=Name(id='health', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='TS'),\n Constant(value='')])])),\n If(\n test=Compare(\n left=Name(id='age', ctx=Load()),\n ops=[\n Is()],\n comparators=[\n Constant(value=None)]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='problems', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n Constant(value='monitor_health_ts_invalid')]))],\n orelse=[\n If(\n test=Compare(\n left=Name(id='age', ctx=Load()),\n ops=[\n Gt()],\n comparators=[\n Name(id='MAX_HEALTH_AGE_SECONDS', ctx=Load())]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='problems', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='monitor_health_stale:'),\n FormattedValue(\n value=Name(id='age', ctx=Load()),\n conversion=-1),\n Constant(value='s')])]))])]),\n Try(\n body=[\n Assign(\n targets=[\n Name(id='reports', ctx=Store())],\n value=Call(\n func=Name(id='int', ctx=Load()),\n args=[\n Call(\n func=Attribute(\n value=Name(id='health', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='reports'),\n Constant(value='-1')])]))],\n handlers=[\n ExceptHandler(\n type=Name(id='ValueError', ctx=Load()),\n body=[\n Assign(\n targets=[\n Name(id='reports', ctx=Store())],\n value=UnaryOp(\n op=USub(),\n operand=Constant(value=1)))])]),\n If(\n test=Compare(\n left=Name(id='reports', ctx=Load()),\n ops=[\n LtE()],\n comparators=[\n Constant(value=0)]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='problems', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='monitor_reports_bad:'),\n FormattedValue(\n value=Call(\n func=Attribute(\n value=Name(id='health', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='reports'),\n Constant(value='missing')]),\n conversion=-1)])]))]),\n If(\n test=Compare(\n left=Call(\n func=Attribute(\n value=Name(id='health', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='<STR len=10 sha=7ad9d4b053c4>')]),\n ops=[\n NotIn()],\n comparators=[\n Tuple(\n elts=[\n Constant(value='yes'),\n Constant(value='empty')],\n ctx=Load())]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='problems', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='<STR len=15 sha=d289505c3a17>'),\n FormattedValue(\n value=Call(\n func=Attribute(\n value=Name(id='health', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='<STR len=10 sha=7ad9d4b053c4>'),\n Constant(value='missing')]),\n conversion=-1)])]))]),\n Assign(\n targets=[\n Name(id='expiry_status', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='health', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='<STR len=20 sha=b6f91fcf6eb7>'),\n Constant(value='')])),\n Assign(\n targets=[\n Name(id='expires_raw', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='health', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='<STR len=25 sha=9f7e1b6f8b74>'),\n Constant(value='')])),\n Try(\n body=[\n Assign(\n targets=[\n Name(id='expires_in', ctx=Store())],\n value=Call(\n func=Name(id='int', ctx=Load()),\n args=[\n Name(id='expires_raw', ctx=Load())]))],\n handlers=[\n ExceptHandler(\n type=Name(id='Exception', ctx=Load()),\n body=[\n Assign(\n targets=[\n Name(id='expires_in', ctx=Store())],\n value=Constant(value=None))])]),\n If(\n test=Compare(\n left=Name(id='expiry_status', ctx=Load()),\n ops=[\n In()],\n comparators=[\n Tuple(\n elts=[\n Constant(value=''),\n Constant(value='<STR len=13 sha=b040df43488f>'),\n Constant(value='<STR len=20 sha=9a34b73dd5b1>'),\n Constant(value='ERROR')],\n ctx=Load())]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='problems', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n Constant(value='<STR len=21 sha=34a00b408586>')]))],\n orelse=[\n If(\n test=BoolOp(\n op=Or(),\n values=[\n Compare(\n left=Name(id='expiry_status', ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='EXPIRED')]),\n BoolOp(\n op=And(),\n values=[\n Compare(\n left=Name(id='expires_in', ctx=Load()),\n ops=[\n IsNot()],\n comparators=[\n Constant(value=None)]),\n Compare(\n left=Name(id='expires_in', ctx=Load()),\n ops=[\n LtE()],\n comparators=[\n Constant(value=0)])])]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='problems', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n Constant(value='<STR len=21 sha=17d3d251cf69>')]))],\n orelse=[\n If(\n test=BoolOp(\n op=Or(),\n values=[\n Compare(\n left=Name(id='expiry_status', ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='WARN')]),\n BoolOp(\n op=And(),\n values=[\n Compare(\n left=Name(id='expires_in', ctx=Load()),\n ops=[\n IsNot()],\n comparators=[\n Constant(value=None)]),\n Compare(\n left=Name(id='expires_in', ctx=Load()),\n ops=[\n Lt()],\n comparators=[\n Name(id='COOKIE\nHEALTH_DUMP_SHA256=d30ee0c7a70105bffab10e001bddfad80466fe5a99394d96b4449e991cbfbeaf\nHEALTH_DUMP_TRUNCATED=true\nHEALTH_DUMP_END=build_status\nHEALTH_DUMP_BEGIN=status_to_body\nFunctionDef(\n name='status_to_body',\n args=arguments(\n args=[\n arg(arg='status'),\n arg(\n arg='mode',\n annotation=Name(id='str', ctx=Load()))]),\n body=[\n Assign(\n targets=[\n Name(id='health', ctx=Store())],\n value=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='health'),\n ctx=Load())),\n Assign(\n targets=[\n Name(id='lines', ctx=Store())],\n value=List(ctx=Load())),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='Мониторинг жалоб Складчика: '),\n FormattedValue(\n value=Name(id='mode', ctx=Load()),\n conversion=-1)])])),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='Время UTC: '),\n FormattedValue(\n value=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='ts'),\n ctx=Load()),\n conversion=-1)])])),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='Общий статус: '),\n FormattedValue(\n value=IfExp(\n test=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='ok'),\n ctx=Load()),\n body=Constant(value='OK'),\n orelse=Constant(value='ТРЕВОГА')),\n conversion=-1)])])),\n If(\n test=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='problems'),\n ctx=Load()),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n Constant(value='Проблемы:')])),\n For(\n target=Name(id='problem', ctx=Store()),\n iter=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='problems'),\n ctx=Load()),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='- '),\n FormattedValue(\n value=Call(\n func=Name(id='problem_to_ru', ctx=Load()),\n args=[\n Name(id='problem', ctx=Load())]),\n conversion=-1)])]))])]),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n Constant(value='')])),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n Constant(value='Состояние основного монитора:')])),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='- Статус: '),\n FormattedValue(\n value=Call(\n func=Name(id='status_ru', ctx=Load()),\n args=[\n Call(\n func=Attribute(\n value=Name(id='health', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='STATUS'),\n Constant(value='missing')])]),\n conversion=-1)])])),\n If(\n test=Compare(\n left=Constant(value='TS'),\n ops=[\n In()],\n comparators=[\n Name(id='health', ctx=Load())]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='- Последний успешный опрос UTC: '),\n FormattedValue(\n value=Subscript(\n value=Name(id='health', ctx=Load()),\n slice=Constant(value='TS'),\n ctx=Load()),\n conversion=-1)])]))]),\n If(\n test=Compare(\n left=Constant(value='url'),\n ops=[\n In()],\n comparators=[\n Name(id='health', ctx=Load())]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='- URL: '),\n FormattedValue(\n value=Subscript(\n value=Name(id='health', ctx=Load()),\n slice=Constant(value='url'),\n ctx=Load()),\n conversion=-1)])]))]),\n If(\n test=Compare(\n left=Constant(value='reports'),\n ops=[\n In()],\n comparators=[\n Name(id='health', ctx=Load())]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='- Всего жалоб на странице: '),\n FormattedValue(\n value=Subscript(\n value=Name(id='health', ctx=Load()),\n slice=Constant(value='reports'),\n ctx=Load()),\n conversion=-1)])]))]),\n If(\n test=Compare(\n left=Constant(value='open'),\n ops=[\n In()],\n comparators=[\n Name(id='health', ctx=Load())]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='- Открытые / в работе: '),\n FormattedValue(\n value=Subscript(\n value=Name(id='health', ctx=Load()),\n slice=Constant(value='open'),\n ctx=Load()),\n conversion=-1)])]))]),\n If(\n test=Compare(\n left=Constant(value='resolved'),\n ops=[\n In()],\n comparators=[\n Name(id='health', ctx=Load())]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='- Закрытые / отработанные: '),\n FormattedValue(\n value=Subscript(\n value=Name(id='health', ctx=Load()),\n slice=Constant(value='resolved'),\n ctx=Load()),\n conversion=-1)])]))]),\n If(\n test=Compare(\n left=Constant(value='session_keepalive'),\n ops=[\n In()],\n comparators=[\n Name(id='health', ctx=Load())]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n Constant(value='<STR len=60 sha=8608e2d4a688>')]))]),\n If(\n test=Compare(\n left=Constant(value='<STR len=10 sha=7ad9d4b053c4>'),\n ops=[\n In()],\n comparators=[\n Name(id='health', ctx=Load())]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='<STR len=21 sha=60a593fe9b26>'),\n FormattedValue(\n value=Subscript(\n value=Name(id='health', ctx=Load()),\n slice=Constant(value='<STR len=10 sha=7ad9d4b053c4>'),\n ctx=Load()),\n conversion=-1),\n Constant(value=', байт: '),\n FormattedValue(\n value=Call(\n func=Attribute(\n value=Name(id='health', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='<STR len=16 sha=868f691e088b>'),\n Constant(value='?')]),\n conversion=-1)])]))]),\n If(\n test=Compare(\n left=Constant(value='<STR len=17 sha=d0d4690e24b6>'),\n ops=[\n In()],\n comparators=[\n Name(id='health', ctx=Load())]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='<STR len=49 sha=a8e637d30089>'),\n FormattedValue(\n value=Call(\n func=Attribute(\n value=Name(id='health', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='<STR len=17 sha=d0d4690e24b6>')]),\n conversion=-1)])])),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='<STR len=27 sha=c0d71f43ec39>'),\n FormattedValue(\n value=Call(\n func=Attribute(\n value=Name(id='health', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='<STR len=22 sha=def957939997>'),\n Constant(value='?')]),\n conversion=-1)])])),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='<STR len=23 sha=b652e5a34994>'),\n FormattedValue(\n value=Call(\n func=Attribute(\n value=Name(id='health', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='<STR len=20 sha=b6f91fcf6eb7>'),\n Constant(value='?')]),\n conversion=-1)])]))]),\n If(\n test=Compare(\n left=Constant(value='new_events'),\n ops=[\n In()],\n comparators=[\n Name(id='health', ctx=Load())]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='- Новые события за последний опрос: '),\n FormattedValue(\n value=Subscript(\n value=Name(id='health', ctx=Load()),\n slice=Constant(value='new_events'),\n ctx=Load()),\n conversion=-1)])]))]),\n If(\n test=Compare(\n left=Constant(value='resolved_events'),\n ops=[\n In()],\n comparators=[\n Name(id='health', ctx=Load())]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='- Закрытые события за последний опрос: '),\n FormattedValue(\n value=Subscript(\n value=Name(id='health', ctx=Load()),\n slice=Constant(value='resolved_events'),\n ctx=Load()),\n conversion=-1)])]))]),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lines', ctx=Load()),\n attr='append',\n ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='- Возраст состояния, секунд: '),\n FormattedValue(\n value=Subscript(\n value=Name(id='status', ctx=Loa\nHEALTH_DUMP_SHA256=680c4e2fd2c19d569bb38130327a7044c6cd29de4d4a7490ecf3c860ee5f7865\nHEALTH_DUMP_TRUNCATED=true\nHEALTH_DUMP_END=status_to_body\nHEALTH_DUMP_BEGIN=do_check\nFunctionDef(\n name='do_check',\n args=arguments(),\n body=[\n Assign(\n targets=[\n Name(id='status', ctx=Store())],\n value=Call(\n func=Name(id='build_status', ctx=Load()))),\n Assign(\n targets=[\n Name(id='state', ctx=Store())],\n value=Call(\n func=Name(id='load_state', ctx=Load()))),\n Assign(\n targets=[\n Name(id='now', ctx=Store())],\n value=Call(\n func=Name(id='int', ctx=Load()),\n args=[\n Call(\n func=Attribute(\n value=Name(id='time', ctx=Load()),\n attr='time',\n ctx=Load()))])),\n Assign(\n targets=[\n Name(id='problem_key', ctx=Store())],\n value=IfExp(\n test=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='problems'),\n ctx=Load()),\n body=Call(\n func=Attribute(\n value=Call(\n func=Attribute(\n value=Name(id='hashlib', ctx=Load()),\n attr='sha256',\n ctx=Load()),\n args=[\n Call(\n func=Attribute(\n value=Call(\n func=Attribute(\n value=Constant(value='|'),\n attr='join',\n ctx=Load()),\n args=[\n Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='problems'),\n ctx=Load())]),\n attr='encode',\n ctx=Load()),\n args=[\n Constant(value='utf-8')])]),\n attr='hexdigest',\n ctx=Load())),\n orelse=Constant(value=''))),\n Assign(\n targets=[\n Name(id='mail_sent', ctx=Store())],\n value=Constant(value=False)),\n If(\n test=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='ok'),\n ctx=Load()),\n body=[\n If(\n test=Call(\n func=Attribute(\n value=Name(id='state', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='active_alert')]),\n body=[\n Assign(\n targets=[\n Name(id='subject', ctx=Store())],\n value=Constant(value='Мониторинг жалоб восстановлен: OK')),\n Assign(\n targets=[\n Name(id='body', ctx=Store())],\n value=Call(\n func=Name(id='status_to_body', ctx=Load()),\n args=[\n Name(id='status', ctx=Load()),\n Constant(value='восстановление')])),\n Assign(\n targets=[\n Name(id='mail_sent', ctx=Store())],\n value=Call(\n func=Name(id='send_mail', ctx=Load()),\n args=[\n Name(id='subject', ctx=Load()),\n Name(id='body', ctx=Load())])),\n Assign(\n targets=[\n Name(id='state', ctx=Store())],\n value=Dict(\n keys=[\n Constant(value='active_alert'),\n Constant(value='last_recovery_ts')],\n values=[\n Constant(value=False),\n Name(id='now', ctx=Load())])),\n Expr(\n value=Call(\n func=Name(id='log', ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='RECOVERY mail_sent='),\n FormattedValue(\n value=Name(id='mail_sent', ctx=Load()),\n conversion=-1)])]))],\n orelse=[\n Expr(\n value=Call(\n func=Name(id='log', ctx=Load()),\n args=[\n Constant(value='CHECK ok=true mail_sent=false')]))])],\n orelse=[\n Assign(\n targets=[\n Name(id='last_alert_ts', ctx=Store())],\n value=Call(\n func=Name(id='int', ctx=Load()),\n args=[\n BoolOp(\n op=Or(),\n values=[\n Call(\n func=Attribute(\n value=Name(id='state', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='last_alert_ts'),\n Constant(value=0)]),\n Constant(value=0)])])),\n Assign(\n targets=[\n Name(id='last_key', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='state', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='last_problem_key'),\n Constant(value='')])),\n Assign(\n targets=[\n Name(id='should_send', ctx=Store())],\n value=BoolOp(\n op=Or(),\n values=[\n UnaryOp(\n op=Not(),\n operand=Call(\n func=Attribute(\n value=Name(id='state', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='active_alert')])),\n Compare(\n left=Name(id='last_key', ctx=Load()),\n ops=[\n NotEq()],\n comparators=[\n Name(id='problem_key', ctx=Load())]),\n Compare(\n left=BinOp(\n left=Name(id='now', ctx=Load()),\n op=Sub(),\n right=Name(id='last_alert_ts', ctx=Load())),\n ops=[\n GtE()],\n comparators=[\n Name(id='ALERT_REPEAT_SECONDS', ctx=Load())])])),\n If(\n test=Name(id='should_send', ctx=Load()),\n body=[\n Assign(\n targets=[\n Name(id='subject', ctx=Store())],\n value=BinOp(\n left=Constant(value='ТРЕВОГА мониторинга жалоб: '),\n op=Add(),\n right=Call(\n func=Attribute(\n value=Constant(value=', '),\n attr='join',\n ctx=Load()),\n args=[\n GeneratorExp(\n elt=Call(\n func=Name(id='problem_to_ru', ctx=Load()),\n args=[\n Name(id='p', ctx=Load())]),\n generators=[\n comprehension(\n target=Name(id='p', ctx=Store()),\n iter=Subscript(\n value=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='problems'),\n ctx=Load()),\n slice=Slice(\n upper=Constant(value=2)),\n ctx=Load()),\n is_async=0)])]))),\n Assign(\n targets=[\n Name(id='body', ctx=Store())],\n value=Call(\n func=Name(id='status_to_body', ctx=Load()),\n args=[\n Name(id='status', ctx=Load()),\n Constant(value='тревога')])),\n Assign(\n targets=[\n Name(id='mail_sent', ctx=Store())],\n value=Call(\n func=Name(id='send_mail', ctx=Load()),\n args=[\n Name(id='subject', ctx=Load()),\n Name(id='body', ctx=Load())])),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='state', ctx=Load()),\n attr='update',\n ctx=Load()),\n args=[\n Dict(\n keys=[\n Constant(value='active_alert'),\n Constant(value='last_alert_ts'),\n Constant(value='last_problem_key'),\n Constant(value='last_problems')],\n values=[\n Constant(value=True),\n Name(id='now', ctx=Load()),\n Name(id='problem_key', ctx=Load()),\n Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='problems'),\n ctx=Load())])])),\n Expr(\n value=Call(\n func=Name(id='log', ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='ALERT mail_sent='),\n FormattedValue(\n value=Name(id='mail_sent', ctx=Load()),\n conversion=-1),\n Constant(value=' problems='),\n FormattedValue(\n value=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='problems'),\n ctx=Load()),\n conversion=-1)])]))],\n orelse=[\n Expr(\n value=Call(\n func=Name(id='log', ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='CHECK ok=false suppressed=true problems='),\n FormattedValue(\n value=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='problems'),\n ctx=Load()),\n conversion=-1)])]))])]),\n Expr(\n value=Call(\n func=Name(id='save_state', ctx=Load()),\n args=[\n Name(id='state', ctx=Load())])),\n Expr(\n value=Call(\n func=Name(id='write_alert_health', ctx=Load()),\n args=[\n Name(id='status', ctx=Load()),\n Name(id='mail_sent', ctx=Load())])),\n Expr(\n value=Call(\n func=Name(id='print', ctx=Load()),\n args=[\n BinOp(\n left=Constant(value='WATCHDOG_STATUS='),\n op=Add(),\n right=IfExp(\n test=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='ok'),\n ctx=Load()),\n body=Constant(value='OK'),\n orelse=Constant(value='ALERT')))])),\n Expr(\n value=Call(\n func=Name(id='print', ctx=Load()),\n args=[\n BinOp(\n left=Constant(value='WATCHDOG_MAIL_SENT='),\n op=Add(),\n right=IfExp(\n test=Name(id='mail_sent', ctx=Load()),\n body=Constant(value='yes'),\n orelse=Constant(value='no')))])),\n Expr(\n value=Call(\n func=Name(id='print', ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='PROBLEMS='),\n FormattedValue(\n value=Call(\n func=Attribute(\n value=Constant(value=';'),\n attr='join',\n ctx=Load()),\n args=[\n Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='problems'),\n ctx=Load())]),\n conversion=-1)])])),\n Expr(\n value=Call(\n func=Name(id='print', ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='OPEN='),\n FormattedValue(\n value=Call(\n func=Attribute(\n value=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='health'),\n ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='open'),\n Constant(value='missing')]),\n conversion=-1)])])),\n Expr(\n value=Call(\n func=Name(id='print', ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='RESOLVED='),\n FormattedValue(\n value=Call(\n func=Attribute(\n value=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='health'),\n ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='resolved'),\n Constant(value='missing')]),\n conversion=-1)])])),\n Return(\n value=Constant(value=0))])\nHEALTH_DUMP_SHA256=da7bbe1956bd719cb634bbf6d2d3ace50781963d52bba841ec8197af0888f282\nHEALTH_DUMP_TRUNCATED=false\nHEALTH_DUMP_END=do_check\nHEALTH_DUMP_BEGIN=do_status\nFunctionDef(\n name='do_status',\n args=arguments(),\n body=[\n Assign(\n targets=[\n Name(id='status', ctx=Store())],\n value=Call(\n func=Name(id='build_status', ctx=Load()))),\n Expr(\n value=Call(\n func=Name(id='write_alert_health', ctx=Load()),\n args=[\n Name(id='status', ctx=Load()),\n Constant(value=None)])),\n Expr(\n value=Call(\n func=Name(id='print', ctx=Load()),\n args=[\n BinOp(\n left=Constant(value='WATCHDOG_STATUS='),\n op=Add(),\n right=IfExp(\n test=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='ok'),\n ctx=Load()),\n body=Constant(value='OK'),\n orelse=Constant(value='ALERT')))])),\n Expr(\n value=Call(\n func=Name(id='print', ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='PROBLEMS='),\n FormattedValue(\n value=Call(\n func=Attribute(\n value=Constant(value=';'),\n attr='join',\n ctx=Load()),\n args=[\n Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='problems'),\n ctx=Load())]),\n conversion=-1)])])),\n Expr(\n value=Call(\n func=Name(id='print', ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='OPEN='),\n FormattedValue(\n value=Call(\n func=Attribute(\n value=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='health'),\n ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='open'),\n Constant(value='missing')]),\n conversion=-1)])])),\n Expr(\n value=Call(\n func=Name(id='print', ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='RESOLVED='),\n FormattedValue(\n value=Call(\n func=Attribute(\n value=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='health'),\n ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='resolved'),\n Constant(value='missing')]),\n conversion=-1)])])),\n Expr(\n value=Call(\n func=Name(id='print', ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='HEALTH_AGE_SECONDS='),\n FormattedValue(\n value=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='health_age_seconds'),\n ctx=Load()),\n conversion=-1)])])),\n Expr(\n value=Call(\n func=Name(id='print', ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='NETBIRD_ROUTE_OK='),\n FormattedValue(\n value=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='route_ok'),\n ctx=Load()),\n conversion=-1)])])),\n Return(\n value=IfExp(\n test=Subscript(\n value=Name(id='status', ctx=Load()),\n slice=Constant(value='ok'),\n ctx=Load()),\n body=Constant(value=0),\n orelse=Constant(value=1)))])\nHEALTH_DUMP_SHA256=cbf3c7c1c58dd802afb48ef237a648104b27d72a6b727156bde564cb253cc0a2\nHEALTH_DUMP_TRUNCATED=false\nHEALTH_DUMP_END=do_status\nHEALTH_DUMP_BEGIN=main\nFunctionDef(\n name='main',\n args=arguments(),\n body=[\n Assign(\n targets=[\n Name(id='mode', ctx=Store())],\n value=IfExp(\n test=Compare(\n left=Call(\n func=Name(id='len', ctx=Load()),\n args=[\n Attribute(\n value=Name(id='sys', ctx=Load()),\n attr='argv',\n ctx=Load())]),\n ops=[\n Gt()],\n comparators=[\n Constant(value=1)]),\n body=Subscript(\n value=Attribute(\n value=Name(id='sys', ctx=Load()),\n attr='argv',\n ctx=Load()),\n slice=Constant(value=1),\n ctx=Load()),\n orelse=Constant(value='check'))),\n If(\n test=Compare(\n left=Name(id='mode', ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='heartbeat')]),\n body=[\n Return(\n value=Call(\n func=Name(id='do_heartbeat', ctx=Load())))]),\n If(\n test=Compare(\n left=Name(id='mode', ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='check')]),\n body=[\n Return(\n value=Call(\n func=Name(id='do_check', ctx=Load())))]),\n If(\n test=Compare(\n left=Name(id='mode', ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='status')]),\n body=[\n Return(\n value=Call(\n func=Name(id='do_status', ctx=Load())))]),\n Expr(\n value=Call(\n func=Name(id='print', ctx=Load()),\n args=[\n Constant(value='usage: health_alert.py [check|heartbeat|status]')],\n keywords=[\n keyword(\n arg='file',\n value=Attribute(\n value=Name(id='sys', ctx=Load()),\n attr='stderr',\n ctx=Load()))])),\n Return(\n value=Constant(value=64))])\nHEALTH_DUMP_SHA256=9a6149262fde18c30b641e25ec67b04a04957d0b2588ec05b1775c875c6722d2\nHEALTH_DUMP_TRUNCATED=false\nHEALTH_DUMP_END=main\nHEALTH_SCAN_OK=true\nQGA_CANARY_QM_RC=0\nQGA_CANARY_STDERR_PRESENT=false\nQGA_CANARY_JSON=true\nQGA_CANARY_GUEST_EXITCODE=0\nQGA_SHORT_OK=true\nMONITOR_SCAN_QM_RC=0\nMONITOR_SCAN_STDERR_PRESENT=false\nMONITOR_SCAN_JSON=true\nMONITOR_SCAN_GUEST_EXITCODE=0\nMONITOR_SCAN=V1\nMONITOR_PRESENT=true\nMONITOR_SHA256=f62288797f80ce561f1e3ea721b87090eb1cd751fd5bf07152a3608b3a8aaed2\nMONITOR_BYTES=17878\nMONITOR_FUNCTION_COUNT=26\nMONITOR_FUNC=utc_now:48:49\nMONITOR_FUNC=log:52:55\nMONITOR_FUNC=write_health:58:64\nMONITOR_FUNC=read_env:67:81\nMONITOR_FUNC=load_config:84:101\nMONITOR_FUNC=connect_db:104:136\nMONITOR_FUNC=meta_get:139:141\nMONITOR_FUNC=meta_set:144:146\nMONITOR_FUNC=event_sent:149:150\nMONITOR_FUNC=mark_event:153:158\nMONITOR_FUNC=fetch_reports_page:161:179\nMONITOR_FUNC=login_required:182:192\nMONITOR_FUNC=strip_tags:195:198\nMONITOR_FUNC=full_url:201:202\nMONITOR_FUNC=section_positions:205:222\nMONITOR_FUNC=parse_int:225:227\nMONITOR_FUNC=parse_reports:230:281\nMONITOR_FUNC=smtp_ready:284:285\nMONITOR_FUNC=send_mail:288:312\nMONITOR_FUNC=report_body:315:324\nMONITOR_FUNC=process_reports:327:370\nMONITOR_FUNC=maybe_send_auth_required:373:391\nMONITOR_FUNC=acquire_lock:394:401\nMONITOR_FUNC=run_once:404:451\nMONITOR_FUNC=show_status:454:459\nMONITOR_FUNC=main:462:468\nMONITOR_RELEVANT_COUNT=10\nMONITOR_DUMP_BEGIN=fetch_reports_page\nFunctionDef(\n name='fetch_reports_page',\n args=arguments(\n args=[\n arg(\n arg='cfg',\n annotation=Attribute(\n value=Name(id='configparser', ctx=Load()),\n attr='ConfigParser',\n ctx=Load())),\n arg(\n arg='secrets',\n annotation=Subscript(\n value=Name(id='dict', ctx=Load()),\n slice=Tuple(\n elts=[\n Name(id='str', ctx=Load()),\n Name(id='str', ctx=Load())],\n ctx=Load()),\n ctx=Load()))]),\n body=[\n Assign(\n targets=[\n Name(id='url', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Subscript(\n value=Name(id='cfg', ctx=Load()),\n slice=Constant(value='forum'),\n ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='reports_url'),\n Constant(value='<STR len=35 sha=b06fe5ee33f0>')])),\n Assign(\n targets=[\n Name(id='request', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Attribute(\n value=Name(id='urllib', ctx=Load()),\n attr='request',\n ctx=Load()),\n attr='Request',\n ctx=Load()),\n args=[\n Name(id='url', ctx=Load())])),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='request', ctx=Load()),\n attr='add_header',\n ctx=Load()),\n args=[\n Constant(value='User-Agent'),\n Call(\n func=Attribute(\n value=Subscript(\n value=Name(id='cfg', ctx=Load()),\n slice=Constant(value='forum'),\n ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='user_agent'),\n Constant(value='Mozilla/5.0')])])),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='request', ctx=Load()),\n attr='add_header',\n ctx=Load()),\n args=[\n Constant(value='Accept'),\n Constant(value='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')])),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='request', ctx=Load()),\n attr='add_header',\n ctx=Load()),\n args=[\n Constant(value='Accept-Language'),\n Constant(value='ru-RU,ru;q=0.9,en;q=0.5')])),\n Assign(\n targets=[\n Name(id='cookie', ctx=Store())],\n value=BoolOp(\n op=Or(),\n values=[\n Call(\n func=Attribute(\n value=Name(id='secrets', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='<STR len=16 sha=81985432ac9a>')]),\n Call(\n func=Attribute(\n value=Name(id='secrets', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='<STR len=6 sha=9b977298c5ec>')]),\n Constant(value='')])),\n If(\n test=Name(id='cookie', ctx=Load()),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='request', ctx=Load()),\n attr='add_header',\n ctx=Load()),\n args=[\n Constant(value='<STR len=6 sha=45823eaac0c8>'),\n Name(id='cookie', ctx=Load())]))]),\n Assign(\n targets=[\n Name(id='timeout', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Subscript(\n value=Name(id='cfg', ctx=Load()),\n slice=Constant(value='forum'),\n ctx=Load()),\n attr='getint',\n ctx=Load()),\n args=[\n Constant(value='timeout_seconds')],\n keywords=[\n keyword(\n arg='fallback',\n value=Constant(value=25))])),\n With(\n items=[\n withitem(\n context_expr=Call(\n func=Attribute(\n value=Attribute(\n value=Name(id='urllib', ctx=Load()),\n attr='request',\n ctx=Load()),\n attr='urlopen',\n ctx=Load()),\n args=[\n Name(id='request', ctx=Load())],\n keywords=[\n keyword(\n arg='timeout',\n value=Name(id='timeout', ctx=Load()))]),\n optional_vars=Name(id='response', ctx=Store()))],\n body=[\n Assign(\n targets=[\n Name(id='final_url', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='response', ctx=Load()),\n attr='geturl',\n ctx=Load()))),\n Assign(\n targets=[\n Name(id='body', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='response', ctx=Load()),\n attr='read',\n ctx=Load()))),\n Assign(\n targets=[\n Name(id='charset', ctx=Store())],\n value=Constant(value='utf-8')),\n Assign(\n targets=[\n Name(id='content_type', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Attribute(\n value=Name(id='response', ctx=Load()),\n attr='headers',\n ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='Content-Type'),\n Constant(value='')])),\n Assign(\n targets=[\n Name(id='match', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='re', ctx=Load()),\n attr='search',\n ctx=Load()),\n args=[\n Constant(value='charset=([A-Za-z0-9._-]+)'),\n Name(id='content_type', ctx=Load())],\n keywords=[\n keyword(\n arg='flags',\n value=Attribute(\n value=Name(id='re', ctx=Load()),\n attr='I',\n ctx=Load()))])),\n If(\n test=Name(id='match', ctx=Load()),\n body=[\n Assign(\n targets=[\n Name(id='charset', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='match', ctx=Load()),\n attr='group',\n ctx=Load()),\n args=[\n Constant(value=1)]))]),\n Return(\n value=Tuple(\n elts=[\n Name(id='final_url', ctx=Load()),\n Call(\n func=Attribute(\n value=Name(id='body', ctx=Load()),\n attr='decode',\n ctx=Load()),\n args=[\n Name(id='charset', ctx=Load())],\n keywords=[\n keyword(\n arg='errors',\n value=Constant(value='replace'))])],\n ctx=Load()))])],\n returns=Subscript(\n value=Name(id='tuple', ctx=Load()),\n slice=Tuple(\n elts=[\n Name(id='str', ctx=Load()),\n Name(id='str', ctx=Load())],\n ctx=Load()),\n ctx=Load()))\nMONITOR_DUMP_SHA256=5b5c22665fa95eba6f84bbab6664b6750ec6ce801008b74213b7318201cded18\nMONITOR_DUMP_TRUNCATED=false\nMONITOR_DUMP_END=fetch_reports_page\nMONITOR_DUMP_BEGIN=parse_int\nFunctionDef(\n name='parse_int',\n args=arguments(\n args=[\n arg(\n arg='pattern',\n annotation=Name(id='str', ctx=Load())),\n arg(\n arg='text',\n annotation=Name(id='str', ctx=Load()))]),\n body=[\n Assign(\n targets=[\n Name(id='match', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='re', ctx=Load()),\n attr='search',\n ctx=Load()),\n args=[\n Name(id='pattern', ctx=Load()),\n Name(id='text', ctx=Load())],\n keywords=[\n keyword(\n arg='flags',\n value=Attribute(\n value=Name(id='re', ctx=Load()),\n attr='I',\n ctx=Load()))])),\n Return(\n value=IfExp(\n test=Name(id='match', ctx=Load()),\n body=Call(\n func=Name(id='int', ctx=Load()),\n args=[\n Call(\n func=Attribute(\n value=Name(id='match', ctx=Load()),\n attr='group',\n ctx=Load()),\n args=[\n Constant(value=1)])]),\n orelse=Constant(value=None)))],\n returns=BinOp(\n left=Name(id='int', ctx=Load()),\n op=BitOr(),\n right=Constant(value=None)))\nMONITOR_DUMP_SHA256=cb2011a9afb6eed1914e736d66227b0214cb4adb04afb833df8799db0dbf500e\nMONITOR_DUMP_TRUNCATED=false\nMONITOR_DUMP_END=parse_int\nMONITOR_DUMP_BEGIN=parse_reports\nFunctionDef(\n name='parse_reports',\n args=arguments(\n args=[\n arg(\n arg='text',\n annotation=Name(id='str', ctx=Load())),\n arg(\n arg='cfg',\n annotation=Attribute(\n value=Name(id='configparser', ctx=Load()),\n attr='ConfigParser',\n ctx=Load()))]),\n body=[\n Assign(\n targets=[\n Name(id='base_url', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Subscript(\n value=Name(id='cfg', ctx=Load()),\n slice=Constant(value='forum'),\n ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='base_url'),\n Constant(value='<STR len=26 sha=f930baf35fab>')])),\n Assign(\n targets=[\n Tuple(\n elts=[\n Name(id='open_pos', ctx=Store()),\n Name(id='closed_pos', ctx=Store())],\n ctx=Store())],\n value=Call(\n func=Name(id='section_positions', ctx=Load()),\n args=[\n Name(id='text', ctx=Load())])),\n AnnAssign(\n target=Name(id='results', ctx=Store()),\n annotation=Subscript(\n value=Name(id='dict', ctx=Load()),\n slice=Tuple(\n elts=[\n Name(id='str', ctx=Load()),\n Subscript(\n value=Name(id='dict', ctx=Load()),\n slice=Tuple(\n elts=[\n Name(id='str', ctx=Load()),\n Name(id='Any', ctx=Load())],\n ctx=Load()),\n ctx=Load())],\n ctx=Load()),\n ctx=Load()),\n value=Dict(),\n simple=1),\n Assign(\n targets=[\n Name(id='pattern', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='re', ctx=Load()),\n attr='compile',\n ctx=Load()),\n args=[\n Constant(value='(?is)<a\\\\b[^>]*href=[\\\\\"\\']((?:reports/|[^\\\\\"\\']*/reports/)(\\\\d+)/?[^\\\\\"\\']*)[\\\\\"\\'][^>]*>(.*?)</a>')])),\n For(\n target=Name(id='match', ctx=Store()),\n iter=Call(\n func=Attribute(\n value=Name(id='pattern', ctx=Load()),\n attr='finditer',\n ctx=Load()),\n args=[\n Name(id='text', ctx=Load())]),\n body=[\n Assign(\n targets=[\n Tuple(\n elts=[\n Name(id='href', ctx=Store()),\n Name(id='report_id', ctx=Store()),\n Name(id='title_html', ctx=Store())],\n ctx=Store())],\n value=Tuple(\n elts=[\n Call(\n func=Attribute(\n value=Name(id='match', ctx=Load()),\n attr='group',\n ctx=Load()),\n args=[\n Constant(value=1)]),\n Call(\n func=Attribute(\n value=Name(id='match', ctx=Load()),\n attr='group',\n ctx=Load()),\n args=[\n Constant(value=2)]),\n Call(\n func=Attribute(\n value=Name(id='match', ctx=Load()),\n attr='group',\n ctx=Load()),\n args=[\n Constant(value=3)])],\n ctx=Load())),\n Assign(\n targets=[\n Name(id='title', ctx=Store())],\n value=Call(\n func=Name(id='strip_tags', ctx=Load()),\n args=[\n Name(id='title_html', ctx=Load())])),\n If(\n test=BoolOp(\n op=Or(),\n values=[\n UnaryOp(\n op=Not(),\n operand=Name(id='title', ctx=Load())),\n Compare(\n left=Call(\n func=Attribute(\n value=Name(id='title', ctx=Load()),\n attr='lower',\n ctx=Load())),\n ops=[\n In()],\n comparators=[\n Set(\n elts=[\n Constant(value='жалобы'),\n Constant(value='reports'),\n Constant(value='обработанные жалобы')])])]),\n body=[\n Continue()]),\n Assign(\n targets=[\n Name(id='position', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='match', ctx=Load()),\n attr='start',\n ctx=Load()))),\n Assign(\n targets=[\n Name(id='item_window_start', ctx=Store())],\n value=Call(\n func=Name(id='max', ctx=Load()),\n args=[\n Constant(value=0),\n BinOp(\n left=Name(id='position', ctx=Load()),\n op=Sub(),\n right=Constant(value=6000))])),\n Assign(\n targets=[\n Name(id='item_tag', ctx=Store())],\n value=Constant(value='')),\n For(\n target=Name(id='item_match', ctx=Store()),\n iter=Call(\n func=Attribute(\n value=Name(id='re', ctx=Load()),\n attr='finditer',\n ctx=Load()),\n args=[\n Constant(value='(?is)<(?:li|div|tr)\\\\b[^>]*class=[\"\\'][^\"\\']*\\\\bdiscussionListItem\\\\b[^\"\\']*[\"\\'][^>]*>'),\n Subscript(\n value=Name(id='text', ctx=Load()),\n slice=Slice(\n lower=Name(id='item_window_start', ctx=Load()),\n upper=Name(id='position', ctx=Load())),\n ctx=Load())]),\n body=[\n Assign(\n targets=[\n Name(id='item_tag', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Call(\n func=Attribute(\n value=Name(id='item_match', ctx=Load()),\n attr='group',\n ctx=Load()),\n args=[\n Constant(value=0)]),\n attr='lower',\n ctx=Load())))]),\n If(\n test=Compare(\n left=Constant(value='report-resolved'),\n ops=[\n In()],\n comparators=[\n Name(id='item_tag', ctx=Load())]),\n body=[\n Assign(\n targets=[\n Name(id='status', ctx=Store())],\n value=Constant(value='resolved'))],\n orelse=[\n If(\n test=BoolOp(\n op=Or(),\n values=[\n Compare(\n left=Constant(value='report-assigned'),\n ops=[\n In()],\n comparators=[\n Name(id='item_tag', ctx=Load())]),\n Compare(\n left=Constant(value='report-open'),\n ops=[\n In()],\n comparators=[\n Name(id='item_tag', ctx=Load())])]),\n body=[\n Assign(\n targets=[\n Name(id='status', ctx=Store())],\n value=Constant(value='open'))],\n orelse=[\n If(\n test=BoolOp(\n op=And(),\n values=[\n Compare(\n left=Name(id='closed_pos', ctx=Load()),\n ops=[\n GtE()],\n comparators=[\n Constant(value=0)]),\n Compare(\n left=Name(id='position', ctx=Load()),\n ops=[\n Gt()],\n comparators=[\n Name(id='closed_pos', ctx=Load())])]),\n body=[\n Assign(\n targets=[\n Name(id='status', ctx=Store())],\n value=Constant(value='resolved'))],\n orelse=[\n If(\n test=BoolOp(\n op=And(),\n values=[\n Compare(\n left=Name(id='open_pos', ctx=Load()),\n ops=[\n GtE()],\n comparators=[\n Constant(value=0)]),\n Compare(\n left=Name(id='position', ctx=Load()),\n ops=[\n Gt()],\n comparators=[\n Name(id='open_pos', ctx=Load())]),\n BoolOp(\n op=Or(),\n values=[\n Compare(\n left=Name(id='closed_pos', ctx=Load()),\n ops=[\n Lt()],\n comparators=[\n Constant(value=0)]),\n Compare(\n left=Name(id='position', ctx=Load()),\n ops=[\n Lt()],\n comparators=[\n Name(id='closed_pos', ctx=Load())])])]),\n body=[\n Assign(\n targets=[\n Name(id='status', ctx=Store())],\n value=Constant(value='open'))],\n orelse=[\n Assign(\n targets=[\n Name(id='status', ctx=Store())],\n value=Constant(value='open'))])])])]),\n Assign(\n targets=[\n Name(id='row_start', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='text', ctx=Load()),\n attr='rfind',\n ctx=Load()),\n args=[\n Constant(value='<tr'),\n Constant(value=0),\n Name(id='position', ctx=Load())])),\n Assign(\n targets=[\n Name(id='row_end', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='text', ctx=Load()),\n attr='find',\n ctx=Load()),\n args=[\n Constant(value='</tr>'),\n Name(id='position', ctx=Load())])),\n If(\n test=Compare(\n left=Name(id='row_start', ctx=Load()),\n ops=[\n Lt()],\n comparators=[\n Constant(value=0)]),\n body=[\n Assign(\n targets=[\n Name(id='row_start', ctx=Store())],\n value=Call(\n func=Name(id='max', ctx=Load()),\n args=[\n Constant(value=0),\n BinOp(\n left=Name(id='position', ctx=Load()),\n op=Sub(),\n right=Constant(value=1200))]))]),\n If(\n test=Compare(\n left=Name(id='row_end', ctx=Load()),\n ops=[\n Lt()],\n comparators=[\n Constant(value=0)]),\n body=[\n Assign(\n targets=[\n Name(id='row_end', ctx=Store())],\n value=Call(\n func=Name(id='min', ctx=Load()),\n args=[\n Call(\n func=Name(id='len', ctx=Load()),\n args=[\n Name(id='text', ctx=Load())]),\n BinOp(\n left=Name(id='position', ctx=Load()),\n op=Add(),\n right=Constant(value=1200))]))],\n orelse=[\n AugAssign(\n target=Name(id='row_end', ctx=Store()),\n op=Add(),\n value=Call(\n func=Name(id='len', ctx=Load()),\n args=[\n Constant(value='</tr>')]))]),\n Assign(\n targets=[\n Name(id='row_text', ctx=Store())],\n value=Call(\n func=Name(id='strip_tags', ctx=Load()),\n args=[\n Subscript(\n value=Name(id='text', ctx=Load()),\n slice=Slice(\n lower=Name(id='row_start', ctx=Load()),\n upper=Name(id='row_end', ctx=Load())),\n ctx=Load())])),\n Assign(\n targets=[\n Name(id='report_count', ctx=Store())],\n value=Call(\n func=Name(id='parse_int', ctx=Load()),\n args=[\n Constant(value='Жалоб[аы]?:\\\\s*(\\\\d+)'),\n Name(id='row_text', ctx=Load())])),\n Assign(\n targets=[\n Name(id='comment_count', ctx=Store())],\n value=Call(\n func=Name(id='parse_int', ctx=Load()),\n args=[\n Constant(value='Комментари[ияе]*:?\\\\s*(\\\\d+)'),\n Name(id='row_text', ctx=Load())])),\n Assign(\n targets=[\n Subscript(\n value=Name(id='results', ctx=Load()),\n slice=Name(id='report_id', ctx=Load()),\n ctx=Store())],\n value=Dict(\n keys=[\n Constant(value='report_id'),\n Constant(value='url'),\n Constant(value='title'),\n Constant(value='status'),\n Constant(value='report_count'),\n Constant(value='comment_count'),\n Constant(value='row_text')],\n values=[\n Name(id='report_id', ctx=Load()),\n Call(\n func=Name(id='full_url', ctx=Load()),\n args=[\n Name(id='href', ctx=Load()),\n Name(id='base_url', ctx=Load())]),\n Name(id='title', ctx=Load()),\n Name(\nMONITOR_DUMP_SHA256=45b9a3154820fb1003f8202f3ab10c23dc3a5ca552010b13db896d8a3855608a\nMONITOR_DUMP_TRUNCATED=true\nMONITOR_DUMP_END=parse_reports\nMONITOR_DUMP_BEGIN=send_mail\nFunctionDef(\n name='send_mail',\n args=arguments(\n args=[\n arg(\n arg='cfg',\n annotation=Attribute(\n value=Name(id='configparser', ctx=Load()),\n attr='ConfigParser',\n ctx=Load())),\n arg(\n arg='secrets',\n annotation=Subscript(\n value=Name(id='dict', ctx=Load()),\n slice=Tuple(\n elts=[\n Name(id='str', ctx=Load()),\n Name(id='str', ctx=Load())],\n ctx=Load()),\n ctx=Load())),\n arg(\n arg='subject',\n annotation=Name(id='str', ctx=Load())),\n arg(\n arg='body',\n annotation=Name(id='str', ctx=Load()))]),\n body=[\n If(\n test=UnaryOp(\n op=Not(),\n operand=Call(\n func=Name(id='smtp_ready', ctx=Load()),\n args=[\n Name(id='secrets', ctx=Load())])),\n body=[\n Expr(\n value=Call(\n func=Name(id='log', ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='EMAIL_NOT_CONFIGURED subject='),\n FormattedValue(\n value=Name(id='subject', ctx=Load()),\n conversion=114)])])),\n Return(\n value=Constant(value=False))]),\n Assign(\n targets=[\n Name(id='host', ctx=Store())],\n value=Subscript(\n value=Name(id='secrets', ctx=Load()),\n slice=Constant(value='<STR len=9 sha=31269eab2a23>'),\n ctx=Load())),\n Assign(\n targets=[\n Name(id='port', ctx=Store())],\n value=Call(\n func=Name(id='int', ctx=Load()),\n args=[\n Call(\n func=Attribute(\n value=Name(id='secrets', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='<STR len=9 sha=0f720d837e32>'),\n Constant(value='587')])])),\n Assign(\n targets=[\n Name(id='user', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='secrets', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='<STR len=9 sha=bd219b3c1395>'),\n Constant(value='')])),\n Assign(\n targets=[\n Name(id='password', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='secrets', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='<STR len=9 sha=64209ae2e543>'),\n Constant(value='')])),\n Assign(\n targets=[\n Name(id='tls', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Call(\n func=Attribute(\n value=Name(id='secrets', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='<STR len=8 sha=45dddd53d3b7>'),\n Constant(value='starttls')]),\n attr='lower',\n ctx=Load()))),\n Assign(\n targets=[\n Name(id='msg', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Attribute(\n value=Name(id='email', ctx=Load()),\n attr='message',\n ctx=Load()),\n attr='EmailMessage',\n ctx=Load()))),\n Assign(\n targets=[\n Subscript(\n value=Name(id='msg', ctx=Load()),\n slice=Constant(value='From'),\n ctx=Store())],\n value=Subscript(\n value=Name(id='secrets', ctx=Load()),\n slice=Constant(value='<STR len=9 sha=1a10f8ed7a6a>'),\n ctx=Load())),\n Assign(\n targets=[\n Subscript(\n value=Name(id='msg', ctx=Load()),\n slice=Constant(value='To'),\n ctx=Store())],\n value=Subscript(\n value=Name(id='secrets', ctx=Load()),\n slice=Constant(value='<STR len=7 sha=b3f64764a264>'),\n ctx=Load())),\n Assign(\n targets=[\n Subscript(\n value=Name(id='msg', ctx=Load()),\n slice=Constant(value='Subject'),\n ctx=Store())],\n value=BinOp(\n left=BinOp(\n left=Call(\n func=Attribute(\n value=Subscript(\n value=Name(id='cfg', ctx=Load()),\n slice=Constant(value='email'),\n ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='subject_prefix'),\n Constant(value='[Skladchik]')]),\n op=Add(),\n right=Constant(value=' ')),\n op=Add(),\n right=Name(id='subject', ctx=Load()))),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='msg', ctx=Load()),\n attr='set_content',\n ctx=Load()),\n args=[\n Name(id='body', ctx=Load())])),\n If(\n test=Compare(\n left=Name(id='tls', ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='ssl')]),\n body=[\n Assign(\n targets=[\n Name(id='smtp', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='smtplib', ctx=Load()),\n attr='SMTP_SSL',\n ctx=Load()),\n args=[\n Name(id='host', ctx=Load()),\n Name(id='port', ctx=Load())],\n keywords=[\n keyword(\n arg='timeout',\n value=Constant(value=30))]))],\n orelse=[\n Assign(\n targets=[\n Name(id='smtp', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='smtplib', ctx=Load()),\n attr='SMTP',\n ctx=Load()),\n args=[\n Name(id='host', ctx=Load()),\n Name(id='port', ctx=Load())],\n keywords=[\n keyword(\n arg='timeout',\n value=Constant(value=30))]))]),\n With(\n items=[\n withitem(\n context_expr=Name(id='smtp', ctx=Load()),\n optional_vars=Name(id='server', ctx=Store()))],\n body=[\n If(\n test=Compare(\n left=Name(id='tls', ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='starttls')]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='server', ctx=Load()),\n attr='starttls',\n ctx=Load()),\n keywords=[\n keyword(\n arg='context',\n value=Call(\n func=Attribute(\n value=Name(id='ssl', ctx=Load()),\n attr='create_default_context',\n ctx=Load())))]))]),\n If(\n test=Name(id='user', ctx=Load()),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='server', ctx=Load()),\n attr='login',\n ctx=Load()),\n args=[\n Name(id='user', ctx=Load()),\n Name(id='password', ctx=Load())]))]),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='server', ctx=Load()),\n attr='send_message',\n ctx=Load()),\n args=[\n Name(id='msg', ctx=Load())]))]),\n Return(\n value=Constant(value=True))],\n returns=Name(id='bool', ctx=Load()))\nMONITOR_DUMP_SHA256=af72f54e66459d653cc65a65494c97a1eeabaa80cee95f1777319a7df1efc133\nMONITOR_DUMP_TRUNCATED=false\nMONITOR_DUMP_END=send_mail\nMONITOR_DUMP_BEGIN=report_body\nFunctionDef(\n name='report_body',\n args=arguments(\n args=[\n arg(\n arg='prefix',\n annotation=Name(id='str', ctx=Load())),\n arg(\n arg='report',\n annotation=Subscript(\n value=Name(id='dict', ctx=Load()),\n slice=Tuple(\n elts=[\n Name(id='str', ctx=Load()),\n Name(id='Any', ctx=Load())],\n ctx=Load()),\n ctx=Load()))]),\n body=[\n Return(\n value=JoinedStr(\n values=[\n FormattedValue(\n value=Name(id='prefix', ctx=Load()),\n conversion=-1),\n Constant(value='<STR len=12 sha=fb5aefd5fb8c>'),\n FormattedValue(\n value=Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='title'),\n ctx=Load()),\n conversion=-1),\n Constant(value='<STR len=9 sha=1916dc8abd4d>'),\n FormattedValue(\n value=Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='status'),\n ctx=Load()),\n conversion=-1),\n Constant(value='<STR len=8 sha=e503e90d0d4b>'),\n FormattedValue(\n value=Call(\n func=Attribute(\n value=Name(id='report', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='report_count')]),\n conversion=-1),\n Constant(value='<STR len=15 sha=75a707782e1f>'),\n FormattedValue(\n value=Call(\n func=Attribute(\n value=Name(id='report', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='comment_count')]),\n conversion=-1),\n Constant(value='<STR len=9 sha=d9616df6b37a>'),\n FormattedValue(\n value=Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='url'),\n ctx=Load()),\n conversion=-1),\n Constant(value='<STR len=20 sha=9545d638f28a>'),\n FormattedValue(\n value=Call(\n func=Name(id='utc_now', ctx=Load())),\n conversion=-1),\n Constant(value='<STR len=1 sha=01ba4719c80b>')]))],\n returns=Name(id='str', ctx=Load()))\nMONITOR_DUMP_SHA256=668abfab86ee05df948412e7aca1247e115d8d5c6d7c52ddda0746f288f2978a\nMONITOR_DUMP_TRUNCATED=false\nMONITOR_DUMP_END=report_body\nMONITOR_DUMP_BEGIN=process_reports\nFunctionDef(\n name='process_reports',\n args=arguments(\n args=[\n arg(\n arg='con',\n annotation=Attribute(\n value=Name(id='sqlite3', ctx=Load()),\n attr='Connection',\n ctx=Load())),\n arg(\n arg='cfg',\n annotation=Attribute(\n value=Name(id='configparser', ctx=Load()),\n attr='ConfigParser',\n ctx=Load())),\n arg(\n arg='secrets',\n annotation=Subscript(\n value=Name(id='dict', ctx=Load()),\n slice=Tuple(\n elts=[\n Name(id='str', ctx=Load()),\n Name(id='str', ctx=Load())],\n ctx=Load()),\n ctx=Load())),\n arg(\n arg='reports',\n annotation=Subscript(\n value=Name(id='list', ctx=Load()),\n slice=Subscript(\n value=Name(id='dict', ctx=Load()),\n slice=Tuple(\n elts=[\n Name(id='str', ctx=Load()),\n Name(id='Any', ctx=Load())],\n ctx=Load()),\n ctx=Load()),\n ctx=Load()))]),\n body=[\n Assign(\n targets=[\n Name(id='baseline', ctx=Store())],\n value=Call(\n func=Name(id='meta_get', ctx=Load()),\n args=[\n Name(id='con', ctx=Load()),\n Constant(value='baseline_created_at')])),\n Assign(\n targets=[\n Name(id='baseline_mode', ctx=Store())],\n value=Compare(\n left=Call(\n func=Attribute(\n value=Call(\n func=Attribute(\n value=Subscript(\n value=Name(id='cfg', ctx=Load()),\n slice=Constant(value='monitor'),\n ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='baseline_no_email'),\n Constant(value='yes')]),\n attr='lower',\n ctx=Load())),\n ops=[\n In()],\n comparators=[\n Set(\n elts=[\n Constant(value='yes'),\n Constant(value='true'),\n Constant(value='1'),\n Constant(value='on')])])),\n Assign(\n targets=[\n Name(id='new_events', ctx=Store())],\n value=Constant(value=0)),\n Assign(\n targets=[\n Name(id='resolved_events', ctx=Store())],\n value=Constant(value=0)),\n For(\n target=Name(id='report', ctx=Store()),\n iter=Name(id='reports', ctx=Load()),\n body=[\n Assign(\n targets=[\n Name(id='row', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Call(\n func=Attribute(\n value=Name(id='con', ctx=Load()),\n attr='execute',\n ctx=Load()),\n args=[\n Constant(value='SELECT status FROM reports WHERE report_id=?'),\n Tuple(\n elts=[\n Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='report_id'),\n ctx=Load())],\n ctx=Load())]),\n attr='fetchone',\n ctx=Load()))),\n If(\n test=Compare(\n left=Name(id='row', ctx=Load()),\n ops=[\n Is()],\n comparators=[\n Constant(value=None)]),\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='con', ctx=Load()),\n attr='execute',\n ctx=Load()),\n args=[\n Constant(value='<STR len=150 sha=04113cc6cacf>'),\n Tuple(\n elts=[\n Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='report_id'),\n ctx=Load()),\n Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='url'),\n ctx=Load()),\n Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='title'),\n ctx=Load()),\n Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='status'),\n ctx=Load()),\n Call(\n func=Attribute(\n value=Name(id='report', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='report_count')]),\n Call(\n func=Attribute(\n value=Name(id='report', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='comment_count')]),\n Call(\n func=Attribute(\n value=Name(id='report', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='row_text'),\n Constant(value='')]),\n Call(\n func=Name(id='utc_now', ctx=Load())),\n Call(\n func=Name(id='utc_now', ctx=Load())),\n IfExp(\n test=Compare(\n left=Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='status'),\n ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='resolved')]),\n body=Call(\n func=Name(id='utc_now', ctx=Load())),\n orelse=Constant(value=None))],\n ctx=Load())])),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='con', ctx=Load()),\n attr='commit',\n ctx=Load()))),\n If(\n test=BoolOp(\n op=Or(),\n values=[\n Name(id='baseline', ctx=Load()),\n UnaryOp(\n op=Not(),\n operand=Name(id='baseline_mode', ctx=Load()))]),\n body=[\n If(\n test=Compare(\n left=Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='status'),\n ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='open')]),\n body=[\n Assign(\n targets=[\n Name(id='key', ctx=Store())],\n value=BinOp(\n left=Constant(value='new:'),\n op=Add(),\n right=Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='report_id'),\n ctx=Load()))),\n If(\n test=UnaryOp(\n op=Not(),\n operand=Call(\n func=Name(id='event_sent', ctx=Load()),\n args=[\n Name(id='con', ctx=Load()),\n Name(id='key', ctx=Load())])),\n body=[\n If(\n test=Call(\n func=Name(id='send_mail', ctx=Load()),\n args=[\n Name(id='cfg', ctx=Load()),\n Name(id='secrets', ctx=Load()),\n Constant(value='Новая жалоба'),\n Call(\n func=Name(id='report_body', ctx=Load()),\n args=[\n Constant(value='Появилась новая жалоба.'),\n Name(id='report', ctx=Load())])]),\n body=[\n Expr(\n value=Call(\n func=Name(id='mark_event', ctx=Load()),\n args=[\n Name(id='con', ctx=Load()),\n Name(id='key', ctx=Load()),\n Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='report_id'),\n ctx=Load()),\n Constant(value='new')])),\n AugAssign(\n target=Name(id='new_events', ctx=Store()),\n op=Add(),\n value=Constant(value=1))])])])])],\n orelse=[\n Assign(\n targets=[\n Name(id='old_status', ctx=Store())],\n value=Subscript(\n value=Name(id='row', ctx=Load()),\n slice=Constant(value=0),\n ctx=Load())),\n If(\n test=BoolOp(\n op=And(),\n values=[\n Compare(\n left=Name(id='old_status', ctx=Load()),\n ops=[\n NotEq()],\n comparators=[\n Constant(value='resolved')]),\n Compare(\n left=Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='status'),\n ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='resolved')])]),\n body=[\n Assign(\n targets=[\n Name(id='key', ctx=Store())],\n value=BinOp(\n left=Constant(value='resolved:'),\n op=Add(),\n right=Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='report_id'),\n ctx=Load()))),\n If(\n test=UnaryOp(\n op=Not(),\n operand=Call(\n func=Name(id='event_sent', ctx=Load()),\n args=[\n Name(id='con', ctx=Load()),\n Name(id='key', ctx=Load())])),\n body=[\n If(\n test=Call(\n func=Name(id='send_mail', ctx=Load()),\n args=[\n Name(id='cfg', ctx=Load()),\n Name(id='secrets', ctx=Load()),\n Constant(value='Жалоба отработана'),\n Call(\n func=Name(id='report_body', ctx=Load()),\n args=[\n Constant(value='Жалоба перешла в обработанные.'),\n Name(id='report', ctx=Load())])]),\n body=[\n Expr(\n value=Call(\n func=Name(id='mark_event', ctx=Load()),\n args=[\n Name(id='con', ctx=Load()),\n Name(id='key', ctx=Load()),\n Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='report_id'),\n ctx=Load()),\n Constant(value='resolved')])),\n AugAssign(\n target=Name(id='resolved_events', ctx=Store()),\n op=Add(),\n value=Constant(value=1))])])]),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='con', ctx=Load()),\n attr='execute',\n ctx=Load()),\n args=[\n Constant(value='<STR len=160 sha=0e4be5c81e39>'),\n Tuple(\n elts=[\n Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='url'),\n ctx=Load()),\n Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='title'),\n ctx=Load()),\n Subscript(\n value=Name(id='report', ctx=Load()),\n slice=Constant(value='status'),\n ctx=Load()),\n Call(\n func=Attribute(\n value=Name(id='report', ctx=Load()),\n attr='get',\n ctx=Load()),\n args=[\n Constant(value='report_count')]),\n Call(\n func=Attribute(\n value=Name(id='report', ctx=Load()),\n attr='get',\n ctx=Load()),\n \nMONITOR_DUMP_SHA256=898a51f0ad422cfbd6a9dc3c30e38db7fa53aa91216f5ef5bf390e2728d2da25\nMONITOR_DUMP_TRUNCATED=true\nMONITOR_DUMP_END=process_reports\nMONITOR_DUMP_BEGIN=maybe_send_auth_required\nFunctionDef(\n name='maybe_send_auth_required',\n args=arguments(\n args=[\n arg(\n arg='con',\n annotation=Attribute(\n value=Name(id='sqlite3', ctx=Load()),\n attr='Connection',\n ctx=Load())),\n arg(\n arg='cfg',\n annotation=Attribute(\n value=Name(id='configparser', ctx=Load()),\n attr='ConfigParser',\n ctx=Load())),\n arg(\n arg='secrets',\n annotation=Subscript(\n value=Name(id='dict', ctx=Load()),\n slice=Tuple(\n elts=[\n Name(id='str', ctx=Load()),\n Name(id='str', ctx=Load())],\n ctx=Load()),\n ctx=Load())),\n arg(\n arg='final_url',\n annotation=Name(id='str', ctx=Load()))]),\n body=[\n Assign(\n targets=[\n Name(id='now_ts', ctx=Store())],\n value=Call(\n func=Name(id='int', ctx=Load()),\n args=[\n Call(\n func=Attribute(\n value=Name(id='time', ctx=Load()),\n attr='time',\n ctx=Load()))])),\n Assign(\n targets=[\n Name(id='interval', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Subscript(\n value=Name(id='cfg', ctx=Load()),\n slice=Constant(value='email'),\n ctx=Load()),\n attr='getint',\n ctx=Load()),\n args=[\n Constant(value='auth_notice_min_interval_seconds')],\n keywords=[\n keyword(\n arg='fallback',\n value=Constant(value=86400))])),\n Assign(\n targets=[\n Name(id='last_raw', ctx=Store())],\n value=BoolOp(\n op=Or(),\n values=[\n Call(\n func=Name(id='meta_get', ctx=Load()),\n args=[\n Name(id='con', ctx=Load()),\n Constant(value='last_auth_notice_ts')]),\n Constant(value='0')])),\n Try(\n body=[\n Assign(\n targets=[\n Name(id='last', ctx=Store())],\n value=Call(\n func=Name(id='int', ctx=Load()),\n args=[\n Name(id='last_raw', ctx=Load())]))],\n handlers=[\n ExceptHandler(\n type=Name(id='ValueError', ctx=Load()),\n body=[\n Assign(\n targets=[\n Name(id='last', ctx=Store())],\n value=Constant(value=0))])]),\n If(\n test=Compare(\n left=BinOp(\n left=Name(id='now_ts', ctx=Load()),\n op=Sub(),\n right=Name(id='last', ctx=Load())),\n ops=[\n GtE()],\n comparators=[\n Name(id='interval', ctx=Load())]),\n body=[\n If(\n test=Call(\n func=Name(id='send_mail', ctx=Load()),\n args=[\n Name(id='cfg', ctx=Load()),\n Name(id='secrets', ctx=Load()),\n Constant(value='Нужна повторная авторизация'),\n JoinedStr(\n values=[\n Constant(value='<STR len=126 sha=e79f2e781692>'),\n FormattedValue(\n value=Name(id='final_url', ctx=Load()),\n conversion=-1),\n Constant(value='<STR len=8 sha=00ea0d21f774>'),\n FormattedValue(\n value=Call(\n func=Name(id='utc_now', ctx=Load())),\n conversion=-1),\n Constant(value='<STR len=1 sha=01ba4719c80b>')])]),\n body=[\n Expr(\n value=Call(\n func=Name(id='meta_set', ctx=Load()),\n args=[\n Name(id='con', ctx=Load()),\n Constant(value='last_auth_notice_ts'),\n Call(\n func=Name(id='str', ctx=Load()),\n args=[\n Name(id='now_ts', ctx=Load())])]))])])],\n returns=Constant(value=None))\nMONITOR_DUMP_SHA256=396252a7a870238ab735e22192d95a704509acc56af3bca2289e5e307c4e5f10\nMONITOR_DUMP_TRUNCATED=false\nMONITOR_DUMP_END=maybe_send_auth_required\nMONITOR_DUMP_BEGIN=run_once\nFunctionDef(\n name='run_once',\n args=arguments(),\n body=[\n Assign(\n targets=[\n Name(id='lock', ctx=Store())],\n value=Call(\n func=Name(id='acquire_lock', ctx=Load()))),\n If(\n test=Compare(\n left=Name(id='lock', ctx=Load()),\n ops=[\n Is()],\n comparators=[\n Constant(value=None)]),\n body=[\n Expr(\n value=Call(\n func=Name(id='log', ctx=Load()),\n args=[\n Constant(value='LOCK_BUSY previous run still active')])),\n Expr(\n value=Call(\n func=Name(id='write_health', ctx=Load()),\n args=[\n Constant(value='LOCK_BUSY')])),\n Return(\n value=Constant(value=0))]),\n Assign(\n targets=[\n Tuple(\n elts=[\n Name(id='cfg', ctx=Store()),\n Name(id='secrets', ctx=Store())],\n ctx=Store())],\n value=Call(\n func=Name(id='load_config', ctx=Load()))),\n Assign(\n targets=[\n Name(id='con', ctx=Store())],\n value=Call(\n func=Name(id='connect_db', ctx=Load()))),\n Try(\n body=[\n Assign(\n targets=[\n Tuple(\n elts=[\n Name(id='final_url', ctx=Store()),\n Name(id='text', ctx=Store())],\n ctx=Store())],\n value=Call(\n func=Name(id='fetch_reports_page', ctx=Load()),\n args=[\n Name(id='cfg', ctx=Load()),\n Name(id='secrets', ctx=Load())])),\n If(\n test=Call(\n func=Name(id='login_required', ctx=Load()),\n args=[\n Name(id='final_url', ctx=Load()),\n Name(id='text', ctx=Load())]),\n body=[\n Expr(\n value=Call(\n func=Name(id='maybe_send_auth_required', ctx=Load()),\n args=[\n Name(id='con', ctx=Load()),\n Name(id='cfg', ctx=Load()),\n Name(id='secrets', ctx=Load()),\n Name(id='final_url', ctx=Load())])),\n Expr(\n value=Call(\n func=Name(id='write_health', ctx=Load()),\n args=[\n Constant(value='AUTH_REQUIRED')],\n keywords=[\n keyword(\n arg='url',\n value=Name(id='final_url', ctx=Load()))])),\n Return(\n value=Constant(value=2))]),\n Assign(\n targets=[\n Name(id='reports', ctx=Store())],\n value=Call(\n func=Name(id='parse_reports', ctx=Load()),\n args=[\n Name(id='text', ctx=Load()),\n Name(id='cfg', ctx=Load())])),\n If(\n test=UnaryOp(\n op=Not(),\n operand=Name(id='reports', ctx=Load())),\n body=[\n Expr(\n value=Call(\n func=Name(id='write_health', ctx=Load()),\n args=[\n Constant(value='ERROR')],\n keywords=[\n keyword(\n arg='reason',\n value=Constant(value='no_reports_parsed')),\n keyword(\n arg='url',\n value=Name(id='final_url', ctx=Load()))])),\n Expr(\n value=Call(\n func=Name(id='log', ctx=Load()),\n args=[\n Constant(value='ERROR no reports parsed')])),\n Return(\n value=Constant(value=1))]),\n Assign(\n targets=[\n Tuple(\n elts=[\n Name(id='new_events', ctx=Store()),\n Name(id='resolved_events', ctx=Store())],\n ctx=Store())],\n value=Call(\n func=Name(id='process_reports', ctx=Load()),\n args=[\n Name(id='con', ctx=Load()),\n Name(id='cfg', ctx=Load()),\n Name(id='secrets', ctx=Load()),\n Name(id='reports', ctx=Load())])),\n Assign(\n targets=[\n Name(id='open_count', ctx=Store())],\n value=Call(\n func=Name(id='sum', ctx=Load()),\n args=[\n GeneratorExp(\n elt=Constant(value=1),\n generators=[\n comprehension(\n target=Name(id='r', ctx=Store()),\n iter=Name(id='reports', ctx=Load()),\n ifs=[\n Compare(\n left=Subscript(\n value=Name(id='r', ctx=Load()),\n slice=Constant(value='status'),\n ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='open')])],\n is_async=0)])])),\n Assign(\n targets=[\n Name(id='resolved_count', ctx=Store())],\n value=Call(\n func=Name(id='sum', ctx=Load()),\n args=[\n GeneratorExp(\n elt=Constant(value=1),\n generators=[\n comprehension(\n target=Name(id='r', ctx=Store()),\n iter=Name(id='reports', ctx=Load()),\n ifs=[\n Compare(\n left=Subscript(\n value=Name(id='r', ctx=Load()),\n slice=Constant(value='status'),\n ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='resolved')])],\n is_async=0)])])),\n Expr(\n value=Call(\n func=Name(id='write_health', ctx=Load()),\n args=[\n Constant(value='OK')],\n keywords=[\n keyword(\n arg='url',\n value=Name(id='final_url', ctx=Load())),\n keyword(\n arg='reports',\n value=Call(\n func=Name(id='len', ctx=Load()),\n args=[\n Name(id='reports', ctx=Load())])),\n keyword(\n arg='open',\n value=Name(id='open_count', ctx=Load())),\n keyword(\n arg='resolved',\n value=Name(id='resolved_count', ctx=Load())),\n keyword(\n arg='new_events',\n value=Name(id='new_events', ctx=Load())),\n keyword(\n arg='resolved_events',\n value=Name(id='resolved_events', ctx=Load())),\n keyword(\n arg='smtp_configured',\n value=IfExp(\n test=Call(\n func=Name(id='smtp_ready', ctx=Load()),\n args=[\n Name(id='secrets', ctx=Load())]),\n body=Constant(value='yes'),\n orelse=Constant(value='no')))])),\n Expr(\n value=Call(\n func=Name(id='log', ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='OK reports='),\n FormattedValue(\n value=Call(\n func=Name(id='len', ctx=Load()),\n args=[\n Name(id='reports', ctx=Load())]),\n conversion=-1),\n Constant(value=' open='),\n FormattedValue(\n value=Name(id='open_count', ctx=Load()),\n conversion=-1),\n Constant(value=' resolved='),\n FormattedValue(\n value=Name(id='resolved_count', ctx=Load()),\n conversion=-1),\n Constant(value=' new='),\n FormattedValue(\n value=Name(id='new_events', ctx=Load()),\n conversion=-1),\n Constant(value=' done='),\n FormattedValue(\n value=Name(id='resolved_events', ctx=Load()),\n conversion=-1)])])),\n Return(\n value=Constant(value=0))],\n handlers=[\n ExceptHandler(\n type=Attribute(\n value=Attribute(\n value=Name(id='urllib', ctx=Load()),\n attr='error',\n ctx=Load()),\n attr='HTTPError',\n ctx=Load()),\n name='e',\n body=[\n Expr(\n value=Call(\n func=Name(id='write_health', ctx=Load()),\n args=[\n Constant(value='ERROR')],\n keywords=[\n keyword(\n arg='error',\n value=JoinedStr(\n values=[\n Constant(value='HTTPError '),\n FormattedValue(\n value=Attribute(\n value=Name(id='e', ctx=Load()),\n attr='code',\n ctx=Load()),\n conversion=-1)]))])),\n Expr(\n value=Call(\n func=Name(id='log', ctx=Load()),\n args=[\n JoinedStr(\n values=[\n Constant(value='ERROR HTTPError '),\n FormattedValue(\n value=Attribute(\n value=Name(id='e', ctx=Load()),\n attr='code',\n ctx=Load()),\n conversion=-1)])])),\n Return(\n value=Constant(value=1))]),\n ExceptHandler(\n type=Name(id='Exception', ctx=Load()),\n name='e',\n body=[\n Expr(\n value=Call(\n func=Name(id='write_health', ctx=Load()),\n args=[\n Constant(value='ERROR')],\n keywords=[\n keyword(\n arg='error',\n value=Call(\n func=Name(id='repr', ctx=Load()),\n args=[\n Name(id='e', ctx=Load())]))])),\n Expr(\n value=Call(\n func=Name(id='log', ctx=Load()),\n args=[\n BinOp(\n left=BinOp(\n left=BinOp(\n left=Constant(value='ERROR '),\n op=Add(),\n right=Call(\n func=Name(id='repr', ctx=Load()),\n args=[\n Name(id='e', ctx=Load())])),\n op=Add(),\n right=Constant(value=' ')),\n op=Add(),\n right=Call(\n func=Attribute(\n value=Name(id='traceback', ctx=Load()),\n attr='format_exc',\n ctx=Load())))])),\n Return(\n value=Constant(value=1))])],\n finalbody=[\n Try(\n body=[\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='fcntl', ctx=Load()),\n attr='flock',\n ctx=Load()),\n args=[\n Call(\n func=Attribute(\n value=Name(id='lock', ctx=Load()),\n attr='fileno',\n ctx=Load())),\n Attribute(\n value=Name(id='fcntl', ctx=Load()),\n attr='LOCK_UN',\n ctx=Load())])),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='lock', ctx=Load()),\n attr='close',\n ctx=Load())))],\n handlers=[\n ExceptHandler(\n type=Name(id='Exception', ctx=Load()),\n body=[\n Pass()])])])],\n returns=Name(id='int', ctx=Load()))\nMONITOR_DUMP_SHA256=eceb52bc948ca75d79fddb992ecc9e3c61ae10413339a5d6d14b5c20b00407db\nMONITOR_DUMP_TRUNCATED=false\nMONITOR_DUMP_END=run_once\nMONITOR_DUMP_BEGIN=show_status\nFunctionDef(\n name='show_status',\n args=arguments(),\n body=[\n If(\n test=Call(\n func=Attribute(\n value=Name(id='HEALTH_PATH', ctx=Load()),\n attr='exists',\n ctx=Load())),\n body=[\n Expr(\n value=Call(\n func=Name(id='print', ctx=Load()),\n args=[\n Call(\n func=Attribute(\n value=Name(id='HEALTH_PATH', ctx=Load()),\n attr='read_text',\n ctx=Load()),\n keywords=[\n keyword(\n arg='encoding',\n value=Constant(value='utf-8'))])],\n keywords=[\n keyword(\n arg='end',\n value=Constant(value=''))]))],\n orelse=[\n Expr(\n value=Call(\n func=Name(id='print', ctx=Load()),\n args=[\n Constant(value='STATUS=UNKNOWN')]))]),\n Return(\n value=Constant(value=0))],\n returns=Name(id='int', ctx=Load()))\nMONITOR_DUMP_SHA256=ee45eb0e5db867e890df5fce7f7afa8ad77ba828845e20e5e7d1dcfdab13e551\nMONITOR_DUMP_TRUNCATED=false\nMONITOR_DUMP_END=show_status\nMONITOR_DUMP_BEGIN=main\nFunctionDef(\n name='main',\n args=arguments(),\n body=[\n Assign(\n targets=[\n Name(id='parser', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='argparse', ctx=Load()),\n attr='ArgumentParser',\n ctx=Load()))),\n Expr(\n value=Call(\n func=Attribute(\n value=Name(id='parser', ctx=Load()),\n attr='add_argument',\n ctx=Load()),\n args=[\n Constant(value='cmd')],\n keywords=[\n keyword(\n arg='choices',\n value=List(\n elts=[\n Constant(value='run'),\n Constant(value='status')],\n ctx=Load())),\n keyword(\n arg='nargs',\n value=Constant(value='?')),\n keyword(\n arg='default',\n value=Constant(value='run'))])),\n Assign(\n targets=[\n Name(id='args', ctx=Store())],\n value=Call(\n func=Attribute(\n value=Name(id='parser', ctx=Load()),\n attr='parse_args',\n ctx=Load()))),\n If(\n test=Compare(\n left=Attribute(\n value=Name(id='args', ctx=Load()),\n attr='cmd',\n ctx=Load()),\n ops=[\n Eq()],\n comparators=[\n Constant(value='status')]),\n body=[\n Return(\n value=Call(\n func=Name(id='show_status', ctx=Load())))]),\n Return(\n value=Call(\n func=Name(id='run_once', ctx=Load())))],\n returns=Name(id='int', ctx=Load()))\nMONITOR_DUMP_SHA256=02ad6bee6cd63312a57b18daedc366b2edfc1b747c3ac27f5bd9cfd71210fb2e\nMONITOR_DUMP_TRUNCATED=false\nMONITOR_DUMP_END=main\nMONITOR_SCAN_OK=true\nUNIT_PROBE_QM_RC=0\nUNIT_PROBE_STDERR_PRESENT=false\nUNIT_PROBE_JSON=true\nUNIT_PROBE_GUEST_EXITCODE=0\nactive\nenabled\nsuccess\n0\nMAIL_DRY_RUN_ONLY=true\nMAIL_SENT=false\nDECISION=PASS_TITLE_AND_ALERT_SOURCE_RCA\nNEXT_GATE=DESIGN_ATOMIC_FALSE_ALERT_AND_TITLE_REPAIR_FROM_99564\nTASK_RESULT=SKLADCHIK_COMPLAINTS_TITLE_TOKEN_RCA\nCHANGES_MADE=false\nROLLBACK_STARTED=false\nROLLBACK_RESTORED=null\nMUTATION_OUTCOME=NO_MUTATION\n"
}