MCPcopy Create free account
hub / github.com/conforma/cli / processVSAResult

Function processVSAResult

cmd/validate/vsa.go:803–840  ·  view source on GitHub ↗

processVSAResult processes a VSA validation result and updates the image status and aggregated data

(vsaResult *vsa.ValidationResult, imgStatus *ImageStatus, data *AllSectionsData, shortDigest string)

Source from the content-addressed store, hash-verified

801
802// processVSAResult processes a VSA validation result and updates the image status and aggregated data
803func processVSAResult(vsaResult *vsa.ValidationResult, imgStatus *ImageStatus, data *AllSectionsData, shortDigest string) {
804 if vsaResult.Passed {
805 imgStatus.VSAStatus = "PASSED"
806 data.VSAPassed++
807 } else {
808 reason := extractFallbackReason(vsaResult)
809 imgStatus.VSAStatus = fmt.Sprintf("FAILED(reason=%s)", reason)
810 data.VSAFailed++
811 data.FallbackReasons[reason] = true
812 }
813
814 // Aggregate signature status
815 // When SignatureVerified is false, mark as NOT VERIFIED
816 // This covers both cases: signature verification failure and retrieval failure (no VSA to verify)
817 if !vsaResult.SignatureVerified {
818 data.SignatureStatus = "NOT VERIFIED"
819 }
820
821 // Aggregate predicate status
822 if vsaResult.PredicateOutcome == "passed" {
823 data.PredicatePassed++
824 } else if vsaResult.PredicateOutcome != "" {
825 data.PredicateFailed++
826 }
827
828 // Check for policy diff using structured fields (preferred) or message parsing (fallback)
829 added, removed, changed, hasDiff := parsePolicyDiffFromMessage(vsaResult)
830 if hasDiff {
831 data.HasPolicyDiff = true
832 data.AffectedImages = append(data.AffectedImages, shortDigest)
833 data.PolicyDiffCounts[shortDigest] = PolicyDiffCounts{
834 Added: added, Removed: removed, Changed: changed,
835 }
836 data.PolicyMismatches++
837 } else if vsaResult.Passed {
838 data.PolicyMatches++
839 }
840}
841
842// aggregateAllSectionsData - Single pass aggregation, collects all data needed
843func aggregateAllSectionsData(allResults []vsa.ComponentResult) AllSectionsData {

Callers 1

aggregateAllSectionsDataFunction · 0.85

Calls 2

extractFallbackReasonFunction · 0.85

Tested by

no test coverage detected