Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix for multiline errors when writing to log files #1953

Merged
12 changes: 6 additions & 6 deletions data_safe_haven/administration/users/entra_users.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def add(self, new_users: Sequence[ResearchUser]) -> None:
f"Ensured user '[green]{user.preferred_username}[/]' exists in Entra ID"
)
except DataSafeHavenError as exc:
msg = f"Unable to add users to Entra ID.\n{exc}"
msg = "Unable to add users to Entra ID."
raise DataSafeHavenEntraIDError(msg) from exc

def list(self) -> Sequence[ResearchUser]:
Expand Down Expand Up @@ -99,7 +99,7 @@ def list(self) -> Sequence[ResearchUser]:
for user_details in user_list
]
except DataSafeHavenError as exc:
msg = f"Unable list Entra ID users.\n{exc}"
msg = "Unable to list Entra ID users."
raise DataSafeHavenEntraIDError(msg) from exc

def register(self, sre_name: str, usernames: Sequence[str]) -> None:
Expand All @@ -114,7 +114,7 @@ def register(self, sre_name: str, usernames: Sequence[str]) -> None:
for username in usernames:
self.graph_api.add_user_to_group(username, group_name)
except DataSafeHavenError as exc:
msg = f"Unable add users to group '{group_name}'.\n{exc}"
msg = f"Unable to add users to group '{group_name}'."
raise DataSafeHavenEntraIDError(msg) from exc

def remove(self, users: Sequence[ResearchUser]) -> None:
Expand All @@ -132,7 +132,7 @@ def remove(self, users: Sequence[ResearchUser]) -> None:
self.graph_api.remove_user(user.username)
self.logger.info(f"Removed '{user.preferred_username}'.")
except DataSafeHavenError as exc:
msg = f"Unable to remove users from Entra ID.\n{exc}"
msg = "Unable to remove users from Entra ID."
raise DataSafeHavenEntraIDError(msg) from exc

def set(self, users: Sequence[ResearchUser]) -> None:
Expand All @@ -148,7 +148,7 @@ def set(self, users: Sequence[ResearchUser]) -> None:
users_to_add = [user for user in users if user not in self.list()]
self.add(users_to_add)
except DataSafeHavenError as exc:
msg = f"Unable to set desired user list in Entra ID.\n{exc}"
msg = "Unable to set desired user list in Entra ID."
raise DataSafeHavenEntraIDError(msg) from exc

def unregister(self, sre_name: str, usernames: Sequence[str]) -> None:
Expand All @@ -163,5 +163,5 @@ def unregister(self, sre_name: str, usernames: Sequence[str]) -> None:
for username in usernames:
self.graph_api.remove_user_from_group(username, group_name)
except DataSafeHavenError as exc:
msg = f"Unable to remove users from group {group_name}.\n{exc}"
msg = f"Unable to remove users from group {group_name}."
raise DataSafeHavenEntraIDError(msg) from exc
12 changes: 6 additions & 6 deletions data_safe_haven/administration/users/user_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def add(self, users_csv_path: pathlib.Path) -> None:
# Add users to Entra ID
self.entra_users.add(users)
except Exception as exc:
msg = f"Could not add users from '{users_csv_path}'.\n{exc}"
msg = f"Could not add users from '{users_csv_path}'."
raise DataSafeHavenUserHandlingError(msg) from exc

def get_usernames(self, sre_name: str) -> dict[str, list[str]]:
Expand Down Expand Up @@ -126,7 +126,7 @@ def list(self, sre_name: str) -> None:

console.tabulate(user_headers, user_data)
except Exception as exc:
msg = f"Could not list users.\n{exc}"
msg = "Could not list users."
raise DataSafeHavenUserHandlingError(msg) from exc

def register(self, sre_name: str, user_names: Sequence[str]) -> None:
Expand All @@ -139,7 +139,7 @@ def register(self, sre_name: str, user_names: Sequence[str]) -> None:
# Add users to the SRE security group
self.entra_users.register(sre_name, user_names)
except Exception as exc:
msg = f"Could not register {len(user_names)} users with SRE '{sre_name}'.\n{exc}"
msg = f"Could not register {len(user_names)} users with SRE '{sre_name}'."
raise DataSafeHavenUserHandlingError(msg) from exc

def remove(self, user_names: Sequence[str]) -> None:
Expand All @@ -161,7 +161,7 @@ def remove(self, user_names: Sequence[str]) -> None:
)
self.entra_users.remove(entra_users_to_remove)
except Exception as exc:
msg = f"Could not remove users: {user_names}.\n{exc}"
msg = f"Could not remove users: {user_names}."
raise DataSafeHavenUserHandlingError(msg) from exc

def set(self, users_csv_path: str) -> None:
Expand Down Expand Up @@ -208,7 +208,7 @@ def set(self, users_csv_path: str) -> None:
# Commit changes
self.entra_users.set(entra_desired_users)
except Exception as exc:
msg = f"Could not set users from '{users_csv_path}'.\n{exc}"
msg = f"Could not set users from '{users_csv_path}'."
raise DataSafeHavenUserHandlingError(msg) from exc

