Skip to content

Commit

Permalink
Improved error messages
Browse files Browse the repository at this point in the history
Signed-off-by: nathannaveen <[email protected]>
  • Loading branch information
nathannaveen committed Jul 19, 2024
1 parent a9d15ef commit dcb6fa1
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 26 deletions.
14 changes: 6 additions & 8 deletions pkg/assembler/backends/keyvalue/certifyVuln.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,37 +76,35 @@ func (c *demoClient) removeLinks(ctx context.Context, linkID string, links []str

// DeleteCertifyVuln deletes a specified certifyVuln node along with all associated relationships.
func (c *demoClient) DeleteCertifyVuln(ctx context.Context, id string) (bool, error) {
funcName := "DeleteCertifyVuln"

// Retrieve the certifyVulnerabilityLink by ID
link, err := byIDkv[*certifyVulnerabilityLink](ctx, id, c)
if err != nil {
if errors.Is(err, kv.NotFoundError) {
return false, nil // Not found, nothing to delete
}
return false, gqlerror.Errorf("%v :: %s", funcName, err) // TODO: Improve error messages
return false, gqlerror.Errorf("failed to retrieve certifyVulnerabilityLink by ID: %v", err)
}

// Remove backlinks from associated package and vulnerability
foundPackage, err := c.returnFoundPkgVersion(ctx, &model.IDorPkgInput{PackageVersionID: &link.PackageID})
if err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("failed to retrieve package version: %v", err)
}
if err := c.removeLinks(ctx, link.ThisID, foundPackage.CertifyVulnLinks, "packages", foundPackage.ID()); err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("failed to remove package backlinks: %v", err)
}

foundVulnNode, err := c.returnFoundVulnerability(ctx, &model.IDorVulnerabilityInput{VulnerabilityNodeID: &link.VulnerabilityID})
if err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("failed to retrieve vulnerability node: %v", err)
}
if err := c.removeLinks(ctx, link.ThisID, foundVulnNode.CertifyVulnLinks, "vulnerabilities", foundVulnNode.ID()); err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("failed to remove vulnerability backlinks: %v", err)
}

// Delete the link from the KeyValue store
if err := c.kv.Remove(ctx, cVulnCol, link.Key()); err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("failed to remove certifyVuln link from KeyValue store: %v", err)
}

return true, nil
Expand Down
17 changes: 8 additions & 9 deletions pkg/assembler/backends/keyvalue/hasSBOM.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,53 +69,52 @@ func (n *hasSBOMStruct) Key() string {

// DeleteHasSBOM deletes a specified hasSBOM node along with all associated relationships.
func (c *demoClient) DeleteHasSBOM(ctx context.Context, id string) (bool, error) {
funcName := "DeleteHasSBOM"

// Retrieve the hasSBOM link by ID
link, err := byIDkv[*hasSBOMStruct](ctx, id, c)
if err != nil {
if errors.Is(err, kv.NotFoundError) {
return false, nil // Not found, nothing to delete
}
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("failed to retrieve hasSBOM link by ID: %v", err)
}

// Delete associated isDependency nodes
for _, depID := range link.IncludedDependencies {
if err := c.kv.Remove(ctx, "dependencies", depID); !errors.Is(err, kv.NotFoundError) {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("failed to remove dependency node with ID %s: %v", depID, err)
}
}

// Delete associated isOccurrence nodes
for _, occurID := range link.IncludedOccurrences {
if err := c.kv.Remove(ctx, "occurrences", occurID); !errors.Is(err, kv.NotFoundError) {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("failed to remove occurrence node with ID %s: %v", occurID, err)
}
}

// Remove backlinks from associated package or artifact
if link.Pkg != "" {
foundPkg, err := c.returnFoundPkgVersion(ctx, &model.IDorPkgInput{PackageVersionID: &link.Pkg})
if err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("failed to retrieve package version: %v", err)
}
if err := c.removeLinks(ctx, link.ThisID, foundPkg.HasSBOMs, "packages", foundPkg.ID()); err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("failed to remove package backlinks: %v", err)
}
} else if link.Artifact != "" {
foundArtifact, err := c.returnFoundArtifact(ctx, &model.IDorArtifactInput{ArtifactID: &link.Artifact})
if err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("failed to retrieve artifact: %v", err)
}
if err := c.removeLinks(ctx, link.ThisID, foundArtifact.HasSBOMs, "artifacts", foundArtifact.ID()); err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("failed to remove artifact backlinks: %v", err)
}
}

// Delete the hasSBOM link from the KeyValue store
if err := c.kv.Remove(ctx, hasSBOMCol, link.Key()); err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("failed to remove hasSBOM link from KeyValue store: %v", err)
}

return true, nil
Expand Down
17 changes: 8 additions & 9 deletions pkg/assembler/backends/keyvalue/hasSLSA.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,49 +74,48 @@ func (n *hasSLSAStruct) Key() string {

// DeleteHasSLSA deletes a specified SLSA node along with all associated relationships.
func (c *demoClient) DeleteHasSLSA(ctx context.Context, id string) (bool, error) {
funcName := "DeleteSLSA"

// Retrieve the SLSA link by ID
link, err := byIDkv[*hasSLSAStruct](ctx, id, c)
if err != nil {
if errors.Is(err, kv.NotFoundError) {
return false, nil // Not found, nothing to delete
}
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("Error retrieving SLSA link by ID: %v", err)
}

// Remove backlinks from associated subject
foundSubject, err := c.returnFoundArtifact(ctx, &model.IDorArtifactInput{ArtifactID: &link.Subject})
if err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("Error retrieving associated subject: %v", err)
}
if err := c.removeLinks(ctx, link.ThisID, foundSubject.HasSLSAs, "artifacts", foundSubject.ID()); err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("Error removing backlinks from associated subject: %v", err)
}

// Remove backlinks from associated builtBy
foundBuiltBy, err := c.returnFoundBuilder(ctx, &model.IDorBuilderInput{BuilderID: &link.BuiltBy})
if err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("Error retrieving associated builtBy: %v", err)
}
if err := c.removeLinks(ctx, link.ThisID, foundBuiltBy.HasSLSAs, "builders", foundBuiltBy.ID()); err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("Error removing backlinks from associated builtBy: %v", err)
}

// Remove backlinks from associated builtFrom
for _, builtFromID := range link.BuiltFrom {
foundBuiltFrom, err := c.returnFoundArtifact(ctx, &model.IDorArtifactInput{ArtifactID: &builtFromID})
if err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("Error retrieving associated builtFrom: %v", err)
}
if err := c.removeLinks(ctx, link.ThisID, foundBuiltFrom.HasSLSAs, "artifacts", foundBuiltFrom.ID()); err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("Error removing backlinks from associated builtFrom: %v", err)
}
}

// Delete the link from the KeyValue store
if err := c.kv.Remove(ctx, slsaCol, link.Key()); err != nil {
return false, gqlerror.Errorf("%v :: %s", funcName, err)
return false, gqlerror.Errorf("failed to remove hasSLSA link from KeyValue store: %v", err)
}

return true, nil
Expand Down

0 comments on commit dcb6fa1

Please sign in to comment.