Skip to content

Commit

Permalink
feat: add last successful run for each provider to the metadata (#292)
Browse files Browse the repository at this point in the history
adding the last successful run timestamp for all providers to the grype-db metadata.json file

Signed-off-by: Arvind Somya <[email protected]>
  • Loading branch information
asomya authored Apr 29, 2024
1 parent 9a5c6bf commit 4efacf4
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
6 changes: 3 additions & 3 deletions pkg/process/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func Build(cfg BuildConfig) error {
return err
}

writer, err := getWriter(cfg.SchemaVersion, cfg.Timestamp, cfg.Directory)
writer, err := getWriter(cfg.SchemaVersion, cfg.Timestamp, cfg.Directory, cfg.States)
if err != nil {
return err
}
Expand Down Expand Up @@ -106,7 +106,7 @@ func getProcessors(schemaVersion int) ([]data.Processor, error) {
}
}

func getWriter(schemaVersion int, dataAge time.Time, directory string) (data.Writer, error) {
func getWriter(schemaVersion int, dataAge time.Time, directory string, states provider.States) (data.Writer, error) {
switch schemaVersion {
case grypeDBv1.SchemaVersion:
return v1.NewWriter(directory, dataAge)
Expand All @@ -117,7 +117,7 @@ func getWriter(schemaVersion int, dataAge time.Time, directory string) (data.Wri
case grypeDBv4.SchemaVersion:
return v4.NewWriter(directory, dataAge)
case grypeDBv5.SchemaVersion:
return v5.NewWriter(directory, dataAge)
return v5.NewWriter(directory, dataAge, states)
default:
return nil, fmt.Errorf("unable to create writer: unsupported schema version: %+v", schemaVersion)
}
Expand Down
14 changes: 13 additions & 1 deletion pkg/process/v5/writer.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/anchore/grype-db/internal/file"
"github.com/anchore/grype-db/internal/log"
"github.com/anchore/grype-db/pkg/data"
"github.com/anchore/grype-db/pkg/provider"
"github.com/anchore/grype/grype/db"
grypeDB "github.com/anchore/grype/grype/db/v5"
grypeDBStore "github.com/anchore/grype/grype/db/v5/store"
Expand All @@ -26,9 +27,10 @@ var _ data.Writer = (*writer)(nil)
type writer struct {
dbPath string
store grypeDB.Store
states provider.States
}

func NewWriter(directory string, dataAge time.Time) (data.Writer, error) {
func NewWriter(directory string, dataAge time.Time, states provider.States) (data.Writer, error) {
dbPath := path.Join(directory, grypeDB.VulnerabilityStoreFileName)
theStore, err := grypeDBStore.New(dbPath, true)
if err != nil {
Expand All @@ -42,6 +44,7 @@ func NewWriter(directory string, dataAge time.Time) (data.Writer, error) {
return &writer{
dbPath: dbPath,
store: theStore,
states: states,
}, nil
}

Expand Down Expand Up @@ -90,6 +93,15 @@ func (w writer) metadata() (*db.Metadata, error) {
Version: storeID.SchemaVersion,
Checksum: "sha256:" + hashStr,
}

// Set provider time from states
for _, state := range w.states {
metadata.Providers = append(metadata.Providers, db.Provider{
Name: state.Provider,
LastSuccessfulRun: state.Timestamp,
})
}

return &metadata, nil
}

Expand Down

0 comments on commit 4efacf4

Please sign in to comment.