File: commands_reservedip.go

package info (click to toggle)
golang-github-jamesclonk-vultr 2.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 560 kB
  • sloc: makefile: 35
file content (119 lines) | stat: -rw-r--r-- 2,902 bytes parent folder | download | duplicates (2)
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()
	}
}