...
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 SetIssuerStatusCondition(
29 clock clock.PassiveClock,
30 existingConditions []cmapi.IssuerCondition,
31 patchConditions *[]cmapi.IssuerCondition,
32 observedGeneration int64,
33 conditionType cmapi.IssuerConditionType,
34 status cmmeta.ConditionStatus,
35 reason, message string,
36 ) (*cmapi.IssuerCondition, *metav1.Time) {
37 newCondition := cmapi.IssuerCondition{
38 Type: conditionType,
39 Status: status,
40 Reason: reason,
41 Message: message,
42 ObservedGeneration: observedGeneration,
43 }
44
45 nowTime := metav1.NewTime(clock.Now())
46 newCondition.LastTransitionTime = &nowTime
47
48
49 for _, cond := range existingConditions {
50 if cond.Type != conditionType {
51 continue
52 }
53
54
55
56 if cond.Status == status {
57 newCondition.LastTransitionTime = cond.LastTransitionTime
58 }
59 }
60
61
62 for idx, cond := range *patchConditions {
63
64 if cond.Type != conditionType {
65 continue
66 }
67
68
69 (*patchConditions)[idx] = newCondition
70
71 return &newCondition, &nowTime
72 }
73
74
75
76 *patchConditions = append(*patchConditions, newCondition)
77
78 return &newCondition, &nowTime
79 }
80
81 func GetIssuerStatusCondition(
82 conditions []cmapi.IssuerCondition,
83 conditionType cmapi.IssuerConditionType,
84 ) *cmapi.IssuerCondition {
85 for _, cond := range conditions {
86 if cond.Type == conditionType {
87 return &cond
88 }
89 }
90 return nil
91 }
92
View as plain text