feat: restart to apply update, privileged helper, rollback
This commit is contained in:
1 parent
70460e4170
commit
54e8fd5fed
63 files changed
+8635
-164
No files matched your search
@@ -0,0 +1,38 @@
|
||||
package update
|
||||
|
||||
import "time"
|
||||
|
||||
func (s UpdateStatus) WithRestartRequest(request RestartRequest) UpdateStatus {
|
||||
return s.settled(StateRestarting, "", request.RequestedAt)
|
||||
}
|
||||
|
||||
func (s UpdateStatus) WithResult(result Result, currentVersion string, now time.Time) UpdateStatus {
|
||||
if result.IsRunning() && now.Sub(result.StartedAt) < RunningResultMaxAge {
|
||||
return s.settled(StateRestarting, "", result.StartedAt)
|
||||
}
|
||||
if result.IsRunning() || result.Outcome == OutcomeFailed {
|
||||
return s.settled(StateFailed, ErrorKindInstall, result.StartedAt)
|
||||
}
|
||||
if result.Outcome == OutcomeRolledBack {
|
||||
return s.settled(StateFailed, ErrorKindRolledBack, result.StartedAt)
|
||||
}
|
||||
if result.Kind == RestartKindUpdate && result.Tag == currentVersion {
|
||||
return s.settled(StateSucceeded, "", result.StartedAt)
|
||||
}
|
||||
s.State = StateIdle
|
||||
s.Progress = nil
|
||||
s.Error = nil
|
||||
s.StartedAt = nil
|
||||
return s
|
||||
}
|
||||
|
||||
func (s UpdateStatus) settled(state string, errorKind string, startedAt time.Time) UpdateStatus {
|
||||
s.State = state
|
||||
s.Progress = nil
|
||||
s.Error = nil
|
||||
if errorKind != "" {
|
||||
s.Error = &errorKind
|
||||
}
|
||||
s.StartedAt = &startedAt
|
||||
return s
|
||||
}
|
||||
Reference in new issue
Block a user