Add estimated time left to evacuation status command #410
2 changed files with 26 additions and 7 deletions
|
@ -212,9 +212,28 @@ func printStatus(cmd *cobra.Command, resp *control.GetShardEvacuationStatusRespo
|
||||||
appendError(sb, resp)
|
appendError(sb, resp)
|
||||||
appendStartedAt(sb, resp)
|
appendStartedAt(sb, resp)
|
||||||
appendDuration(sb, resp)
|
appendDuration(sb, resp)
|
||||||
|
appendEstimation(sb, resp)
|
||||||
cmd.Println(sb.String())
|
cmd.Println(sb.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func appendEstimation(sb *strings.Builder, resp *control.GetShardEvacuationStatusResponse) {
|
||||||
|
if resp.GetBody().GetStatus() != control.GetShardEvacuationStatusResponse_Body_RUNNING ||
|
||||||
|
resp.GetBody().GetDuration() == nil ||
|
||||||
|
resp.GetBody().GetTotal() == 0 ||
|
||||||
|
resp.GetBody().GetEvacuated()+resp.GetBody().GetFailed() == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
durationSeconds := float64(resp.GetBody().GetDuration().GetSeconds())
|
||||||
|
evacuated := float64(resp.GetBody().GetEvacuated() + resp.GetBody().GetFailed())
|
||||||
|
avgObjEvacuationTimeSeconds := durationSeconds / evacuated
|
||||||
|
objectsLeft := float64(resp.GetBody().GetTotal()) - evacuated
|
||||||
|
leftSeconds := avgObjEvacuationTimeSeconds * objectsLeft
|
||||||
|
leftMinutes := int(leftSeconds / 60)
|
||||||
|
|
||||||
|
sb.WriteString(fmt.Sprintf(" Estimated time left: %d minutes.", leftMinutes))
|
||||||
|
}
|
||||||
|
|
||||||
func appendDuration(sb *strings.Builder, resp *control.GetShardEvacuationStatusResponse) {
|
func appendDuration(sb *strings.Builder, resp *control.GetShardEvacuationStatusResponse) {
|
||||||
if resp.GetBody().GetDuration() != nil {
|
if resp.GetBody().GetDuration() != nil {
|
||||||
duration := time.Second * time.Duration(resp.GetBody().GetDuration().GetSeconds())
|
duration := time.Second * time.Duration(resp.GetBody().GetDuration().GetSeconds())
|
||||||
|
|
|
@ -39,15 +39,15 @@ Shard evacuation has been successfully started.
|
||||||
|
|
||||||
frostfs-cli control shards evacuation status --endpoint s01.frostfs.devenv:8081 --wallet ./../frostfs-dev-env/services/storage/wallet01.json
|
frostfs-cli control shards evacuation status --endpoint s01.frostfs.devenv:8081 --wallet ./../frostfs-dev-env/services/storage/wallet01.json
|
||||||
Enter password >
|
Enter password >
|
||||||
Shard IDs: 8kEBwtvKLU3Hva3PaaodUi. Status: running. Evacuated 14 object out of 61, failed to evacuate 0 objects. Started at: 2023-05-10T10:13:06Z UTC. Duration: 00:00:03.
|
Shard IDs: 8kEBwtvKLU3Hva3PaaodUi. Status: running. Evacuated 14 object out of 61, failed to evacuate 0 objects. Started at: 2023-05-10T10:13:06Z UTC. Duration: 00:00:03. Estimated time left: 2 minutes.
|
||||||
|
|
||||||
frostfs-cli control shards evacuation status --endpoint s01.frostfs.devenv:8081 --wallet ./../frostfs-dev-env/services/storage/wallet01.json
|
frostfs-cli control shards evacuation status --endpoint s01.frostfs.devenv:8081 --wallet ./../frostfs-dev-env/services/storage/wallet01.json
|
||||||
Enter password >
|
Enter password >
|
||||||
Shard IDs: 8kEBwtvKLU3Hva3PaaodUi. Status: running. Evacuated 23 object out of 61, failed to evacuate 0 objects. Started at: 2023-05-10T10:13:06Z UTC. Duration: 00:00:05.
|
Shard IDs: 8kEBwtvKLU3Hva3PaaodUi. Status: running. Evacuated 23 object out of 61, failed to evacuate 0 objects. Started at: 2023-05-10T10:13:06Z UTC. Duration: 00:01:05. Estimated time left: 1 minutes.
|
||||||
|
|
||||||
frostfs-cli control shards evacuation status --endpoint s01.frostfs.devenv:8081 --wallet ./../frostfs-dev-env/services/storage/wallet01.json
|
frostfs-cli control shards evacuation status --endpoint s01.frostfs.devenv:8081 --wallet ./../frostfs-dev-env/services/storage/wallet01.json
|
||||||
Enter password >
|
Enter password >
|
||||||
Shard IDs: 8kEBwtvKLU3Hva3PaaodUi. Status: completed. Evacuated 61 object out of 61, failed to evacuate 0 objects. Started at: 2023-05-10T10:13:06Z UTC. Duration: 00:00:13.
|
Shard IDs: 8kEBwtvKLU3Hva3PaaodUi. Status: completed. Evacuated 61 object out of 61, failed to evacuate 0 objects. Started at: 2023-05-10T10:13:06Z UTC. Duration: 00:02:13.
|
||||||
```
|
```
|
||||||
|
|
||||||
### Stop running evacuation process
|
### Stop running evacuation process
|
||||||
|
@ -58,7 +58,7 @@ Shard evacuation has been successfully started.
|
||||||
|
|
||||||
frostfs-cli control shards evacuation status --endpoint s01.frostfs.devenv:8081 --wallet ./../frostfs-dev-env/services/storage/wallet01.json
|
frostfs-cli control shards evacuation status --endpoint s01.frostfs.devenv:8081 --wallet ./../frostfs-dev-env/services/storage/wallet01.json
|
||||||
Enter password >
|
Enter password >
|
||||||
Shard IDs: 54Y8aot9uc7BSadw2XtYr3. Status: running. Evacuated 15 object out of 73, failed to evacuate 0 objects. Started at: 2023-05-10T10:15:47Z UTC. Duration: 00:00:03.
|
Shard IDs: 54Y8aot9uc7BSadw2XtYr3. Status: running. Evacuated 15 object out of 73, failed to evacuate 0 objects. Started at: 2023-05-10T10:15:47Z UTC. Duration: 00:00:03. Estimated time left: 0 minutes.
|
||||||
|
|
||||||
frostfs-cli control shards evacuation stop --endpoint s01.frostfs.devenv:8081 --wallet ./../frostfs-dev-env/services/storage/wallet01.json
|
frostfs-cli control shards evacuation stop --endpoint s01.frostfs.devenv:8081 --wallet ./../frostfs-dev-env/services/storage/wallet01.json
|
||||||
Enter password >
|
Enter password >
|
||||||
|
@ -75,9 +75,9 @@ frostfs-cli control shards evacuation start --endpoint s01.frostfs.devenv:8081 -
|
||||||
Enter password >
|
Enter password >
|
||||||
Shard evacuation has been successfully started.
|
Shard evacuation has been successfully started.
|
||||||
Progress will be reported every 5 seconds.
|
Progress will be reported every 5 seconds.
|
||||||
Shard IDs: 54Y8aot9uc7BSadw2XtYr3. Status: running. Evacuated 18 object out of 73, failed to evacuate 0 objects. Started at: 2023-05-10T10:18:42Z UTC. Duration: 00:00:04.
|
Shard IDs: 54Y8aot9uc7BSadw2XtYr3. Status: running. Evacuated 18 object out of 73, failed to evacuate 0 objects. Started at: 2023-05-10T10:18:42Z UTC. Duration: 00:00:04. Estimated time left: 0 minutes.
|
||||||
Shard IDs: 54Y8aot9uc7BSadw2XtYr3. Status: running. Evacuated 43 object out of 73, failed to evacuate 0 objects. Started at: 2023-05-10T10:18:42Z UTC. Duration: 00:00:09.
|
Shard IDs: 54Y8aot9uc7BSadw2XtYr3. Status: running. Evacuated 43 object out of 73, failed to evacuate 0 objects. Started at: 2023-05-10T10:18:42Z UTC. Duration: 00:00:09. Estimated time left: 0 minutes.
|
||||||
Shard IDs: 54Y8aot9uc7BSadw2XtYr3. Status: running. Evacuated 68 object out of 73, failed to evacuate 0 objects. Started at: 2023-05-10T10:18:42Z UTC. Duration: 00:00:14.
|
Shard IDs: 54Y8aot9uc7BSadw2XtYr3. Status: running. Evacuated 68 object out of 73, failed to evacuate 0 objects. Started at: 2023-05-10T10:18:42Z UTC. Duration: 00:00:14. Estimated time left: 0 minutes.
|
||||||
Shard evacuation has been completed.
|
Shard evacuation has been completed.
|
||||||
Shard IDs: 54Y8aot9uc7BSadw2XtYr3. Evacuated 73 object out of 73, failed to evacuate 0 objects. Started at: 2023-05-10T10:18:42Z UTC. Duration: 00:00:14.
|
Shard IDs: 54Y8aot9uc7BSadw2XtYr3. Evacuated 73 object out of 73, failed to evacuate 0 objects. Started at: 2023-05-10T10:18:42Z UTC. Duration: 00:00:14.
|
||||||
```
|
```
|
||||||
|
|
Loading…
Reference in a new issue