"""Engine FaultTolerance HTTP client: poll the engine's FT status endpoint.
Single source of truth for talking to the vLLM FT API on the engine's
business port; protocol constants live in ``motor.common.constants``.
"""
from motor.common.constants import ENGINE_FT_TIMEOUT, FT_STATUS_PATH
from motor.common.http.http_client import SafeHTTPSClient
from motor.common.logger import get_logger
from motor.common.resources.endpoint import Endpoint
from motor.common.utils.net import format_address
logger = get_logger(__name__)
def query_engine_ft_status(ep: Endpoint, timeout: float = ENGINE_FT_TIMEOUT) -> dict:
"""GET one engine's FT status payload; raises ValueError on a non-dict body."""
address = format_address(ep.ip, ep.business_port)
with SafeHTTPSClient(address=address, tls_config=None, timeout=timeout) as client:
payload = client.get(FT_STATUS_PATH)
if not isinstance(payload, dict):
raise ValueError("unexpected FT status payload type for engine %d: %s" % (ep.id, type(payload).__name__))
return payload