diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..0e99165 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,47 @@ +# This GitHub action can publish assets for release when a tag is created. +# Currently its setup to run on any tag that matches the pattern "v*" (ie. v0.1.0). +# +# This uses an action (paultyng/ghaction-import-gpg) that assumes you set your +# private key in the `GPG_PRIVATE_KEY` secret and passphrase in the `PASSPHRASE` +# secret. If you would rather own your own GPG handling, please fork this action +# or use an alternative one for key handling. +# +# You will need to pass the `--batch` flag to `gpg` in your signing step +# in `goreleaser` to indicate this is being used in a non-interactive mode. +# +name: release +on: + push: + tags: + - 'v*' +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Unshallow + run: git fetch --prune --unshallow + - + name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.14 + - + name: Import GPG key + id: import_gpg + uses: paultyng/ghaction-import-gpg@v2.1.0 + env: + GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} + PASSPHRASE: ${{ secrets.PASSPHRASE }} + - + name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + version: latest + args: release --rm-dist + env: + GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index e367cfa..3c3a136 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ _obj _test _bin +vendor # Architecture specific extensions/prefixes *.[568vq] @@ -37,3 +38,5 @@ AccTest.log **/.idea *.old *.OLD + + diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 0000000..da82a80 --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,54 @@ +# Visit https://goreleaser.com for documentation on how to customize this +# behavior. +before: + hooks: + # this is just an example and not a requirement for provider building/publishing + - go mod tidy +builds: +- env: + # goreleaser does not work with CGO, it could also complicate + # usage by users in CI/CD systems like Terraform Cloud where + # they are unable to install libraries. + - CGO_ENABLED=0 + mod_timestamp: '{{ .CommitTimestamp }}' + flags: + - -trimpath + ldflags: + - '-s -w -X main.version={{.Version}} -X main.commit={{.Commit}}' + goos: + - freebsd + - windows + - linux + - darwin + goarch: + - amd64 + - '386' + - arm + - arm64 + ignore: + - goos: darwin + goarch: '386' + binary: '{{ .ProjectName }}_v{{ .Version }}' +archives: +- format: zip + name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}' +checksum: + name_template: '{{ .ProjectName }}_{{ .Version }}_SHA256SUMS' + algorithm: sha256 +signs: + - artifacts: checksum + args: + # if you are using this is a GitHub action or some other automated pipeline, you + # need to pass the batch flag to indicate its not interactive. + - "--batch" + - "--local-user" + - "{{ .Env.GPG_FINGERPRINT }}" # set this environment variable for your signing key + - "--output" + - "${signature}" + - "--detach-sign" + - "${artifact}" +release: + # If you want to manually examine the release before its live, uncomment this line: + # draft: true +changelog: + skip: true diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index c4bf93e..0000000 --- a/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -language: go - -go: - - "1.12.1" - -branches: - only: - - /^development\/v.*$/ - - /^release\/v.*$/ - - /^v.*$/ - -install: - - go get golang.org/x/crypto/pkcs12 - - go get github.com/pkg/errors - - go get github.com/hashicorp/terraform - - pushd $GOPATH/src/github.com/hashicorp/terraform - - git checkout v0.11.13 - - popd - -script: - - make dist - -deploy: - provider: releases - file: _bin/terraform-provider-ddcloud.*.zip - file_glob: true - skip_cleanup: true - on: - repo: DimensionDataResearch/dd-cloud-compute-terraform - tags: true - api_key: - secure: LTJjqC/G2arlaXfH+BGaU4dWUdBk9f6nKQwM0B3MtRZm76Lhi/wZFWOqzU3qSXbSGEHuSgfH4MsSM3AqQrLwsYRxkDo2QmwC05WrCa8ErdHPl0MWxEr1ZnRSysZsh2/BoVka1NsH93quPxCi6VjlSXPEjMAOtpMytsax3ac/gSZNOHrByEyxmNPFYlsS8eY+7B8D5c8EbBYZ6uuyN5vBqs46HwiAiXqIKEoUnjUjTrr/oyyH9Dd9RW98Ak6QF8ZnyrW1W6g4jyGPlRKfP6mhNI18jhn26w45sx6B84zKNY6YgmGwtrGJHfWC8qS0WBEDIKlmkRL8/j9mEzvsHMQ8wVYItgSPHl+kRnQjEuqI6vkiyEeFdmUrs1ZFKWbfkfO9Doz6pohQBxrATM480nEumnyRyeo50wxiXwe0BAlG5do/duqPT/p03sb2Zh8JolXqfbHcCXFdFiX9cEUBhaO+ofiWfpq0T2ezxr5fH8m+1TMZLOPhJc1yDXirnoEFtrm4QBYAfMJOeJhKHB12MZjMIirYahNoFT1+wDeTx/GGwfIkm4AG+OnYic2muRqIU+dG3DPpbn2YbkNTnS+nvdE73g8wcQQnjbsPaD7obuKnMrK7EDIgBl8CJwzdRan9kRc6BUuGzdGEJ1ern7yZKzIrmTz76hbPTRB6tTWTQh1uBb0= diff --git a/CHANGES.md b/CHANGES.md index dcecf18..04be550 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,9 @@ # Changes +### v3.0.0 +Breaking Changes: +* Upgrade to terraform 0.12 + ### v1.3.8 * Handle missing server when checking for existence of server network adapter (DimensionDataResearch/dd-cloud-compute-terraform#114). diff --git a/Dockerfile b/Dockerfile index 1f99916..51f9b62 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,52 @@ -FROM hashicorp/terraform:0.9.9 +# --------------------------------------------------------------------------------------------------------------------- +# Terraform Build Image -MAINTAINER Adam Friedman +# FROM golang:alpine as Build +FROM golang:1.12.1-alpine as Build + +ENV TERRAFORM_VERSION=0.12.19 +ENV DDCLOUD_VERSION=3.0 -RUN mkdir -p /config -VOLUME /config +RUN apk add --update git bash openssh make -WORKDIR /config +ENV TF_DEV=true +ENV TF_RELEASE=true -COPY _bin/linux-amd64/terraform-provider-ddcloud /bin + +## Terraform +WORKDIR $GOPATH/src/github.com/hashicorp/terraform +RUN git clone https://github.com/hashicorp/terraform.git ./ && \ + git checkout v${TERRAFORM_VERSION} && \ + /bin/bash scripts/build.sh && \ + ls -l /bin + + +## DDCloud Provider +WORKDIR $GOPATH/src/github.com/DimensionDataResearch/dd-cloud-compute-terraform +RUN git clone https://github.com/DimensionDataResearch/dd-cloud-compute-terraform.git ./ && \ + # git checkout v${DDCLOUD_VERSION} && \ + git checkout development/v${DDCLOUD_VERSION} && \ + go get github.com/pkg/errors && \ + go get golang.org/x/crypto/pkcs12 && \ + go get github.com/DimensionDataResearch/go-dd-cloud-compute/compute && \ + make dev + + + +# --------------------------------------------------------------------------------------------------------------------- +# Create Minimal Image + +FROM alpine +RUN apk add --update git bash openssh curl +COPY --from=build /go/bin/terraform /bin +COPY --from=build /usr/local/bin/terraform-provider-ddcloud /bin + + +## Kubectl binadry download (The K8s/Helm Terraform providers are not yet able to perform all the configuration required during a deployment) +RUN wget https://storage.googleapis.com/kubernetes-release/release/v1.15.3/bin/linux/amd64/kubectl && \ + chmod +x ./kubectl && \ + mv ./kubectl /usr/local/bin/kubectl + +WORKDIR /bin + +ENTRYPOINT ["terraform"] \ No newline at end of file diff --git a/Makefile b/Makefile index 03ea41f..d74a528 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,9 @@ PROVIDER_NAME = ddcloud -VERSION = 2.3.3 +VERSION = 3.0.5 VERSION_INFO_FILE = ./$(PROVIDER_NAME)/version-info.go BIN_DIRECTORY = _bin -# BIN_DIRECTORY = /usr/local/bin EXECUTABLE_NAME = terraform-provider-$(PROVIDER_NAME) DIST_ZIP_PREFIX = $(EXECUTABLE_NAME).v$(VERSION) diff --git a/README.md b/README.md index a336a9c..763c346 100644 --- a/README.md +++ b/README.md @@ -31,11 +31,16 @@ For more information, see the [provider documentation](docs/). ## Prerequisites -Requires Terraform v0.8.x or newer (currently built against Terraform v0.11.x). +Requires Terraform v0.12+ ## Installing the provider - Download the [latest release](https://github.com/DimensionDataResearch/dd-cloud-compute-terraform/releases/latest) and place the provider executable in the same directory as the main Terraform executable. +Simply place terraform-provider-ddcloud binary on the same directory as terraform binary. + +## Using Terraform v0.13 +In terraform v0.13, the concept of registry namespace is introduced. +To use in-house provider build, follow instructions below. +- Instruction to be provided ### Docker @@ -63,9 +68,9 @@ Create a folder containing a single `.tf` file: provider "ddcloud" { # User name and password can also be specified via MCP_USER and MCP_PASSWORD environment variables. - "username" = "my_username" - "password" = "my_password" # Watch out for escaping if your password contains characters such as "$". - "region" = "AU" # The DD compute region code (e.g. "AU", "NA", "EU") + username = "my_username" + password = "my_password" # Watch out for escaping if your password contains characters such as "$". + region = "AU" # The DD compute region code (e.g. "AU", "NA", "EU") } resource "ddcloud_networkdomain" "my-domain" { @@ -78,8 +83,8 @@ resource "ddcloud_vlan" "my-vlan" { name = "terraform-test-vlan" description = "This is my Terraform test VLAN." - networkdomain = "${ddcloud_networkdomain.my-domain.id}" - + networkdomain = ddcloud_networkdomain.my-domain.id + attached_vlan_gateway_addressing = "HIGH" # VLAN's default network: 192.168.17.1 -> 192.168.17.254 (netmask = 255.255.255.0) ipv4_base_address = "192.168.17.0" ipv4_prefix_size = 24 @@ -95,9 +100,9 @@ resource "ddcloud_server" "my-server" { memory_gb = 8 cpu_count = 2 - networkdomain = "${ddcloud_networkdomain.my-domain.id}" + networkdomain = ddcloud_networkdomain.my-domain.id - primary_network_adapter = { + primary_network_adapter { ipv4 = "192.168.17.10" } @@ -123,8 +128,8 @@ resource "ddcloud_server" "my-server" { } resource "ddcloud_nat" "my-server-nat" { - networkdomain = "${ddcloud_networkdomain.my-domain.id}" - private_ipv4 = "${ddcloud_server.my-server.primary_adapter_ipv4}" + networkdomain = ddcloud_networkdomain.my-domain.id + private_ipv4 = ddcloud_server.my-server.primary_adapter_ipv4 # public_ipv4 is computed at deploy time. @@ -146,10 +151,10 @@ resource "ddcloud_firewall_rule" "my-vm-http-in" { # For a ddcloud_vlan, you can obtain these values using the ipv4_baseaddress and ipv4_prefixsize properties. # You can also specify destination_network or destination_address_list instead of source_address. - destination_address = "${ddcloud_nat.my-server-nat.public_ipv4}" + destination_address = ddcloud_nat.my-server-nat.public_ipv4 destination_port = "80" - networkdomain = "${ddcloud_networkdomain.my-domain.id}" + networkdomain = ddcloud_networkdomain.my-domain.id } ``` diff --git a/ddcloud/datasource_addresslist.go b/ddcloud/datasource_addresslist.go index 3976727..479222d 100644 --- a/ddcloud/datasource_addresslist.go +++ b/ddcloud/datasource_addresslist.go @@ -2,8 +2,9 @@ package ddcloud import ( "fmt" - "github.com/hashicorp/terraform/helper/schema" "log" + + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) func dataSourceAddressList() *schema.Resource { diff --git a/ddcloud/datasource_networkdomain.go b/ddcloud/datasource_networkdomain.go index 28d0c3d..62157f5 100644 --- a/ddcloud/datasource_networkdomain.go +++ b/ddcloud/datasource_networkdomain.go @@ -4,7 +4,7 @@ import ( "fmt" "log" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) func dataSourceNetworkDomain() *schema.Resource { diff --git a/ddcloud/datasource_networkdomain_test.go b/ddcloud/datasource_networkdomain_test.go index b210256..b5103b7 100644 --- a/ddcloud/datasource_networkdomain_test.go +++ b/ddcloud/datasource_networkdomain_test.go @@ -3,8 +3,8 @@ package ddcloud import ( "fmt" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" "testing" ) diff --git a/ddcloud/datasource_pfx.go b/ddcloud/datasource_pfx.go index 342f97a..a5d4f82 100644 --- a/ddcloud/datasource_pfx.go +++ b/ddcloud/datasource_pfx.go @@ -6,7 +6,7 @@ import ( "io/ioutil" "log" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "golang.org/x/crypto/pkcs12" ) diff --git a/ddcloud/datasource_vlan.go b/ddcloud/datasource_vlan.go index 951e4c1..bb1b076 100644 --- a/ddcloud/datasource_vlan.go +++ b/ddcloud/datasource_vlan.go @@ -4,7 +4,7 @@ import ( "fmt" "log" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) func dataSourceVLAN() *schema.Resource { diff --git a/ddcloud/provider.go b/ddcloud/provider.go index 5b55927..ca2fde7 100644 --- a/ddcloud/provider.go +++ b/ddcloud/provider.go @@ -11,8 +11,8 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) // Provider creates the Dimension Data Cloud resource provider. @@ -23,14 +23,12 @@ func Provider() terraform.ResourceProvider { "region": &schema.Schema{ Type: schema.TypeString, Optional: true, - Default: "", Description: "The region code that identifies the target end-point for the Dimension Data CloudControl API.", ConflictsWith: []string{"cloudcontrol_endpoint"}, }, "cloudcontrol_endpoint": &schema.Schema{ Type: schema.TypeString, Optional: true, - Default: "", Description: "The base URL of a custom target end-point for the Dimension Data CloudControl API.", ConflictsWith: []string{"region"}, }, @@ -156,7 +154,7 @@ func Provider() terraform.ResourceProvider { // Returns the provider's compute API client. func configureProvider(providerSettings *schema.ResourceData) (interface{}, error) { // Log provider version (for diagnostic purposes). - log.Print("ddcloud provider version is " + ProviderVersion) + // log.Print("ddcloud provider version is " + ProviderVersion) log.Printf("ProviderSettings = %#v", providerSettings) diff --git a/ddcloud/provider_test.go b/ddcloud/provider_test.go index bb97626..226e792 100644 --- a/ddcloud/provider_test.go +++ b/ddcloud/provider_test.go @@ -1,9 +1,10 @@ package ddcloud import ( - "github.com/hashicorp/terraform/helper/schema" - "github.com/hashicorp/terraform/terraform" "testing" + + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) var testAccProviders map[string]terraform.ResourceProvider diff --git a/ddcloud/resource_address.go b/ddcloud/resource_address.go index 8c3a712..f1452e4 100644 --- a/ddcloud/resource_address.go +++ b/ddcloud/resource_address.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "github.com/pkg/errors" "log" "strings" diff --git a/ddcloud/resource_address_list.go b/ddcloud/resource_address_list.go index e74ff77..16f3e2d 100644 --- a/ddcloud/resource_address_list.go +++ b/ddcloud/resource_address_list.go @@ -2,7 +2,7 @@ package ddcloud import ( "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "log" ) diff --git a/ddcloud/resource_address_list_test.go b/ddcloud/resource_address_list_test.go index aca1253..edf4bdc 100644 --- a/ddcloud/resource_address_list_test.go +++ b/ddcloud/resource_address_list_test.go @@ -5,8 +5,8 @@ import ( "testing" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) /* diff --git a/ddcloud/resource_firewall_rule.go b/ddcloud/resource_firewall_rule.go index 78dcdaf..5326ef1 100644 --- a/ddcloud/resource_firewall_rule.go +++ b/ddcloud/resource_firewall_rule.go @@ -9,7 +9,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_firewall_rule_test.go b/ddcloud/resource_firewall_rule_test.go index f57fc10..4fbaab4 100644 --- a/ddcloud/resource_firewall_rule_test.go +++ b/ddcloud/resource_firewall_rule_test.go @@ -6,8 +6,8 @@ import ( "testing" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) // ipv6.internode.on.net (CloudControl does not allow "ANY" as a source address for IPv6 rules) diff --git a/ddcloud/resource_helper.go b/ddcloud/resource_helper.go index da17c32..8530bf4 100644 --- a/ddcloud/resource_helper.go +++ b/ddcloud/resource_helper.go @@ -7,7 +7,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/models" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) // resourcePropertyHelper provides commonly-used functionality for working with Terraform's schema.ResourceData. diff --git a/ddcloud/resource_ip_address_reservation.go b/ddcloud/resource_ip_address_reservation.go index d7de3f2..82e96b9 100644 --- a/ddcloud/resource_ip_address_reservation.go +++ b/ddcloud/resource_ip_address_reservation.go @@ -7,7 +7,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/validators" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_nat.go b/ddcloud/resource_nat.go index f95ddd8..c964bcd 100644 --- a/ddcloud/resource_nat.go +++ b/ddcloud/resource_nat.go @@ -9,7 +9,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( @@ -145,6 +145,7 @@ func resourceNATCreate(data *schema.ResourceData, provider interface{}) error { } data.Set(resourceKeyNATPublicAddress, natRule.ExternalIPAddress) + data.Set(resourceKeyNATPrivateAddress, natRule.InternalIPAddress) return nil } diff --git a/ddcloud/resource_network_adapter.go b/ddcloud/resource_network_adapter.go index 8d2c780..666bed2 100644 --- a/ddcloud/resource_network_adapter.go +++ b/ddcloud/resource_network_adapter.go @@ -7,7 +7,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/models" "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_networkdomain.go b/ddcloud/resource_networkdomain.go index 85f2eb1..38544c2 100644 --- a/ddcloud/resource_networkdomain.go +++ b/ddcloud/resource_networkdomain.go @@ -8,7 +8,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_networkdomain_firewall_rule.go b/ddcloud/resource_networkdomain_firewall_rule.go index 7f8815e..8f5beb7 100644 --- a/ddcloud/resource_networkdomain_firewall_rule.go +++ b/ddcloud/resource_networkdomain_firewall_rule.go @@ -6,7 +6,7 @@ import ( "strings" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_networkdomain_test.go b/ddcloud/resource_networkdomain_test.go index e831108..444a032 100644 --- a/ddcloud/resource_networkdomain_test.go +++ b/ddcloud/resource_networkdomain_test.go @@ -5,8 +5,8 @@ import ( "testing" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) /* diff --git a/ddcloud/resource_port_list.go b/ddcloud/resource_port_list.go index cde6a76..659b743 100644 --- a/ddcloud/resource_port_list.go +++ b/ddcloud/resource_port_list.go @@ -4,7 +4,7 @@ import ( "log" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_port_list_test.go b/ddcloud/resource_port_list_test.go index 22f0056..accb110 100644 --- a/ddcloud/resource_port_list_test.go +++ b/ddcloud/resource_port_list_test.go @@ -5,8 +5,8 @@ import ( "testing" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) /* diff --git a/ddcloud/resource_server.go b/ddcloud/resource_server.go index 98003e9..cff51ae 100644 --- a/ddcloud/resource_server.go +++ b/ddcloud/resource_server.go @@ -11,7 +11,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/dd-cloud-compute-terraform/validators" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_server_anti_affinity.go b/ddcloud/resource_server_anti_affinity.go index 2f46f52..9f80e6e 100644 --- a/ddcloud/resource_server_anti_affinity.go +++ b/ddcloud/resource_server_anti_affinity.go @@ -7,7 +7,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_server_anti_affinity_test.go b/ddcloud/resource_server_anti_affinity_test.go index 789b76f..9febdca 100644 --- a/ddcloud/resource_server_anti_affinity_test.go +++ b/ddcloud/resource_server_anti_affinity_test.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) /* @@ -31,7 +31,7 @@ func testAccDDCloudAntiAffinityRuleBasic() string { description = "VLAN for Terraform acceptance test." networkdomain = "${ddcloud_networkdomain.acc_test_domain.id}" - + attached_vlan_gateway_addressing = "HIGH" ipv4_base_address = "192.168.17.0" ipv4_prefix_size = 24 } @@ -40,7 +40,7 @@ func testAccDDCloudAntiAffinityRuleBasic() string { count = 2 name = "acc_test_server-${format("%d", count.index + 1)}" description = "Server ${format("%d", count.index + 1)} for Terraform anti-affinity acceptance test." - admin_password = "snausages!" + admin_password = "Snausages!1234" memory_gb = 8 @@ -57,7 +57,7 @@ func testAccDDCloudAntiAffinityRuleBasic() string { image = "CentOS 7 64-bit 2 CPU" - auto_start = false + # Image disk disk { diff --git a/ddcloud/resource_server_backup.go b/ddcloud/resource_server_backup.go index ffd20d5..9132ced 100644 --- a/ddcloud/resource_server_backup.go +++ b/ddcloud/resource_server_backup.go @@ -11,7 +11,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "github.com/pkg/errors" ) diff --git a/ddcloud/resource_server_configuration.go b/ddcloud/resource_server_configuration.go index 8a589ae..36efa8c 100644 --- a/ddcloud/resource_server_configuration.go +++ b/ddcloud/resource_server_configuration.go @@ -6,7 +6,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/models" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) // updateServerConfiguration reconfigures a server, changing the allocated RAM and / or CPU count. diff --git a/ddcloud/resource_server_disks.go b/ddcloud/resource_server_disks.go index b2ef100..ba46d4c 100644 --- a/ddcloud/resource_server_disks.go +++ b/ddcloud/resource_server_disks.go @@ -7,7 +7,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/models" "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( @@ -502,7 +502,7 @@ func processModifyDisks(modifyDisks models.Disks, data *schema.ResourceData, pro modifyDisk.Speed, ) - var response *compute.APIResponseV2 + // var response *compute.APIResponseV2 var speedErr error operationDescription := fmt.Sprintf("Change speed of disk '%s' in server '%s'", modifyDisk.ID, serverID) @@ -511,10 +511,10 @@ func processModifyDisks(modifyDisks models.Disks, data *schema.ResourceData, pro defer asyncLock.Release() if modifyDisk.Speed == compute.ServerDiskSpeedProvisionedIops { - response, speedErr = apiClient.ChangeServerDiskSpeed(serverID, modifyDisk.ID, modifyDisk.Speed, &modifyDisk.Iops) + _, speedErr = apiClient.ChangeServerDiskSpeed(serverID, modifyDisk.ID, modifyDisk.Speed, &modifyDisk.Iops) } else { - response, speedErr = apiClient.ChangeServerDiskSpeed(serverID, modifyDisk.ID, modifyDisk.Speed, nil) + _, speedErr = apiClient.ChangeServerDiskSpeed(serverID, modifyDisk.ID, modifyDisk.Speed, nil) } if speedErr != nil { diff --git a/ddcloud/resource_server_migrate.go b/ddcloud/resource_server_migrate.go index e006c50..5cabc96 100644 --- a/ddcloud/resource_server_migrate.go +++ b/ddcloud/resource_server_migrate.go @@ -8,7 +8,7 @@ import ( "strconv" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) // Migrate state for ddcloud_server. diff --git a/ddcloud/resource_server_network_adapter.go b/ddcloud/resource_server_network_adapter.go index 2bc6cf8..1d4c4cf 100644 --- a/ddcloud/resource_server_network_adapter.go +++ b/ddcloud/resource_server_network_adapter.go @@ -7,7 +7,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/models" "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_server_network_adapter_test.go b/ddcloud/resource_server_network_adapter_test.go index a4b91d0..e232e4f 100644 --- a/ddcloud/resource_server_network_adapter_test.go +++ b/ddcloud/resource_server_network_adapter_test.go @@ -3,8 +3,8 @@ package ddcloud import ( "fmt" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) // Acceptance test configuration - ddcloud_server with single network_adapter (primary with IPv4 address) @@ -31,7 +31,7 @@ func testAccDDCloudServerNetworkAdapterPrimaryWithIPV4Address(name string, descr resource "ddcloud_server" "acc_test_server" { name = "%s" description = "%s" - admin_password = "snausages!" + admin_password = "Snausages!1234" memory_gb = 8 networkdomain = "${ddcloud_networkdomain.acc_test_domain.id}" dns_primary = "8.8.8.8" diff --git a/ddcloud/resource_server_test.go b/ddcloud/resource_server_test.go index 351303a..ca32db3 100644 --- a/ddcloud/resource_server_test.go +++ b/ddcloud/resource_server_test.go @@ -7,8 +7,8 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/models" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) /* @@ -33,7 +33,7 @@ func testAccDDCloudServerBasic(name string, description string, primaryIPv4Addre description = "VLAN for Terraform acceptance test." networkdomain = "${ddcloud_networkdomain.acc_test_domain.id}" - + attached_vlan_gateway_addressing = "HIGH" ipv4_base_address = "192.168.17.0" ipv4_prefix_size = 24 } @@ -41,7 +41,7 @@ func testAccDDCloudServerBasic(name string, description string, primaryIPv4Addre resource "ddcloud_server" "acc_test_server" { name = "%s" description = "%s" - admin_password = "snausages!" + admin_password = "Snausages!1234" memory_gb = 8 @@ -57,7 +57,7 @@ func testAccDDCloudServerBasic(name string, description string, primaryIPv4Addre image = "CentOS 7 64-bit 2 CPU" - auto_start = false + power_state = shutdown # Image disk @@ -88,7 +88,7 @@ func testAccDDCloudServerImageDisk1(sizeGB int, speed string) string { description = "VLAN for Terraform acceptance test." networkdomain = "${ddcloud_networkdomain.acc_test_domain.id}" - + attached_vlan_gateway_addressing = "HIGH" ipv4_base_address = "192.168.17.0" ipv4_prefix_size = 24 } @@ -96,7 +96,7 @@ func testAccDDCloudServerImageDisk1(sizeGB int, speed string) string { resource "ddcloud_server" "acc_test_server" { name = "acc-test-server-1-image-disk" description = "Server for Terraform acceptance test (single image disk)." - admin_password = "snausages!" + admin_password = "Snausages!1234" memory_gb = 8 @@ -112,7 +112,7 @@ func testAccDDCloudServerImageDisk1(sizeGB int, speed string) string { image = "CentOS 7 64-bit 2 CPU" - auto_start = false + # Image disk disk { @@ -142,7 +142,7 @@ func testAccDDCloudServerAdditionalDisk1(scsiUnitID int, sizeGB int, speed strin description = "VLAN for Terraform acceptance test." networkdomain = "${ddcloud_networkdomain.acc_test_domain.id}" - + attached_vlan_gateway_addressing = "HIGH" ipv4_base_address = "192.168.17.0" ipv4_prefix_size = 24 } @@ -150,7 +150,7 @@ func testAccDDCloudServerAdditionalDisk1(scsiUnitID int, sizeGB int, speed strin resource "ddcloud_server" "acc_test_server" { name = "acc-test-server-1-additional-disk" description = "Server for Terraform acceptance test (single additional disk)." - admin_password = "snausages!" + admin_password = "Snausages!1234" memory_gb = 8 @@ -166,7 +166,7 @@ func testAccDDCloudServerAdditionalDisk1(scsiUnitID int, sizeGB int, speed strin image = "CentOS 7 64-bit 2 CPU" - auto_start = false + # Image disk disk { @@ -212,7 +212,7 @@ func testAccDDCloudServerTag(tags map[string]string) string { resource "ddcloud_vlan" "acc_test_vlan" { name = "acc-test-vlan" description = "VLAN for Terraform acceptance test." - + attached_vlan_gateway_addressing = "HIGH" networkdomain = "${ddcloud_networkdomain.acc_test_domain.id}" ipv4_base_address = "192.168.17.0" @@ -222,7 +222,7 @@ func testAccDDCloudServerTag(tags map[string]string) string { resource "ddcloud_server" "acc_test_server" { name = "acc-test-server-tags" description = "Server for Terraform acceptance test (tags)." - admin_password = "snausages!" + admin_password = "Snausages!1234" memory_gb = 8 @@ -267,7 +267,7 @@ func testAccDDCloudServerPowerState(powerState string) string { resource "ddcloud_vlan" "acc_test_vlan" { name = "acc-test-vlan" description = "VLAN for Terraform acceptance test." - + attached_vlan_gateway_addressing = "HIGH" networkdomain = "${ddcloud_networkdomain.acc_test_domain.id}" ipv4_base_address = "192.168.17.0" @@ -322,7 +322,7 @@ func TestAccServerBasicCreate(t *testing.T) { ), Steps: []resource.TestStep{ resource.TestStep{ - Config: testAccDDCloudServerBasic("acc-test-server", + Config: testAccDDCloudServerBasic("ddcloud_server.acc-test-server", "Server for Terraform acceptance test.", "192.168.17.6", ), diff --git a/ddcloud/resource_ssl_certificate_chain.go b/ddcloud/resource_ssl_certificate_chain.go index b53dcca..9782552 100644 --- a/ddcloud/resource_ssl_certificate_chain.go +++ b/ddcloud/resource_ssl_certificate_chain.go @@ -6,7 +6,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_ssl_domain_certificate.go b/ddcloud/resource_ssl_domain_certificate.go index c922207..8c1e7f9 100644 --- a/ddcloud/resource_ssl_domain_certificate.go +++ b/ddcloud/resource_ssl_domain_certificate.go @@ -6,7 +6,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_ssl_offload_profile.go b/ddcloud/resource_ssl_offload_profile.go index 77f25b5..a54811e 100644 --- a/ddcloud/resource_ssl_offload_profile.go +++ b/ddcloud/resource_ssl_offload_profile.go @@ -6,7 +6,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_static_route.go b/ddcloud/resource_static_route.go index 8c55786..17d6948 100644 --- a/ddcloud/resource_static_route.go +++ b/ddcloud/resource_static_route.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "log" ) diff --git a/ddcloud/resource_static_route_test.go b/ddcloud/resource_static_route_test.go index b930d3e..9a72902 100644 --- a/ddcloud/resource_static_route_test.go +++ b/ddcloud/resource_static_route_test.go @@ -5,8 +5,8 @@ import ( "testing" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) var staticRouteName string = "acc_test_static_route" @@ -15,24 +15,29 @@ var staticRouteName string = "acc_test_static_route" * Acceptance-test configurations. */ -func testAccDDCloudStaticRouteBasic(networkDomainId string, name string, description string, ipVersion string, +func testAccDDCloudStaticRouteBasic(name string, description string, ipVersion string, destinationNetworkAddress string, destinationPrefixSize int, nextHopAddress string) string { return fmt.Sprintf(` provider "ddcloud" { region = "AU" } - + resource "ddcloud_networkdomain" "acc_test_domain" { + name = "acc-test-networkdomainsr" + description = "Network domain for Terraform acceptance test." + datacenter = "AU9" + + } resource "ddcloud_static_route" "acc_test_static_route" { name = "%s" description = "%s" - networkdomain = "%s" + networkdomain = "${ddcloud_networkdomain.acc_test_domain.id}" ip_version = "%s" destination_network_address = "%s" destination_prefix_size = %d next_hop_address = "%s" }`, - name, description, networkDomainId, ipVersion, destinationNetworkAddress, destinationPrefixSize, nextHopAddress) + name, description, ipVersion, destinationNetworkAddress, destinationPrefixSize, nextHopAddress) } /* @@ -49,7 +54,7 @@ func TestAccStaticRouteBasicCreate(t *testing.T) { Steps: []resource.TestStep{ resource.TestStep{ Config: testAccDDCloudStaticRouteBasic( - "3cecad11-0d41-4abf-a0c2-475563eef208", + // "3cecad11-0d41-4abf-a0c2-475563eef208", staticRouteName, "Static Route for Terraform acceptance test.", "IPV4", @@ -60,9 +65,9 @@ func TestAccStaticRouteBasicCreate(t *testing.T) { Check: resource.ComposeTestCheckFunc( testCheckDDCloudStaticRouteExists(staticRouteName, true), testCheckDDCloudStaticRouteMatches(staticRouteName, compute.StaticRoute{ - Name: staticRouteName, - Description: "Static Route for Terraform acceptance test.", - NetworkDomainId: "3cecad11-0d41-4abf-a0c2-475563eef208", + Name: staticRouteName, + Description: "Static Route for Terraform acceptance test.", + // NetworkDomainId: "3cecad11-0d41-4abf-a0c2-475563eef208", IpVersion: "IPv4", DestinationNetworkAddress: "100.103.0.0", DestinationPrefixSize: 16, diff --git a/ddcloud/resource_storage_controller.go b/ddcloud/resource_storage_controller.go index 9303e81..9cbbb06 100644 --- a/ddcloud/resource_storage_controller.go +++ b/ddcloud/resource_storage_controller.go @@ -7,7 +7,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/models" "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( @@ -555,7 +555,6 @@ func processModifyStorageControllerDisks(modifyDisks models.Disks, data *schema. propertyHelper := propertyHelper(data) controllerID := data.Id() serverID := data.Get(resourceKeyStorageControllerServerID).(string) - apiClient := providerState.Client() targetController, err := getStorageController(apiClient, data) if err != nil { @@ -688,17 +687,18 @@ func processModifyStorageControllerDisks(modifyDisks models.Disks, data *schema. modifyDisk.Speed, ) - var response *compute.APIResponseV2 var iopErr error + // var response *compute.APIResponseV2 err = providerState.RetryAction(operationDescription, func(context retry.Context) { + asyncLock := providerState.AcquireAsyncOperationLock(operationDescription) defer asyncLock.Release() if modifyDisk.Speed == compute.ServerDiskSpeedProvisionedIops { - response, iopErr = apiClient.ChangeServerDiskSpeed(serverID, modifyDisk.ID, modifyDisk.Speed, &modifyDisk.Iops) + _, iopErr = apiClient.ChangeServerDiskSpeed(serverID, modifyDisk.ID, modifyDisk.Speed, &modifyDisk.Iops) } else { - response, iopErr = apiClient.ChangeServerDiskSpeed(serverID, modifyDisk.ID, modifyDisk.Speed, nil) + _, iopErr = apiClient.ChangeServerDiskSpeed(serverID, modifyDisk.ID, modifyDisk.Speed, nil) } if compute.IsResourceBusyError(iopErr) { diff --git a/ddcloud/resource_storage_controller_test.go b/ddcloud/resource_storage_controller_test.go index 697c1dd..c1d464f 100644 --- a/ddcloud/resource_storage_controller_test.go +++ b/ddcloud/resource_storage_controller_test.go @@ -7,8 +7,8 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/models" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) /* @@ -43,7 +43,7 @@ func testAccDDCloudStorageController1DefaultWithImageDisk() string { resource "ddcloud_server" "acc_test_server" { name = "AccTestStorageControllerServer" description = "Server for storage controller acceptance test" - admin_password = "snausages!" + admin_password = "Snausages!1234" memory_gb = 8 @@ -59,7 +59,7 @@ func testAccDDCloudStorageController1DefaultWithImageDisk() string { image = "CentOS 7 64-bit 2 CPU" - auto_start = false + } resource "ddcloud_storage_controller" "acc_test_server_controller_0" { @@ -102,7 +102,7 @@ func testAccDDCloudStorageController1DefaultWithAdditional1Disk() string { resource "ddcloud_server" "acc_test_server" { name = "AccTestStorageControllerServer" description = "Server for storage controller acceptance test" - admin_password = "snausages!" + admin_password = "Snausages!1234" memory_gb = 8 @@ -118,7 +118,7 @@ func testAccDDCloudStorageController1DefaultWithAdditional1Disk() string { image = "CentOS 7 64-bit 2 CPU" - auto_start = false + } resource "ddcloud_storage_controller" "acc_test_server_controller_0" { @@ -188,7 +188,7 @@ func testAccDDCloudStorageController2With1DiskEach(withSecondController bool) st resource "ddcloud_server" "acc_test_server" { name = "AccTestStorageControllerServer" description = "Server for storage controller acceptance test" - admin_password = "snausages!" + admin_password = "Snausages!1234" memory_gb = 8 @@ -204,7 +204,7 @@ func testAccDDCloudStorageController2With1DiskEach(withSecondController bool) st image = "CentOS 7 64-bit 2 CPU" - auto_start = false + } resource "ddcloud_storage_controller" "acc_test_server_controller_0" { diff --git a/ddcloud/resource_tag.go b/ddcloud/resource_tag.go index 5bb7733..336252b 100644 --- a/ddcloud/resource_tag.go +++ b/ddcloud/resource_tag.go @@ -5,7 +5,7 @@ import ( "log" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_test.go b/ddcloud/resource_test.go index 0fef2e3..c1df95f 100644 --- a/ddcloud/resource_test.go +++ b/ddcloud/resource_test.go @@ -7,8 +7,8 @@ import ( "math/rand" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) /* diff --git a/ddcloud/resource_vip_node.go b/ddcloud/resource_vip_node.go index edd2860..a7499d8 100644 --- a/ddcloud/resource_vip_node.go +++ b/ddcloud/resource_vip_node.go @@ -5,7 +5,7 @@ import ( "log" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_vip_node_test.go b/ddcloud/resource_vip_node_test.go index 1650b2f..aeea72e 100644 --- a/ddcloud/resource_vip_node_test.go +++ b/ddcloud/resource_vip_node_test.go @@ -5,8 +5,8 @@ import ( "testing" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) /* diff --git a/ddcloud/resource_vip_pool.go b/ddcloud/resource_vip_pool.go index 2a594ee..522d581 100644 --- a/ddcloud/resource_vip_pool.go +++ b/ddcloud/resource_vip_pool.go @@ -6,7 +6,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_vip_pool_member.go b/ddcloud/resource_vip_pool_member.go index a3495e7..ff101e7 100644 --- a/ddcloud/resource_vip_pool_member.go +++ b/ddcloud/resource_vip_pool_member.go @@ -7,7 +7,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_vip_pool_member_test.go b/ddcloud/resource_vip_pool_member_test.go index e7ce29d..7aae845 100644 --- a/ddcloud/resource_vip_pool_member_test.go +++ b/ddcloud/resource_vip_pool_member_test.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) /* @@ -36,8 +36,8 @@ func testAccDDCloudVIPPoolMemberBasic(port *int) string { name = "acc_test_tool" description = "VIP pool for Terraform acceptance test." load_balance_method = "ROUND_ROBIN" - service_down_action = "NONE", - slow_ramp_time = 10, + service_down_action = "NONE" + slow_ramp_time = 10 networkdomain = "${ddcloud_networkdomain.acc_test_domain.id}" } @@ -54,8 +54,7 @@ func testAccDDCloudVIPPoolMemberBasic(port *int) string { resource "ddcloud_vip_pool_member" "acc_test_pool_member" { pool = "${ddcloud_vip_pool.acc_test_pool.id}" node = "${ddcloud_vip_node.acc_test_node.id}" - - %s + %s } `, memberPort) } diff --git a/ddcloud/resource_vip_pool_test.go b/ddcloud/resource_vip_pool_test.go index c86a8d7..c47a3ab 100644 --- a/ddcloud/resource_vip_pool_test.go +++ b/ddcloud/resource_vip_pool_test.go @@ -5,8 +5,8 @@ import ( "testing" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) /* @@ -32,8 +32,8 @@ func testAccDDCloudVIPPoolBasic(poolName string, loadBalanceMethod string, servi name = "%s" description = "VIP pool for Terraform acceptance test." load_balance_method = "%s" - service_down_action = "%s", - slow_ramp_time = %d, + service_down_action = "%s" + slow_ramp_time = %d health_monitors = ["CCDEFAULT.Udp","CCDEFAULT.Tcp"] networkdomain = "${ddcloud_networkdomain.acc_test_domain.id}" } diff --git a/ddcloud/resource_virtual_listener.go b/ddcloud/resource_virtual_listener.go index a0cddb5..0ddfba5 100644 --- a/ddcloud/resource_virtual_listener.go +++ b/ddcloud/resource_virtual_listener.go @@ -6,7 +6,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_virtual_listener_test.go b/ddcloud/resource_virtual_listener_test.go index a0264ff..27e27e4 100644 --- a/ddcloud/resource_virtual_listener_test.go +++ b/ddcloud/resource_virtual_listener_test.go @@ -5,8 +5,8 @@ import ( "testing" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) /* @@ -31,7 +31,7 @@ func testAccDDCloudVirtualListenerBasic(name string, listenerIPAddress string, e resource "ddcloud_virtual_listener" "acc_test_listener" { name = "%s" protocol = "HTTP" - optimization_profiles = ["TCP"] + optimization_profile = "TCP" ipv4 = "%s" enabled = "%t" diff --git a/ddcloud/resource_vlan.go b/ddcloud/resource_vlan.go index 2446bc0..33f51a4 100644 --- a/ddcloud/resource_vlan.go +++ b/ddcloud/resource_vlan.go @@ -7,7 +7,7 @@ import ( "github.com/DimensionDataResearch/dd-cloud-compute-terraform/retry" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) const ( diff --git a/ddcloud/resource_vlan_test.go b/ddcloud/resource_vlan_test.go index 3c8bc22..da45fd7 100644 --- a/ddcloud/resource_vlan_test.go +++ b/ddcloud/resource_vlan_test.go @@ -5,8 +5,8 @@ import ( "testing" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/resource" - "github.com/hashicorp/terraform/terraform" + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/terraform" ) /* diff --git a/ddcloud/tag_helpers.go b/ddcloud/tag_helpers.go index 92a5b6e..891e6ae 100644 --- a/ddcloud/tag_helpers.go +++ b/ddcloud/tag_helpers.go @@ -3,7 +3,7 @@ package ddcloud import ( "fmt" "github.com/DimensionDataResearch/go-dd-cloud-compute/compute" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "log" ) diff --git a/ddcloud/utils.go b/ddcloud/utils.go index 4418327..e9f4612 100644 --- a/ddcloud/utils.go +++ b/ddcloud/utils.go @@ -1,7 +1,7 @@ package ddcloud import ( - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) func newStringSet() *schema.Set { diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 35422a3..0000000 --- a/docs/README.md +++ /dev/null @@ -1,42 +0,0 @@ -# Managed Cloud Platform - -The Dimension Data Managed Cloud Platform provider is used to interact with Dimension Data's Managed Cloud Platform resources. - -## Provider configuration - -See the documentation for [provider configuration](provider.md). - -## Resource types - -The `ddcloud` provider supports the following resource types: - -* [ddcloud_networkdomain](resource_types/networkdomain.md) - A CloudControl network domain. -* [ddcloud_vlan](resource_types/vlan.md) - A CloudControl Virtual LAN (VLAN). -* [ddcloud_server](resource_types/server.md) - A CloudControl Server (virtual machine). -* [ddcloud_storage_controller](resource_types/storage_controller.md) - A SCSI controller in a CloudControl Server. -* [ddcloud_network_adapter](resource_types/network_adapter.md) - An additional network adapter for a CloudControl Server. -* [ddcloud_server_backup](resource_types/server_backup.md) - Backup configuration for a CloudControl Server. -* [ddcloud_server_anti_affinity](resource_types/server_anti_affinity.md) - Anti-affinity rule for 2 CloudControl Servers (virtual machines). -* [ddcloud_nat](resource_types/nat.md) - A CloudControl Network Address Translation (NAT) rule. -* [ddcloud_firewall_rule](resource_types/firewall_rule.md) - A CloudControl firewall rule. -* [ddcloud_address_list](resource_types/address_list.md) - A CloudControl network address list. -* [ddcloud_port_list](resource_types/port_list.md) - A CloudControl network port list. -* [ddcloud_vip_node](resource_types/vip_node.md) - A CloudControl Virtual IP (VIP) node. -* [ddcloud_vip_pool](resource_types/vip_pool.md) - A CloudControl Virtual IP (VIP) pool. -* [ddcloud_vip_pool_member](resource_types/vip_pool_member.md) - A CloudControl Virtual IP (VIP) pool membership. -Links a `ddcloud_vip_node` (and optionally a port) to a `ddcloud_vip_pool`. -* [ddcloud_virtual_listener](resource_types/virtual_listener.md) - A CloudControl Virtual Listener. -* [ssl_offload_profile](resource_types/ssl_offload_profile.md) - An SSL-offload profile used by a Virtual Listener. -* [ssl_domain_certificate](resource_types/ssl_domain_certificate.md) - An X.509 certificate (with private key) for SSL offload. -* [ssl_certificate_chain](resource_types/ssl_certificate_chain.md) - An X.509 certificate chain for SSL offload. -* [ddcloud_ip_address_reservation](resource_types/ip_address_reservation.md) - An IP address reservation on a CloudControl VLAN (experimental, for advanced usage scenarios only). - -And the following data-source types: - -* [ddcloud_networkdomain](datasource_types/networkdomain.md) - A CloudControl network domain (lookup by name and data centre). -* [ddcloud_vlan](datasource_types/vlan.md) - A CloudControl Virtual LAN (VLAN) (lookup by name and network domain). -* [ddcloud_pfx](datasource_types/pfx.md) - Enables decoding of a `.pfx` file into PEM-format certificate and private key (useful for SSL-offload resources). - -## Migration - -For information about migrating from v1.0 or v1.1 to v1.2, see the [v1.2 migration docs](migrating/v1.1-v1.2.md). diff --git a/docs/datasource_types/addresslist.md b/docs/data-sources/addresslist.md similarity index 100% rename from docs/datasource_types/addresslist.md rename to docs/data-sources/addresslist.md diff --git a/docs/datasource_types/networkdomain.md b/docs/data-sources/networkdomain.md similarity index 100% rename from docs/datasource_types/networkdomain.md rename to docs/data-sources/networkdomain.md diff --git a/docs/datasource_types/pfx.md b/docs/data-sources/pfx.md similarity index 100% rename from docs/datasource_types/pfx.md rename to docs/data-sources/pfx.md diff --git a/docs/datasource_types/vlan.md b/docs/data-sources/vlan.md similarity index 100% rename from docs/datasource_types/vlan.md rename to docs/data-sources/vlan.md diff --git a/docs/guides/migrating/terraform_v0.13_upgrade_guide.md b/docs/guides/migrating/terraform_v0.13_upgrade_guide.md new file mode 100644 index 0000000..916fecf --- /dev/null +++ b/docs/guides/migrating/terraform_v0.13_upgrade_guide.md @@ -0,0 +1,54 @@ + +# Terraform 0.13 Upgrade Guide +> Comprehensive guide to [0.13upgrade command](https://www.terraform.io/docs/commands/0.13upgrade.html). +> This command is available only in Terraform v0.13 releases + + +1. Ensure you have downloaded terraform v0.13 binary. +1. Run *$> terraform 0.13upgrade* command. + + >By default, 0.13upgrade changes configuration files in the current working directory. However, you can provide an explicit path to another directory if desired, which may be useful for automating migrations of several modules in the same repository. + >note: For batch usage, refer to [0.13upgrade command](https://www.terraform.io/docs/commands/0.13upgrade.html). + + A new file called version.tf will be created if terraform block does not already exists. +1. Modify version.tf to include source and version + ``` + terraform { + required_providers { + ddcloud = { + source = "github.local/DimensionDataResearch/ddcloud" + version = "3.0.5" + } + } + required_version = ">= 0.13" + } + ``` + +1. As ddcloud provider is register in terraform registry, thus, we can't simply use namespace to locate ddcloud provider. +However, we could configure terraform to look for ddcloud provider locally, considered as in-house provider plugin in a specific location. + +- Create .terraformrc in user home directory. +`$> touch ~/.terraformrc` +> By default terraform looks for .terraformrc from home directory. Alternatively, you could use environment variable `TF_CLI_CONFIG_FILE` to specify a custom location. + +- Edit .terraformrc like below: + ``` + provider_installation { + filesystem_mirror { + path = "[replace with your HOME dir]/.terraform.d/plugins" + include = ["github.local/*/*"] + } + direct { + exclude = ["github.local/*/*"] + } + } + ``` + >Note: This config tell terraform to look for the plugin locally rather than using online registry. + +- Create plugin folder structure as described in .terraformrc and drop the provider plugin binary here + + `[HOME_Directory]/.terraform.d/plugins/github.local/DimensionDataResearch/ddcloud/13.0.1/darwin_amd64/terraform-provider-ddcloud` + > Note: I place the the provider plugin in darwin_amd64 folder as I'm using on mac. You may want to use 'linux_amd64' or 'windows_amd64' that matches + > your OS environment. + + diff --git a/docs/migrating/v1.1-v1.2.md b/docs/guides/migrating/v1.1-v1.2.md similarity index 100% rename from docs/migrating/v1.1-v1.2.md rename to docs/guides/migrating/v1.1-v1.2.md diff --git a/docs/provider.md b/docs/guides/provider.md similarity index 100% rename from docs/provider.md rename to docs/guides/provider.md diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..6858c19 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,42 @@ +# Managed Cloud Platform + +The Dimension Data Managed Cloud Platform provider is used to interact with Dimension Data's Managed Cloud Platform resources. + +## Provider configuration + +See the documentation for [provider configuration](guides/provider.md). + +## Resource types + +The `ddcloud` provider supports the following resource types: + +* [ddcloud_networkdomain](resources/networkdomain.md) - A CloudControl network domain. +* [ddcloud_vlan](resources/vlan.md) - A CloudControl Virtual LAN (VLAN). +* [ddcloud_server](resources/server.md) - A CloudControl Server (virtual machine). +* [ddcloud_storage_controller](resources/storage_controller.md) - A SCSI controller in a CloudControl Server. +* [ddcloud_network_adapter](resources/network_adapter.md) - An additional network adapter for a CloudControl Server. +* [ddcloud_server_backup](resources/server_backup.md) - Backup configuration for a CloudControl Server. +* [ddcloud_server_anti_affinity](resources/server_anti_affinity.md) - Anti-affinity rule for 2 CloudControl Servers (virtual machines). +* [ddcloud_nat](resources/nat.md) - A CloudControl Network Address Translation (NAT) rule. +* [ddcloud_firewall_rule](resources/firewall_rule.md) - A CloudControl firewall rule. +* [ddcloud_address_list](resources/address_list.md) - A CloudControl network address list. +* [ddcloud_port_list](resources/port_list.md) - A CloudControl network port list. +* [ddcloud_vip_node](resources/vip_node.md) - A CloudControl Virtual IP (VIP) node. +* [ddcloud_vip_pool](resources/vip_pool.md) - A CloudControl Virtual IP (VIP) pool. +* [ddcloud_vip_pool_member](resources/vip_pool_member.md) - A CloudControl Virtual IP (VIP) pool membership. +Links a `ddcloud_vip_node` (and optionally a port) to a `ddcloud_vip_pool`. +* [ddcloud_virtual_listener](resources/virtual_listener.md) - A CloudControl Virtual Listener. +* [ssl_offload_profile](resources/ssl_offload_profile.md) - An SSL-offload profile used by a Virtual Listener. +* [ssl_domain_certificate](resources/ssl_domain_certificate.md) - An X.509 certificate (with private key) for SSL offload. +* [ssl_certificate_chain](resources/ssl_certificate_chain.md) - An X.509 certificate chain for SSL offload. +* [ddcloud_ip_address_reservation](resources/ip_address_reservation.md) - An IP address reservation on a CloudControl VLAN (experimental, for advanced usage scenarios only). + +And the following data-source types: + +* [ddcloud_networkdomain](data-sources/networkdomain.md) - A CloudControl network domain (lookup by name and data centre). +* [ddcloud_vlan](data-sources/vlan.md) - A CloudControl Virtual LAN (VLAN) (lookup by name and network domain). +* [ddcloud_pfx](data-sources/pfx.md) - Enables decoding of a `.pfx` file into PEM-format certificate and private key (useful for SSL-offload resources). + +## Migration + +For information about migrating from v1.0 or v1.1 to v1.2, see the [v1.2 migration docs](guides/migrating/v1.1-v1.2.md). diff --git a/docs/resource_types/address.md b/docs/resources/address.md similarity index 100% rename from docs/resource_types/address.md rename to docs/resources/address.md diff --git a/docs/resource_types/address_list.md b/docs/resources/address_list.md similarity index 100% rename from docs/resource_types/address_list.md rename to docs/resources/address_list.md diff --git a/docs/resource_types/firewall_rule.md b/docs/resources/firewall_rule.md similarity index 100% rename from docs/resource_types/firewall_rule.md rename to docs/resources/firewall_rule.md diff --git a/docs/resource_types/ip_address_reservation.md b/docs/resources/ip_address_reservation.md similarity index 100% rename from docs/resource_types/ip_address_reservation.md rename to docs/resources/ip_address_reservation.md diff --git a/docs/resource_types/nat.md b/docs/resources/nat.md similarity index 100% rename from docs/resource_types/nat.md rename to docs/resources/nat.md diff --git a/docs/resource_types/network_adapter.md b/docs/resources/network_adapter.md similarity index 100% rename from docs/resource_types/network_adapter.md rename to docs/resources/network_adapter.md diff --git a/docs/resource_types/networkdomain.md b/docs/resources/networkdomain.md similarity index 100% rename from docs/resource_types/networkdomain.md rename to docs/resources/networkdomain.md diff --git a/docs/resource_types/port_list.md b/docs/resources/port_list.md similarity index 100% rename from docs/resource_types/port_list.md rename to docs/resources/port_list.md diff --git a/docs/resource_types/server.md b/docs/resources/server.md similarity index 100% rename from docs/resource_types/server.md rename to docs/resources/server.md diff --git a/docs/resource_types/server_anti_affinity.md b/docs/resources/server_anti_affinity.md similarity index 100% rename from docs/resource_types/server_anti_affinity.md rename to docs/resources/server_anti_affinity.md diff --git a/docs/resource_types/server_backup.md b/docs/resources/server_backup.md similarity index 100% rename from docs/resource_types/server_backup.md rename to docs/resources/server_backup.md diff --git a/docs/resource_types/ssl_certificate_chain.md b/docs/resources/ssl_certificate_chain.md similarity index 100% rename from docs/resource_types/ssl_certificate_chain.md rename to docs/resources/ssl_certificate_chain.md diff --git a/docs/resource_types/ssl_domain_certificate.md b/docs/resources/ssl_domain_certificate.md similarity index 100% rename from docs/resource_types/ssl_domain_certificate.md rename to docs/resources/ssl_domain_certificate.md diff --git a/docs/resource_types/ssl_offload_profile.md b/docs/resources/ssl_offload_profile.md similarity index 100% rename from docs/resource_types/ssl_offload_profile.md rename to docs/resources/ssl_offload_profile.md diff --git a/docs/resource_types/static_route.md b/docs/resources/static_route.md similarity index 100% rename from docs/resource_types/static_route.md rename to docs/resources/static_route.md diff --git a/docs/resource_types/storage_controller.md b/docs/resources/storage_controller.md similarity index 100% rename from docs/resource_types/storage_controller.md rename to docs/resources/storage_controller.md diff --git a/docs/resource_types/vip_node.md b/docs/resources/vip_node.md similarity index 100% rename from docs/resource_types/vip_node.md rename to docs/resources/vip_node.md diff --git a/docs/resource_types/vip_pool.md b/docs/resources/vip_pool.md similarity index 100% rename from docs/resource_types/vip_pool.md rename to docs/resources/vip_pool.md diff --git a/docs/resource_types/vip_pool_member.md b/docs/resources/vip_pool_member.md similarity index 100% rename from docs/resource_types/vip_pool_member.md rename to docs/resources/vip_pool_member.md diff --git a/docs/resource_types/virtual_listener.md b/docs/resources/virtual_listener.md similarity index 100% rename from docs/resource_types/virtual_listener.md rename to docs/resources/virtual_listener.md diff --git a/docs/resource_types/vlan.md b/docs/resources/vlan.md similarity index 100% rename from docs/resource_types/vlan.md rename to docs/resources/vlan.md diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..5b4ac4a --- /dev/null +++ b/go.mod @@ -0,0 +1,28 @@ +module github.com/DimensionDataResearch/dd-cloud-compute-terraform + +go 1.12 + +require ( + cloud.google.com/go v0.51.0 // indirect + cloud.google.com/go/storage v1.5.0 // indirect + github.com/DimensionDataResearch/go-dd-cloud-compute v1.13.0 + github.com/aws/aws-sdk-go v1.27.3 // indirect + github.com/fatih/color v1.9.0 // indirect + github.com/google/go-cmp v0.4.0 // indirect + github.com/hashicorp/go-getter v1.4.1 // indirect + github.com/hashicorp/go-hclog v0.10.1 // indirect + github.com/hashicorp/hcl/v2 v2.3.0 // indirect + github.com/hashicorp/terraform-plugin-sdk v1.4.1 + github.com/hashicorp/terraform-svchost v0.0.0-20191119180714-d2e4933b9136 // indirect + github.com/hashicorp/yamux v0.0.0-20190923154419-df201c70410d // indirect + github.com/oklog/run v1.1.0 // indirect + github.com/pkg/errors v0.9.1 + github.com/posener/complete v1.2.3 // indirect + github.com/ulikunitz/xz v0.5.6 // indirect + github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect + golang.org/x/crypto v0.0.0-20200108215511-5d647ca15757 + golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d // indirect + golang.org/x/sys v0.0.0-20200107162124-548cf772de50 // indirect + golang.org/x/tools v0.0.0-20200108203644-89082a384178 // indirect + google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..7161574 --- /dev/null +++ b/go.sum @@ -0,0 +1,395 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.51.0 h1:PvKAVQWCtlGUSlZkGW3QLelKaWq7KYv/MW1EboG8bfM= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0 h1:sAbMqjY1PEQKZBWfbu6Y6bsupJ9c4QdHnzg/VvYTLcE= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0 h1:9/vpR43S4aJaROxqQHQ3nH9lfyKKV0dC3vOmnw8ebQQ= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0 h1:RPUcBvDeYgQFMfQu1eBMq6piD1SXmLH+vK3qjewZPus= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DimensionDataResearch/go-dd-cloud-compute v1.13.0 h1:t2TO+OopAeg2cP4pJ0AhS3mlbeJc8W8e8YCw7vTdt38= +github.com/DimensionDataResearch/go-dd-cloud-compute v1.13.0/go.mod h1:RvjrXAwZvcK1dmhd9hkwSORt75DaoU/CbaPLKTVEI4Y= +github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= +github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0= +github.com/apparentlymart/go-cidr v1.0.1 h1:NmIwLZ/KdsjIUlhf+/Np40atNXm/+lZ5txfTJ/SpF+U= +github.com/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= +github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= +github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I= +github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= +github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= +github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= +github.com/aws/aws-sdk-go v1.25.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.27.3 h1:CBWC7Yot0U6OU/uosUmq7tKJVBTq6HrhgW1Vjpt9SMw= +github.com/aws/aws-sdk-go v1.27.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= +github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= +github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 h1:5ZkaAPbicIKTF2I64qf5Fh8Aa83Q/dnOafMYV0OMwjA= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-getter v1.4.0/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY= +github.com/hashicorp/go-getter v1.4.1 h1:3A2Mh8smGFcf5M+gmcv898mZdrxpseik45IpcyISLsA= +github.com/hashicorp/go-getter v1.4.1/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY= +github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= +github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.10.1 h1:uyt/l0dWjJ879yiAu+T7FG3/6QX+zwm4bQ8P7XsYt3o= +github.com/hashicorp/go-hclog v0.10.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-plugin v1.0.1 h1:4OtAfUGbnKC6yS48p0CtMX2oFYtzFZVv6rok3cRWgnE= +github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.2.0 h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+dIzX/E= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+DbLISwf2B8WXEolNRA8BGCwI9jws= +github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= +github.com/hashicorp/hcl/v2 v2.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90= +github.com/hashicorp/hcl/v2 v2.3.0 h1:iRly8YaMwTBAKhn1Ybk7VSdzbnopghktCD031P8ggUE= +github.com/hashicorp/hcl/v2 v2.3.0/go.mod h1:d+FwDBbOLvpAM3Z6J7gPj/VoAGkNe/gm352ZhjJ/Zv8= +github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/terraform-config-inspect v0.0.0-20191115094559-17f92b0546e8 h1:+RyjwU+Gnd/aTJBPZVDNm903eXVjjqhbaR4Ypx3xYyY= +github.com/hashicorp/terraform-config-inspect v0.0.0-20191115094559-17f92b0546e8/go.mod h1:p+ivJws3dpqbp1iP84+npOyAmTTOLMgCzrXd3GSdn/A= +github.com/hashicorp/terraform-plugin-sdk v1.4.1 h1:REgN6WbySD6aIYdF6Uob3ic4eQkfh4NXSWU/casmgb4= +github.com/hashicorp/terraform-plugin-sdk v1.4.1/go.mod h1:H5QLx/uhwfxBZ59Bc5SqT19M4i+fYt7LZjHTpbLZiAg= +github.com/hashicorp/terraform-svchost v0.0.0-20191011084731-65d371908596/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= +github.com/hashicorp/terraform-svchost v0.0.0-20191119180714-d2e4933b9136 h1:81Dg7SK6Q5vzqFItO8e1iIF2Nj8bLXV23NXjEgbev/s= +github.com/hashicorp/terraform-svchost v0.0.0-20191119180714-d2e4933b9136/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= +github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hashicorp/yamux v0.0.0-20190923154419-df201c70410d h1:W+SIwDdl3+jXWeidYySAgzytE3piq6GumXeBjFBG67c= +github.com/hashicorp/yamux v0.0.0-20190923154419-df201c70410d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.11 h1:FxPOTFNqGkuDUGi3H/qkUbQO4ZiBa2brKq5r0l8TGeM= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= +github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= +github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= +github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/posener/complete v1.2.1/go.mod h1:6gapUrK/U1TAN7ciCoNRIdVC5sbdBTUh1DKN0g6uH7E= +github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo= +github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= +github.com/ulikunitz/xz v0.5.6 h1:jGHAfXawEGZQ3blwU5wnWKQJvAraT7Ftq9EXjnXYgt8= +github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= +github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/vmihailenco/msgpack v4.0.1+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= +github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/zclconf/go-cty v1.0.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= +github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= +github.com/zclconf/go-cty v1.2.0 h1:sPHsy7ADcIZQP3vILvTjrh74ZA175TFP5vqiNK1UmlI= +github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= +github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8= +github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200108215511-5d647ca15757 h1:pJ9H8lzdBh301qPX4VpwJ8TRpLt1IhNK1PxVOICyP54= +golang.org/x/crypto v0.0.0-20200108215511-5d647ca15757/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299 h1:zQpM52jfKHG6II1ISZY1ZcpygvuSFZpLwfluuF89XOg= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191009170851-d66e71096ffb/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 h1:efeOvDhwQ29Dj3SdAV/MJf8oukgn+8D8WgaCaRMchF8= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200107162124-548cf772de50 h1:YvQ10rzcqWXLlJZ3XCUoO25savxmscf4+SC+ZqiCHhA= +golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200108203644-89082a384178 h1:f5gMxb6FbpY48csegk9UPd7IAHVrBD013CU7N4pWzoE= +golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0 h1:yzlyyDW/J0w8yNFJIhiAJy4kq74S+1DOLdawELNxFMA= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f h1:2wh8dWY8959cBGQvk1RD+/eQBgRYYDaZ+hT0/zsARoA= +google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/main.go b/main.go index 41527a4..5dfd6a9 100644 --- a/main.go +++ b/main.go @@ -1,21 +1,17 @@ package main import ( - "fmt" - "os" - "path" - "github.com/DimensionDataResearch/dd-cloud-compute-terraform/ddcloud" - "github.com/hashicorp/terraform/plugin" + "github.com/hashicorp/terraform-plugin-sdk/plugin" ) // The main program entry-point. func main() { - if len(os.Args) == 2 && os.Args[1] == "--version" { - fmt.Printf("%s %s\n\n", path.Base(os.Args[0]), ddcloud.ProviderVersion) - - return - } + //if len(os.Args) == 2 && os.Args[1] == "--version" { + // fmt.Printf("%s %s\n\n", path.Base(os.Args[0]), ddcloud.ProviderVersion) + // + // return + //} plugin.Serve(&plugin.ServeOpts{ ProviderFunc: ddcloud.Provider, diff --git a/models/backup_client.go b/models/backup_client.go index 368a021..fe4d7b1 100644 --- a/models/backup_client.go +++ b/models/backup_client.go @@ -99,6 +99,7 @@ func (backupClient *ServerBackupClient) ReadBackupClientDetail(backupClientDetai // ToBackupClientDetail updates a map using values from the ServerBackupClient. func (backupClient *ServerBackupClient) ToBackupClientDetail() compute.BackupClientDetail { backupClientDetail := compute.BackupClientDetail{} + backupClient.UpdateBackupClientDetail(&backupClientDetail) return backupClientDetail diff --git a/validators/string_validators.go b/validators/string_validators.go index e9789bf..44cc1aa 100644 --- a/validators/string_validators.go +++ b/validators/string_validators.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) // StringIsOneOf creates a validator for Terraform schema values that ensures the supplied value is one of the specified strings. diff --git a/vendor/github.com/DimensionDataResearch/go-dd-cloud-compute b/vendor/github.com/DimensionDataResearch/go-dd-cloud-compute deleted file mode 160000 index 8082ee6..0000000 --- a/vendor/github.com/DimensionDataResearch/go-dd-cloud-compute +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8082ee6f101936af31bf05a8b2214d7a80107116