Skip to content

Commit e344750

Browse files
authored
Provisioning: move job operator to enterprise and enable PR worker (grafana#111663)
1 parent dc3e7b2 commit e344750

File tree

8 files changed

+29
-271
lines changed

8 files changed

+29
-271
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,9 @@ profile.cov
130130
/public/app/extensions
131131
!/public/app/extensions/.keep
132132

133+
# Enterprise operators
134+
/pkg/operators/enterprise_*
135+
/pkg/operators/**/enterprise_*
133136

134137
debug.test
135138
/examples/*/dist

pkg/operators/provisioning/config.go

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,13 @@ import (
3333

3434
// provisioningControllerConfig contains the configuration that overlaps for the jobs and repo controllers
3535
type provisioningControllerConfig struct {
36-
provisioningClient *client.Clientset
37-
resyncInterval time.Duration
38-
repoFactory repository.Factory
39-
unified resources.ResourceStore
40-
clients resources.ClientFactory
36+
provisioningClient *client.Clientset
37+
resyncInterval time.Duration
38+
repoFactory repository.Factory
39+
unified resources.ResourceStore
40+
clients resources.ClientFactory
41+
tokenExchangeClient *authn.TokenExchangeClient
42+
tlsConfig rest.TLSClientConfig
4143
}
4244

4345
// expects:
@@ -179,11 +181,13 @@ func setupFromConfig(cfg *setting.Cfg, registry prometheus.Registerer) (controll
179181
clients := resources.NewClientFactoryForMultipleAPIServers(configProviders)
180182

181183
return &provisioningControllerConfig{
182-
provisioningClient: provisioningClient,
183-
repoFactory: repoFactory,
184-
unified: unified,
185-
clients: clients,
186-
resyncInterval: operatorSec.Key("resync_interval").MustDuration(60 * time.Second),
184+
provisioningClient: provisioningClient,
185+
repoFactory: repoFactory,
186+
unified: unified,
187+
clients: clients,
188+
resyncInterval: operatorSec.Key("resync_interval").MustDuration(60 * time.Second),
189+
tokenExchangeClient: tokenExchangeClient,
190+
tlsConfig: tlsConfig,
187191
}, nil
188192
}
189193

pkg/operators/provisioning/jobs_operator.go

Lines changed: 0 additions & 243 deletions
This file was deleted.

pkg/operators/register.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,6 @@ import (
77
)
88

99
func init() {
10-
server.RegisterOperator(server.Operator{
11-
Name: "provisioning-jobs",
12-
Description: "Watch provisioning jobs and manage job history cleanup",
13-
RunFunc: provisioning.RunJobController,
14-
})
15-
1610
server.RegisterOperator(server.Operator{
1711
Name: "provisioning-repo",
1812
Description: "Watch provisioning repositories",

pkg/registry/apis/provisioning/webhooks/pullrequest/changes.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ type fileChangeInfo struct {
5555
type evaluator struct {
5656
render ScreenshotRenderer
5757
parsers resources.ParserFactory
58-
urlProvider func(namespace string) string
58+
urlProvider func(ctx context.Context, namespace string) string
5959
metrics screenshotMetrics
6060
}
6161

62-
func NewEvaluator(render ScreenshotRenderer, parsers resources.ParserFactory, urlProvider func(namespace string) string, registry prometheus.Registerer) Evaluator {
62+
func NewEvaluator(render ScreenshotRenderer, parsers resources.ParserFactory, urlProvider func(ctx context.Context, namespace string) string, registry prometheus.Registerer) Evaluator {
6363
metrics := registerScreenshotMetrics(registry)
6464
return &evaluator{
6565
render: render,
@@ -80,7 +80,7 @@ func (e *evaluator) Evaluate(ctx context.Context, repo repository.Reader, opts p
8080
rendererAvailable := e.render.IsAvailable(ctx)
8181
shouldRender := rendererAvailable && len(changes) == 1 && cfg.Spec.GitHub.GenerateDashboardPreviews
8282
info := changeInfo{
83-
GrafanaBaseURL: e.urlProvider(cfg.Namespace),
83+
GrafanaBaseURL: e.urlProvider(ctx, cfg.Namespace),
8484
MissingImageRenderer: !rendererAvailable,
8585
}
8686

pkg/registry/apis/provisioning/webhooks/pullrequest/changes_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,7 @@ func TestCalculateChanges(t *testing.T) {
754754

755755
tt.setupMocks(parser, reader, progress, renderer, parserFactory)
756756

757-
evaluator := NewEvaluator(renderer, parserFactory, func(_ string) string {
757+
evaluator := NewEvaluator(renderer, parserFactory, func(_ context.Context, _ string) string {
758758
if tt.grafanaBaseURL != "" {
759759
return tt.grafanaBaseURL
760760
}

pkg/registry/apis/provisioning/webhooks/pullrequest/worker.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func ProvidePullRequestWorker(
2828
configProvider apiserver.RestConfigProvider,
2929
registry prometheus.Registerer,
3030
) *PullRequestWorker {
31-
urlProvider := func(_ string) string {
31+
urlProvider := func(_ context.Context, _ string) string {
3232
return cfg.AppURL
3333
}
3434

pkg/registry/apis/provisioning/webhooks/register.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import (
2626
type WebhookExtraBuilder struct {
2727
provisioningapis.ExtraBuilder
2828
isPublic bool
29-
urlProvider func(namespace string) string
29+
urlProvider func(ctx context.Context, namespace string) string
3030
}
3131

3232
// FIXME: separate the URL provider from connector to simplify operators
@@ -38,7 +38,7 @@ func (b *WebhookExtraBuilder) WebhookURL(ctx context.Context, r *provisioning.Re
3838
gvr := provisioning.RepositoryResourceInfo.GroupVersionResource()
3939
webhookURL := fmt.Sprintf(
4040
"%sapis/%s/%s/namespaces/%s/%s/%s/webhook",
41-
b.urlProvider(r.GetNamespace()),
41+
b.urlProvider(ctx, r.GetNamespace()),
4242
gvr.Group,
4343
gvr.Version,
4444
r.GetNamespace(),
@@ -66,10 +66,10 @@ func ProvideWebhooksWithImages(
6666
configProvider apiserver.RestConfigProvider,
6767
registry prometheus.Registerer,
6868
) *WebhookExtraBuilder {
69-
urlProvider := func(_ string) string {
69+
urlProvider := func(_ context.Context, _ string) string {
7070
return cfg.AppURL
7171
}
72-
isPublic := isPublicURL(urlProvider(""))
72+
isPublic := isPublicURL(urlProvider(context.Background(), ""))
7373

7474
return &WebhookExtraBuilder{
7575
isPublic: isPublic,
@@ -102,11 +102,11 @@ func ProvideWebhooksWithImages(
102102
}
103103

104104
func ProvideWebhooks(provisioningURL string, registry prometheus.Registerer) *WebhookExtraBuilder {
105-
urlProvider := func(_ string) string {
105+
urlProvider := func(_ context.Context, _ string) string {
106106
return provisioningURL
107107
}
108108

109-
isPublic := isPublicURL(urlProvider(""))
109+
isPublic := isPublicURL(urlProvider(context.Background(), ""))
110110

111111
return &WebhookExtraBuilder{
112112
isPublic: isPublic,
@@ -131,7 +131,7 @@ type WebhookExtraWithImages struct {
131131
func NewWebhookExtraWithImages(
132132
render *renderConnector,
133133
webhook *webhookConnector,
134-
urlProvider func(namespace string) string,
134+
urlProvider func(ctx context.Context, namespace string) string,
135135
workers []jobs.Worker,
136136
) *WebhookExtraWithImages {
137137
return &WebhookExtraWithImages{

0 commit comments

Comments
 (0)