Skip to content

Commit

Permalink
fix(oscal): ensure component definition UUID is updated on modificati…
Browse files Browse the repository at this point in the history
…on (#615)

* fix(oscal): ensure component definition UUID is updated on modification

* fix(merge): remove redundant conditionals
  • Loading branch information
brandtkeller authored Aug 30, 2024
1 parent a0338af commit 5516482
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 6 deletions.
14 changes: 10 additions & 4 deletions src/pkg/common/oscal/complete-schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,26 +111,32 @@ func MergeOscalModels(existingModel *oscalTypes_1_1_2.OscalModels, newModel *osc

// Component definition
if modelType == "component" {

if existingModel.ComponentDefinition == nil && newModel.ComponentDefinition != nil {
return newModel, nil
}

merged, err := MergeComponentDefinitions(existingModel.ComponentDefinition, newModel.ComponentDefinition)
if err != nil {
return nil, err
}
// Re-assign after processing errors
existingModel.ComponentDefinition = merged
} else if existingModel.ComponentDefinition == nil && newModel.ComponentDefinition != nil {
existingModel.ComponentDefinition = newModel.ComponentDefinition
}

// Assessment Results
if modelType == "assessment-results" {

if existingModel.AssessmentResults == nil && newModel.AssessmentResults != nil {
return newModel, nil
}

merged, err := MergeAssessmentResults(existingModel.AssessmentResults, newModel.AssessmentResults)
if err != nil {
return existingModel, err
}
// Re-assign after processing errors
existingModel.AssessmentResults = merged
} else if existingModel.AssessmentResults == nil && newModel.AssessmentResults != nil {
existingModel.AssessmentResults = newModel.AssessmentResults
}

return existingModel, err
Expand Down
4 changes: 2 additions & 2 deletions src/pkg/common/oscal/component.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,8 @@ func MergeComponentDefinitions(original *oscalTypes_1_1_2.ComponentDefinition, l
original.Components = &tempItems
original.Metadata.LastModified = time.Now()

// TODO: Decide if we need to generate a new top-level UUID
// original.UUID = uuid.NewUUID()
// Artifact will be modified - need to update the UUID
original.UUID = uuid.NewUUID()

return original, nil

Expand Down

0 comments on commit 5516482

Please sign in to comment.