Handle exceptions better
This commit is contained in:
@ -17,7 +17,11 @@ from sshecret.backend import (
|
||||
Operation,
|
||||
SubSystem,
|
||||
)
|
||||
from sshecret.backend.exceptions import BackendError, BackendValidationError
|
||||
from sshecret.backend.exceptions import (
|
||||
BackendError,
|
||||
BackendValidationError,
|
||||
HttpErrorItem,
|
||||
)
|
||||
from sshecret.backend.identifiers import KeySpec
|
||||
from sshecret.backend.models import (
|
||||
ClientQueryResult,
|
||||
@ -30,6 +34,7 @@ from sshecret.crypto import encrypt_string, load_public_key
|
||||
|
||||
from .secret_manager import (
|
||||
AsyncSecretContext,
|
||||
InvalidSecretNameError,
|
||||
SecretUpdateParams,
|
||||
password_manager_context,
|
||||
)
|
||||
@ -603,7 +608,7 @@ class AdminBackend:
|
||||
client = await self.get_client(client_id)
|
||||
if not client:
|
||||
if update:
|
||||
raise ClientNotFoundError()
|
||||
raise ClientNotFoundError(f"Client {client_name} not found")
|
||||
LOG.warning("Requested client %s not found!", client_name)
|
||||
continue
|
||||
public_key = load_public_key(client.public_key.encode())
|
||||
@ -628,10 +633,17 @@ class AdminBackend:
|
||||
group=group,
|
||||
distinguisher=distinguisher,
|
||||
)
|
||||
except ClientManagementError:
|
||||
raise
|
||||
except InvalidSecretNameError as e:
|
||||
field_error = self.create_field_error("name", str(e))
|
||||
error = self.create_validation_error(field_error)
|
||||
raise error from e
|
||||
|
||||
except ClientNotFoundError as e:
|
||||
field_error = self.create_field_error("clients", str(e))
|
||||
error = self.create_validation_error(field_error)
|
||||
raise error from e
|
||||
except Exception as e:
|
||||
raise BackendUnavailableError() from e
|
||||
raise ClientManagementError(e)
|
||||
|
||||
async def update_secret(self, name: str, value: str) -> None:
|
||||
"""Update secrets."""
|
||||
@ -748,3 +760,16 @@ class AdminBackend:
|
||||
async def get_audit_log_count(self) -> int:
|
||||
"""Get audit log count."""
|
||||
return await self.audit.count()
|
||||
|
||||
def create_field_error(self, field: str, error_message: str) -> HttpErrorItem:
|
||||
"""Create a field error."""
|
||||
field_error: HttpErrorItem = {
|
||||
"loc": ["body", field],
|
||||
"msg": error_message,
|
||||
"type": "None",
|
||||
}
|
||||
return field_error
|
||||
|
||||
def create_validation_error(self, *errors: HttpErrorItem) -> BackendValidationError:
|
||||
"""Create a custom backend validation error."""
|
||||
return BackendValidationError(errors=list(errors))
|
||||
|
||||
Reference in New Issue
Block a user