Merge pull request #2940 from thaJeztah/rollback_progress_bars

UX: don't reverse progress-bars when rolling back
This commit is contained in:
Sebastiaan van Stijn 2021-06-29 16:02:45 +02:00 committed by GitHub
commit 4a6fe51157
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 6 additions and 13 deletions

View File

@ -67,13 +67,6 @@ func terminalState(state swarm.TaskState) bool {
return numberedStates[state] > numberedStates[swarm.TaskStateRunning] return numberedStates[state] > numberedStates[swarm.TaskStateRunning]
} }
func stateToProgress(state swarm.TaskState, rollback bool) int64 {
if !rollback {
return numberedStates[state]
}
return numberedStates[swarm.TaskStateRunning] - numberedStates[state]
}
// ServiceProgress outputs progress information for convergence of a service. // ServiceProgress outputs progress information for convergence of a service.
// nolint: gocyclo // nolint: gocyclo
func ServiceProgress(ctx context.Context, client client.APIClient, serviceID string, progressWriter io.WriteCloser) error { func ServiceProgress(ctx context.Context, client client.APIClient, serviceID string, progressWriter io.WriteCloser) error {
@ -343,7 +336,7 @@ func (u *replicatedProgressUpdater) update(service swarm.Service, tasks []swarm.
running++ running++
} }
u.writeTaskProgress(task, mappedSlot, replicas, rollback) u.writeTaskProgress(task, mappedSlot, replicas)
} }
if !u.done { if !u.done {
@ -389,7 +382,7 @@ func (u *replicatedProgressUpdater) tasksBySlot(tasks []swarm.Task, activeNodes
return tasksBySlot return tasksBySlot
} }
func (u *replicatedProgressUpdater) writeTaskProgress(task swarm.Task, mappedSlot int, replicas uint64, rollback bool) { func (u *replicatedProgressUpdater) writeTaskProgress(task swarm.Task, mappedSlot int, replicas uint64) {
if u.done || replicas > maxProgressBars || uint64(mappedSlot) > replicas { if u.done || replicas > maxProgressBars || uint64(mappedSlot) > replicas {
return return
} }
@ -406,7 +399,7 @@ func (u *replicatedProgressUpdater) writeTaskProgress(task swarm.Task, mappedSlo
u.progressOut.WriteProgress(progress.Progress{ u.progressOut.WriteProgress(progress.Progress{
ID: fmt.Sprintf("%d/%d", mappedSlot, replicas), ID: fmt.Sprintf("%d/%d", mappedSlot, replicas),
Action: fmt.Sprintf("%-[1]*s", longestState, task.Status.State), Action: fmt.Sprintf("%-[1]*s", longestState, task.Status.State),
Current: stateToProgress(task.Status.State, rollback), Current: numberedStates[task.Status.State],
Total: maxProgress, Total: maxProgress,
HideCounts: true, HideCounts: true,
}) })
@ -463,7 +456,7 @@ func (u *globalProgressUpdater) update(service swarm.Service, tasks []swarm.Task
running++ running++
} }
u.writeTaskProgress(task, nodeCount, rollback) u.writeTaskProgress(task, nodeCount)
} }
} }
@ -507,7 +500,7 @@ func (u *globalProgressUpdater) tasksByNode(tasks []swarm.Task) map[string]swarm
return tasksByNode return tasksByNode
} }
func (u *globalProgressUpdater) writeTaskProgress(task swarm.Task, nodeCount int, rollback bool) { func (u *globalProgressUpdater) writeTaskProgress(task swarm.Task, nodeCount int) {
if u.done || nodeCount > maxProgressBars { if u.done || nodeCount > maxProgressBars {
return return
} }
@ -524,7 +517,7 @@ func (u *globalProgressUpdater) writeTaskProgress(task swarm.Task, nodeCount int
u.progressOut.WriteProgress(progress.Progress{ u.progressOut.WriteProgress(progress.Progress{
ID: stringid.TruncateID(task.NodeID), ID: stringid.TruncateID(task.NodeID),
Action: fmt.Sprintf("%-[1]*s", longestState, task.Status.State), Action: fmt.Sprintf("%-[1]*s", longestState, task.Status.State),
Current: stateToProgress(task.Status.State, rollback), Current: numberedStates[task.Status.State],
Total: maxProgress, Total: maxProgress,
HideCounts: true, HideCounts: true,
}) })