diff options
| author | LeaveMyYard <33721692+LeaveMyYard@users.noreply.github.com> | 2023-06-28 11:46:08 +0300 |
|---|---|---|
| committer | LeaveMyYard <33721692+LeaveMyYard@users.noreply.github.com> | 2023-06-28 11:46:08 +0300 |
| commit | a7524ed069837524d520b79f5cdc955d694fe3c9 (patch) | |
| tree | 9eac86afb2c2394d4764f104ed10a2c9096638a8 /robusta_krr/strategies | |
| parent | cac3bbd68bcbf61efb65d19412bcc947a031b313 (diff) | |
Add explanation when HPA prevents the recommendation
Diffstat (limited to 'robusta_krr/strategies')
| -rw-r--r-- | robusta_krr/strategies/simple.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/robusta_krr/strategies/simple.py b/robusta_krr/strategies/simple.py index 353b797..b83de50 100644 --- a/robusta_krr/strategies/simple.py +++ b/robusta_krr/strategies/simple.py @@ -42,6 +42,10 @@ class SimpleStrategy(BaseStrategy[SimpleStrategySettings]): """ CPU request: {cpu_percentile}% percentile, limit: unset Memory request: max + {memory_buffer_percentage}%, limit: max + {memory_buffer_percentage}% + + 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. + Learn more: [underline]https://github.com/robusta-dev/krr#algorithm[/underline] """ @@ -49,8 +53,11 @@ class SimpleStrategy(BaseStrategy[SimpleStrategySettings]): __rich_console__ = True def __calculate_cpu_proposal(self, history_data: HistoryData, object_data: K8sObjectData) -> ResourceRecommendation: + if len(history_data[ResourceType.CPU].data) == 0: + return ResourceRecommendation.undefined(info="No data") + if object_data.hpa is not None and object_data.hpa.target_cpu_utilization_percentage is not None: - return ResourceRecommendation.undefined() + return ResourceRecommendation.undefined(info="HPA detected") cpu_usage = self.settings.calculate_cpu_proposal(history_data[ResourceType.CPU].data) return ResourceRecommendation(request=cpu_usage, limit=None) @@ -58,8 +65,11 @@ class SimpleStrategy(BaseStrategy[SimpleStrategySettings]): def __calculate_memory_proposal( self, history_data: HistoryData, object_data: K8sObjectData ) -> ResourceRecommendation: + if len(history_data[ResourceType.Memory].data) == 0: + return ResourceRecommendation.undefined(info="No data") + if object_data.hpa is not None and object_data.hpa.target_memory_utilization_percentage is not None: - return ResourceRecommendation.undefined() + return ResourceRecommendation.undefined(info="HPA detected") memory_usage = self.settings.calculate_memory_proposal(history_data[ResourceType.Memory].data) return ResourceRecommendation(request=memory_usage, limit=memory_usage) |
