diff --git a/frontend/api_client.py b/frontend/api_client.py index fdc9070..3587da3 100644 --- a/frontend/api_client.py +++ b/frontend/api_client.py @@ -15,6 +15,7 @@ from typing import Optional BACKEND_URL = os.getenv("BACKEND_URL", "http://10.2.0.2:9000") TIMEOUT = 30 +ANALYZE_TIMEOUT = 120 # guestfish needs time to probe large disk images class ApiError(Exception): @@ -48,7 +49,7 @@ class ApiClient: "vmid": vmid, "source_filename": filename, "source_type": source_type, - }) + }, timeout=ANALYZE_TIMEOUT) def create_job(self, payload: dict) -> dict: """POST /api/v1/jobs — submit conversion job.""" @@ -66,16 +67,16 @@ class ApiClient: # Internal # ------------------------------------------------------------------ - def _get(self, path: str) -> dict: - return self._request("GET", path) + def _get(self, path: str, timeout: int = TIMEOUT) -> dict: + return self._request("GET", path, timeout=timeout) - def _post(self, path: str, data: dict) -> dict: - return self._request("POST", path, data) + def _post(self, path: str, data: dict, timeout: int = TIMEOUT) -> dict: + return self._request("POST", path, data, timeout=timeout) - def _request(self, method: str, path: str, data: Optional[dict] = None) -> dict: + def _request(self, method: str, path: str, data: Optional[dict] = None, timeout: int = TIMEOUT) -> dict: url = urljoin(self.base_url + "/", path.lstrip("/")) try: - resp = self._s.request(method, url, json=data, timeout=TIMEOUT) + resp = self._s.request(method, url, json=data, timeout=timeout) if resp.ok: return resp.json() detail = resp.text