summaryrefslogtreecommitdiff
path: root/robusta_krr/strategies
diff options
context:
space:
mode:
authorLeaveMyYard <33721692+LeaveMyYard@users.noreply.github.com>2023-06-28 11:46:08 +0300
committerLeaveMyYard <33721692+LeaveMyYard@users.noreply.github.com>2023-06-28 11:46:08 +0300
commita7524ed069837524d520b79f5cdc955d694fe3c9 (patch)
tree9eac86afb2c2394d4764f104ed10a2c9096638a8 /robusta_krr/strategies
parentcac3bbd68bcbf61efb65d19412bcc947a031b313 (diff)
Add explanation when HPA prevents the recommendation
Diffstat (limited to 'robusta_krr/strategies')
-rw-r--r--robusta_krr/strategies/simple.py14
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)