From e637666fe4bba8467fbb964f3b82fa2ec5360b20 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 11 Mar 2026 11:10:15 +0000 Subject: [PATCH] Use dynamic config class selection in Elasticsearch and fix Grafana dashboard config_classes Apply the same fix from d5fd607 (Grafana Tempo) to other toolsets: - ElasticsearchBaseToolset: use self.config_classes[0] instead of hardcoding ElasticsearchConfig in prerequisites_callable, so subclasses with custom config classes work correctly - GrafanaToolset: change config_class (singular) to config_classes (plural) to match the convention used by BaseGrafanaToolset, ensuring GrafanaDashboardConfig is actually used during initialization https://claude.ai/code/session_01BDFrttpmMrSWDNcnJGwBRi Signed-off-by: Claude --- holmes/plugins/toolsets/elasticsearch/elasticsearch.py | 3 ++- holmes/plugins/toolsets/grafana/toolset_grafana.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/holmes/plugins/toolsets/elasticsearch/elasticsearch.py b/holmes/plugins/toolsets/elasticsearch/elasticsearch.py index f1f2c00cc5..8e4b93fab2 100644 --- a/holmes/plugins/toolsets/elasticsearch/elasticsearch.py +++ b/holmes/plugins/toolsets/elasticsearch/elasticsearch.py @@ -125,7 +125,8 @@ def __init__(self, name: str, description: str, tools: list, **kwargs): def prerequisites_callable(self, config: Dict[str, Any]) -> Tuple[bool, str]: """Check if the Elasticsearch configuration is valid and the cluster is reachable.""" try: - self.config = ElasticsearchConfig(**config) + config_class = self.config_classes[0] if self.config_classes else ElasticsearchConfig + self.config = config_class(**config) return self._perform_health_check() except Exception as e: return False, f"Failed to validate Elasticsearch configuration: {str(e)}" diff --git a/holmes/plugins/toolsets/grafana/toolset_grafana.py b/holmes/plugins/toolsets/grafana/toolset_grafana.py index ab06f822d4..677c91221a 100644 --- a/holmes/plugins/toolsets/grafana/toolset_grafana.py +++ b/holmes/plugins/toolsets/grafana/toolset_grafana.py @@ -48,7 +48,7 @@ def _build_grafana_dashboard_url( class GrafanaToolset(BaseGrafanaToolset): - config_class: ClassVar[Type[GrafanaDashboardConfig]] = GrafanaDashboardConfig + config_classes: ClassVar[list[Type[GrafanaDashboardConfig]]] = [GrafanaDashboardConfig] def __init__(self): super().__init__(