Skip to content

Commit 9c75b4b

Browse files
committed
Refactored 'logs' command (scaleway#80)
1 parent 9ea9db3 commit 9c75b4b

File tree

2 files changed

+60
-31
lines changed

2 files changed

+60
-31
lines changed

pkg/cli/logs.go

Lines changed: 10 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,9 @@
55
package cli
66

77
import (
8-
"os"
8+
"github.com/scaleway/scaleway-cli/vendor/github.com/Sirupsen/logrus"
99

10-
log "github.com/scaleway/scaleway-cli/vendor/github.com/Sirupsen/logrus"
11-
12-
"github.com/scaleway/scaleway-cli/pkg/api"
13-
"github.com/scaleway/scaleway-cli/pkg/utils"
10+
"github.com/scaleway/scaleway-cli/pkg/commands"
1411
)
1512

1613
var cmdLogs = &Command{
@@ -29,39 +26,21 @@ func init() {
2926
var logsHelp bool // -h, --help flag
3027
var logsGateway string // -g, --gateway flag
3128

32-
func runLogs(cmd *Command, args []string) {
29+
func runLogs(cmd *Command, rawArgs []string) {
3330
if logsHelp {
3431
cmd.PrintUsage()
3532
}
36-
if len(args) != 1 {
33+
if len(rawArgs) != 1 {
3734
cmd.PrintShortUsage()
3835
}
3936

40-
serverID := cmd.API.GetServerID(args[0])
41-
server, err := cmd.API.GetServer(serverID)
42-
if err != nil {
43-
log.Fatalf("Failed to get server information for %s: %v", serverID, err)
37+
args := commands.LogsArgs{
38+
Gateway: logsGateway,
39+
Server: rawArgs[0],
4440
}
45-
46-
// FIXME: switch to serial history when API is ready
47-
48-
// Resolve gateway
49-
if logsGateway == "" {
50-
logsGateway = os.Getenv("SCW_GATEWAY")
51-
}
52-
var gateway string
53-
if logsGateway == serverID || logsGateway == args[0] {
54-
gateway = ""
55-
} else {
56-
gateway, err = api.ResolveGateway(cmd.API, logsGateway)
57-
if err != nil {
58-
log.Fatalf("Cannot resolve Gateway '%s': %v", logsGateway, err)
59-
}
60-
}
61-
62-
command := []string{"dmesg"}
63-
err = utils.SSHExec(server.PublicAddress.IP, server.PrivateIP, command, true, gateway)
41+
ctx := cmd.GetContext(rawArgs)
42+
err := commands.RunLogs(ctx, args)
6443
if err != nil {
65-
log.Fatalf("Command execution failed: %v", err)
44+
logrus.Fatalf("Cannot execute 'logs': %v", err)
6645
}
6746
}

pkg/commands/logs.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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/pkg/api"
11+
"github.com/scaleway/scaleway-cli/pkg/utils"
12+
)
13+
14+
// LogsArgs are flags for the `RunLogs` function
15+
type LogsArgs struct {
16+
Gateway string
17+
Server string
18+
}
19+
20+
// RunLogs is the handler for 'scw logs'
21+
func RunLogs(ctx CommandContext, args LogsArgs) error {
22+
serverID := ctx.API.GetServerID(args.Server)
23+
server, err := ctx.API.GetServer(serverID)
24+
if err != nil {
25+
return fmt.Errorf("failed to get server information for %s: %v", serverID, err)
26+
}
27+
28+
// FIXME: switch to serial history when API is ready
29+
30+
// Resolve gateway
31+
if args.Gateway == "" {
32+
args.Gateway = ctx.Getenv("SCW_GATEWAY")
33+
}
34+
var gateway string
35+
if args.Gateway == serverID || args.Gateway == args.Server {
36+
gateway = ""
37+
} else {
38+
gateway, err = api.ResolveGateway(ctx.API, args.Gateway)
39+
if err != nil {
40+
return fmt.Errorf("cannot resolve Gateway '%s': %v", args.Gateway, err)
41+
}
42+
}
43+
44+
command := []string{"dmesg"}
45+
err = utils.SSHExec(server.PublicAddress.IP, server.PrivateIP, command, true, gateway)
46+
if err != nil {
47+
return fmt.Errorf("command execution failed: %v", err)
48+
}
49+
return nil
50+
}

0 commit comments

Comments
 (0)