Skip to content

Commit 6a91a2d

Browse files
committed
Use controllerutil.SetControllerReference for Certificates
1 parent ea75e90 commit 6a91a2d

File tree

3 files changed

+23
-13
lines changed

3 files changed

+23
-13
lines changed

certs/create.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,17 @@ import (
1111
"github.com/go-logr/logr"
1212

1313
"sigs.k8s.io/controller-runtime/pkg/client"
14+
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
1415

1516
corev1 "k8s.io/api/core/v1"
1617
"k8s.io/apimachinery/pkg/api/errors"
1718
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
19+
"k8s.io/apimachinery/pkg/runtime"
1820
)
1921

2022
// CreateCertificate creates a Certificate resource for an appropriately
2123
// labeled service
22-
func CreateCertificate(ctx context.Context, l logr.Logger, c client.Client, svc corev1.Service, secretName string) error {
24+
func CreateCertificate(ctx context.Context, l logr.Logger, c client.Client, svc corev1.Service, secretName string, scheme *runtime.Scheme) error {
2325
certName := CertificateName(svc.Name)
2426

2527
cert := cmapi.Certificate{}
@@ -30,7 +32,7 @@ func CreateCertificate(ctx context.Context, l logr.Logger, c client.Client, svc
3032
if err != nil {
3133
if errors.IsNotFound(err) {
3234
l.V(1).Info("Certificate resource doesn't exist, creating")
33-
return newCertificate(ctx, c, certName, secretName, svc)
35+
return newCertificate(ctx, c, certName, secretName, svc, scheme)
3436
}
3537

3638
l.V(1).Info("Error looking up certificate resource", "error", err)
@@ -39,7 +41,7 @@ func CreateCertificate(ctx context.Context, l logr.Logger, c client.Client, svc
3941
}
4042

4143
origCert := cert.DeepCopy()
42-
err = updateCertificate(&cert, svc)
44+
err = updateCertificate(&cert, svc, scheme)
4345
if err != nil {
4446
return err
4547
}
@@ -50,7 +52,7 @@ func CreateCertificate(ctx context.Context, l logr.Logger, c client.Client, svc
5052
return nil
5153
}
5254

53-
func newCertificate(ctx context.Context, c client.Client, certName, secretName string, svc corev1.Service) error {
55+
func newCertificate(ctx context.Context, c client.Client, certName, secretName string, svc corev1.Service, scheme *runtime.Scheme) error {
5456
cert := &cmapi.Certificate{
5557
ObjectMeta: metav1.ObjectMeta{
5658
Name: certName,
@@ -67,14 +69,14 @@ func newCertificate(ctx context.Context, c client.Client, certName, secretName s
6769
},
6870
}
6971

70-
if err := updateCertificate(cert, svc); err != nil {
72+
if err := updateCertificate(cert, svc, scheme); err != nil {
7173
return err
7274
}
7375

7476
return c.Create(ctx, cert)
7577
}
7678

77-
func updateCertificate(cert *cmapi.Certificate, svc corev1.Service) error {
79+
func updateCertificate(cert *cmapi.Certificate, svc corev1.Service, scheme *runtime.Scheme) error {
7880
svcName := fmt.Sprintf("%s.%s", svc.Name, svc.Namespace)
7981
svcDNSNames := []string{
8082
svc.Name,
@@ -103,9 +105,7 @@ func updateCertificate(cert *cmapi.Certificate, svc corev1.Service) error {
103105
}
104106

105107
// Set ownerreference on certificate to service
106-
cert.OwnerReferences = []metav1.OwnerReference{
107-
*metav1.NewControllerRef(&svc, corev1.SchemeGroupVersion.WithKind("Service")),
108-
}
108+
controllerutil.SetControllerReference(&svc, cert, scheme)
109109

110110
return nil
111111
}

certs/create_test.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import (
1919
"sigs.k8s.io/controller-runtime/pkg/client/fake"
2020
)
2121

22+
var scheme = createScheme()
23+
2224
func TestCerts_CreateCertificate(t *testing.T) {
2325
ctx := context.Background()
2426
l := testr.New(t)
@@ -57,7 +59,7 @@ func TestCerts_CreateCertificate(t *testing.T) {
5759
c := prepareTest(t, testCfg{
5860
initObjs: tc.objects,
5961
})
60-
err := CreateCertificate(ctx, l, c, tc.svc, tc.secretName)
62+
err := CreateCertificate(ctx, l, c, tc.svc, tc.secretName, scheme)
6163
assert.Equal(t, tc.err, err)
6264
if err == nil {
6365
verifyCertificate(t, ctx, c, fmt.Sprintf("%s-tls", tc.svc.Name), tc.secretName, &tc.svc)
@@ -83,7 +85,7 @@ func TestCerts_newCertificate(t *testing.T) {
8385
}
8486

8587
for _, tc := range tests {
86-
err := newCertificate(ctx, c, tc.certName, tc.secretName, tc.svc)
88+
err := newCertificate(ctx, c, tc.certName, tc.secretName, tc.svc, scheme)
8789
assert.Equal(t, tc.err, err)
8890
if err == nil {
8991
verifyCertificate(t, ctx, c, tc.certName, tc.secretName, &tc.svc)
@@ -95,7 +97,7 @@ func TestCerts_updateCertificate(t *testing.T) {
9597
cert := cmapi.Certificate{}
9698
cert.Name = "test-cert"
9799
svc := prepareService("test-svc", "test-ns")
98-
err := updateCertificate(&cert, svc)
100+
err := updateCertificate(&cert, svc, scheme)
99101

100102
assert.ErrorIs(t, err, nil)
101103
assert.Equal(t, dnsNames(&svc), cert.Spec.DNSNames)
@@ -221,3 +223,11 @@ func prepareTest(t *testing.T, cfg testCfg) client.Client {
221223

222224
return client
223225
}
226+
227+
func createScheme() *runtime.Scheme {
228+
scheme := runtime.NewScheme()
229+
utilruntime.Must(clientgoscheme.AddToScheme(scheme))
230+
utilruntime.Must(cmapi.AddToScheme(scheme))
231+
utilruntime.Must(extv1.AddToScheme(scheme))
232+
return scheme
233+
}

controllers/service_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ func (r *ServiceReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
9696

9797
l.V(1).Info("Reconciling certificate for service")
9898

99-
err = certs.CreateCertificate(ctx, l, r.Client, svc, secretName)
99+
err = certs.CreateCertificate(ctx, l, r.Client, svc, secretName, r.Scheme)
100100
if err != nil {
101101
return ctrl.Result{}, err
102102
}

0 commit comments

Comments
 (0)