From fcc008b2907c3ca1af19f2861c7c719598ad4f62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B0=D0=B2=D0=B5=D0=BB=20=D0=96=D1=83=D0=BA=D0=BE?= =?UTF-8?q?=D0=B2?= <33721692+LeaveMyYard@users.noreply.github.com> Date: Thu, 6 Apr 2023 11:51:11 +0300 Subject: Make the custom strategy simpler --- examples/custom_strategy.py | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) (limited to 'examples/custom_strategy.py') diff --git a/examples/custom_strategy.py b/examples/custom_strategy.py index e426477..f88edd3 100644 --- a/examples/custom_strategy.py +++ b/examples/custom_strategy.py @@ -17,31 +17,19 @@ from robusta_krr.core.abstract.strategies import ( class CustomStrategySettings(StrategySettings): - cpu_percentile: Decimal = pd.Field(99, gt=0, description="The percentile to use for the request recommendation.") - memory_percentile: Decimal = pd.Field( - 105, gt=0, description="The percentile to use for the request recommendation." - ) + param_1: Decimal = pd.Field(99, gt=0, description="First example parameter") + param_2: Decimal = pd.Field(105_000, gt=0, description="Second example parameter") class CustomStrategy(BaseStrategy[CustomStrategySettings]): __display_name__ = "custom" def run(self, history_data: HistoryData, object_data: K8sObjectData) -> RunResult: - cpu_usage = self._calculate_percentile(history_data[ResourceType.CPU], self.settings.cpu_percentile) - memory_usage = self._calculate_percentile(history_data[ResourceType.Memory], self.settings.memory_percentile) - return { - ResourceType.CPU: ResourceRecommendation(request=cpu_usage, limit=None), - ResourceType.Memory: ResourceRecommendation(request=memory_usage, limit=memory_usage), + ResourceType.CPU: ResourceRecommendation(request=self.settings.param_1, limit=None), + ResourceType.Memory: ResourceRecommendation(request=self.settings.param_2, limit=self.settings.param_2), } - def _calculate_percentile(self, data: dict[str, list[Decimal]], percentile: Decimal) -> Decimal: - data_ = [value for values in data.values() for value in values] - if len(data_) == 0: - return Decimal("NaN") - - return max(data_) * percentile / 100 - # Running this file will register the strategy and make it available to the CLI if __name__ == "__main__": -- cgit v1.2.3