Skip to content

Commit f58cc46

Browse files
Engin Dirialexellis
Engin Diri
authored andcommitted
Update govultr sdk to v2
Signed-off-by: Engin Diri <[email protected]>
1 parent 5ffecf4 commit f58cc46

File tree

3 files changed

+50
-39
lines changed

3 files changed

+50
-39
lines changed

go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ require (
1616
github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9 // indirect
1717
github.com/golang/mock v1.3.1
1818
github.com/google/uuid v1.1.1
19-
github.com/hashicorp/go-retryablehttp v0.6.6
19+
github.com/hashicorp/go-retryablehttp v0.7.0
2020
github.com/hetznercloud/hcloud-go v1.18.2
2121
github.com/linode/linodego v0.19.0
2222
github.com/packethost/packngo v0.17.0
2323
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.4
2424
github.com/sethvargo/go-password v0.2.0
25-
github.com/vultr/govultr v0.3.2
25+
github.com/vultr/govultr/v2 v2.7.1 // indirect
2626
go.opencensus.io v0.22.2 // indirect
2727
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
2828
google.golang.org/api v0.14.0

go.sum

+7
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,11 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
105105
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
106106
github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
107107
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
108+
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
108109
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
109110
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
111+
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
112+
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
110113
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
111114
github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g=
112115
github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -133,6 +136,8 @@ github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrj
133136
github.com/hashicorp/go-retryablehttp v0.6.4/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
134137
github.com/hashicorp/go-retryablehttp v0.6.6 h1:HJunrbHTDDbBb/ay4kxa1n+dLmttUlnP3V9oNE4hmsM=
135138
github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
139+
github.com/hashicorp/go-retryablehttp v0.7.0 h1:eu1EI/mbirUgP5C8hVsTNaGZreBDlYiwC1FZWkvQPQ4=
140+
github.com/hashicorp/go-retryablehttp v0.7.0/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
136141
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
137142
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
138143
github.com/hetznercloud/hcloud-go v1.18.2 h1:ZCDJHCqKqfT3SnZ+kESVqmqh8QgoTqjnddt7g3v5Yfs=
@@ -204,6 +209,8 @@ github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H
204209
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
205210
github.com/vultr/govultr v0.3.2 h1:1tV/88jkm+4Y345qAXBe3peNbnmvCY/VAIZApklbKkI=
206211
github.com/vultr/govultr v0.3.2/go.mod h1:81RwK1wAmb08alkFDJiZmu9gdv+IO+UamzaF0+PIieE=
212+
github.com/vultr/govultr/v2 v2.7.1 h1:uF9ERet++Gb+7Cqs3p1P6b6yebeaZqVd7t5P2uZCaJU=
213+
github.com/vultr/govultr/v2 v2.7.1/go.mod h1:BvOhVe6/ZpjwcoL6/unkdQshmbS9VGbowI4QT+3DGVU=
207214
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
208215
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
209216
go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs=

provision/vultr.go

+41-37
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package provision
22

33
import (
44
"context"
5+
"encoding/base64"
56
"fmt"
6-
"github.com/vultr/govultr"
7+
"github.com/vultr/govultr/v2"
8+
"golang.org/x/oauth2"
79
"strconv"
810
"strings"
911
)
@@ -16,24 +18,20 @@ type VultrProvisioner struct {
1618
}
1719

1820
func NewVultrProvisioner(accessKey string) (*VultrProvisioner, error) {
21+
config := &oauth2.Config{}
22+
ts := config.TokenSource(context.Background(), &oauth2.Token{AccessToken: accessKey})
23+
vultrClient := govultr.NewClient(oauth2.NewClient(context.Background(), ts))
1924
return &VultrProvisioner{
20-
client: govultr.NewClient(nil, accessKey),
25+
client: vultrClient,
2126
}, nil
2227
}
2328

2429
func (v *VultrProvisioner) Provision(host BasicHost) (*ProvisionedHost, error) {
25-
26-
script, err := v.client.StartupScript.Create(context.Background(), host.Name, host.UserData, "boot")
27-
if err != nil {
28-
return nil, err
29-
}
30-
31-
region, err := v.lookupRegion(host.Region)
32-
if err != nil {
33-
return nil, err
34-
}
35-
36-
plan, err := strconv.Atoi(host.Plan)
30+
script, err := v.client.StartupScript.Create(context.Background(), &govultr.StartupScriptReq{
31+
Script: base64.StdEncoding.EncodeToString([]byte(host.UserData)),
32+
Name: host.Name,
33+
Type: "boot",
34+
})
3735
if err != nil {
3836
return nil, err
3937
}
@@ -43,39 +41,42 @@ func (v *VultrProvisioner) Provision(host BasicHost) (*ProvisionedHost, error) {
4341
return nil, err
4442
}
4543

46-
opts := &govultr.ServerOptions{
47-
ScriptID: script.ScriptID,
44+
opts := &govultr.InstanceCreateReq{
45+
ScriptID: script.ID,
46+
Region: host.Region,
47+
Plan: host.Plan,
48+
OsID: os,
4849
Hostname: host.Name,
4950
Label: host.Name,
5051
Tag: exiteNodeTag,
5152
}
5253

53-
result, err := v.client.Server.Create(context.Background(), *region, plan, os, opts)
54+
result, err := v.client.Instance.Create(context.Background(), opts)
5455
if err != nil {
5556
return nil, err
5657
}
5758

5859
return &ProvisionedHost{
5960
IP: result.MainIP,
60-
ID: result.InstanceID,
61-
Status: result.ServerState,
61+
ID: result.ID,
62+
Status: result.ServerStatus,
6263
}, nil
6364
}
6465

6566
func (v *VultrProvisioner) Status(id string) (*ProvisionedHost, error) {
66-
server, err := v.client.Server.GetServer(context.Background(), id)
67+
server, err := v.client.Instance.Get(context.Background(), id)
6768
if err != nil {
6869
return nil, err
6970
}
7071

71-
status := server.ServerState
72-
if status == "ok" {
72+
status := server.ServerStatus
73+
if status == vultrHostRunning {
7374
status = ActiveStatus
7475
}
7576

7677
return &ProvisionedHost{
7778
IP: server.MainIP,
78-
ID: server.InstanceID,
79+
ID: server.ID,
7980
Status: status,
8081
}, nil
8182
}
@@ -92,20 +93,20 @@ func (v *VultrProvisioner) Delete(request HostDeleteRequest) error {
9293
}
9394
}
9495

95-
server, err := v.client.Server.GetServer(context.Background(), id)
96+
server, err := v.client.Instance.Get(context.Background(), id)
9697
if err != nil {
9798
return err
9899
}
99100

100-
err = v.client.Server.Delete(context.Background(), id)
101+
err = v.client.Instance.Delete(context.Background(), id)
101102
if err != nil {
102103
return err
103104
}
104105

105-
scripts, err := v.client.StartupScript.List(context.Background())
106+
scripts, _, err := v.client.StartupScript.List(context.Background(), nil)
106107
for _, s := range scripts {
107108
if s.Name == server.Label {
108-
_ = v.client.StartupScript.Delete(context.Background(), s.ScriptID)
109+
_ = v.client.StartupScript.Delete(context.Background(), s.ID)
109110
break
110111
}
111112
}
@@ -115,27 +116,30 @@ func (v *VultrProvisioner) Delete(request HostDeleteRequest) error {
115116

116117
// List returns a list of exit nodes
117118
func (v *VultrProvisioner) List(filter ListFilter) ([]*ProvisionedHost, error) {
118-
servers, err := v.client.Server.ListByTag(context.Background(), filter.Filter)
119+
servers, _, err := v.client.Instance.List(context.Background(), nil)
119120
if err != nil {
120121
return nil, err
121122
}
122123

123124
var inlets []*ProvisionedHost
124125
for _, server := range servers {
125-
host := &ProvisionedHost{
126-
IP: server.MainIP,
127-
ID: server.InstanceID,
128-
Status: vultrToInletsStatus(server.Status),
126+
if server.Tag == filter.Filter {
127+
host := &ProvisionedHost{
128+
IP: server.MainIP,
129+
ID: server.ID,
130+
Status: vultrToInletsStatus(server.Status),
131+
}
132+
inlets = append(inlets, host)
129133
}
130-
inlets = append(inlets, host)
134+
131135
}
132136

133137
return inlets, nil
134138
}
135139

136140
func (v *VultrProvisioner) lookupID(request HostDeleteRequest) (string, error) {
137141

138-
inlets, err := v.List(ListFilter{Filter: exiteNodeTag, ProjectID: request.ProjectID})
142+
inlets, err := v.List(ListFilter{Filter: exiteNodeTag})
139143
if err != nil {
140144
return "", err
141145
}
@@ -153,14 +157,14 @@ func (v *VultrProvisioner) lookupRegion(id string) (*int, error) {
153157
return &result, nil
154158
}
155159

156-
regions, err := v.client.Region.List(context.Background())
160+
regions, _, err := v.client.Region.List(context.Background(), nil)
157161
if err != nil {
158162
return nil, err
159163
}
160164

161165
for _, region := range regions {
162-
if strings.EqualFold(id, region.RegionCode) || strings.EqualFold(id, region.Name) {
163-
regionId, _ := strconv.Atoi(region.RegionID)
166+
if strings.EqualFold(id, region.ID) {
167+
regionId, _ := strconv.Atoi(region.ID)
164168
return &regionId, nil
165169
}
166170
}

0 commit comments

Comments
 (0)