-
Notifications
You must be signed in to change notification settings - Fork 35
feat: include AdvisoryHead in PurlStatus #2152
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
base: main
Are you sure you want to change the base?
Conversation
Reviewer's GuideThis PR threads AdvisoryHead data into PurlStatus so that each package status now carries its advisory summary, updates the vulnerability service and purl models to construct this enriched status (including issuer lookup), and adjusts tests and the OpenAPI schema to reflect the new field and stabilize comparisons against generated IDs/timestamps. Sequence diagram for constructing PurlStatus with AdvisoryHead in VulnerabilityServicesequenceDiagram
participant VS as VulnerabilityService
participant DB as Connection
participant AdvMap as advisories_map
participant Adv as advisory_Model
participant OrgEnt as organization_Entity
participant AH as AdvisoryHead
participant PS as PurlStatus
VS->>AdvMap: get(advisory_id)
AdvMap-->>VS: advisory
VS->>Adv: find_related(organization_Entity)
Adv->>DB: one(connection)
DB-->>Adv: issuer_organization
Adv-->>VS: issuer_organization
VS->>AH: from_advisory(advisory, Memo::Provided(issuer_organization), connection)
AH-->>VS: advisory_head
VS->>PS: from_head(vulnerability_head, advisory_head, status, version_range, cpe, score)
PS-->>VS: purl_status
VS->>VS: push purl_status into purl_statuses
Updated class diagram for PurlStatus including AdvisoryHeadclassDiagram
class PurlStatus {
+VulnerabilityHead vulnerability
+AdvisoryHead advisory
+Severity average_severity
+f64 average_score
+String status
+StatusContext context
+Option~VersionRange~ version_range
+Option~String~ cpe
+async new(vuln_model, advisory_model, status, version_range, cpe, tx) Result~PurlStatus, Error~
+from_head(vuln_head, advisory_head, status, version_range, cpe, score) Result~PurlStatus, Error~
+async from_entity(vuln_model, advisory_model, package_status_model, tx) Result~PurlStatus, Error~
}
class VulnerabilityHead
class AdvisoryHead {
+async from_advisory(advisory_model, issuer_memo, tx) Result~AdvisoryHead, Error~
}
class Severity
class StatusContext
class VersionRange
class Memo {
Provided
NotProvided
}
class vulnerability_model {
}
class advisory_model {
}
class organization_Entity {
}
class purl_status_model {
}
PurlStatus --> VulnerabilityHead : contains
PurlStatus --> AdvisoryHead : contains
PurlStatus ..> vulnerability_model : uses in new, from_entity
PurlStatus ..> advisory_model : uses in new, from_entity
PurlStatus ..> purl_status_model : uses in from_entity
AdvisoryHead ..> advisory_model : built from
AdvisoryHead ..> organization_Entity : resolves issuer
AdvisoryHead ..> Memo : issuer parameter
PurlStatus ..> Severity : average_severity
PurlStatus ..> StatusContext : context
PurlStatus ..> VersionRange : version_range
PurlStatus ..> Memo : via AdvisoryHead construction
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #2152 +/- ##
==========================================
+ Coverage 68.17% 68.22% +0.04%
==========================================
Files 375 375
Lines 21052 21067 +15
Branches 21052 21067 +15
==========================================
+ Hits 14353 14372 +19
+ Misses 5838 5828 -10
- Partials 861 867 +6 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Summary by Sourcery
Include advisory metadata alongside vulnerabilities in PurlStatus and propagate it through the service and API layers.
New Features:
Enhancements:
Documentation:
Tests: