Skip to content

Commit 5f3f4f9

Browse files
author
Dylan Huang
committed
Refactor Elasticsearch configuration handling
- Updated Elasticsearch integration to use ElasticSearchConfig from the types module, improving consistency across the codebase. - Removed the local ElasticsearchConfig dataclass in favor of the new model, streamlining configuration management. - Adjusted related classes and tests to utilize the updated configuration structure, enhancing maintainability and readability.
1 parent ccd22c1 commit 5f3f4f9

File tree

6 files changed

+22
-26
lines changed

6 files changed

+22
-26
lines changed

eval_protocol/logging/elasticsearch_client.py

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,13 @@
1010
import requests
1111
from typing import Any, Dict, List, Optional, Union
1212
from urllib.parse import urlparse
13-
from dataclasses import dataclass
14-
15-
16-
@dataclass
17-
class ElasticsearchConfig:
18-
"""Configuration for Elasticsearch client."""
19-
20-
url: str
21-
api_key: str
22-
index_name: str
23-
verify_ssl: bool = True
24-
25-
def __post_init__(self):
26-
"""Parse URL to determine SSL verification setting."""
27-
parsed_url = urlparse(self.url)
28-
self.verify_ssl = parsed_url.scheme == "https"
13+
from eval_protocol.types.remote_rollout_processor import ElasticSearchConfig
2914

3015

3116
class ElasticsearchClient:
3217
"""Centralized client for all Elasticsearch operations."""
3318

34-
def __init__(self, config: ElasticsearchConfig):
19+
def __init__(self, config: ElasticSearchConfig):
3520
"""Initialize the Elasticsearch client.
3621
3722
Args:

eval_protocol/logging/elasticsearch_direct_http_handler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
from datetime import datetime
99

1010
from eval_protocol.types.remote_rollout_processor import ElasticSearchConfig
11-
from .elasticsearch_client import ElasticsearchClient, ElasticsearchConfig as ESConfig
11+
from .elasticsearch_client import ElasticsearchClient
1212

1313

1414
class ElasticsearchDirectHttpHandler(logging.Handler):
1515
def __init__(self, elasticsearch_config: ElasticSearchConfig) -> None:
1616
super().__init__()
17-
self.config = ESConfig(
17+
self.config = ElasticSearchConfig(
1818
url=elasticsearch_config.url,
1919
api_key=elasticsearch_config.api_key,
2020
index_name=elasticsearch_config.index_name,

eval_protocol/logging/elasticsearch_index_manager.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from typing import Dict, Any, Optional
2-
from .elasticsearch_client import ElasticsearchClient, ElasticsearchConfig
2+
from .elasticsearch_client import ElasticsearchClient
3+
from eval_protocol.types.remote_rollout_processor import ElasticSearchConfig
34

45

56
class ElasticsearchIndexManager:
@@ -13,7 +14,7 @@ def __init__(self, base_url: str, index_name: str, api_key: str) -> None:
1314
index_name: Name of the index to manage
1415
api_key: API key for authentication
1516
"""
16-
self.config = ElasticsearchConfig(url=base_url, api_key=api_key, index_name=index_name)
17+
self.config = ElasticSearchConfig(url=base_url, api_key=api_key, index_name=index_name)
1718
self.client = ElasticsearchClient(self.config)
1819
self._mapping_created: bool = False
1920

eval_protocol/pytest/remote_rollout_processor.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import requests
66

7+
from eval_protocol.logging.elasticsearch_client import ElasticsearchClient
78
from eval_protocol.models import EvaluationRow, Status
89
from eval_protocol.data_loader.dynamic_data_loader import DynamicDataLoader
910
from eval_protocol.types.remote_rollout_processor import ElasticSearchConfig, InitRequest, RolloutMetadata
@@ -182,6 +183,10 @@ def _get_status() -> Dict[str, Any]:
182183
r.raise_for_status()
183184
return r.json()
184185

186+
elasticsearch_client = (
187+
ElasticsearchClient(self._elastic_search_config) if self._elastic_search_config else None
188+
)
189+
185190
while time.time() < deadline:
186191
try:
187192
status = await asyncio.to_thread(_get_status)

eval_protocol/types/remote_rollout_processor.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from typing import Any, Dict, List, Optional
66
from pydantic import BaseModel, Field
7+
from urllib.parse import urlparse
78
from eval_protocol.models import Message, Status
89

910

@@ -16,6 +17,12 @@ class ElasticSearchConfig(BaseModel):
1617
api_key: str
1718
index_name: str
1819

20+
@property
21+
def verify_ssl(self) -> bool:
22+
"""Infer verify_ssl from URL scheme."""
23+
parsed_url = urlparse(self.url)
24+
return parsed_url.scheme == "https"
25+
1926

2027
class RolloutMetadata(BaseModel):
2128
"""Metadata for rollout execution."""

tests/logging/test_elasticsearch_direct_http_handler.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import pytest
55

66
from eval_protocol.logging.elasticsearch_direct_http_handler import ElasticsearchDirectHttpHandler
7-
from eval_protocol.logging.elasticsearch_client import ElasticsearchClient, ElasticsearchConfig as ESConfig
7+
from eval_protocol.logging.elasticsearch_client import ElasticsearchClient
88
from eval_protocol.pytest.elasticsearch_setup import ElasticsearchSetup
99
from eval_protocol.types.remote_rollout_processor import ElasticSearchConfig
1010

@@ -54,10 +54,8 @@ def elasticsearch_handler(elasticsearch_config: ElasticSearchConfig, rollout_id:
5454
@pytest.fixture
5555
def elasticsearch_client(elasticsearch_config: ElasticSearchConfig):
5656
"""Create an Elasticsearch client for testing."""
57-
config = ESConfig(
58-
url=elasticsearch_config.url, api_key=elasticsearch_config.api_key, index_name=elasticsearch_config.index_name
59-
)
60-
return ElasticsearchClient(config)
57+
# Create a new config instance for the client
58+
return ElasticsearchClient(elasticsearch_config)
6159

6260

6361
@pytest.fixture

0 commit comments

Comments
 (0)