in pkg/model/history/changeset.go [143:190]
func (cs *ChangeSet) FlushToHistory(builder *Builder) ([]string, error) {
changedPaths := []string{}
// Write revisions in this ChangeSet
for resourcePath, revisions := range cs.revisions {
tb := builder.GetTimelineBuilder(resourcePath)
for _, stagingRevision := range revisions {
revision, err := stagingRevision.commit(builder.binaryChunk, cs.associatedLog)
if err != nil {
return nil, err
}
tb.AddRevision(revision)
}
changedPaths = append(changedPaths, resourcePath)
}
// Write events in this ChangeSet
for resourcePath, events := range cs.events {
tb := builder.GetTimelineBuilder(resourcePath)
for _, event := range events {
tb.AddEvent(event)
}
changedPaths = append(changedPaths, resourcePath)
}
// Write log related properties
if cs.logSummaryRewrite != "" {
builder.setLogSummary(cs.associatedLog.ID(), cs.logSummaryRewrite)
}
if cs.logSeverityRewrite != enum.SeverityUnknown {
builder.setLogSeverity(cs.associatedLog.ID(), cs.logSeverityRewrite)
}
builder.setLogAnnotations(cs.associatedLog.ID(), cs.annotations)
// Write the alias relationships
for source, destinations := range cs.aliases {
for _, dest := range destinations {
builder.addTimelineAlias(source, dest)
}
}
// Write resource related properties
for resourcePath, relationship := range cs.resourceRelationshipRewrites {
err := builder.rewriteRelationship(resourcePath, relationship)
if err != nil {
return nil, err
}
}
return common.DedupStringArray(changedPaths), nil
}