Skip to content

Commit 7255efb

Browse files
committed
Refactored 'restart' command (scaleway#80)
1 parent 0cb2509 commit 7255efb

File tree

2 files changed

+49
-21
lines changed

2 files changed

+49
-21
lines changed

pkg/cli/restart.go

+12-21
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@
55
package cli
66

77
import (
8-
"fmt"
9-
"os"
10-
11-
log "github.com/scaleway/scaleway-cli/vendor/github.com/Sirupsen/logrus"
8+
"github.com/scaleway/scaleway-cli/pkg/commands"
9+
"github.com/scaleway/scaleway-cli/vendor/github.com/Sirupsen/logrus"
1210
)
1311

1412
var cmdRestart = &Command{
@@ -25,28 +23,21 @@ func init() {
2523
// Flags
2624
var restartHelp bool // -h, --help flag
2725

28-
func runRestart(cmd *Command, args []string) {
26+
func runRestart(cmd *Command, rawArgs []string) {
2927
if restartHelp {
3028
cmd.PrintUsage()
3129
}
32-
if len(args) < 1 {
30+
if len(rawArgs) < 1 {
3331
cmd.PrintShortUsage()
3432
}
3533

36-
hasError := false
37-
for _, needle := range args {
38-
server := cmd.API.GetServerID(needle)
39-
err := cmd.API.PostServerAction(server, "reboot")
40-
if err != nil {
41-
if err.Error() != "server is being stopped or rebooted" {
42-
log.Errorf("failed to restart server %s: %s", server, err)
43-
hasError = true
44-
}
45-
} else {
46-
fmt.Println(needle)
47-
}
48-
if hasError {
49-
os.Exit(1)
50-
}
34+
args := commands.RestartArgs{
35+
Servers: rawArgs,
36+
}
37+
ctx := cmd.GetContext(rawArgs)
38+
err := commands.RunRestart(ctx, args)
39+
if err != nil {
40+
logrus.Fatalf("Cannot execute 'restart': %v", err)
5141
}
42+
5243
}

pkg/commands/restart.go

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Copyright (C) 2015 Scaleway. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE.md file.
4+
5+
package commands
6+
7+
import (
8+
"fmt"
9+
10+
"github.com/scaleway/scaleway-cli/vendor/github.com/Sirupsen/logrus"
11+
)
12+
13+
// RestartArgs are flags for the `RunRestart` function
14+
type RestartArgs struct {
15+
Servers []string
16+
}
17+
18+
// RunRestart is the handler for 'scw restart'
19+
func RunRestart(ctx CommandContext, args RestartArgs) error {
20+
hasError := false
21+
for _, needle := range args.Servers {
22+
server := ctx.API.GetServerID(needle)
23+
err := ctx.API.PostServerAction(server, "reboot")
24+
if err != nil {
25+
if err.Error() != "server is being stopped or rebooted" {
26+
logrus.Errorf("failed to restart server %s: %s", server, err)
27+
hasError = true
28+
}
29+
} else {
30+
fmt.Fprintln(ctx.Stdout, needle)
31+
}
32+
if hasError {
33+
return fmt.Errorf("at least 1 server failed to restart")
34+
}
35+
}
36+
return nil
37+
}

0 commit comments

Comments
 (0)