Commit Graph

31 Commits

Author SHA1 Message Date
Julien Pivotto ccb34b702d provider/digitalocean: prevent new resources when using ID's of images with slugs (#13879)
When you specify the ID of an image that has a slug, terraform would
store its slug to the state, hence it would always recreate the image.

This commit fixes it by storing the image as an ID when it is specified
by and ID by the user, ignoring the slug.

Closes #12751.
Fixes #12255.

Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2017-04-27 18:48:58 +01:00
Julien Pivotto bfc1008b4d provider/digitalocean: Remove unneeded droplet test (#14034)
Reverts #13883.

Quoting @radeksimko: "We actually refresh the state
as part of every test step, so this is not necessary"

Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2017-04-27 14:46:42 +01:00
Julien Pivotto 61d183eded provider/digitaocean: Test that droplets are indempotent (#13883)
Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2017-04-24 21:43:27 +03:00
Julien Pivotto 8343d5908f provider/digitalocean: Improve test coverage for droplet pricing (#13868)
Implement much better testing for GH-13720.

Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2017-04-23 04:55:08 +03:00
Christoph Blecker 596f05b881 Fix govet errors (#13774) 2017-04-19 20:21:31 +03:00
Julien Pivotto c2d1a37334 DigitalOcean: Export droplet prices (#13720)
Note: In DO, Droplets are about the only thing you pay. DNS/Float IP are
free.

Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2017-04-18 14:52:40 +03:00
Paul Stack 316013e2ba provider/packet|digitalocean: Randomize the SSH Key acceptance tests (#13096)
```
% make testacc TEST=./builtin/providers/packet TESTARGS='-run=TestAccPacketSSHKey_Basic'            ✭
==> Checking that code complies with gofmt requirements...
go generate $(go list ./... | grep -v /terraform/vendor/)
2017/03/27 18:56:06 Generated command/internal_plugin_list.go
TF_ACC=1 go test ./builtin/providers/packet -v -run=TestAccPacketSSHKey_Basic -timeout 120m
=== RUN   TestAccPacketSSHKey_Basic
--- PASS: TestAccPacketSSHKey_Basic (5.30s)
PASS
ok  	github.com/hashicorp/terraform/builtin/providers/packet	5.316s
```

```
% make testacc TEST=./builtin/providers/digitalocean TESTARGS='-run=TestAccDigitalOceanSSHKey_'
==> Checking that code complies with gofmt requirements...
go generate $(go list ./... | grep -v /terraform/vendor/)
2017/03/27 19:29:01 Generated command/internal_plugin_list.go
TF_ACC=1 go test ./builtin/providers/digitalocean -v -run=TestAccDigitalOceanSSHKey_ -timeout 120m
=== RUN   TestAccDigitalOceanSSHKey_importBasic
--- PASS: TestAccDigitalOceanSSHKey_importBasic (4.18s)
=== RUN   TestAccDigitalOceanSSHKey_Basic
--- PASS: TestAccDigitalOceanSSHKey_Basic (2.77s)
PASS
ok  	github.com/hashicorp/terraform/builtin/providers/digitalocean	6.991s
```
2017-03-27 19:59:09 +03:00
Sergey 0ff734f157 provider/digitalocean: Support disk only resize (#13059)
Allow to resize a droplet permanently (i.e. apply disk resize)
if previously it was resized temporarily (CPU and RAM only).

Fixes: #13007

```
$ make testacc TEST=./builtin/providers/digitalocean TESTARGS='-run=TestAccDigitalOceanDroplet_ResizeOnlyDisk'
==> Checking that code complies with gofmt requirements...
go generate $(go list ./... | grep -v /terraform/vendor/)
2017/03/25 03:54:23 Generated command/internal_plugin_list.go
TF_ACC=1 go test ./builtin/providers/digitalocean -v -run=TestAccDigitalOceanDroplet_ResizeOnlyDisk -timeout 120m
=== RUN   TestAccDigitalOceanDroplet_ResizeOnlyDisk
--- PASS: TestAccDigitalOceanDroplet_ResizeOnlyDisk (198.62s)
PASS
ok  	github.com/hashicorp/terraform/builtin/providers/digitalocean	198.638s
```
2017-03-27 13:16:01 +03:00
Jake Champlin d5222aa2e6
provider/digitalocean: Update digital ocean acceptance tests
Digital Ocean doesn't let you upload multiple SSH keys regardless of key_name, but on the fingerprint of the key contents. Which broke all of our tests when ran in parallel.

These changes maintain our acctest validity, and still let them pass.

```
##teamcity[testStarted timestamp='2017-02-10T16:19:12.532' name='TestAccDigitalOceanDroplet_Basic']
##teamcity[testStdOut name='TestAccDigitalOceanDroplet_Basic' out='=== RUN   TestAccDigitalOceanDroplet_Basic|n--- PASS: TestAccDigitalOceanDroplet_Basic (47.33s)|nPASS|n']
##teamcity[testStdErr name='TestAccDigitalOceanDroplet_Basic' out='']
##teamcity[testFinished timestamp='2017-02-10T16:19:59.898' name='TestAccDigitalOceanDroplet_Basic']
##teamcity[testStarted timestamp='2017-02-10T16:19:12.532' name='TestAccDigitalOceanDroplet_UpdateTags']
##teamcity[testStdOut name='TestAccDigitalOceanDroplet_UpdateTags' out='=== RUN   TestAccDigitalOceanDroplet_UpdateTags|n--- PASS: TestAccDigitalOceanDroplet_UpdateTags (50.96s)|nPASS|n']
##teamcity[testStdErr name='TestAccDigitalOceanDroplet_UpdateTags' out='']
##teamcity[testFinished timestamp='2017-02-10T16:20:03.516' name='TestAccDigitalOceanDroplet_UpdateTags']
##teamcity[testStarted timestamp='2017-02-10T16:19:12.530' name='TestAccDigitalOceanDroplet_importBasic']
##teamcity[testStdOut name='TestAccDigitalOceanDroplet_importBasic' out='=== RUN   TestAccDigitalOceanDroplet_importBasic|n--- PASS: TestAccDigitalOceanDroplet_importBasic (56.78s)|nPASS|n']
##teamcity[testStdErr name='TestAccDigitalOceanDroplet_importBasic' out='']
##teamcity[testFinished timestamp='2017-02-10T16:20:09.335' name='TestAccDigitalOceanDroplet_importBasic']
##teamcity[testStarted timestamp='2017-02-10T16:19:12.530' name='TestAccDigitalOceanDroplet_PrivateNetworkingIpv6']
##teamcity[testStdOut name='TestAccDigitalOceanDroplet_PrivateNetworkingIpv6' out='=== RUN   TestAccDigitalOceanDroplet_PrivateNetworkingIpv6|n--- PASS: TestAccDigitalOceanDroplet_PrivateNetworkingIpv6 (57.60s)|nPASS|n']
##teamcity[testStdErr name='TestAccDigitalOceanDroplet_PrivateNetworkingIpv6' out='']
##teamcity[testFinished timestamp='2017-02-10T16:20:10.157' name='TestAccDigitalOceanDroplet_PrivateNetworkingIpv6']
##teamcity[testStarted timestamp='2017-02-10T16:19:12.533' name='TestAccDigitalOceanDroplet_withSSH']
##teamcity[testStdOut name='TestAccDigitalOceanDroplet_withSSH' out='=== RUN   TestAccDigitalOceanDroplet_withSSH|n--- PASS: TestAccDigitalOceanDroplet_withSSH (59.76s)|nPASS|n']
##teamcity[testStdErr name='TestAccDigitalOceanDroplet_withSSH' out='']
##teamcity[testFinished timestamp='2017-02-10T16:20:12.326' name='TestAccDigitalOceanDroplet_withSSH']
##teamcity[testStarted timestamp='2017-02-10T16:19:12.530' name='TestAccDigitalOceanDroplet_Update']
##teamcity[testStdOut name='TestAccDigitalOceanDroplet_Update' out='=== RUN   TestAccDigitalOceanDroplet_Update|n--- PASS: TestAccDigitalOceanDroplet_Update (83.65s)|nPASS|n']
##teamcity[testStdErr name='TestAccDigitalOceanDroplet_Update' out='']
##teamcity[testFinished timestamp='2017-02-10T16:20:36.213' name='TestAccDigitalOceanDroplet_Update']
##teamcity[testStarted timestamp='2017-02-10T16:19:12.530' name='TestAccDigitalOceanDroplet_UpdateUserData']
##teamcity[testStdOut name='TestAccDigitalOceanDroplet_UpdateUserData' out='=== RUN   TestAccDigitalOceanDroplet_UpdateUserData|n--- PASS: TestAccDigitalOceanDroplet_UpdateUserData (103.18s)|nPASS|n']
##teamcity[testStdErr name='TestAccDigitalOceanDroplet_UpdateUserData' out='']
##teamcity[testFinished timestamp='2017-02-10T16:20:55.738' name='TestAccDigitalOceanDroplet_UpdateUserData']
##teamcity[testStarted timestamp='2017-02-10T16:19:12.533' name='TestAccDigitalOceanDroplet_ResizeWithOutDisk']
##teamcity[testStdOut name='TestAccDigitalOceanDroplet_ResizeWithOutDisk' out='=== RUN   TestAccDigitalOceanDroplet_ResizeWithOutDisk|n--- PASS: TestAccDigitalOceanDroplet_ResizeWithOutDisk (118.98s)|nPASS|n']
##teamcity[testStdErr name='TestAccDigitalOceanDroplet_ResizeWithOutDisk' out='']
##teamcity[testFinished timestamp='2017-02-10T16:21:11.558' name='TestAccDigitalOceanDroplet_ResizeWithOutDisk']
```
2017-02-10 16:41:35 -05:00
Jake Champlin e272cb2243 provider/digitalocean: Fix failing acceptance test (#11310)
Fixes failing acceptance test:
```
$ make testacc TEST=./builtin/providers/digitalocean TESTARGS='-run=TestAccDigitalOceanVolume_Droplet'
==> Checking that code complies with gofmt requirements...
go generate $(go list ./... | grep -v /terraform/vendor/)
2017/01/20 11:38:26 Generated command/internal_plugin_list.go
TF_ACC=1 go test ./builtin/providers/digitalocean -v -run=TestAccDigitalOceanVolume_Droplet -timeout 120m
=== RUN   TestAccDigitalOceanVolume_Droplet
--- PASS: TestAccDigitalOceanVolume_Droplet (57.38s)
PASS
ok      github.com/hashicorp/terraform/builtin/providers/digitalocean   57.411s
```

Also removes all redundant type declarations in the digitalocean package.
2017-01-20 17:47:54 +00:00
Jake Champlin 712b3e74b6
provider/digitalocean: Fix failing acceptance test
The second step of the `TestAccDigitalOceanDroplet_ResizeWithOutDisk` acceptance test was regularly failing. Upon investigation it was found that the second step's Terraform configuration had omitted the `user_data` parameter, thus forcing Terraform to create a new droplet resource instead of updating the current resource.

```
-/+ digitalocean_droplet.foobar
    disk:                 "20" => "<computed>"
    image:                "centos-7-x64" => "centos-7-x64"
    ipv4_address:         "138.197.0.55" => "<computed>"
    ipv4_address_private: "" => "<computed>"
    ipv6_address:         "" => "<computed>"
    ipv6_address_private: "" => "<computed>"
    locked:               "false" => "<computed>"
    name:                 "foo" => "foo"
    region:               "nyc3" => "nyc3"
    resize_disk:          "true" => "false"
    size:                 "512mb" => "1gb"
    ssh_keys.#:           "1" => "1"
    ssh_keys.0:           "5770472" => "5770472"
    status:               "active" => "<computed>"
    user_data:            "foobar" => "" (forces new resource)
    vcpus:                "1" => "<computed>"
```

This fixes the acceptance test by adding the missing `user_data` parameter.
2017-01-10 10:00:04 -05:00
stack72 3ecdc057b5
provider/digitalocean: Removal of an old test that was causing the CI acceptance tests to hang 2016-12-12 17:11:20 +00:00
James Bardin 909099560d Fix future vet errors in providers 2016-11-10 18:10:43 -05:00
Andrew Starr-Bochicchio ccff5af8e7 Allow resizing DigitalOcean Droplets without increasing disk size. 2016-10-24 20:00:04 -04:00
Paul Stack eac6546e33 provider/digitalocean: Enforce Lowercase on IPV6 Addresses (#7652)
IPV6 Addresses are generally case insensitive but it is recommented to
store them as lowercase (https://tools.ietf.org/html/rfc5952#section-4.3)

When Terraform didn't store them as LowerCase, we got the following
error when using in DNS records:

```
-/+ digitalocean_record.web6
    domain:   "mydomain.com" => "mydomain.com"
    fqdn:     "web02.in.mydomain.com" => "<computed>"
    name:     "web02.in" => "web02.in"
    port:     "0" => "<computed>"
    priority: "0" => "<computed>"
    type:     "AAAA" => "AAAA"
    value:    "2a03:b0c0:0003:00d0:0000:0000:0b66:6001" => "2A03:B0C0:0003:00D0:0000:0000:0B66:6001" (forces new resource)
    weight:   "0" => "<computed>"
```

There was no need for this to be the case. We now enforce lowercase on both state and also when responses are returned from the API
2016-08-15 15:52:48 +01:00
stack72 43ac64e2b7
provider/digitalocean: Acceptance Tests needed a new Image Name 2016-08-08 12:08:37 +12:00
Tommy Murphy 0c6856f85c digitalocean tag support (#7500)
* vendor: update godo to support tags

* digitalocean: introduce tag resource

* website: update for digitalocean_tag resource
2016-07-11 12:09:06 +01:00
Paul Hinze 028664a015 provider/digitalocean: acctest improvements
* Add SSH Keys to all droplets in tests, this prevents acctests from
   spamming account owner email with root password details
 * Add a new helper/acctest package to be a home for random string / int
   implementations used in tests.
 * Insert some random details into record tests to prevent collisions
 * Normalize config style in tests to hclfmt conventions
2016-01-04 15:30:35 -06:00
Paul Hinze bf11be82c8 provider/digitalocean: enhance user_data test
Checks to ensure that the droplet is recreated. Commenting out
`ForceNew` on `user_data` fails the test now.

/cc @stack72
2015-11-04 15:20:52 -06:00
stack72 ffdd4de326 Making user_data force a new droplet for DigitalOcean 2015-11-03 20:53:54 +00:00
Antoine Grondin 0bcf557198 use official Go client for DigitalOcean provider 2015-09-27 01:09:51 -04:00
Sander van Harmelen 12f6ccb731 Refactor the DigitalOcean provider
With this refactor the DigitalOcean provider is updated to use the
schema.Provider approach released with TF 0.2.
2014-11-18 11:26:59 +01:00
Jack Pearkes ecf66ad7b5 providers/digitalocean: compat for changes to API for droplet size
Upstream in the digitalocean API, the size slug became a size
string, breaking pearkes/digitalocean.

https://github.com/pearkes/digitalocean/pull/1

This fixes compatibility for changes to that library.

closes #510
2014-11-02 14:50:59 -08:00
Mitchell Hashimoto aafbc2ab7c providers/digitalocean: tests passing, compiling 2014-09-16 17:28:22 -07:00
Jack Pearkes 58a482d677 providers/digitalocean: fix tests for region
the user_data argument doesn't exist on all regions
2014-09-05 11:18:49 -04:00
Jack Pearkes 28692656e2 providers/digitalocean: add user_data for create droplet
fixes #267
2014-09-05 11:16:12 -04:00
Jack Pearkes 872acb3740 providers/digitalocean: fix ip address when using private networking
This adds a new `ipv4_address_private` and `ipv4_address_public`
computed attr. Also pulls in upstream changes from pearkes/digitalocean
2014-07-29 19:04:10 -04:00
Jack Pearkes ed8980714c providers/digitalocean: handle locked droplets and retry 2014-07-21 11:05:24 -04:00
Jack Pearkes 7be85deb92 providers/digitalocean: updates 2014-07-19 12:33:25 -04:00
Jack Pearkes 0965332b88 providers/digitalocean: WaitForAttribute 2014-07-19 09:45:42 -04:00
Jack Pearkes 4455a6120c providers/digitalocean: initial commit 2014-07-18 20:20:28 -04:00