This repository has been archived by the owner on Mar 29, 2018. It is now read-only.
/
floating_ip_actions.go
96 lines (74 loc) · 2.61 KB
/
floating_ip_actions.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package commands
import (
"io"
"github.com/bryanl/doit"
"github.com/Sirupsen/logrus"
"github.com/spf13/cobra"
)
// FloatingIPAction creates the floating IP action commmand.
func FloatingIPAction() *cobra.Command {
cmd := &cobra.Command{
Use: "floating-ip-action",
Short: "floating IP action commands",
Long: "floating IP action commands",
}
cmdFloatingIPActionsGet := cmdBuilder(RunFloatingIPActionsGet,
"get <floating-ip>", "get floating-ip action", writer)
cmd.AddCommand(cmdFloatingIPActionsGet)
addIntFlag(cmdFloatingIPActionsGet, doit.ArgActionID, 0, "action id", requiredOpt())
cmdFloatingIPActionsAssign := cmdBuilder(RunFloatingIPActionsAssign,
"assign <floating-ip>", "assign a floating IP to a droplet", writer)
cmd.AddCommand(cmdFloatingIPActionsAssign)
addIntFlag(cmdFloatingIPActionsAssign, doit.ArgDropletID, 0, "ID of the droplet to assign the IP to", requiredOpt())
cmdFloatingIPActionsUnassign := cmdBuilder(RunFloatingIPActionsUnassign,
"unassign <floating-ip>", "unassign a floating IP to a droplet", writer)
cmd.AddCommand(cmdFloatingIPActionsUnassign)
return cmd
}
// RunFloatingIPActionsGet retrieves an action for a floating IP.
func RunFloatingIPActionsGet(ns string, config doit.Config, out io.Writer, args []string) error {
if len(args) != 1 {
return doit.NewMissingArgsErr(ns)
}
ip := args[0]
client := config.GetGodoClient()
actionID, err := config.GetInt(ns, doit.ArgActionID)
if err != nil {
return err
}
action, _, err := client.FloatingIPActions.Get(ip, actionID)
if err != nil {
return err
}
return doit.DisplayOutput(action, out)
}
// RunFloatingIPActionsAssign assigns a floating IP to a droplet.
func RunFloatingIPActionsAssign(ns string, config doit.Config, out io.Writer, args []string) error {
if len(args) != 1 {
return doit.NewMissingArgsErr(ns)
}
ip := args[0]
client := config.GetGodoClient()
dropletID, err := config.GetInt(ns, doit.ArgDropletID)
if err != nil {
return err
}
action, _, err := client.FloatingIPActions.Assign(ip, dropletID)
if err != nil {
logrus.WithField("err", err).Fatal("could not assign IP to droplet")
}
return doit.DisplayOutput(action, out)
}
// RunFloatingIPActionsUnassign unassigns a floating IP to a droplet.
func RunFloatingIPActionsUnassign(ns string, config doit.Config, out io.Writer, args []string) error {
if len(args) != 1 {
return doit.NewMissingArgsErr(ns)
}
ip := args[0]
client := config.GetGodoClient()
action, _, err := client.FloatingIPActions.Unassign(ip)
if err != nil {
logrus.WithField("err", err).Fatal("could not unsassign IP to droplet")
}
return doit.DisplayOutput(action, out)
}