in pkg/vul/import.go [114:155]
func postNoteOccurrences(ctx context.Context, projectID string, noteID string, nocc types.NoteOccurrences) error {
if projectID == "" {
return types.ErrMissingProject
}
// don't submit end-to-end test
if projectID == types.TestProjectID {
return nil
}
c, err := ca.NewClient(ctx)
if err != nil {
return errors.Wrap(err, "error creating client")
}
defer c.Close()
p := fmt.Sprintf("projects/%s", projectID)
// Create Note
req := &g.CreateNoteRequest{
Parent: p,
NoteId: noteID,
Note: nocc.Note,
}
noteName := fmt.Sprintf("%s/notes/%s", p, noteID)
_, err = c.GetGrafeasClient().CreateNote(ctx, req)
if err != nil {
// If note already exists, skip
if status.Code(err) == codes.AlreadyExists {
log.Debug().Msgf("already exists: %s", noteName)
} else {
return errors.Wrap(err, "error posting note")
}
}
mergedOcc := mergeOccurrences(nocc.Occurrences)
if err := createOrUpdateOccurrence(ctx, p, noteID, mergedOcc, c); err != nil {
return errors.Wrap(err, "unable to create or update occurrence")
}
return nil
}