diff options
| -rw-r--r-- | robusta_krr/core/abstract/formatters.py | 2 | ||||
| -rw-r--r-- | robusta_krr/core/abstract/strategies.py | 2 | ||||
| -rw-r--r-- | robusta_krr/core/integrations/kubernetes.py (renamed from robusta_krr/core/models/kubernetes.py) | 19 | ||||
| -rw-r--r-- | robusta_krr/core/integrations/prometheus.py (renamed from robusta_krr/core/prometheus.py) | 2 | ||||
| -rw-r--r-- | robusta_krr/core/models/result.py (renamed from robusta_krr/core/result.py) | 0 | ||||
| -rw-r--r-- | robusta_krr/core/runner.py | 6 | ||||
| -rw-r--r-- | robusta_krr/formatters/json.py | 2 | ||||
| -rw-r--r-- | robusta_krr/formatters/table.py | 2 | ||||
| -rw-r--r-- | robusta_krr/formatters/yaml.py | 2 |
9 files changed, 20 insertions, 17 deletions
diff --git a/robusta_krr/core/abstract/formatters.py b/robusta_krr/core/abstract/formatters.py index 8487f7f..8316923 100644 --- a/robusta_krr/core/abstract/formatters.py +++ b/robusta_krr/core/abstract/formatters.py @@ -5,7 +5,7 @@ import os from typing import TYPE_CHECKING, Any if TYPE_CHECKING: - from robusta_krr.core.result import Result + from robusta_krr.core.models.result import Result DEFAULT_FORMATTERS_PATH = os.path.join(os.path.dirname(__file__), "formatters") diff --git a/robusta_krr/core/abstract/strategies.py b/robusta_krr/core/abstract/strategies.py index ebc23b4..51edf31 100644 --- a/robusta_krr/core/abstract/strategies.py +++ b/robusta_krr/core/abstract/strategies.py @@ -6,7 +6,7 @@ from typing import Generic, TypeVar import pydantic as pd -from robusta_krr.core.result import K8sObjectData, ResourceType +from robusta_krr.core.models.result import K8sObjectData, ResourceType class ResourceRecommendation(pd.BaseModel): diff --git a/robusta_krr/core/models/kubernetes.py b/robusta_krr/core/integrations/kubernetes.py index 2c2cbc2..10f85fd 100644 --- a/robusta_krr/core/models/kubernetes.py +++ b/robusta_krr/core/integrations/kubernetes.py @@ -6,6 +6,8 @@ from kubernetes.client.models import ( V1PodList, V1DeploymentList, V1StatefulSetList, + V1JobList, + V1DaemonSetList, V1Deployment, V1Container, V1DaemonSet, @@ -13,7 +15,7 @@ from kubernetes.client.models import ( ) from robusta_krr.core.models.objects import K8sObjectData -from robusta_krr.core.result import ResourceAllocations +from robusta_krr.core.models.result import ResourceAllocations from robusta_krr.utils.configurable import Configurable @@ -22,7 +24,8 @@ class ClusterLoader(Configurable): super().__init__(*args, **kwargs) self.cluster = cluster - self.v1 = client.AppsV1Api(api_client=config.new_client_from_config(context=cluster)) + self.apps = client.AppsV1Api(api_client=config.new_client_from_config(context=cluster)) + self.batch = client.BatchV1Api(api_client=config.new_client_from_config(context=cluster)) async def list_scannable_objects(self) -> list[K8sObjectData]: """List all scannable objects. @@ -38,7 +41,7 @@ class ClusterLoader(Configurable): self._list_deployments(), self._list_all_statefulsets(), self._list_all_daemon_set(), - # self._list_all_jobs(), # TODO: Add support for Jobs + self._list_all_jobs(), ) except Exception as e: self.error(f"Error trying to list pods in cluster {self.cluster}: {e}") @@ -57,21 +60,21 @@ class ClusterLoader(Configurable): ) async def _list_deployments(self) -> list[K8sObjectData]: - ret: V1DeploymentList = await asyncio.to_thread(self.v1.list_deployment_for_all_namespaces, watch=False) + ret: V1DeploymentList = await asyncio.to_thread(self.apps.list_deployment_for_all_namespaces, watch=False) return [ self.__build_obj(item, container) for item in ret.items for container in item.spec.template.spec.containers ] async def _list_all_statefulsets(self) -> list[K8sObjectData]: - ret: V1StatefulSetList = await asyncio.to_thread(self.v1.list_stateful_set_for_all_namespaces, watch=False) + ret: V1StatefulSetList = await asyncio.to_thread(self.apps.list_stateful_set_for_all_namespaces, watch=False) return [ self.__build_obj(item, container) for item in ret.items for container in item.spec.template.spec.containers ] async def _list_all_daemon_set(self) -> list[K8sObjectData]: - ret: V1StatefulSetList = await asyncio.to_thread(self.v1.list_daemon_set_for_all_namespaces, watch=False) + ret: V1DaemonSetList = await asyncio.to_thread(self.apps.list_daemon_set_for_all_namespaces, watch=False) return [ self.__build_obj(item, container) for item in ret.items for container in item.spec.template.spec.containers @@ -80,7 +83,7 @@ class ClusterLoader(Configurable): async def _list_all_jobs(self) -> list[K8sObjectData]: """Not working yet.""" - ret: V1StatefulSetList = await asyncio.to_thread(self.v1.list_, watch=False) + ret: V1JobList = await asyncio.to_thread(self.batch.list_job_for_all_namespaces, watch=False) return [ self.__build_obj(item, container) for item in ret.items for container in item.spec.template.spec.containers @@ -89,7 +92,7 @@ class ClusterLoader(Configurable): async def _list_pods(self) -> list[K8sObjectData]: """For future use, not supported yet.""" - ret: V1PodList = await asyncio.to_thread(self.v1.list_pod_for_all_namespaces, watch=False) + ret: V1PodList = await asyncio.to_thread(self.apps.list_pod_for_all_namespaces, watch=False) return [self.__build_obj(item, container) for item in ret.items for container in item.spec.containers] diff --git a/robusta_krr/core/prometheus.py b/robusta_krr/core/integrations/prometheus.py index d81aad4..64e2f08 100644 --- a/robusta_krr/core/prometheus.py +++ b/robusta_krr/core/integrations/prometheus.py @@ -3,7 +3,7 @@ import datetime import random from robusta_krr.core.models.objects import K8sObjectData -from robusta_krr.core.result import ResourceType +from robusta_krr.core.models.result import ResourceType from robusta_krr.core.abstract.strategies import HistoryData from robusta_krr.utils.configurable import Configurable diff --git a/robusta_krr/core/result.py b/robusta_krr/core/models/result.py index 89ba72b..89ba72b 100644 --- a/robusta_krr/core/result.py +++ b/robusta_krr/core/models/result.py diff --git a/robusta_krr/core/runner.py b/robusta_krr/core/runner.py index 1029750..eb70f16 100644 --- a/robusta_krr/core/runner.py +++ b/robusta_krr/core/runner.py @@ -2,10 +2,10 @@ import asyncio import itertools from robusta_krr.core.models.config import Config -from robusta_krr.core.models.kubernetes import KubernetesLoader +from robusta_krr.core.integrations.kubernetes import KubernetesLoader from robusta_krr.core.models.objects import K8sObjectData -from robusta_krr.core.prometheus import PrometheusLoader -from robusta_krr.core.result import ResourceAllocations, ResourceScan, ResourceType, Result +from robusta_krr.core.integrations.prometheus import PrometheusLoader +from robusta_krr.core.models.result import ResourceAllocations, ResourceScan, ResourceType, Result from robusta_krr.core.abstract.strategies import ResourceRecommendation from robusta_krr.utils.configurable import Configurable from robusta_krr.utils.version import get_version diff --git a/robusta_krr/formatters/json.py b/robusta_krr/formatters/json.py index 650c292..2c3a51e 100644 --- a/robusta_krr/formatters/json.py +++ b/robusta_krr/formatters/json.py @@ -1,7 +1,7 @@ from __future__ import annotations from robusta_krr.core.abstract.formatters import BaseFormatter -from robusta_krr.core.result import Result +from robusta_krr.core.models.result import Result class JSONFormatter(BaseFormatter): diff --git a/robusta_krr/formatters/table.py b/robusta_krr/formatters/table.py index 1f1439b..2fcd16f 100644 --- a/robusta_krr/formatters/table.py +++ b/robusta_krr/formatters/table.py @@ -3,7 +3,7 @@ from __future__ import annotations import itertools from robusta_krr.core.abstract.formatters import BaseFormatter -from robusta_krr.core.result import Result, ResourceType +from robusta_krr.core.models.result import Result, ResourceType from robusta_krr.utils import resource_units from rich.table import Table diff --git a/robusta_krr/formatters/yaml.py b/robusta_krr/formatters/yaml.py index a493fa1..24be2d6 100644 --- a/robusta_krr/formatters/yaml.py +++ b/robusta_krr/formatters/yaml.py @@ -1,7 +1,7 @@ from __future__ import annotations from robusta_krr.core.abstract.formatters import BaseFormatter -from robusta_krr.core.result import Result +from robusta_krr.core.models.result import Result import yaml import json |
