diff options
| author | Павел Жуков <33721692+LeaveMyYard@users.noreply.github.com> | 2023-02-24 17:27:02 +0200 |
|---|---|---|
| committer | Павел Жуков <33721692+LeaveMyYard@users.noreply.github.com> | 2023-02-24 17:27:02 +0200 |
| commit | d65125aeafb4679929a64e2beac72aee379a36f6 (patch) | |
| tree | f4bcd19b66b23671d05e9c816e03f66a9ec9404d /robusta_krr/formatters | |
| parent | 2998e2781c99fe63185a90f1591451c3593d9aed (diff) | |
Implement more formatters, fix verbose flag
Diffstat (limited to 'robusta_krr/formatters')
| -rw-r--r-- | robusta_krr/formatters/__init__.py | 2 | ||||
| -rw-r--r-- | robusta_krr/formatters/table.py | 42 | ||||
| -rw-r--r-- | robusta_krr/formatters/text.py | 20 | ||||
| -rw-r--r-- | robusta_krr/formatters/yaml.py | 4 |
4 files changed, 46 insertions, 22 deletions
diff --git a/robusta_krr/formatters/__init__.py b/robusta_krr/formatters/__init__.py index ca0b95d..cdb12bb 100644 --- a/robusta_krr/formatters/__init__.py +++ b/robusta_krr/formatters/__init__.py @@ -1,3 +1,3 @@ from .json import JSONFormatter -from .text import TextFormatter +from .table import TableFormatter from .yaml import YAMLFormatter diff --git a/robusta_krr/formatters/table.py b/robusta_krr/formatters/table.py new file mode 100644 index 0000000..df2fb88 --- /dev/null +++ b/robusta_krr/formatters/table.py @@ -0,0 +1,42 @@ +from __future__ import annotations + +from robusta_krr.core.formatters import BaseFormatter +from robusta_krr.core.result import Result, ResourceType + +from rich.table import Table + + +class TableFormatter(BaseFormatter): + """Formatter for text output.""" + + __display_name__ = "table" + + def format(self, result: Result) -> Table: + """Format the result as text. + + :param result: The result to format. + :type result: :class:`core.result.Result` + :returns: The formatted results. + :rtype: str + """ + + table = Table(show_header=True, header_style="bold magenta", title=f"Scan result ({result.score} points)") + + table.add_column("Number", justify="right", style="dim", no_wrap=True) + table.add_column("Name", style="cyan") + for resource in ResourceType: + table.add_column(f"{resource.name} Requests", style="green") + table.add_column(f"{resource.name} Limits", style="green") + + for i, item in enumerate(result.scans): + table.add_row( + str(i), + f"{item.object.kind} {item.object.namespace}/{item.object.name}", + *[ + f"{getattr(item.current, selector)[resource]} -> {getattr(item.recommended, selector)[resource]}" + for resource in ResourceType + for selector in ["requests", "limits"] + ], + ) + + return table diff --git a/robusta_krr/formatters/text.py b/robusta_krr/formatters/text.py deleted file mode 100644 index fa66bcb..0000000 --- a/robusta_krr/formatters/text.py +++ /dev/null @@ -1,20 +0,0 @@ -from __future__ import annotations - -from robusta_krr.core.formatters import BaseFormatter -from robusta_krr.core.result import Result - - -class TextFormatter(BaseFormatter): - """Formatter for text output.""" - - __display_name__ = "text" - - def format(self, result: Result) -> str: - """Format the result as text. - - :param result: The result to format. - :type result: :class:`core.result.Result` - :returns: The formatted results. - :rtype: str - """ - return "Example result." diff --git a/robusta_krr/formatters/yaml.py b/robusta_krr/formatters/yaml.py index 3ab1fa3..b9d7ca4 100644 --- a/robusta_krr/formatters/yaml.py +++ b/robusta_krr/formatters/yaml.py @@ -2,6 +2,8 @@ from __future__ import annotations from robusta_krr.core.formatters import BaseFormatter from robusta_krr.core.result import Result +import yaml +import json class YAMLFormatter(BaseFormatter): @@ -17,4 +19,4 @@ class YAMLFormatter(BaseFormatter): :returns: The formatted results. :rtype: str """ - raise NotImplementedError + return yaml.dump(json.loads(result.json()), sort_keys=False) |
