summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--robusta_krr/core/models/config.py7
-rw-r--r--robusta_krr/core/runner.py6
-rw-r--r--robusta_krr/main.py7
-rw-r--r--robusta_krr/strategies/simple.py3
5 files changed, 9 insertions, 16 deletions
diff --git a/README.md b/README.md
index 908310d..066d325 100644
--- a/README.md
+++ b/README.md
@@ -103,7 +103,7 @@ Read more about [how KRR works](#how-krr-works) and [KRR vs Kubernetes VPA](#dif
### Requirements
-KRR requires Prometheus and [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics).
+KRR requires Prometheus 2.26+ and [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics).
<details>
<summary>Which metrics does KRR need?</summary>
diff --git a/robusta_krr/core/models/config.py b/robusta_krr/core/models/config.py
index ab2939b..36787d4 100644
--- a/robusta_krr/core/models/config.py
+++ b/robusta_krr/core/models/config.py
@@ -66,7 +66,6 @@ class Config(pd.BaseSettings):
# Internal
inside_cluster: bool = False
_logging_console: Optional[Console] = pd.PrivateAttr(None)
- _result_console: Optional[Console] = pd.PrivateAttr(None)
def __init__(self, **kwargs: Any) -> None:
super().__init__(**kwargs)
@@ -133,12 +132,6 @@ class Config(pd.BaseSettings):
self._logging_console = Console(file=sys.stderr if self.log_to_stderr else sys.stdout, width=self.width)
return self._logging_console
- @property
- def result_console(self) -> Console:
- if getattr(self, "_result_console") is None:
- self._result_console = Console(file=sys.stdout, width=self.width)
- return self._result_console
-
def load_kubeconfig(self) -> None:
try:
config.load_incluster_config()
diff --git a/robusta_krr/core/runner.py b/robusta_krr/core/runner.py
index 4aacfb5..f651aa8 100644
--- a/robusta_krr/core/runner.py
+++ b/robusta_krr/core/runner.py
@@ -8,6 +8,7 @@ from concurrent.futures import ThreadPoolExecutor
from typing import Optional, Union
from datetime import timedelta
from prometrix import PrometheusNotFound
+from rich.console import Console
from slack_sdk import WebClient
from robusta_krr.core.abstract.strategies import ResourceRecommendation, RunResult
@@ -89,9 +90,8 @@ class Runner:
elif settings.slack_output:
file_name = settings.slack_output
with open(file_name, "w") as target_file:
- sys.stdout = target_file
- custom_print(formatted, rich=rich, force=True)
- sys.stdout = sys.stdout
+ console = Console(file=target_file, width=settings.width)
+ console.print(formatted)
if settings.slack_output:
client = WebClient(os.environ["SLACK_BOT_TOKEN"])
warnings.filterwarnings("ignore", category=UserWarning)
diff --git a/robusta_krr/main.py b/robusta_krr/main.py
index 23c6f78..e61db7f 100644
--- a/robusta_krr/main.py
+++ b/robusta_krr/main.py
@@ -10,6 +10,7 @@ from uuid import UUID
import typer
import urllib3
from pydantic import ValidationError # noqa: F401
+from typer.models import OptionInfo
from robusta_krr import formatters as concrete_formatters # noqa: F401
from robusta_krr.core.abstract import formatters
@@ -284,9 +285,9 @@ def load_commands() -> None:
inspect.Parameter(
name=field_name,
kind=inspect.Parameter.KEYWORD_ONLY,
- default=typer.Option(
- field_meta.default,
- f"--{field_name}",
+ default=OptionInfo(
+ default=field_meta.default,
+ param_decls=list(set([f"--{field_name}", f"--{field_name.replace('_', '-')}"])),
help=f"{field_meta.field_info.description}",
rich_help_panel="Strategy Settings",
),
diff --git a/robusta_krr/strategies/simple.py b/robusta_krr/strategies/simple.py
index 8bbd08d..64e58ac 100644
--- a/robusta_krr/strategies/simple.py
+++ b/robusta_krr/strategies/simple.py
@@ -21,7 +21,6 @@ from robusta_krr.core.integrations.prometheus.metrics import (
PrometheusMetric,
)
-
class SimpleStrategySettings(StrategySettings):
cpu_percentile: float = pd.Field(99, gt=0, le=100, description="The percentile to use for the CPU recommendation.")
memory_buffer_percentage: float = pd.Field(
@@ -66,7 +65,7 @@ class SimpleStrategy(BaseStrategy[SimpleStrategySettings]):
This strategy does not work with objects with HPA defined (Horizontal Pod Autoscaler).
If HPA is defined for CPU or Memory, the strategy will return "?" for that resource.
- You can override this behaviour by passing the --allow_hpa flag
+ You can override this behaviour by passing the --allow-hpa flag
Learn more: [underline]https://github.com/robusta-dev/krr#algorithm[/underline]
"""