...
1
16
17 package conditions
18
19 import (
20 cmapi "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
21 cmmeta "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
22 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23 "k8s.io/utils/clock"
24 )
25
26
27
28 func SetCertificateRequestStatusCondition(
29 clock clock.PassiveClock,
30 existingConditions []cmapi.CertificateRequestCondition,
31 patchConditions *[]cmapi.CertificateRequestCondition,
32 conditionType cmapi.CertificateRequestConditionType,
33 status cmmeta.ConditionStatus,
34 reason, message string,
35 ) (*cmapi.CertificateRequestCondition, *metav1.Time) {
36 newCondition := cmapi.CertificateRequestCondition{
37 Type: conditionType,
38 Status: status,
39 Reason: reason,
40 Message: message,
41 }
42
43 nowTime := metav1.NewTime(clock.Now())
44 newCondition.LastTransitionTime = &nowTime
45
46
47 for _, cond := range existingConditions {
48 if cond.Type != conditionType {
49 continue
50 }
51
52
53
54 if cond.Status == status {
55 newCondition.LastTransitionTime = cond.LastTransitionTime
56 }
57 }
58
59
60 for idx, cond := range *patchConditions {
61
62 if cond.Type != conditionType {
63 continue
64 }
65
66
67 (*patchConditions)[idx] = newCondition
68
69 return &newCondition, &nowTime
70 }
71
72
73
74 *patchConditions = append(*patchConditions, newCondition)
75
76 return &newCondition, &nowTime
77 }
78
View as plain text