def unregister(self, sre_name: str, user_names: Sequence[str]) -> None:
Expand All @@ -221,5 +221,5 @@ def unregister(self, sre_name: str, user_names: Sequence[str]) -> None:
# Remove users from the SRE security group
self.entra_users.unregister(sre_name, user_names)
except Exception as exc:
msg = f"Could not unregister {len(user_names)} users with SRE '{sre_name}'.\n{exc}"
msg = f"Could not unregister {len(user_names)} users with SRE '{sre_name}'."
raise DataSafeHavenUserHandlingError(msg) from exc
6 changes: 3 additions & 3 deletions data_safe_haven/commands/shm.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def deploy(
# for figuring out what went wrong.
# print("Could not deploy Data Safe Haven Management environment.")
# raise typer.Exit(code=1) from exc
msg = f"Could not deploy Data Safe Haven Management environment.\n{exc}"
msg = "Could not deploy Data Safe Haven Management environment."
raise DataSafeHavenError(msg) from exc
finally:
# Upload Pulumi config to blob storage
Expand All @@ -104,7 +104,7 @@ def teardown() -> None:
)
stack.teardown()
except Exception as exc:
msg = f"Unable to teardown Pulumi infrastructure.\n{exc}"
msg = "Unable to teardown Pulumi infrastructure."
raise DataSafeHavenInputError(msg) from exc

# Remove information from config file
Expand All @@ -113,5 +113,5 @@ def teardown() -> None:
# Upload Pulumi config to blob storage
pulumi_config.upload(context)
except DataSafeHavenError as exc:
msg = f"Could not teardown Safe Haven Management environment.\n{exc}"
msg = "Could not teardown Safe Haven Management environment."
raise DataSafeHavenError(msg) from exc
8 changes: 5 additions & 3 deletions data_safe_haven/commands/sre.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ def deploy(
)
manager.run()
except DataSafeHavenError as exc:
msg = f"Could not deploy Secure Research Environment {sre_config.safe_name}.\n{exc}"
msg = f"Could not deploy Secure Research Environment {sre_config.safe_name}."
raise DataSafeHavenError(msg) from exc
finally:
# Upload Pulumi config to blob storage
Expand Down Expand Up @@ -139,7 +139,7 @@ def teardown(
)
stack.teardown()
except Exception as exc:
msg = f"Unable to teardown Pulumi infrastructure.\n{exc}"
msg = "Unable to teardown Pulumi infrastructure."
raise DataSafeHavenInputError(msg) from exc

# Remove Pulumi project from Pulumi config file
Expand All @@ -148,5 +148,7 @@ def teardown(
# Upload Pulumi config to blob storage
pulumi_config.upload(context)
except DataSafeHavenError as exc:
msg = f"Could not teardown Secure Research Environment '{sre_config.safe_name}'.\n{exc}"
msg = (
f"Could not teardown Secure Research Environment '{sre_config.safe_name}'."
)
raise DataSafeHavenError(msg) from exc
10 changes: 5 additions & 5 deletions data_safe_haven/commands/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def add(
users = UserHandler(context, pulumi_config, graph_api)
users.add(csv)
except DataSafeHavenError as exc:
msg = f"Could not add users to Data Safe Haven '{shm_name}'.\n{exc}"
msg = f"Could not add users to Data Safe Haven '{shm_name}'."
raise DataSafeHavenError(msg) from exc


Expand Down Expand Up @@ -87,7 +87,7 @@ def list_users(
users = UserHandler(context, pulumi_config, graph_api)
users.list(sre)
except DataSafeHavenError as exc:
msg = f"Could not list users for Data Safe Haven '{shm_name}'.\n{exc}"
msg = f"Could not list users for Data Safe Haven '{shm_name}'."
raise DataSafeHavenError(msg) from exc


Expand Down Expand Up @@ -155,7 +155,7 @@ def register(
)
users.register(sre_name, usernames_to_register)
except DataSafeHavenError as exc:
msg = f"Could not register users from Data Safe Haven '{shm_name}' with SRE '{sre_name}'.\n{exc}"
msg = f"Could not register users from Data Safe Haven '{shm_name}' with SRE '{sre_name}'."
raise DataSafeHavenError(msg) from exc


Expand Down Expand Up @@ -194,7 +194,7 @@ def remove(
users = UserHandler(context, pulumi_config, graph_api)
users.remove(usernames)
except DataSafeHavenError as exc:
msg = f"Could not remove users from Data Safe Haven '{shm_name}'.\n{exc}"
msg = f"Could not remove users from Data Safe Haven '{shm_name}'."
raise DataSafeHavenError(msg) from exc


Expand Down Expand Up @@ -263,5 +263,5 @@ def unregister(
):
users.unregister(group_name, usernames_to_unregister)
except DataSafeHavenError as exc:
msg = f"Could not unregister users from Data Safe Haven '{shm_name}' with SRE '{sre_name}'.\n{exc}"
msg = f"Could not unregister users from Data Safe Haven '{shm_name}' with SRE '{sre_name}'."
raise DataSafeHavenError(msg) from exc
4 changes: 2 additions & 2 deletions data_safe_haven/context_infrastructure/infrastructure.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def create(self) -> None:
key_vault_name=keyvault.name,
)
except DataSafeHavenAzureError as exc:
msg = f"Failed to create context resources.\n{exc}"
msg = "Failed to create context resources."
raise DataSafeHavenAzureError(msg) from exc

def teardown(self) -> None:
Expand All @@ -96,5 +96,5 @@ def teardown(self) -> None:
)
self.azure_api.remove_resource_group(self.context.resource_group_name)
except DataSafeHavenAzureError as exc:
msg = f"Failed to destroy context resources.\n{exc}"
msg = "Failed to destroy context resources."
raise DataSafeHavenAzureError(msg) from exc
4 changes: 3 additions & 1 deletion data_safe_haven/exceptions/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ def __init__(self, message: str | bytes):

# Log exception message as an error
logger = get_logger()
logger.error(message)
message_str = message if isinstance(message, str) else message.decode("utf-8")
# Replace line breaks with escape code
logger.error(message_str.replace("\n", r"\n"))


class DataSafeHavenCloudError(DataSafeHavenError):
Expand Down
Loading
Loading