diff --git a/builder/digitalocean/api_v2.go b/builder/digitalocean/api_v2.go index 23806df6f..b52aeaaaf 100644 --- a/builder/digitalocean/api_v2.go +++ b/builder/digitalocean/api_v2.go @@ -262,8 +262,10 @@ func (d DigitalOceanClientV2) DropletStatus(id uint) (string, string, error) { } var ip string - if len(res.Droplet.Networks.V4) > 0 { - ip = res.Droplet.Networks.V4[0].IPAddr + for _, n := range res.Droplet.Networks.V4 { + if n.Type == "public" { + ip = n.IPAddr + } } return ip, res.Droplet.Status, err @@ -285,17 +287,21 @@ func NewRequestV2(d DigitalOceanClientV2, path string, method string, req interf enc.Encode(req) defer buf.Reset() request, err = http.NewRequest(method, url, buf) + request.Header.Add("Content-Type", "application/json") } else { request, err = http.NewRequest(method, url, nil) } if err != nil { return err } + // Add the authentication parameters request.Header.Add("Authorization", "Bearer "+d.APIToken) - - log.Printf("sending new request to digitalocean: %s", url) - + if buf != nil { + log.Printf("sending new request to digitalocean: %s buffer: %s", url, buf) + } else { + log.Printf("sending new request to digitalocean: %s", url) + } resp, err := client.Do(request) if err != nil { return err @@ -325,7 +331,10 @@ func NewRequestV2(d DigitalOceanClientV2, path string, method string, req interf return errors.New(fmt.Sprintf("Failed to decode JSON response %s (HTTP %v) from DigitalOcean: %s", err.Error(), resp.StatusCode, body)) } - + switch resp.StatusCode { + case 403, 401, 429, 422, 404, 503, 500: + return errors.New(fmt.Sprintf("digitalocean request error: %+v", res)) + } return nil } diff --git a/builder/digitalocean/builder.go b/builder/digitalocean/builder.go index 5b84755ae..ad41ee547 100644 --- a/builder/digitalocean/builder.go +++ b/builder/digitalocean/builder.go @@ -17,7 +17,7 @@ import ( ) // see https://api.digitalocean.com/images/?client_id=[client_id]&api_key=[api_key] -// name="Ubuntu 12.04.4 x64", id=3101045, +// name="Ubuntu 12.04.4 x64", id=6374128, const DefaultImage = "ubuntu-12-04-x64" // see https://api.digitalocean.com/regions/?client_id=[client_id]&api_key=[api_key]