Terraform GreenHost provider. forked from github.com/digitalocean/terraform-provider-digitalocean
Go to file
Andrew Starr-Bochicchio dfe37acbc0 Certificates: Move attribute validation from CustomizeDiff to Create (Fixes: #163).
When CustomizeDiff is run for a new resource, it does not have access to the
current state. In the digitalocean_certificate resource, we are using a
CustomizeDiff function to validate that certain attributes are used together
depending on the certificate type. When the value for one of those attributes
is interpolated, as in the case of generating a cert using the acme provider,
the validation fails since it depends on reading the value from state. As state
is not present, the value is interpreted as empty.

From the CustomizeDiff doc string:

> // The phases Terraform runs this in, and the state available via functions
> // like Get and GetChange, are as follows:
> //
> //  * New resource: One run with no state

https://godoc.org/github.com/hashicorp/terraform/helper/schema#Resource

This PR moves the validation from the CustomizeDiff function into the
Create function as well as adding acceptance tests:

```
$ make testacc TESTARGS='-run=TestAccDigitalOceanCertificate_ExpectedErrors'
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go test $(go list ./... |grep -v 'vendor') -v -run=TestAccDigitalOceanCertificate_ExpectedE$
?       github.com/terraform-providers/terraform-provider-digitalocean  [no test files]
=== RUN   TestAccDigitalOceanCertificate_ExpectedErrors
--- PASS: TestAccDigitalOceanCertificate_ExpectedErrors (0.10s)
PASS
ok      github.com/terraform-providers/terraform-provider-digitalocean/digitalocean     (cached)
```
2019-03-28 14:13:22 -04:00
.github Make CoC and support channels more visible 2017-11-01 23:04:47 +01:00
digitalocean Certificates: Move attribute validation from CustomizeDiff to Create (Fixes: #163). 2019-03-28 14:13:22 -04:00
examples Correct Kubernetes example 2018-12-12 13:32:30 +00:00
scripts Fix Changelog Links Script for digitalocean provider 2017-06-26 09:49:27 -05:00
vendor tidying up 2019-03-21 00:09:48 -05:00
website updates based on review feedback + maintenance windows 2019-03-26 16:35:07 -05:00
.gitignore Changed size on default node pool to ForceNew 2018-12-06 10:39:59 +00:00
.go-version provider: Ensured Go 1.11 in TravisCI and README 2019-03-01 15:52:49 -05:00
.travis.yml deps: use go modules for dep mgmt 2019-03-01 15:53:10 -05:00
CHANGELOG.md Update CHANGELOG.md 2019-03-27 15:34:10 -04:00
GNUmakefile deps: use go modules for dep mgmt 2019-03-01 15:53:10 -05:00
LICENSE initial commit 2017-06-05 20:54:06 +00:00
README.md provider: Ensured Go 1.11 in TravisCI and README 2019-03-01 15:52:49 -05:00
go.mod tidying up 2019-03-21 00:09:48 -05:00
go.sum tidying up 2019-03-21 00:09:48 -05:00
main.go Initial transfer of provider code 2017-06-06 11:45:18 -04:00

README.md

Terraform Provider

Requirements

  • Terraform 0.10.x
  • Go 1.11 (to build the provider plugin)

Building The Provider

Clone repository to: $GOPATH/src/github.com/terraform-providers/terraform-provider-digitalocean

$ mkdir -p $GOPATH/src/github.com/terraform-providers; cd $GOPATH/src/github.com/terraform-providers
$ git clone git@github.com:terraform-providers/terraform-provider-digitalocean

Enter the provider directory and build the provider

$ cd $GOPATH/src/github.com/terraform-providers/terraform-provider-digitalocean
$ make build

Using the provider

See the DigitalOcean Provider documentation to get started using the DigitalOcean provider.

Developing the Provider

If you wish to work on the provider, you'll first need Go installed on your machine (version 1.11+ is required). You'll also need to correctly setup a GOPATH, as well as adding $GOPATH/bin to your $PATH.

To compile the provider, run make build. This will build the provider and put the provider binary in the $GOPATH/bin directory.

$ make build
...
$ $GOPATH/bin/terraform-provider-digitalocean
...

In order to test the provider, you can simply run make test.

$ make test

In order to run the full suite of acceptance tests, run make testacc.

Note: Acceptance tests create real resources, and often cost money to run.

$ make testacc

In order to run a specific acceptance test, use the TESTARGS environment variable. For example, the following command will run TestAccDigitalOceanDomain_Basic acceptance test only:

$ make testacc TESTARGS='-run=TestAccDigitalOceanDomain_Basic'

For information about writting acceptance tests, see the main Terraform contributing guide.