Adds Denied to certificaterequests reporter

Signed-off-by: joshvanl <vleeuwenjoshua@gmail.com>
This commit is contained in:
joshvanl
2021-04-13 16:22:57 +00:00
committed by jetstack-bot
parent 7f8b9825e2
commit 97f83bf5af
3 changed files with 39 additions and 0 deletions
+1
View File
@@ -270,6 +270,7 @@ func CertificateRequestReadyReason(cr *cmapi.CertificateRequest) string {
cmapi.CertificateRequestReasonFailed,
cmapi.CertificateRequestReasonIssued,
cmapi.CertificateRequestReasonPending,
cmapi.CertificateRequestReasonDenied,
} {
for _, con := range cr.Status.Conditions {
if con.Type == cmapi.CertificateRequestConditionReady &&
@@ -59,6 +59,20 @@ func (r *Reporter) Failed(cr *cmapi.CertificateRequest, err error, reason, messa
}
func (r *Reporter) Denied(cr *cmapi.CertificateRequest) {
// Set the FailureTime to c.clock.Now(), only if it has not been already set.
if cr.Status.FailureTime == nil {
nowTime := metav1.NewTime(r.clock.Now())
cr.Status.FailureTime = &nowTime
}
message := "The CertificateRequest was denied by an approval controller"
r.recorder.Event(cr, corev1.EventTypeWarning, cmapi.CertificateRequestReasonDenied, message)
apiutil.SetCertificateRequestCondition(cr, cmapi.CertificateRequestConditionReady,
cmmeta.ConditionFalse, cmapi.CertificateRequestReasonDenied, message)
}
func (r *Reporter) InvalidRequest(cr *cmapi.CertificateRequest, reason, message string) {
apiutil.SetCertificateRequestCondition(cr, cmapi.CertificateRequestConditionInvalidRequest,
cmmeta.ConditionTrue, reason, message)
@@ -100,6 +100,14 @@ func TestReporter(t *testing.T) {
LastTransitionTime: &nowMetaTime,
}
deniedReadyCondition := cmapi.CertificateRequestCondition{
Type: cmapi.CertificateRequestConditionReady,
Reason: "RequestDenied",
Message: "The CertificateRequest was denied by an approval controller",
Status: "False",
LastTransitionTime: &nowMetaTime,
}
tests := map[string]reporterT{
"a failed report should update the conditions and set FailureTime as it is nil": {
certificateRequest: gen.CertificateRequestFrom(baseCR),
@@ -204,6 +212,20 @@ func TestReporter(t *testing.T) {
call: "ready",
},
"a denied report should update the conditions and send an event, but not update failure time if existing": {
certificateRequest: gen.CertificateRequestFrom(baseCR,
gen.SetCertificateRequestStatusCondition(deniedReadyCondition),
gen.SetCertificateRequestFailureTime(oldMetaTime),
),
expectedEvents: []string{
"Warning RequestDenied The CertificateRequest was denied by an approval controller",
},
expectedConditions: []cmapi.CertificateRequestCondition{deniedReadyCondition},
expectedFailureTime: &oldMetaTime,
call: "denied",
},
}
for name, test := range tests {
@@ -228,6 +250,8 @@ func (tt *reporterT) runTest(t *testing.T) {
case "pending":
reporter.Pending(tt.certificateRequest, tt.err,
tt.reason, tt.message)
case "denied":
reporter.Denied(tt.certificateRequest)
default:
reporter.Ready(tt.certificateRequest)
}