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 (
"log/slog"
"os"
"path"
"path/filepath"
"dmd.tanna.dev/internal/tracing"
"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 {
err := GenerateAdvisories(ctx, logger, sqlDB, pw)
if err != nil {
......@@ -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 {
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)
if err != nil {
return err
......@@ -48,15 +57,21 @@ func GenerateAdvisories(ctx context.Context, logger *slog.Logger, sqlDB *sql.DB,
}
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()))
if err != nil {
span.End()
return err
}
_, err = tx.Exec(string(contents))
_, err = tx.ExecContext(ctx, string(contents))
if err != nil {
span.End()
return err
}
span.End()
}
return tx.Commit()
......
......@@ -24,6 +24,7 @@ const (
AttributeKeyDMDDependencyUpdatesCount attribute.Key = "dmd.dependencyUpdates.count"
AttributeKeyDMDAdvisories attribute.Key = "dmd.advisories"
AttributeKeyDMDDatasource attribute.Key = "dmd.datasource"
AttributeKeyDMDCustomAdvisoryName attribute.Key = "dmd.customAdvisories.name"
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