Skip to content
Snippets Groups Projects
Commit d87b85b3 authored by Jamie Tanna's avatar Jamie Tanna
Browse files

chore(contrib): instrument advisories

As part of #621, we can add some custom instrumentation to the
generation of advisories for `-contrib`.
parent 0f50142c
No related branches found
No related tags found
Loading
...@@ -7,10 +7,16 @@ import ( ...@@ -7,10 +7,16 @@ import (
"log/slog" "log/slog"
"os" "os"
"path" "path"
"path/filepath"
"dmd.tanna.dev/internal/tracing"
"github.com/jedib0t/go-pretty/v6/progress" "github.com/jedib0t/go-pretty/v6/progress"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
) )
var tracer = otel.Tracer("dmd.tanna.dev/internal/contrib")
func Sync(ctx context.Context, logger *slog.Logger, sqlDB *sql.DB, pw progress.Writer) error { func Sync(ctx context.Context, logger *slog.Logger, sqlDB *sql.DB, pw progress.Writer) error {
err := GenerateAdvisories(ctx, logger, sqlDB, pw) err := GenerateAdvisories(ctx, logger, sqlDB, pw)
if err != nil { if err != nil {
...@@ -21,6 +27,9 @@ func Sync(ctx context.Context, logger *slog.Logger, sqlDB *sql.DB, pw progress.W ...@@ -21,6 +27,9 @@ func Sync(ctx context.Context, logger *slog.Logger, sqlDB *sql.DB, pw progress.W
} }
func GenerateAdvisories(ctx context.Context, logger *slog.Logger, sqlDB *sql.DB, pw progress.Writer) error { func GenerateAdvisories(ctx context.Context, logger *slog.Logger, sqlDB *sql.DB, pw progress.Writer) error {
ctx, span := tracer.Start(ctx, "Generating advisories via -contrib", trace.WithAttributes(tracing.AttributeKeyDMDAdvisories.String("dmd-contrib")))
defer span.End()
tx, err := sqlDB.BeginTx(ctx, nil) tx, err := sqlDB.BeginTx(ctx, nil)
if err != nil { if err != nil {
return err return err
...@@ -48,15 +57,21 @@ func GenerateAdvisories(ctx context.Context, logger *slog.Logger, sqlDB *sql.DB, ...@@ -48,15 +57,21 @@ func GenerateAdvisories(ctx context.Context, logger *slog.Logger, sqlDB *sql.DB,
} }
for _, de := range files { for _, de := range files {
ctx, span := tracer.Start(ctx, "Generating custom advisories from an SQL file from -contrib", trace.WithAttributes(tracing.AttributeKeyDMDCustomAdvisoryName.String(filepath.Base(de.Name()))))
contents, err := os.ReadFile(path.Join(advisoriesPath, de.Name())) contents, err := os.ReadFile(path.Join(advisoriesPath, de.Name()))
if err != nil { if err != nil {
span.End()
return err return err
} }
_, err = tx.Exec(string(contents)) _, err = tx.ExecContext(ctx, string(contents))
if err != nil { if err != nil {
span.End()
return err return err
} }
span.End()
} }
return tx.Commit() return tx.Commit()
......
...@@ -24,6 +24,7 @@ const ( ...@@ -24,6 +24,7 @@ const (
AttributeKeyDMDDependencyUpdatesCount attribute.Key = "dmd.dependencyUpdates.count" AttributeKeyDMDDependencyUpdatesCount attribute.Key = "dmd.dependencyUpdates.count"
AttributeKeyDMDAdvisories attribute.Key = "dmd.advisories" AttributeKeyDMDAdvisories attribute.Key = "dmd.advisories"
AttributeKeyDMDDatasource attribute.Key = "dmd.datasource" AttributeKeyDMDDatasource attribute.Key = "dmd.datasource"
AttributeKeyDMDCustomAdvisoryName attribute.Key = "dmd.customAdvisories.name"
AttributeKeyFilesCount attribute.Key = "files.count" AttributeKeyFilesCount attribute.Key = "files.count"
) )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment