/
condition_type.go
54 lines (46 loc) · 1.43 KB
/
condition_type.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package v1alpha2
import (
"sort"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
const (
HMetaReady string = "HMetaReady"
HStoreReady string = "HStoreReady"
HServerReady string = "HServerReady"
GatewayReady string = "GatewayReady"
ConsoleReady string = "ConsoleReady"
Ready string = "Ready"
)
func (hdb *HStreamDB) IsConditionTrue(conditionType string) bool {
_, condition := hdb.GetCondition(conditionType)
if condition == nil {
return false
}
return condition.Status == metav1.ConditionTrue
}
func (hdb *HStreamDB) GetCondition(conditionType string) (int, *metav1.Condition) {
for i := range hdb.Status.Conditions {
c := hdb.Status.Conditions[i]
if c.Type == conditionType {
return i, &c
}
}
return -1, nil
}
func (hdb *HStreamDB) SetCondition(condition metav1.Condition) {
now := metav1.Now()
condition.LastTransitionTime = now
condition.ObservedGeneration = hdb.Generation
index, storeCondition := hdb.GetCondition(condition.Type)
if index != -1 {
if storeCondition.Status == condition.Status && !storeCondition.LastTransitionTime.IsZero() {
condition.LastTransitionTime = storeCondition.LastTransitionTime
}
hdb.Status.Conditions[index] = condition
} else {
hdb.Status.Conditions = append(hdb.Status.Conditions, condition)
}
sort.Slice(hdb.Status.Conditions, func(i, j int) bool {
return hdb.Status.Conditions[j].LastTransitionTime.Before(&hdb.Status.Conditions[i].LastTransitionTime)
})
}