Provisioning: Configurable Repository Types in monolith and operators (#110822)

* Configurable repository types in monolith and operator

* Default to Github in operators

* Regenerate wire

* Fix and implement unit tests

* Same types for enterprise tests

* Remove unnecessary conversion

* Remove the issue with import cycles
This commit is contained in:
Roberto Jiménez Sánchez
2025-09-09 19:13:22 +02:00
committed by GitHub
parent 3f4c523ef5
commit acbc2cf01a
8 changed files with 361 additions and 45 deletions
@@ -1,7 +1,9 @@
package extras
import (
apisprovisioning "github.com/grafana/grafana/apps/provisioning/pkg/apis/provisioning/v0alpha1"
"github.com/grafana/grafana/apps/provisioning/pkg/repository"
"github.com/grafana/grafana/apps/provisioning/pkg/repository/git"
"github.com/grafana/grafana/apps/provisioning/pkg/repository/github"
"github.com/grafana/grafana/apps/provisioning/pkg/repository/local"
"github.com/grafana/grafana/apps/secret/pkg/decrypt"
@@ -25,13 +27,15 @@ func ProvideProvisioningOSSRepositoryExtras(
ghFactory *github.Factory,
webhooksBuilder *webhooks.WebhookExtraBuilder,
) []repository.Extra {
decrypter := repository.ProvideDecrypter(decryptSvc)
return []repository.Extra{
local.Extra(
cfg.HomePath,
cfg.PermittedProvisioningPaths,
),
git.Extra(decrypter),
github.Extra(
repository.ProvideDecrypter(decryptSvc),
decrypter,
ghFactory,
webhooksBuilder,
),
@@ -41,3 +45,12 @@ func ProvideProvisioningOSSRepositoryExtras(
func ProvideExtraWorkers(pullRequestWorker *pullrequest.PullRequestWorker) []jobs.Worker {
return []jobs.Worker{pullRequestWorker}
}
func ProvideFactoryFromConfig(cfg *setting.Cfg, extras []repository.Extra) (repository.Factory, error) {
enabledTypes := make(map[apisprovisioning.RepositoryType]struct{}, len(cfg.ProvisioningRepositoryTypes))
for _, e := range cfg.ProvisioningRepositoryTypes {
enabledTypes[apisprovisioning.RepositoryType(e)] = struct{}{}
}
return repository.ProvideFactory(enabledTypes, extras)
}
+1 -2
View File
@@ -3,7 +3,6 @@ package apiregistry
import (
"github.com/google/wire"
"github.com/grafana/grafana/apps/provisioning/pkg/repository"
dashboardinternal "github.com/grafana/grafana/pkg/registry/apis/dashboard"
"github.com/grafana/grafana/pkg/registry/apis/dashboardsnapshot"
"github.com/grafana/grafana/pkg/registry/apis/datasource"
@@ -32,9 +31,9 @@ var WireSetExts = wire.NewSet(
)
var provisioningExtras = wire.NewSet(
repository.ProvideFactory,
pullrequest.ProvidePullRequestWorker,
webhooks.ProvideWebhooksWithImages,
extras.ProvideFactoryFromConfig,
extras.ProvideProvisioningExtraAPIs,
extras.ProvideExtraWorkers,
)