mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 07:17:17 +00:00
suppress status errors also if option is set
This commit is contained in:
parent
467d109cfc
commit
75919637e8
@ -40,6 +40,7 @@ class WebClient(Client, LazyLogging):
|
|||||||
|
|
||||||
Attributes:
|
Attributes:
|
||||||
address(str): address of the web service
|
address(str): address of the web service
|
||||||
|
suppress_errors(bool): suppress logging errors (e.g. if no web server available)
|
||||||
user(User | None): web service user descriptor
|
user(User | None): web service user descriptor
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -54,6 +55,7 @@ class WebClient(Client, LazyLogging):
|
|||||||
self.user = User.from_option(
|
self.user = User.from_option(
|
||||||
configuration.get("web", "username", fallback=None),
|
configuration.get("web", "username", fallback=None),
|
||||||
configuration.get("web", "password", fallback=None))
|
configuration.get("web", "password", fallback=None))
|
||||||
|
self.suppress_errors = configuration.getboolean("settings", "suppress_http_log_errors", fallback=False)
|
||||||
|
|
||||||
self.__session = self._create_session(use_unix_socket=use_unix_socket)
|
self.__session = self._create_session(use_unix_socket=use_unix_socket)
|
||||||
|
|
||||||
@ -106,9 +108,13 @@ class WebClient(Client, LazyLogging):
|
|||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
yield
|
yield
|
||||||
except requests.HTTPError as e:
|
except requests.RequestException as e:
|
||||||
|
if self.suppress_errors:
|
||||||
|
return
|
||||||
self.logger.exception("could not perform http request: %s", exception_response_text(e))
|
self.logger.exception("could not perform http request: %s", exception_response_text(e))
|
||||||
except Exception:
|
except Exception:
|
||||||
|
if self.suppress_errors:
|
||||||
|
return
|
||||||
self.logger.exception("could not perform http request")
|
self.logger.exception("could not perform http request")
|
||||||
|
|
||||||
def _create_session(self, *, use_unix_socket: bool) -> requests.Session:
|
def _create_session(self, *, use_unix_socket: bool) -> requests.Session:
|
||||||
|
@ -175,12 +175,12 @@ def enum_values(enum: type[Enum]) -> list[str]:
|
|||||||
return [str(key.value) for key in enum] # explicit str conversion for typing
|
return [str(key.value) for key in enum] # explicit str conversion for typing
|
||||||
|
|
||||||
|
|
||||||
def exception_response_text(exception: requests.exceptions.HTTPError) -> str:
|
def exception_response_text(exception: requests.exceptions.RequestException) -> str:
|
||||||
"""
|
"""
|
||||||
safe response exception text generation
|
safe response exception text generation
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
exception(requests.exceptions.HTTPError): exception raised
|
exception(requests.exceptions.RequestException): exception raised
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str: text of the response if it is not None and empty string otherwise
|
str: text of the response if it is not None and empty string otherwise
|
||||||
|
@ -157,6 +157,30 @@ def test_add_failed_http_error(web_client: WebClient, package_ahriman: Package,
|
|||||||
web_client.add(package_ahriman, BuildStatusEnum.Unknown)
|
web_client.add(package_ahriman, BuildStatusEnum.Unknown)
|
||||||
|
|
||||||
|
|
||||||
|
def test_add_failed_suppress(web_client: WebClient, package_ahriman: Package, mocker: MockerFixture) -> None:
|
||||||
|
"""
|
||||||
|
must suppress any exception happened during addition and don't log
|
||||||
|
"""
|
||||||
|
web_client.suppress_errors = True
|
||||||
|
mocker.patch("requests.Session.post", side_effect=Exception())
|
||||||
|
logging_mock = mocker.patch("logging.exception")
|
||||||
|
|
||||||
|
web_client.add(package_ahriman, BuildStatusEnum.Unknown)
|
||||||
|
logging_mock.assert_not_called()
|
||||||
|
|
||||||
|
|
||||||
|
def test_add_failed_http_error_suppress(web_client: WebClient, package_ahriman: Package, mocker: MockerFixture) -> None:
|
||||||
|
"""
|
||||||
|
must suppress HTTP exception happened during addition and don't log
|
||||||
|
"""
|
||||||
|
web_client.suppress_errors = True
|
||||||
|
mocker.patch("requests.Session.post", side_effect=requests.exceptions.HTTPError())
|
||||||
|
logging_mock = mocker.patch("logging.exception")
|
||||||
|
|
||||||
|
web_client.add(package_ahriman, BuildStatusEnum.Unknown)
|
||||||
|
logging_mock.assert_not_called()
|
||||||
|
|
||||||
|
|
||||||
def test_get_all(web_client: WebClient, package_ahriman: Package, mocker: MockerFixture) -> None:
|
def test_get_all(web_client: WebClient, package_ahriman: Package, mocker: MockerFixture) -> None:
|
||||||
"""
|
"""
|
||||||
must return all packages status
|
must return all packages status
|
||||||
|
Loading…
Reference in New Issue
Block a user