/
processor.py
51 lines (43 loc) · 1.55 KB
/
processor.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from typing import List
from pcs.common.reports import (
ReportItem,
ReportItemSeverity,
ReportProcessor,
)
from .messages import report_item_msg_from_dto
from .output import (
error,
prepare_force_text,
warn,
)
class ReportProcessorToConsole(ReportProcessor):
def __init__(self, debug: bool = False) -> None:
super().__init__()
self._ignore_severities: List[ReportItemSeverity] = []
self.debug = debug
def _do_report(self, report_item: ReportItem) -> None:
report_dto = report_item.to_dto()
msg = report_item_msg_from_dto(report_dto.message).message
if report_dto.context:
msg = f"{report_dto.context.node}: {msg}"
severity = report_dto.severity.level
if severity in self._ignore_severities:
# DEBUG overrides ignoring severities for debug reports
if msg and self.debug and severity == ReportItemSeverity.DEBUG:
print(msg, flush=True)
return
if severity == ReportItemSeverity.ERROR:
error(
"{msg}{force}".format(
msg=msg,
force=prepare_force_text(report_item),
)
)
elif severity == ReportItemSeverity.WARNING:
warn(msg)
elif msg and (self.debug or severity != ReportItemSeverity.DEBUG):
print(msg, flush=True)
def suppress_reports_of_severity(
self, severity_list: List[ReportItemSeverity]
) -> None:
self._ignore_severities = list(severity_list)