/
conditions.go
59 lines (51 loc) · 1.86 KB
/
conditions.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
55
56
57
58
59
package status
import (
"github.com/flightctl/flightctl/api/v1alpha1"
"github.com/flightctl/flightctl/internal/util"
)
var (
DeviceConditionBootstrapReason string = "Bootstrap"
DeviceConditionExpectedReason string = "AsExpected"
)
func DefaultConditions() *[]v1alpha1.Condition {
return &[]v1alpha1.Condition{
{
Type: v1alpha1.DeviceProgressing,
Status: v1alpha1.ConditionStatusTrue,
Reason: &DeviceConditionBootstrapReason,
},
{
Type: v1alpha1.DeviceAvailable,
Status: v1alpha1.ConditionStatusFalse,
Reason: &DeviceConditionBootstrapReason,
},
{
Type: v1alpha1.DeviceDegraded,
Status: v1alpha1.ConditionStatusFalse,
Reason: &DeviceConditionExpectedReason,
},
}
}
// SetProgressingConditionByError sets the degraded condition based on the error.
func SetDegradedConditionByError(conditions *[]v1alpha1.Condition, reason string, err error) bool {
condition := v1alpha1.Condition{Type: v1alpha1.DeviceDegraded}
if err != nil {
condition.Status = v1alpha1.ConditionStatusTrue
condition.Reason = util.StrToPtr(reason)
condition.Message = util.StrToPtr(err.Error())
} else {
condition.Status = v1alpha1.ConditionStatusFalse
condition.Reason = &DeviceConditionExpectedReason
condition.Message = util.StrToPtr("All is well")
}
return v1alpha1.SetStatusCondition(conditions, condition)
}
// SetProgressingCondition sets the progressing condition to true and adds the reason and message.
func SetProgressingCondition(conditions *[]v1alpha1.Condition, conditionType v1alpha1.ConditionType, conditionStatus v1alpha1.ConditionStatus, reason string, message string) bool {
// TODO: ensure condition exists.
condition := v1alpha1.Condition{Type: conditionType}
condition.Status = conditionStatus
condition.Reason = util.StrToPtr(reason)
condition.Message = util.StrToPtr(message)
return v1alpha1.SetStatusCondition(conditions, condition)
}