From f28afd00acbd1d785fca45f9d079fac4b3cc061e Mon Sep 17 00:00:00 2001 From: James Munnelly Date: Mon, 11 Sep 2017 00:55:25 +0100 Subject: [PATCH] Only update resource status if a change has occurred --- pkg/controller/certificates/sync.go | 10 +++++++--- pkg/controller/issuers/sync.go | 5 +++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/pkg/controller/certificates/sync.go b/pkg/controller/certificates/sync.go index c16769fc3..420ae2a42 100644 --- a/pkg/controller/certificates/sync.go +++ b/pkg/controller/certificates/sync.go @@ -3,6 +3,7 @@ package certificates import ( "crypto/x509" "fmt" + "reflect" "time" api "k8s.io/api/core/v1" @@ -314,12 +315,15 @@ func (c *Controller) renew(issuer issuer.Interface, crt *v1alpha1.Certificate) e return nil } -func (c *Controller) updateCertificateStatus(iss *v1alpha1.Certificate, status v1alpha1.CertificateStatus) error { - updateCertificate := iss.DeepCopy() +func (c *Controller) updateCertificateStatus(crt *v1alpha1.Certificate, status v1alpha1.CertificateStatus) error { + updateCertificate := crt.DeepCopy() updateCertificate.Status = status + if reflect.DeepEqual(crt.Status, updateCertificate.Status) { + return nil + } // TODO: replace Update call with UpdateStatus. This requires a custom API // server with the /status subresource enabled and/or subresource support // for CRDs (https://github.com/kubernetes/kubernetes/issues/38113) - _, err := c.cmClient.CertmanagerV1alpha1().Certificates(iss.Namespace).Update(updateCertificate) + _, err := c.cmClient.CertmanagerV1alpha1().Certificates(crt.Namespace).Update(updateCertificate) return err } diff --git a/pkg/controller/issuers/sync.go b/pkg/controller/issuers/sync.go index 73ae984ca..afb007827 100644 --- a/pkg/controller/issuers/sync.go +++ b/pkg/controller/issuers/sync.go @@ -1,6 +1,8 @@ package issuers import ( + "reflect" + "github.com/golang/glog" "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/errors" @@ -47,6 +49,9 @@ func (c *Controller) Sync(iss *v1alpha1.Issuer) (err error) { func (c *Controller) updateIssuerStatus(iss *v1alpha1.Issuer, status v1alpha1.IssuerStatus) error { updateIssuer := iss.DeepCopy() updateIssuer.Status = status + if reflect.DeepEqual(iss.Status, updateIssuer.Status) { + return nil + } // TODO: replace Update call with UpdateStatus. This requires a custom API // server with the /status subresource enabled and/or subresource support // for CRDs (https://github.com/kubernetes/kubernetes/issues/38113)