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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
package cmd
import (
"fmt"
"log"
"github.com/jawher/mow.cli"
)
func reservedIPAttach(cmd *cli.Cmd) {
cmd.Spec = "SUBID IP_ADDRESS"
serverID := cmd.StringArg("SUBID", "", "SUBID of virtual machine to attach to (see <servers>)")
ip := cmd.StringArg("IP_ADDRESS", "", "IP address to attach (see <reservedips>)")
cmd.Action = func() {
if err := GetClient().AttachReservedIP(*ip, *serverID); err != nil {
log.Fatal(err)
}
fmt.Println("Reserved IP attached")
}
}
func reservedIPConvert(cmd *cli.Cmd) {
cmd.Spec = "SUBID IP_ADDRESS"
serverID := cmd.StringArg("SUBID", "", "SUBID of virtual machine (see <servers>)")
ip := cmd.StringArg("IP_ADDRESS", "", "IP address to convert to reserved IP")
cmd.Action = func() {
id, err := GetClient().ConvertReservedIP(*serverID, *ip)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Reserved IP converted\n\n")
lengths := []int{12, 48, 12}
tabsPrint(columns{"ID", "IP_ADDRESS", "ATTACHED_TO"}, lengths)
tabsPrint(columns{id, *ip, *serverID}, lengths)
tabsFlush()
}
}
func reservedIPCreate(cmd *cli.Cmd) {
cmd.Spec = "[-r -t -l]"
regionID := cmd.IntOpt("r region", 1, "Region (DCID)")
ipType := cmd.StringOpt("t type", "v4", "Type of new reserved IP (v4 or v6)")
label := cmd.StringOpt("l label", "", "Label for new reserved IP")
cmd.Action = func() {
id, err := GetClient().CreateReservedIP(*regionID, *ipType, *label)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Reserved IP created\n\n")
lengths := []int{12, 6, 10, 32}
tabsPrint(columns{"ID", "TYPE", "DCID", "LABEL"}, lengths)
tabsPrint(columns{id, *ipType, *regionID, label}, lengths)
tabsFlush()
}
}
func reservedIPDestroy(cmd *cli.Cmd) {
cmd.Spec = "SUBID"
id := cmd.StringArg("SUBID", "", "SUBID of reserved IP (see <reservedips>)")
cmd.Action = func() {
if err := GetClient().DestroyReservedIP(*id); err != nil {
log.Fatal(err)
}
fmt.Println("Reserved IP deleted")
}
}
func reservedIPDetach(cmd *cli.Cmd) {
cmd.Spec = "SUBID IP_ADDRESS"
serverID := cmd.StringArg("SUBID", "", "SUBID of virtual machine to detach from (see <servers>)")
ip := cmd.StringArg("IP_ADDRESS", "", "IP address to detach (see <reservedips>)")
cmd.Action = func() {
if err := GetClient().DetachReservedIP(*ip, *serverID); err != nil {
log.Fatal(err)
}
fmt.Println("Reserved IP detached")
}
}
func reservedIPList(cmd *cli.Cmd) {
cmd.Action = func() {
ips, err := GetClient().ListReservedIP()
if err != nil {
log.Fatal(err)
}
if len(ips) == 0 {
fmt.Println()
return
}
lengths := []int{12, 8, 8, 48, 6, 32, 12}
tabsPrint(columns{"SUBID", "DCID", "IP_TYPE", "SUBNET", "SIZE", "LABEL", "ATTACHED_TO"}, lengths)
for _, ip := range ips {
tabsPrint(columns{
ip.ID,
ip.RegionID,
ip.IPType,
ip.Subnet,
ip.SubnetSize,
ip.Label,
ip.AttachedTo,
}, lengths)
}
tabsFlush()
}
}
|