Skip to content
This repository was archived by the owner on Apr 24, 2024. It is now read-only.

Commit fc4c612

Browse files
authored
Merge pull request #1 from ncdc/andy
Refactor a bit
2 parents 2c1decf + 94d5532 commit fc4c612

File tree

2 files changed

+55
-47
lines changed

2 files changed

+55
-47
lines changed

controllers/configmap_controller.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package controllers
2+
3+
import (
4+
"context"
5+
6+
kcpclient "github.com/kcp-dev/apimachinery/pkg/client"
7+
corev1 "k8s.io/api/core/v1"
8+
ctrl "sigs.k8s.io/controller-runtime"
9+
"sigs.k8s.io/controller-runtime/pkg/client"
10+
"sigs.k8s.io/controller-runtime/pkg/log"
11+
)
12+
13+
type ConfigMapReconciler struct {
14+
client.Client
15+
}
16+
17+
func (r *ConfigMapReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
18+
log := log.FromContext(ctx).WithValues("cluster", req.ObjectKey.Cluster.String())
19+
20+
ctx = kcpclient.WithCluster(ctx, req.ObjectKey.Cluster)
21+
22+
var configmap corev1.ConfigMap
23+
if err := r.Get(ctx, req.ObjectKey, &configmap); err != nil {
24+
log.Error(err, "unable to get configmap")
25+
return ctrl.Result{}, err
26+
}
27+
28+
log.Info("Retrieved configmap")
29+
30+
return ctrl.Result{}, nil
31+
}
32+
33+
func (r *ConfigMapReconciler) SetupWithManager(mgr ctrl.Manager) error {
34+
return ctrl.NewControllerManagedBy(mgr).
35+
For(&corev1.ConfigMap{}).
36+
Complete(r)
37+
}

main.go

Lines changed: 18 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ limitations under the License.
1717
package main
1818

1919
import (
20-
"context"
2120
"os"
2221

23-
corev1 "k8s.io/api/core/v1"
24-
"k8s.io/apimachinery/pkg/runtime"
25-
22+
"github.com/fabianvf/kcp-cr-example/controllers"
2623
kcpcache "github.com/kcp-dev/apimachinery/pkg/cache"
2724
kcpclient "github.com/kcp-dev/apimachinery/pkg/client"
2825
"github.com/kcp-dev/logicalcluster"
26+
corev1 "k8s.io/api/core/v1"
27+
"k8s.io/apimachinery/pkg/runtime"
28+
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
2929

3030
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
3131
"k8s.io/client-go/rest"
@@ -34,52 +34,36 @@ import (
3434
"sigs.k8s.io/controller-runtime/pkg/cache"
3535
"sigs.k8s.io/controller-runtime/pkg/client"
3636
"sigs.k8s.io/controller-runtime/pkg/cluster"
37-
"sigs.k8s.io/controller-runtime/pkg/controller"
38-
39-
"sigs.k8s.io/controller-runtime/pkg/kcp"
40-
"sigs.k8s.io/controller-runtime/pkg/log"
4137
"sigs.k8s.io/controller-runtime/pkg/log/zap"
42-
"sigs.k8s.io/controller-runtime/pkg/source"
4338
)
4439

4540
var (
41+
scheme = runtime.NewScheme()
4642
setupLog = ctrl.Log.WithName("setup")
4743
)
4844

49-
type reconciler struct {
50-
client.Client
51-
scheme *runtime.Scheme
52-
}
53-
54-
func (r *reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
55-
log := log.FromContext(ctx).WithValues("cluster", req.ObjectKey.Cluster.String())
56-
57-
ctx = kcpclient.WithCluster(ctx, req.ObjectKey.Cluster)
58-
59-
var configmap corev1.ConfigMap
60-
if err := r.Get(ctx, req.ObjectKey, &configmap); err != nil {
61-
log.Error(err, "unable to get configmap")
62-
return ctrl.Result{}, err
63-
}
64-
log.Info("Retrieved configmap")
65-
66-
return ctrl.Result{}, nil
45+
func init() {
46+
utilruntime.Must(corev1.AddToScheme(scheme))
6747
}
6848

6949
func main() {
70-
7150
ctrl.SetLogger(zap.New())
7251

7352
cfg := ctrl.GetConfigOrDie()
53+
7454
httpClient, err := rest.HTTPClientFor(cfg)
7555
if err != nil {
7656
setupLog.Error(err, "unable to build http client")
7757
os.Exit(1)
7858
}
79-
clusterRoundTripper := kcpclient.NewClusterRoundTripper(httpClient.Transport)
80-
httpClient.Transport = clusterRoundTripper
59+
60+
httpClient.Transport = kcpclient.NewClusterRoundTripper(httpClient.Transport)
61+
8162
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
63+
Scheme: scheme,
8264
LeaderElection: false,
65+
// LeaderElectionNamespace: "default",
66+
// LeaderElectionID: "kcp-example",
8367
NewCache: func(config *rest.Config, opts cache.Options) (cache.Cache, error) {
8468
c := rest.CopyConfig(config)
8569
c.Host += "/clusters/*"
@@ -96,23 +80,10 @@ func main() {
9680
os.Exit(1)
9781
}
9882

99-
err = corev1.AddToScheme(mgr.GetScheme())
100-
if err != nil {
101-
setupLog.Error(err, "unable to add scheme")
102-
os.Exit(1)
103-
}
104-
105-
c, err := controller.New("kcp-controller", mgr, controller.Options{
106-
Reconciler: &reconciler{
107-
Client: mgr.GetClient(),
108-
scheme: mgr.GetScheme(),
109-
}})
110-
if err != nil {
111-
setupLog.Error(err, "unable to set up individual controller")
112-
os.Exit(1)
113-
}
114-
if err := c.Watch(&source.Kind{Type: &corev1.ConfigMap{}}, &kcp.EnqueueRequestForObject{}); err != nil {
115-
setupLog.Error(err, "unable to watch configmaps")
83+
if err = (&controllers.ConfigMapReconciler{
84+
Client: mgr.GetClient(),
85+
}).SetupWithManager(mgr); err != nil {
86+
setupLog.Error(err, "unable to create controller", "controller", "ConfigMap")
11687
os.Exit(1)
11788
}
11889

0 commit comments

Comments
 (0)