summaryrefslogtreecommitdiff
path: root/robusta_krr
diff options
context:
space:
mode:
authorNatan Yellin <aantn@users.noreply.github.com>2024-07-01 10:33:30 +0300
committerGitHub <noreply@github.com>2024-07-01 10:33:30 +0300
commit66389e63586e5a306c75c4d66c8078354e224390 (patch)
treec2b49edf295eeaee4c207f00513148bc5d8642dc /robusta_krr
parentf71abd1e559a2949357deed3667fbfb3957aa93c (diff)
Prevent single errors from failing scan (#307)prometheus-workload-loader
Fixes #301
Diffstat (limited to 'robusta_krr')
-rw-r--r--robusta_krr/core/runner.py33
1 files changed, 19 insertions, 14 deletions
diff --git a/robusta_krr/core/runner.py b/robusta_krr/core/runner.py
index 787982f..68cbeb0 100644
--- a/robusta_krr/core/runner.py
+++ b/robusta_krr/core/runner.py
@@ -233,22 +233,27 @@ class Runner:
return True
async def _gather_object_allocations(self, k8s_object: K8sWorkload) -> Optional[ResourceScan]:
- recommendation = await self._calculate_object_recommendations(k8s_object)
+ try:
+ recommendation = await self._calculate_object_recommendations(k8s_object)
- self.__progressbar.progress()
+ self.__progressbar.progress()
- if recommendation is None:
- return None
-
- return ResourceScan.calculate(
- k8s_object,
- ResourceAllocations(
- requests={resource: recommendation[resource].request for resource in ResourceType},
- limits={resource: recommendation[resource].limit for resource in ResourceType},
- info={resource: recommendation[resource].info for resource in ResourceType},
- ),
- )
+ if recommendation is None:
+ return None
+ return ResourceScan.calculate(
+ k8s_object,
+ ResourceAllocations(
+ requests={resource: recommendation[resource].request for resource in ResourceType},
+ limits={resource: recommendation[resource].limit for resource in ResourceType},
+ info={resource: recommendation[resource].info for resource in ResourceType},
+ ),
+ )
+ except Exception as e:
+ logger.error(f"Failed to gather allocations for {k8s_object}")
+ logger.exception(e)
+ return None
+
async def _collect_result(self) -> Result:
clusters = await self.connector.list_clusters()
if clusters is None:
@@ -314,7 +319,7 @@ class Runner:
raise CriticalRunnerException("No successful scans were made. Check the logs for more information.")
return Result(
- scans=scans,
+ scans=successful_scans,
description=self.strategy.description,
strategy=StrategyData(
name=str(self.strategy).lower(),