-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathkube_conditions.go
88 lines (72 loc) · 2.49 KB
/
kube_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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package main
import (
"time"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/kontena/pharos-host-upgrades/hosts"
)
const UpgradeConditionType corev1.NodeConditionType = "HostUpgrades"
const RebootConditionType corev1.NodeConditionType = "HostUpgradesReboot"
func MakeUpgradeCondition(status hosts.Status, err error) corev1.NodeCondition {
var condition = corev1.NodeCondition{
Type: UpgradeConditionType,
LastHeartbeatTime: metav1.Now(),
LastTransitionTime: metav1.Now(), // only on changes?
}
if err != nil {
condition.Status = corev1.ConditionUnknown
condition.Reason = "UpgradeFailed"
condition.Message = err.Error()
} else if status.RebootRequired {
condition.Status = corev1.ConditionFalse
condition.Reason = "RebootRequired"
condition.Message = status.UpgradeLog
} else {
condition.Status = corev1.ConditionTrue
condition.Reason = "UpToDate"
condition.Message = status.UpgradeLog
}
return condition
}
func MakeRebootCondition(info hosts.Info, status hosts.Status, upgradeErr error) corev1.NodeCondition {
var condition = corev1.NodeCondition{
Type: RebootConditionType,
LastHeartbeatTime: metav1.Now(),
}
if status.RebootRequired {
condition.Status = corev1.ConditionTrue
condition.LastTransitionTime = metav1.NewTime(status.RebootRequiredSince)
condition.Reason = "RebootRequired"
condition.Message = status.RebootRequiredMessage
} else if upgradeErr != nil {
condition.Status = corev1.ConditionUnknown
condition.LastTransitionTime = metav1.Now()
condition.Reason = "UpgradeFailed"
} else {
condition.Status = corev1.ConditionFalse
condition.LastTransitionTime = metav1.NewTime(info.BootTime)
condition.Reason = "UpToDate"
condition.Message = status.RebootRequiredMessage
}
return condition
}
func MakeRebootConditionRebooting(rebootTime time.Time) corev1.NodeCondition {
var condition = corev1.NodeCondition{
Type: RebootConditionType,
LastHeartbeatTime: metav1.Now(),
}
condition.Status = corev1.ConditionTrue
condition.LastTransitionTime = metav1.NewTime(rebootTime)
condition.Reason = "Rebooting"
return condition
}
func MakeRebootConditionRebooted(bootTime time.Time) corev1.NodeCondition {
var condition = corev1.NodeCondition{
Type: RebootConditionType,
LastHeartbeatTime: metav1.Now(),
}
condition.Status = corev1.ConditionFalse
condition.LastTransitionTime = metav1.NewTime(bootTime)
condition.Reason = "Rebooted"
return condition
}