Skip to content

Commit fafb72e

Browse files
committed
updates invitations logs
1 parent 3d868b7 commit fafb72e

File tree

3 files changed

+42
-26
lines changed

3 files changed

+42
-26
lines changed

services/web/server/src/simcore_service_webserver/invitations/_core.py

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@
22
from contextlib import contextmanager
33
from typing import Final
44

5-
from aiohttp import ClientError, ClientResponseError, web
5+
from aiohttp import ClientResponseError, web
66
from models_library.api_schemas_invitations.invitations import (
77
ApiInvitationContent,
88
ApiInvitationContentAndLink,
99
ApiInvitationInputs,
1010
)
1111
from models_library.emails import LowerCaseEmailStr
12-
from models_library.error_codes import create_error_code
1312
from pydantic import AnyHttpUrl, ValidationError, parse_obj_as
1413
from servicelib.aiohttp import status
1514

@@ -35,31 +34,30 @@ def _handle_exceptions_as_invitations_errors():
3534
except ClientResponseError as err:
3635
# check possible errors
3736
if err.status == status.HTTP_422_UNPROCESSABLE_ENTITY:
38-
error_code = create_error_code(err)
39-
_logger.exception(
40-
"Invitation request unexpectedly failed [%s]",
41-
f"{error_code}",
42-
extra={"error_code": error_code},
43-
)
4437
raise InvalidInvitationError(
45-
reason=f"Unexpected error [{error_code}]"
38+
invitations_api_response={
39+
"err": err,
40+
"status": err.status,
41+
"message": err.message,
42+
"url": err.request_info.real_url,
43+
},
4644
) from err
4745

4846
assert err.status >= status.HTTP_400_BAD_REQUEST # nosec
49-
# any other error status code
50-
raise InvitationsServiceUnavailableError from err
5147

52-
except (ValidationError, ClientError) as err:
53-
_logger.debug("Invitations error %s", f"{err}")
54-
raise InvitationsServiceUnavailableError from err
48+
# any other error status code
49+
raise InvitationsServiceUnavailableError(
50+
client_response_error=err,
51+
) from err
5552

5653
except InvitationsError:
5754
# bypass: prevents that the Exceptions handler catches this exception
5855
raise
5956

6057
except Exception as err:
61-
_logger.exception("Unexpected error in invitations plugin")
62-
raise InvitationsServiceUnavailableError from err
58+
raise InvitationsServiceUnavailableError(
59+
unexpected_error=err,
60+
) from err
6361

6462

6563
#

services/web/server/src/simcore_service_webserver/invitations/errors.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,8 @@ class InvitationsError(WebServerBaseError, ValueError):
1414

1515

1616
class InvalidInvitationError(InvitationsError):
17-
msg_template = "Invalid invitation. {reason}"
17+
msg_template = "Invalid invitation"
1818

1919

2020
class InvitationsServiceUnavailableError(InvitationsError):
21-
msg_template = (
22-
"Unable to process your invitation since the invitations service is currently unavailable. "
23-
"Please try again later."
24-
)
21+
msg_template = "Cannot process invitations"

services/web/server/src/simcore_service_webserver/login/_registration.py

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from aiohttp import web
1313
from models_library.basic_types import IdInt
1414
from models_library.emails import LowerCaseEmailStr
15+
from models_library.error_codes import create_error_code
1516
from models_library.products import ProductName
1617
from pydantic import (
1718
BaseModel,
@@ -22,6 +23,7 @@
2223
parse_obj_as,
2324
validator,
2425
)
26+
from servicelib.logging_errors import create_troubleshotting_log_kwargs
2527
from servicelib.mimetype_constants import MIMETYPE_APPLICATION_JSON
2628
from simcore_postgres_database.models.confirmations import ConfirmationAction
2729
from simcore_postgres_database.models.users import UserStatus
@@ -211,17 +213,36 @@ def _invitations_request_context(invitation_code: str) -> Iterator[URL]:
211213
yield url
212214

213215
except (ValidationError, InvalidInvitationError) as err:
214-
msg = f"{err}"
215-
if isinstance(err, ValidationError):
216-
msg = f"{InvalidInvitationError(reason='')}"
216+
error_code = create_error_code(err)
217+
front_end_msg = (
218+
f"Invalid invitation. {MSG_INVITATIONS_CONTACT_SUFFIX} [{error_code}]"
219+
)
220+
221+
_logger.exception(
222+
**create_troubleshotting_log_kwargs(
223+
front_end_msg,
224+
exception=err,
225+
tip="Something went wrong with the invitation",
226+
)
227+
)
217228
raise web.HTTPForbidden(
218-
reason=f"{msg}. {MSG_INVITATIONS_CONTACT_SUFFIX}",
229+
reason=front_end_msg,
219230
content_type=MIMETYPE_APPLICATION_JSON,
220231
) from err
221232

222233
except InvitationsServiceUnavailableError as err:
234+
error_code = create_error_code(err)
235+
front_end_msg = f"Unable to process your invitation since the invitations service is currently unavailable [{error_code}]"
236+
237+
_logger.exception(
238+
**create_troubleshotting_log_kwargs(
239+
front_end_msg,
240+
exception=err,
241+
tip="Something went wrong communicating the `invitations` service",
242+
)
243+
)
223244
raise web.HTTPServiceUnavailable(
224-
reason=f"{err}",
245+
reason=front_end_msg,
225246
content_type=MIMETYPE_APPLICATION_JSON,
226247
) from err
227248

0 commit comments

Comments
 (0)