Skip to content

[feature:gsoc26] Model Layer, Status Tracking & Build-Level Completion Notification #412

@atif09

Description

@atif09

Is your feature request related to a problem? Please describe.

There is no model-level concept of extraction state. Once a firmware image is uploaded, there is no way to track whether the metadata has been extracted, is in progress, failed or was filled in manually. Builds also have no aggregate status reflecting the state of their images, meaning there is no mechanism to block a build from mass upgrades until all its images have been confirmed.

There is also no notification system tied to the completion of the extraction. Operators uploading firmware images have no way to know when extraction finishes or what to do if it fails

Describe the solution you'd like
I would like to introduce the model layer, status tracking, and build-level completion notification that the async pipeline and admin UI depend on

  1. Add extraction state fields to FirmwareImage:
  • extraction_status with states: unconfirmed, in_progress, confirmed, failed, manually_confirmed, invalid
  • failure_reason with choices: unsupported_format, out_of_memory, invalid_file
  • extraction_log for storing full technical detail from the extraction run
  1. Add status field to AbstractBuild to represent the aggregate extraction state across all images in a build:
  • analyzing when any image is still unconfirmed or in_progress
  • invalid when any image is invalid
  • failed when any image is failed
  • manually_confirmed when all the images are confirmed but at least one was done manually
  • success when all images are confirmed
  1. Implement _update_extraction_status() on AbstractBuild to recompute and persist the build status after each image extraction completes. Adding a new image to a build resets the build status back to analyzing via a post_save signal

  2. Implement _notify_extraction_complete() on AbstractBuild to fire a generic_notification with a direct link to the build page when the build transitions out of analyzing. The notification is only sent once, on that transition.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestgsoc-ideaIssues part of Google Summer of Code project

Projects

Status

ToDo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions