Skip to content

Commit de7fbf8

Browse files
authored
factor out controller initialization logic (#41)
1 parent 134026b commit de7fbf8

File tree

2 files changed

+46
-29
lines changed

2 files changed

+46
-29
lines changed

cmd/main.go

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import (
3434
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
3535
"sigs.k8s.io/controller-runtime/pkg/webhook"
3636
kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1"
37-
"sigs.k8s.io/kueue/pkg/controller/jobframework"
3837

3938
workloadv1beta2 "github.com/project-codeflare/appwrapper/api/v1beta2"
4039
"github.com/project-codeflare/appwrapper/internal/controller"
@@ -133,38 +132,14 @@ func main() {
133132
os.Exit(1)
134133
}
135134

136-
if err := controller.WorkloadReconciler(
137-
mgr.GetClient(),
138-
mgr.GetEventRecorderFor("kueue"),
139-
jobframework.WithManageJobsWithoutQueueName(config.ManageJobsWithoutQueueName),
140-
).SetupWithManager(mgr); err != nil {
141-
setupLog.Error(err, "Unable to create controller", "controller", "Workload")
142-
os.Exit(1)
143-
}
144-
145-
if err = (&controller.AppWrapperReconciler{
146-
Client: mgr.GetClient(),
147-
Scheme: mgr.GetScheme(),
148-
Config: &config,
149-
}).SetupWithManager(mgr); err != nil {
150-
setupLog.Error(err, "unable to create controller", "controller", "AppWrapper")
151-
os.Exit(1)
152-
}
153-
if os.Getenv("ENABLE_WEBHOOKS") != "false" {
154-
if err = (&controller.AppWrapperWebhook{
155-
Config: &config,
156-
}).SetupWebhookWithManager(mgr); err != nil {
157-
setupLog.Error(err, "unable to create webhook", "webhook", "AppWrapper")
158-
os.Exit(1)
159-
}
160-
}
161-
//+kubebuilder:scaffold:builder
162135
ctx := ctrl.SetupSignalHandler()
163-
if err := jobframework.SetupWorkloadOwnerIndex(ctx, mgr.GetFieldIndexer(), controller.GVK); err != nil {
164-
setupLog.Error(err, "Setting up indexes", "GVK", controller.GVK)
136+
err = controller.SetupWithManager(ctx, mgr, &config)
137+
if err != nil {
138+
setupLog.Error(err, "unable to start appwrapper controllers")
165139
os.Exit(1)
166140
}
167141

142+
//+kubebuilder:scaffold:builder
168143
if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil {
169144
setupLog.Error(err, "unable to set up health check")
170145
os.Exit(1)

internal/controller/appwrapper_config.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,49 @@ limitations under the License.
1616

1717
package controller
1818

19+
import (
20+
"context"
21+
"fmt"
22+
"os"
23+
24+
ctrl "sigs.k8s.io/controller-runtime"
25+
"sigs.k8s.io/kueue/pkg/controller/jobframework"
26+
)
27+
1928
type AppWrapperConfig struct {
2029
ManageJobsWithoutQueueName bool `json:"manageJobsWithoutQueueName,omitempty"`
2130
ServiceAccountName string `json:"serviceAccountName,omitempty"`
2231
}
32+
33+
// SetupWithManager creates and configures all components of the AppWrapper controller
34+
func SetupWithManager(ctx context.Context, mgr ctrl.Manager, config *AppWrapperConfig) error {
35+
if err := WorkloadReconciler(
36+
mgr.GetClient(),
37+
mgr.GetEventRecorderFor("kueue"),
38+
jobframework.WithManageJobsWithoutQueueName(config.ManageJobsWithoutQueueName),
39+
).SetupWithManager(mgr); err != nil {
40+
return fmt.Errorf("workload controller: %w", err)
41+
}
42+
43+
if err := (&AppWrapperReconciler{
44+
Client: mgr.GetClient(),
45+
Scheme: mgr.GetScheme(),
46+
Config: config,
47+
}).SetupWithManager(mgr); err != nil {
48+
return fmt.Errorf("appwrapper controller: %w", err)
49+
}
50+
51+
if os.Getenv("ENABLE_WEBHOOKS") != "false" {
52+
if err := (&AppWrapperWebhook{
53+
Config: config,
54+
}).SetupWebhookWithManager(mgr); err != nil {
55+
return fmt.Errorf("appwrapper webhook: %w", err)
56+
}
57+
}
58+
59+
if err := jobframework.SetupWorkloadOwnerIndex(ctx, mgr.GetFieldIndexer(), GVK); err != nil {
60+
return fmt.Errorf("appwrapper indexer: %w", err)
61+
}
62+
63+
return nil
64+
}

0 commit comments

Comments
 (0)