Skip to content

Commit e6d5a38

Browse files
Merge pull request #2674 from pperiyasamy/cert-signer-controller-status
OCPBUGS-54238: Update CSR status condition appropriately
2 parents bcf7b32 + a33bca4 commit e6d5a38

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

pkg/controller/signer/signer-controller.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"log"
7+
"time"
78

89
cnoclient "github.com/openshift/cluster-network-operator/pkg/client"
910
"github.com/openshift/cluster-network-operator/pkg/controller/statusmanager"
@@ -251,7 +252,7 @@ func signerFailure(r *ReconcileCSR, csr *csrv1.CertificateSigningRequest, reason
251252

252253
// Update the status conditions on the CSR object
253254
func updateCSRStatusConditions(r *ReconcileCSR, csr *csrv1.CertificateSigningRequest, reason string, message string) {
254-
csr.Status.Conditions = append(csr.Status.Conditions, csrv1.CertificateSigningRequestCondition{
255+
setCertificateSigningRequestCondition(&csr.Status.Conditions, csrv1.CertificateSigningRequestCondition{
255256
Type: csrv1.CertificateFailed,
256257
Status: "True",
257258
Reason: reason,
@@ -264,3 +265,24 @@ func updateCSRStatusConditions(r *ReconcileCSR, csr *csrv1.CertificateSigningReq
264265
fmt.Sprintf("Unable to update csr: %v", err))
265266
}
266267
}
268+
269+
func setCertificateSigningRequestCondition(conditions *[]csrv1.CertificateSigningRequestCondition, newCondition csrv1.CertificateSigningRequestCondition) {
270+
if conditions == nil {
271+
conditions = &[]csrv1.CertificateSigningRequestCondition{}
272+
}
273+
var existingCondition *csrv1.CertificateSigningRequestCondition
274+
for i := range *conditions {
275+
if (*conditions)[i].Type == newCondition.Type {
276+
existingCondition = &(*conditions)[i]
277+
}
278+
}
279+
if existingCondition == nil {
280+
newCondition.LastTransitionTime = metav1.NewTime(time.Now())
281+
*conditions = append(*conditions, newCondition)
282+
return
283+
}
284+
existingCondition.Status = newCondition.Status
285+
existingCondition.Reason = newCondition.Reason
286+
existingCondition.Message = newCondition.Message
287+
existingCondition.LastTransitionTime = metav1.NewTime(time.Now())
288+
}

pkg/controller/signer/signer_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,13 @@ func TestSigner_reconciler_withInvalidUserName(t *testing.T) {
158158
g.Expect(len(csrConditions)).To(Equal(1))
159159
g.Expect(csrConditions[0].Reason).To(Equal("CSRInvalidUser"))
160160
g.Expect(csrConditions[0].Type).To(Equal(certificatev1.CertificateFailed))
161+
162+
co, _, err = getStatuses(client, "testing")
163+
if err != nil {
164+
t.Fatalf("error getting network.operator: %v", err)
165+
}
166+
g.Expect(err).NotTo(HaveOccurred())
167+
g.Expect(len(co.Status.Conditions)).To(BeZero())
161168
}
162169

163170
func generateCSR() (string, error) {

0 commit comments

Comments
 (0)