mirror of
https://github.com/grafana/grafana.git
synced 2025-07-30 14:12:26 +08:00
125 lines
3.4 KiB
Go
125 lines
3.4 KiB
Go
package pipeline
|
|
|
|
import (
|
|
"context"
|
|
"log/slog"
|
|
|
|
"dagger.io/dagger"
|
|
)
|
|
|
|
type ArtifactStoreLogger struct {
|
|
Store ArtifactStore
|
|
Log *slog.Logger
|
|
}
|
|
|
|
func (m *ArtifactStoreLogger) StoreFile(ctx context.Context, a *Artifact, file *dagger.File) error {
|
|
fn, err := a.Handler.Filename(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
log := m.Log.With("artifact", a.ArtifactString, "path", fn)
|
|
|
|
log.DebugContext(ctx, "storing artifact file...")
|
|
if err := m.Store.StoreFile(ctx, a, file); err != nil {
|
|
log.DebugContext(ctx, "error storing artifact file", "error", err)
|
|
return err
|
|
}
|
|
log.DebugContext(ctx, "done storing artifact file")
|
|
return nil
|
|
}
|
|
|
|
func (m *ArtifactStoreLogger) File(ctx context.Context, a *Artifact) (*dagger.File, error) {
|
|
fn, err := a.Handler.Filename(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
log := m.Log.With("artifact", a.ArtifactString, "path", fn)
|
|
|
|
log.DebugContext(ctx, "fetching artifact file...")
|
|
file, err := m.Store.File(ctx, a)
|
|
if err != nil {
|
|
log.DebugContext(ctx, "error fetching artifact file", "error", err)
|
|
return nil, err
|
|
}
|
|
|
|
log.DebugContext(ctx, "done fetching artifact file")
|
|
return file, nil
|
|
}
|
|
|
|
func (m *ArtifactStoreLogger) StoreDirectory(ctx context.Context, a *Artifact, dir *dagger.Directory) error {
|
|
fn, err := a.Handler.Filename(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
log := m.Log.With("artifact", a.ArtifactString, "path", fn)
|
|
|
|
log.DebugContext(ctx, "storing artifact directory...")
|
|
if err := m.Store.StoreDirectory(ctx, a, dir); err != nil {
|
|
log.DebugContext(ctx, "error storing artifact directory", "error", err)
|
|
return err
|
|
}
|
|
log.DebugContext(ctx, "done storing artifact directory")
|
|
return nil
|
|
}
|
|
|
|
func (m *ArtifactStoreLogger) Directory(ctx context.Context, a *Artifact) (*dagger.Directory, error) {
|
|
fn, err := a.Handler.Filename(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
log := m.Log.With("artifact", a.ArtifactString, "path", fn)
|
|
|
|
log.DebugContext(ctx, "fetching artifact directory...")
|
|
dir, err := m.Store.Directory(ctx, a)
|
|
if err != nil {
|
|
log.DebugContext(ctx, "error fetching artifact directory", "error", err)
|
|
return nil, err
|
|
}
|
|
|
|
log.DebugContext(ctx, "done fetching artifact directory")
|
|
return dir, nil
|
|
}
|
|
|
|
func (m *ArtifactStoreLogger) Export(ctx context.Context, d *dagger.Client, a *Artifact, dst string, checksum bool) ([]string, error) {
|
|
fn, err := a.Handler.Filename(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
log := m.Log.With("artifact", a.ArtifactString, "path", fn, "destination", dst, "checksum", checksum)
|
|
|
|
log.DebugContext(ctx, "exporting artifact...")
|
|
path, err := m.Store.Export(ctx, d, a, dst, checksum)
|
|
if err != nil {
|
|
log.DebugContext(ctx, "error exporting artifact", "error", err)
|
|
return nil, err
|
|
}
|
|
|
|
log.DebugContext(ctx, "done exporting artifact")
|
|
return path, nil
|
|
}
|
|
|
|
func (m *ArtifactStoreLogger) Exists(ctx context.Context, a *Artifact) (bool, error) {
|
|
fn, err := a.Handler.Filename(ctx)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
log := m.Log.With("artifact", a.ArtifactString, "path", fn)
|
|
|
|
log.DebugContext(ctx, "checking existence of artifact...")
|
|
v, err := m.Store.Exists(ctx, a)
|
|
if err != nil {
|
|
log.DebugContext(ctx, "error checking existence of artifact", "error", err)
|
|
return false, err
|
|
}
|
|
|
|
log.DebugContext(ctx, "done checking existence of artifact")
|
|
return v, nil
|
|
}
|
|
|
|
func StoreWithLogging(s ArtifactStore, log *slog.Logger) *ArtifactStoreLogger {
|
|
return &ArtifactStoreLogger{
|
|
Store: s,
|
|
Log: log.With("service", "ArtifactStore"),
|
|
}
|
|
}
|