Provisioning: add webhook support in API Server and Operator (#110673)
* Provisioning: add webhook support in API Server * updating Extra interface * adding extra with workers interface * reverting extraWithWorkers in RegisterAPIService * adding extra job worker provider * adding new extra job provider * Wire things differently * Remove unused GetJobs * Pass url variable as string * Support webhooks in controller * Fix condition * Change the naming --------- Co-authored-by: Roberto Jimenez Sanchez <roberto.jimenez@grafana.com>
This commit is contained in:
co-authored by
Roberto Jimenez Sanchez
parent
32e997d282
commit
76976ef648
@@ -106,3 +106,19 @@ func (r *screenshotRenderer) RenderScreenshot(ctx context.Context, repo provisio
|
||||
return fmt.Sprintf("apis/%s/namespaces/%s/repositories/%s/render/%s",
|
||||
provisioning.APIVERSION, repo.Namespace, repo.Name, rsp.Uid), nil
|
||||
}
|
||||
|
||||
type NoOpRenderer struct{}
|
||||
|
||||
func NewNoOpRenderer() ScreenshotRenderer {
|
||||
return &NoOpRenderer{}
|
||||
}
|
||||
|
||||
func (r *NoOpRenderer) IsAvailable(_ context.Context) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (r *NoOpRenderer) RenderScreenshot(
|
||||
_ context.Context, _ provisioning.ResourceRepositoryInfo, _ string, _ url.Values,
|
||||
) (string, error) {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
@@ -12,8 +12,33 @@ import (
|
||||
"github.com/grafana/grafana/apps/provisioning/pkg/repository"
|
||||
"github.com/grafana/grafana/pkg/registry/apis/provisioning/jobs"
|
||||
"github.com/grafana/grafana/pkg/registry/apis/provisioning/resources"
|
||||
"github.com/grafana/grafana/pkg/services/apiserver"
|
||||
"github.com/grafana/grafana/pkg/services/rendering"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
||||
)
|
||||
|
||||
func ProvidePullRequestWorker(
|
||||
cfg *setting.Cfg,
|
||||
renderer rendering.Service,
|
||||
blobstore resource.ResourceClient,
|
||||
configProvider apiserver.RestConfigProvider,
|
||||
) *PullRequestWorker {
|
||||
urlProvider := func(_ string) string {
|
||||
return cfg.AppURL
|
||||
}
|
||||
|
||||
// FIXME: we should create providers for client and parsers, so that we don't have
|
||||
// multiple connections for webhooks
|
||||
clients := resources.NewClientFactory(configProvider)
|
||||
parsers := resources.NewParserFactory(clients)
|
||||
screenshotRenderer := NewScreenshotRenderer(renderer, blobstore)
|
||||
evaluator := NewEvaluator(screenshotRenderer, parsers, urlProvider)
|
||||
commenter := NewCommenter()
|
||||
|
||||
return NewPullRequestWorker(evaluator, commenter)
|
||||
}
|
||||
|
||||
//go:generate mockery --name=PullRequestRepo --structname=MockPullRequestRepo --inpackage --filename=mock_pullrequest_repo.go --with-expecter
|
||||
type PullRequestRepo interface {
|
||||
Config() *provisioning.Repository
|
||||
|
||||
Reference in New Issue
Block a user