diff --git a/bugbug/tools/core/platforms/phabricator.py b/bugbug/tools/core/platforms/phabricator.py index c537280f0e..89f72b0ebf 100644 --- a/bugbug/tools/core/platforms/phabricator.py +++ b/bugbug/tools/core/platforms/phabricator.py @@ -34,24 +34,32 @@ REDACTED_TEST_PLAN = "[Unvalidated test plan redacted for security]" +@cache +def _base_url() -> str: + base_url = os.getenv("PHABRICATOR_URL", "https://phabricator.services.mozilla.com") + assert not base_url.endswith("/"), "PHABRICATOR_URL should not end with a slash" + return base_url + + @cache def get_phabricator_client( api_key: Optional[str] = None, - url: Optional[str] = None, + base_url: Optional[str] = None, user_agent: Optional[str] = None, ): """Get a cached Phabricator client instance.""" from libmozdata.config import set_default_value from libmozdata.phabricator import PhabricatorAPI + base_url = base_url or _base_url() + api_url = base_url + "/api/" api_key = api_key or os.getenv("PHABRICATOR_API_KEY") - url = url or os.getenv("PHABRICATOR_API_URL") user_agent = user_agent or get_user_agent() # This is a workaround since PhabricatorAPI does not accept user agent directly set_default_value("User-Agent", "name", user_agent) - return PhabricatorAPI(api_key, url) + return PhabricatorAPI(api_key, api_url) def _get_users_info_batch_impl(user_phids: set[str]) -> dict[str, dict]: @@ -260,21 +268,9 @@ def __init__( self._revision_phid = revision_phid self._revision_id = revision_id - @classmethod - @cache - def _base_url(cls) -> str: - api_url = os.environ.get( - "PHABRICATOR_API_URL", "https://phabricator.services.mozilla.com/api/" - ) - - if not api_url.endswith("/api/"): - raise ValueError("PHABRICATOR_API_URL must end with /api/") - - return api_url.rstrip("/api/") - @property def patch_url(self) -> str: - return f"{self._base_url()}/D{self.revision_id}" + return f"{_base_url()}/D{self.revision_id}" @property def diff_id(self) -> int: @@ -315,7 +311,7 @@ async def _get_file_from_patch(self, file_path: str, is_before_patch: bool) -> s view = "old" if is_before_patch else "new" client = get_http_client() r = await client.get( - f"{self._base_url()}/differential/changeset/?view={view}&ref={changeset_id}", + f"{_base_url()}/differential/changeset/?view={view}&ref={changeset_id}", ) r.raise_for_status() diff --git a/bugbug/vectordb.py b/bugbug/vectordb.py index 300aa5c4db..fa499166b5 100644 --- a/bugbug/vectordb.py +++ b/bugbug/vectordb.py @@ -3,6 +3,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this file, # You can obtain one at http://mozilla.org/MPL/2.0/. +import os from abc import ABC, abstractmethod from dataclasses import dataclass from typing import Iterable, Optional @@ -12,8 +13,6 @@ from qdrant_client.http.exceptions import UnexpectedResponse from qdrant_client.models import Distance, PointStruct, VectorParams -from bugbug.utils import get_secret - @dataclass class VectorPoint: @@ -102,7 +101,7 @@ def __init__(self, collection_name: str, *args, **kwargs): super().__init__(*args, **kwargs) self.collection_name = collection_name self.client = QdrantClient( - location=get_secret("QDRANT_LOCATION"), api_key=get_secret("QDRANT_API_KEY") + location=os.getenv("QDRANT_LOCATION"), api_key=os.getenv("QDRANT_API_KEY") ) def setup(self):