Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions src/aap_eda/analytics/analytics_collectors.py
Original file line number Diff line number Diff line change
Expand Up @@ -810,12 +810,12 @@ def _copy_table(

cursor.execute(f"DROP VIEW IF EXISTS {view_name}")
return file.file_list()
except DatabaseError as e:
logger.error(f"Database error occurred: {e}")
except DatabaseError:
logger.exception("Database error occurred")
return None
except IOError as e:
logger.error(f"File I/O error occurred: {e}")
except IOError:
logger.exception("File I/O error occurred")
return None
except Exception as e:
logger.exception(f"An unexpected error occurred: {e}")
except Exception:
logger.exception("An unexpected error occurred")
return None
4 changes: 2 additions & 2 deletions src/aap_eda/analytics/collector.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ def _load_last_gathered_entries(self) -> dict:
self.logger.info(f"Last collect entries: {last_entries}")

return json.loads(last_entries, object_hook=utils.datetime_hook)
except (json.JSONDecodeError, TypeError) as e:
self.logger.error(f"Failed to load last entries: {str(e)}")
except (json.JSONDecodeError, TypeError):
self.logger.exception("Failed to load last entries")
return {}

def _save_last_gathered_entries(self, last_gathered_entries: dict) -> None:
Expand Down
24 changes: 12 additions & 12 deletions src/aap_eda/analytics/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,22 +91,22 @@ def collect_controllers_info() -> dict:
controller_info["install_uuid"] = resp.json()["install_uuid"]
info[host] = controller_info

except KeyError as e:
logger.error(f"Missing key in credential inputs: {e}")
except KeyError:
logger.exception("Missing key in credential inputs")
continue
except yaml.YAMLError as e:
logger.error(
f"YAML parsing error for credential {credential.id}: {e}"
except yaml.YAMLError:
logger.exception(
"YAML parsing error for credential" f" {credential.id}"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This syntax/formatting feels weird to me.

Suggested change
"YAML parsing error for credential" f" {credential.id}"
f"YAML parsing error for credential {credential.id}"

)
continue
except requests.exceptions.RequestException as e:
logger.warning(
f"Controller connection failed for {credential.name}: {e}"
)
continue
except Exception as e:
except Exception:
logger.exception(
f"Unexpected error processing credential {credential.id}: {e}"
"Unexpected error processing credential" f" {credential.id}"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here

)
continue

Expand Down Expand Up @@ -205,13 +205,13 @@ def generate_token() -> ServiceToken:
)
resp.raise_for_status()
except requests.exceptions.SSLError:
logger.error("SSL certificate verification failed")
logger.exception("SSL certificate verification failed")
raise
except requests.exceptions.Timeout:
logger.error("Token request timed out")
logger.exception("Token request timed out")
raise
except requests.exceptions.RequestException as e:
logger.error(f"Token request failed: {str(e)}")
except requests.exceptions.RequestException:
logger.exception("Token request failed")
raise

data = resp.json()
Expand Down Expand Up @@ -304,7 +304,7 @@ def get_analytics_interval() -> int:
try:
return int(interval)
except ValueError as e:
logger.error(
logger.exception(
f"Invalid analytics interval value '{interval}'. "
f"Using default interval. Error: {str(e)}"
)
Expand Down
4 changes: 2 additions & 2 deletions src/aap_eda/api/serializers/activation.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ def _update_event_stream_source(validated_data: dict) -> str:
)
# TODO: Can we catch a better exception
except Exception as e:
logger.error(
logger.exception(
"Failed to update event stream source in rulesets: %s", str(e)
)
raise InvalidEventStreamSource(e) from e
Expand Down Expand Up @@ -1619,7 +1619,7 @@ def _validate_sources_with_event_streams(data: dict) -> None:
try:
source_mappings = yaml.safe_load(source_mappings)
except yaml.MarkedYAMLError as ex:
logger.error("Invalid source mappings: %s", str(ex))
logger.exception("Invalid source mappings")
raise serializers.ValidationError(
{
SOURCE_MAPPING_ERROR_KEY: [
Expand Down
3 changes: 1 addition & 2 deletions src/aap_eda/api/views/activation.py
Original file line number Diff line number Diff line change
Expand Up @@ -712,10 +712,9 @@ def _sync_project_if_needed(
try:
sync_project(activation.project.id)
except Exception as e:
logger.error(
logger.exception(
f"Failed to start project sync for "
f"'{activation.name}': {e}",
exc_info=True,
)
activation.awaiting_project_sync = False
activation.status = ActivationStatus.ERROR
Expand Down
2 changes: 1 addition & 1 deletion src/aap_eda/api/views/credential_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ def test(self, request, pk):
serializer.validated_data["metadata"],
)
except Exception as err:
logger.error("Plugin call failed %s", err)
logger.exception("Plugin call failed %s", err)
return Response(status=status.HTTP_400_BAD_REQUEST, data={})

return Response(status=status.HTTP_202_ACCEPTED, data={})
2 changes: 1 addition & 1 deletion src/aap_eda/api/views/eda_credential.py
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ def test(self, request, pk):
serializer.validated_data["metadata"],
)
except Exception as err:
logger.error(
logger.exception(
"Plugin : %s call failed %s",
eda_credential.credential_type.namespace,
err,
Expand Down
7 changes: 3 additions & 4 deletions src/aap_eda/api/views/event_stream.py
Original file line number Diff line number Diff line change
Expand Up @@ -366,16 +366,15 @@ def _sync_certificates(
else:
obj.update()
except CoreGatewayAPIError as ex:
logger.error("Could not %s certificates: %s", action, str(ex))
logger.exception("Could not %s certificates", action)
raise api_exc.GatewayAPIError(
detail=f"Gateway API error during certificate {action}: "
f"{str(ex)}"
)
except CoreMissingCredentials as ex:
logger.error(
"Missing credentials for certificate %s: %s",
logger.exception(
"Missing credentials for certificate %s",
action,
str(ex),
)
raise api_exc.MissingCredentialsError(
detail=f"Missing credentials for certificate {action}: "
Expand Down
6 changes: 3 additions & 3 deletions src/aap_eda/api/views/external_event_stream.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,14 +143,14 @@ def _parse_body(self, content_type: str, body: bytes) -> dict:
)
except ValueError as exc:
message = f"Invalid content. Type: {content_type}"
logger.error(message)
logger.exception(message)
raise ParseError(message) from exc
else:
try:
data = yaml.safe_load(body.decode())
except yaml.YAMLError as exc:
message = f"Invalid content. Type: {content_type}"
logger.error(message)
logger.exception(message)
raise ParseError(message) from exc
return data

Expand Down Expand Up @@ -346,7 +346,7 @@ def post(self, request, *_args, **kwargs):
payload,
)()
except PGNotifyError as e:
logger.error(e)
logger.exception(e)
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)

return Response(status=status.HTTP_200_OK)
2 changes: 1 addition & 1 deletion src/aap_eda/conf/registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ def _resync_remote_settings(self, sync_group: str) -> None:
"Failed to fetch settings from gateway. Exception: "
f"{str(e)}. Default or stored values will be used"
)
logger.error(msg)
logger.exception(msg)
return
if not res.ok:
msg = (
Expand Down
9 changes: 3 additions & 6 deletions src/aap_eda/core/health.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,8 @@ def check_activation_worker_health(
# healthy
return True
except Exception as e:
logger.error(
logger.exception(
f"Health check failed for activation workers: {e}",
exc_info=True,
)
return False

Expand Down Expand Up @@ -95,9 +94,8 @@ def check_dispatcherd_workers_health(

except Exception as e:
if not raise_exceptions:
logger.error(
logger.exception(
f"Health check failed for dispatcherd workers: {e}",
exc_info=True,
)
return False
else:
Expand All @@ -108,8 +106,7 @@ def check_dispatcherd_workers_health(
):
raise
# For other exceptions, log and raise a generic WorkerUnavailable
logger.error(
logger.exception(
f"Health check failed for dispatcherd workers: {e}",
exc_info=True,
)
raise api_exc.WorkerUnavailable()
2 changes: 1 addition & 1 deletion src/aap_eda/core/management/commands/dispatcherctl.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,5 +139,5 @@ def handle(self, *args, **options) -> None:
raise CommandError("Command interrupted by user")
except Exception as e:
error_msg = f"Failed to execute {command}: {e}"
logger.error(error_msg, exc_info=True)
logger.exception(error_msg)
raise CommandError(error_msg)
2 changes: 1 addition & 1 deletion src/aap_eda/core/management/commands/dispatcherd.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,5 +107,5 @@ def handle(self, *args, **options) -> None:
except Exception as e:
error_msg = f"Failed to start {worker_class}: {e}"
self.stderr.write(self.style.ERROR(error_msg))
logger.error(error_msg, exc_info=True)
logger.exception(error_msg)
raise SystemExit(1)
2 changes: 1 addition & 1 deletion src/aap_eda/core/models/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ def needs_update_on_launch(self) -> bool:

except (AttributeError, TypeError, ValueError) as e:
# Log error but return safe default to prevent activation failures
logger.error(
logger.exception(
f"Error determining sync status for project {self.pk}: {e}"
)
# Safe default: assume sync needed to prevent stale content
Expand Down
3 changes: 1 addition & 2 deletions src/aap_eda/core/tasking/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,8 @@ def queue_cancel_job(queue_name: str, job_id: str) -> None:
else:
logger.debug(f"No jobs running with id {job_id} to cancel")
except Exception as e:
logger.error(
logger.exception(
f"Failed to cancel job {job_id} in queue {queue_name}: {e}",
exc_info=True,
)


Expand Down
2 changes: 1 addition & 1 deletion src/aap_eda/core/utils/credential_plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def run_plugin(plugin_type: str, inputs: dict, metadata: dict) -> dict:
msg = (
f"Error executing credential plugin {plugin_type}: {str(err)}"
)
LOGGER.error(msg)
LOGGER.exception(msg)
raise CredentialPluginError(msg) from err

raise UnknownPluginTypeError(
Expand Down
10 changes: 5 additions & 5 deletions src/aap_eda/core/utils/credentials.py
Original file line number Diff line number Diff line change
Expand Up @@ -947,8 +947,8 @@ def validate_x509_subject_match(expected: str, actual: str) -> bool:
# Parse actual DN into X.509 Name object
try:
actual_name = x509.Name.from_rfc4514_string(actual)
except ValueError as e:
LOGGER.error(f"Invalid actual DN format: '{actual}': {e}")
except ValueError:
LOGGER.exception(f"Invalid actual DN format: '{actual}'")
return False

# Parse expected DN manually to handle regex patterns
Expand Down Expand Up @@ -1087,8 +1087,8 @@ def _match_regex_pattern_against_attrs(
re.match(regex_pattern, attr.value, re.IGNORECASE)
for attr in actual_attrs
)
except re.error as e:
LOGGER.error(f"Invalid regex pattern '{pattern}': {e}")
except re.error:
LOGGER.exception(f"Invalid regex pattern '{pattern}'")
return False


Expand Down Expand Up @@ -1123,7 +1123,7 @@ def _get_aes_key(
)
return base64.b64encode(raw_key).decode("utf-8")
except Exception as e:
LOGGER.error(f"Failed to derive AES key: {e}")
LOGGER.exception("Failed to derive AES key")
raise ValidationError(f"Failed to generate encryption key: {str(e)}")


Expand Down
2 changes: 1 addition & 1 deletion src/aap_eda/core/utils/external_sms.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,6 @@ def get_external_secrets(credential_id: int) -> dict:
f"credentials defined in: {obj.source_credential.name} "
f"Error: {str(err)}"
)
LOGGER.error(msg)
LOGGER.exception(msg)
raise CredentialPluginError(msg) from err
return result
2 changes: 1 addition & 1 deletion src/aap_eda/core/utils/rulebook.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def build_source_list(rulesets_data: str) -> list[dict]:
try:
rulesets = yaml.safe_load(rulesets_data)
except yaml.MarkedYAMLError as ex:
LOGGER.error("Invalid rulesets: %s", str(ex))
LOGGER.exception("Invalid rulesets")
raise ParseError("Failed to parse rulebook data") from ex

rulebook_hash = get_rulebook_hash(rulesets_data)
Expand Down
Loading