Skip to content

Commit 6f37936

Browse files
authored
Merge pull request #364 from annasong20/add-go-build-16
Enable backwards-compatibility with controller-runtime v0.15
2 parents d7eaf43 + 6fd1d76 commit 6f37936

File tree

5 files changed

+61
-21
lines changed

5 files changed

+61
-21
lines changed

commonclient/metrics_cr11.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//go:build controllerruntime_11 || controllerruntime_12 || controllerruntime_13 || controllerruntime_14 || controllerruntime_15
2+
3+
package commonclient
4+
5+
import (
6+
"fmt"
7+
8+
ctrl "sigs.k8s.io/controller-runtime"
9+
)
10+
11+
// SetMetricsBindAddress sets the metrics address on options independent of
12+
// manager options version
13+
func SetMetricsBindAddress(options *ctrl.Options, bindAddress string) error {
14+
if options == nil {
15+
return fmt.Errorf("unable to set metrics bind address on non-existent manager options")
16+
}
17+
options.MetricsBindAddress = bindAddress
18+
return nil
19+
}

commonclient/metrics_cr16.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//go:build !(controllerruntime_11 || controllerruntime_12 || controllerruntime_13 || controllerruntime_14 || controllerruntime_15)
2+
3+
package commonclient
4+
5+
import (
6+
"fmt"
7+
8+
ctrl "sigs.k8s.io/controller-runtime"
9+
)
10+
11+
// SetMetricsBindAddress sets the metrics address on options independent of
12+
// manager options version
13+
func SetMetricsBindAddress(options *ctrl.Options, bindAddress string) error {
14+
if options == nil {
15+
return fmt.Errorf("unable to set metrics bind address on non-existent manager options")
16+
}
17+
options.Metrics.BindAddress = bindAddress
18+
return nil
19+
}

examples/guestbook-operator/main.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import (
3030
ctrl "sigs.k8s.io/controller-runtime"
3131
"sigs.k8s.io/controller-runtime/pkg/healthz"
3232
"sigs.k8s.io/controller-runtime/pkg/log/zap"
33-
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
33+
"sigs.k8s.io/kubebuilder-declarative-pattern/commonclient"
3434
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon"
3535

3636
addonsv1alpha1 "sigs.k8s.io/kubebuilder-declarative-pattern/examples/guestbook-operator/api/v1alpha1"
@@ -51,10 +51,8 @@ func init() {
5151
}
5252

5353
func main() {
54-
var metricsAddr string
5554
var enableLeaderElection bool
5655
var probeAddr string
57-
flag.StringVar(&metricsAddr, "metrics-bind-address", ":8080", "The address the metric endpoint binds to.")
5856
flag.StringVar(&probeAddr, "health-probe-bind-address", ":8081", "The address the probe endpoint binds to.")
5957
flag.BoolVar(&enableLeaderElection, "leader-elect", false,
6058
"Enable leader election for controller manager. "+
@@ -68,15 +66,17 @@ func main() {
6866
ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts)))
6967
addon.Init()
7068

71-
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
72-
Scheme: scheme,
73-
Metrics: metricsserver.Options{
74-
BindAddress: "0", // Disable the metrics server
75-
},
69+
mgrOpt := ctrl.Options{
70+
Scheme: scheme,
7671
HealthProbeBindAddress: probeAddr,
7772
LeaderElection: enableLeaderElection,
7873
LeaderElectionID: "c3cffa1a.example.org",
79-
})
74+
}
75+
err := commonclient.SetMetricsBindAddress(&mgrOpt, "0")
76+
if err != nil {
77+
setupLog.Error(err, "unable to configure manager")
78+
}
79+
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), mgrOpt)
8080
if err != nil {
8181
setupLog.Error(err, "unable to start manager")
8282
os.Exit(1)

pkg/patterns/declarative/metrics_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ import (
3838
"k8s.io/klog/v2"
3939
"sigs.k8s.io/controller-runtime/pkg/client/fake"
4040
"sigs.k8s.io/controller-runtime/pkg/manager"
41-
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
4241
"sigs.k8s.io/controller-runtime/pkg/reconcile"
4342
"sigs.k8s.io/yaml"
4443

4544
"sigs.k8s.io/kubebuilder-declarative-pattern/applylib/applyset"
45+
"sigs.k8s.io/kubebuilder-declarative-pattern/commonclient"
4646
"sigs.k8s.io/kubebuilder-declarative-pattern/mockkubeapiserver"
4747
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/declarative/pkg/applier"
4848
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/declarative/pkg/manifest"
@@ -277,10 +277,10 @@ func TestAddIfNotPresent(t *testing.T) {
277277
}
278278

279279
// Create manager
280-
mgrOpt := manager.Options{
281-
Metrics: metricsserver.Options{
282-
BindAddress: "0", // Disable the metrics server, don't open unneeded ports
283-
},
280+
mgrOpt := manager.Options{}
281+
err = commonclient.SetMetricsBindAddress(&mgrOpt, "0")
282+
if err != nil {
283+
t.Error(err)
284284
}
285285
mgr, err := manager.New(restConfig, mgrOpt)
286286
if err != nil {

pkg/test/testreconciler/simpletest/controller_test.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import (
1313
"k8s.io/klog/v2"
1414
"k8s.io/klog/v2/klogr"
1515
ctrl "sigs.k8s.io/controller-runtime"
16-
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
1716

17+
"sigs.k8s.io/kubebuilder-declarative-pattern/commonclient"
1818
"sigs.k8s.io/kubebuilder-declarative-pattern/mockkubeapiserver"
1919
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon/pkg/loaders"
2020
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/declarative"
@@ -68,18 +68,20 @@ func testSimpleReconciler(h *testharness.Harness, testdir string, applier applie
6868
}
6969

7070
logger := klogr.New()
71-
mgr, err := ctrl.NewManager(restConfig, ctrl.Options{
72-
Scheme: scheme,
73-
Metrics: metricsserver.Options{
74-
BindAddress: "0", // Disable the metrics server
75-
},
71+
mgrOpt := ctrl.Options{
72+
Scheme: scheme,
7673
LeaderElection: false,
7774

7875
// MapperProvider provides the rest mapper used to map go types to Kubernetes APIs
7976
MapperProvider: restmapper.NewControllerRESTMapper,
8077

8178
Logger: logger,
82-
})
79+
}
80+
err = commonclient.SetMetricsBindAddress(&mgrOpt, "0")
81+
if err != nil {
82+
h.Errorf("error configuring manager: %v", err)
83+
}
84+
mgr, err := ctrl.NewManager(restConfig, mgrOpt)
8385
if err != nil {
8486
h.Fatalf("error starting manager: %v", err)
8587
}

0 commit comments

Comments
 (0)