diff options
Diffstat (limited to 'robusta_krr')
| -rw-r--r-- | robusta_krr/formatters/table.py | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/robusta_krr/formatters/table.py b/robusta_krr/formatters/table.py index cae0fb3..f39f84f 100644 --- a/robusta_krr/formatters/table.py +++ b/robusta_krr/formatters/table.py @@ -21,17 +21,25 @@ def _format(value: RecommendationValue) -> str: return resource_units.format(value) +def __calc_diff(allocated, recommended, selector, multiplier=1) -> str: + if recommended is None or isinstance(recommended, str) or selector != "requests": + return "" + else: + reccomended_val = recommended.value if isinstance(recommended.value, (int, float)) else 0 + allocated_val = allocated if isinstance(allocated, (int, float)) else 0 + diff_val = reccomended_val - allocated_val + diff_sign = "[green]+[/green]" if diff_val >= 0 else "[red]-[/red]" + return f"{diff_sign}{_format(abs(diff_val) * multiplier)}" + + def _format_request_str(item: ResourceScan, resource: ResourceType, selector: str) -> str: allocated = getattr(item.object.allocations, selector)[resource] recommended = getattr(item.recommended, selector)[resource] severity = recommended.severity - if allocated is None or isinstance(allocated, str) or selector != "requests": - diff = "" - else: - diff_val = recommended.value - allocated - diff_sign = "[green]+[/green]" if diff_val > 0 else "[red]-[/red]" - diff = f"({diff_sign}{_format(abs(diff_val))}) " + diff = __calc_diff(allocated, recommended, selector) + if diff != "": + diff = f"({diff}) " return ( diff + f"[{severity.color}]" + _format(allocated) + " -> " + _format(recommended.value) + f"[/{severity.color}]" @@ -43,12 +51,7 @@ def _format_total_diff(item: ResourceScan, resource: ResourceType, pods_current: allocated = getattr(item.object.allocations, selector)[resource] recommended = getattr(item.recommended, selector)[resource] - if allocated is None or isinstance(allocated, str) or selector != "requests": - return "" - else: - diff_val = recommended.value - allocated - diff_sign = "[green]+[/green]" if diff_val > 0 else "[red]-[/red]" - return f"{diff_sign}{_format(abs(diff_val) * pods_current)}" + return __calc_diff(allocated, recommended, selector, pods_current) @formatters.register(rich_console=True) |
