From 3943b8a2c31a78adcd183ded98788c7f5afb7de3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20Jim=C3=A9nez=20S=C3=A1nchez?= Date: Fri, 7 Feb 2025 13:33:03 +0100 Subject: [PATCH] [Provisioning] Extract export into separate package (#100268) * Move export files into separate package * Use worker terminoligy * Rename dummy export worker --- .../{exporter_dummy.go => export/dummyworker.go} | 10 +++++++--- .../jobs/{exporter.go => export/worker.go} | 14 +++++++------- pkg/registry/apis/provisioning/jobs/worker.go | 8 ++++---- 3 files changed, 18 insertions(+), 14 deletions(-) rename pkg/registry/apis/provisioning/jobs/{exporter_dummy.go => export/dummyworker.go} (91%) rename pkg/registry/apis/provisioning/jobs/{exporter.go => export/worker.go} (97%) diff --git a/pkg/registry/apis/provisioning/jobs/exporter_dummy.go b/pkg/registry/apis/provisioning/jobs/export/dummyworker.go similarity index 91% rename from pkg/registry/apis/provisioning/jobs/exporter_dummy.go rename to pkg/registry/apis/provisioning/jobs/export/dummyworker.go index 5f3b5ff6228..92961ae0900 100644 --- a/pkg/registry/apis/provisioning/jobs/exporter_dummy.go +++ b/pkg/registry/apis/provisioning/jobs/export/dummyworker.go @@ -1,4 +1,4 @@ -package jobs +package export import ( "context" @@ -12,9 +12,13 @@ import ( "github.com/grafana/grafana/pkg/util" ) -type dummyExporter struct{} +type dummyExportWorker struct{} -func (s *dummyExporter) Export(ctx context.Context, +func NewDummyExportWorker() ExportWorker { + return &dummyExportWorker{} +} + +func (s *dummyExportWorker) Export(ctx context.Context, repo repository.Repository, options provisioning.ExportJobOptions, progress func(provisioning.JobStatus) error, diff --git a/pkg/registry/apis/provisioning/jobs/exporter.go b/pkg/registry/apis/provisioning/jobs/export/worker.go similarity index 97% rename from pkg/registry/apis/provisioning/jobs/exporter.go rename to pkg/registry/apis/provisioning/jobs/export/worker.go index 94cceb6e71b..98796d44315 100644 --- a/pkg/registry/apis/provisioning/jobs/exporter.go +++ b/pkg/registry/apis/provisioning/jobs/export/worker.go @@ -1,4 +1,4 @@ -package jobs +package export import ( "context" @@ -23,7 +23,7 @@ import ( ) // Export reads from grafana and writes to a a repository -type Exporter interface { +type ExportWorker interface { Export(ctx context.Context, repo repository.Repository, options provisioning.ExportJobOptions, @@ -31,17 +31,17 @@ type Exporter interface { ) (*provisioning.JobStatus, error) } -type exporter struct { +type exportWorker struct { client *resources.DynamicClient // namespaced! dashboards dynamic.ResourceInterface folders dynamic.ResourceInterface repository repository.Repository } -func NewExporter( +func NewExportWorker( repo repository.Repository, dynamicClient *resources.DynamicClient, -) (Exporter, error) { +) (ExportWorker, error) { if dynamicClient.GetNamespace() != repo.Config().Namespace { return nil, fmt.Errorf("bad setup, exporter needs a namespaced client matching the repository") } @@ -57,7 +57,7 @@ func NewExporter( Resource: "dashboards", }) - return &exporter{ + return &exportWorker{ client: dynamicClient, folders: folders, dashboards: dashboards, @@ -66,7 +66,7 @@ func NewExporter( } //nolint:gocyclo -func (r *exporter) Export(ctx context.Context, +func (r *exportWorker) Export(ctx context.Context, repo repository.Repository, options provisioning.ExportJobOptions, progress func(provisioning.JobStatus) error, diff --git a/pkg/registry/apis/provisioning/jobs/worker.go b/pkg/registry/apis/provisioning/jobs/worker.go index 897de9c3c26..a10941ae329 100644 --- a/pkg/registry/apis/provisioning/jobs/worker.go +++ b/pkg/registry/apis/provisioning/jobs/worker.go @@ -12,6 +12,7 @@ import ( "github.com/grafana/grafana/pkg/apimachinery/identity" provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1" "github.com/grafana/grafana/pkg/registry/apis/provisioning/auth" + "github.com/grafana/grafana/pkg/registry/apis/provisioning/jobs/export" "github.com/grafana/grafana/pkg/registry/apis/provisioning/repository" "github.com/grafana/grafana/pkg/registry/apis/provisioning/resources" "github.com/grafana/grafana/pkg/services/rendering" @@ -141,13 +142,12 @@ func (g *JobWorker) Process(ctx context.Context, job provisioning.Job, progress }, nil } - var exporter Exporter - + var exporter export.ExportWorker // Test for now... so we have something with long spinners for UI testing!!! if job.Spec.Export.Branch == "*dummy*" { - exporter = &dummyExporter{} + exporter = export.NewDummyExportWorker() } else { - exporter, err = NewExporter(repo, parser.Client()) + exporter, err = export.NewExportWorker(repo, parser.Client()) if err != nil { return nil, err }