Commit Graph

10865 Commits

Author SHA1 Message Date
James Nugent
bdc6a49ae3 provider/terraform: Fix outputs from remote state
The work integrated in hashicorp/terraform#6322 silently broke the
ability to use remote state correctly. This commit adds a fix for that,
making use of the work integrated in hashicorp/terraform#7124.

In order to deal with outputs which are complex structures, we use a
forked version of the flatmap package - the difference in the version
this commit vs the github.com/hashicorp/terraform/flatmap package is
that we add in an additional key for map counts which state requires.
Because we bypass the normal helper/schema mechanism, this is not set
for us.

Because of the HIL type checking of maps, values must be of a homogenous
type. This is unfortunate, as it means we can no longer refer to outputs
as:

    ${terraform_remote_state.foo.output.outputname}

Instead we had to bring them to the top level namespace:

    ${terraform_remote_state.foo.outputname}

This actually does lead to better overall usability - and the BC
breakage is made better by the fact that indexing would have broken the
original syntax anyway.

We also add a real-world test and assert against specific values. Tests
which were previously acceptance tests are now run as unit tests, so
regression should be identified at a much earlier stage.
2016-06-11 16:53:45 +01:00
James Nugent
f51c9d5efd core: Fix interpolation of complex structures
This commit makes two changes: map interpolation can now read flatmapped
structures, such as those present in remote state outputs, and lists are
sorted by the index instead of the value.
2016-06-11 16:53:45 +01:00
James Nugent
dbf725bd68 core: Allow dynamic attributes in helper/schema
The helper/schema framework for building providers previously validated
in all cases that each field being set in state was in the schema.
However, in order to support remote state in a usable fashion, the need
has arisen for the top level attributes of the resource to be created
dynamically. In order to still be able to use helper/schema, this commit
adds the capability to assign additional fields.

Though I do not forsee this being used by providers other than remote
state (and that eventually may move into Terraform Core rather than
being a provider), the usage and semantics are:

To opt into dynamic attributes, add a schema attribute named
"__has_dynamic_attributes", and make it an optional string with no
default value, in order that it does not appear in diffs:

        "__has_dynamic_attributes": {
            Type: schema.TypeString
            Optional: true
        }

In the read callback, use the d.UnsafeSetFieldRaw(key, value) function
to set the dynamic attributes.

Note that other fields in the schema _are_ copied into state, and that
the names of the schema fields cannot currently be used as dynamic
attribute names, as we check to ensure a value is not already set for a
given key.
2016-06-11 13:29:05 +01:00
James Nugent
93a2703d46 Merge pull request #7126 from hashicorp/build-plugin-format-check
build: Remove format check from plugin-dev
2016-06-11 13:28:46 +01:00
James Nugent
3593ea8b0a build: Remove format check from plugin-dev
This is intended to reduce cycle time during provider development.
2016-06-11 13:27:08 +01:00
James Nugent
21f2728a17 Merge pull request #7125 from hashicorp/make-skip-bins
build: Skip running tests on /builtin/bins
2016-06-11 13:19:17 +01:00
James Nugent
fb56c010fb Merge pull request #7124 from hashicorp/b-acceptance-test-as-normal-test
testing: Allow acceptance test to run as unit test
2016-06-11 13:10:01 +01:00
James Nugent
1b011dedf4 build: Skip running tests on /builtin/bins
This is time consuming and spams the output of Travis - to run no tests.
2016-06-11 13:09:19 +01:00
James Nugent
9c7cf639b3 testing: Allow acceptance test to run as unit test
This commit adds a flag to acceptance tests in order to make
appropriately named tests work during `make test` irrespective of the
TF_ACC environment variable. This should only be used on tests which are
known to be fast.
2016-06-11 12:55:14 +01:00
Paul Stack
5bf9a95f8c Update CHANGELOG.md 2016-06-11 12:28:48 +01:00
Paul Stack
ab721e2ffc provider/azurerm: Fix azurerm_virtual_machine windows_config (#7123)
When using winrm config block, we had an address issue. This is no
longer a set but a list (As a list fits it more approp)

    ```
    make testacc TEST=./builtin/providers/azurerm
    TESTARGS='-run=TestAccAzureRMVirtualMachine_'
    ==> Checking that code complies with gofmt requirements...
    go generate $(go list ./... | grep -v /vendor/)
    TF_ACC=1 go test ./builtin/providers/azurerm -v
    -run=TestAccAzureRMVirtualMachine_ -timeout 120m
    === RUN   TestAccAzureRMVirtualMachine_basicLinuxMachine
    --- PASS: TestAccAzureRMVirtualMachine_basicLinuxMachine (587.80s)
    === RUN   TestAccAzureRMVirtualMachine_tags
    --- PASS: TestAccAzureRMVirtualMachine_tags (554.53s)
    === RUN   TestAccAzureRMVirtualMachine_updateMachineSize
    --- PASS: TestAccAzureRMVirtualMachine_updateMachineSize (612.52s)
    === RUN   TestAccAzureRMVirtualMachine_basicWindowsMachine
    --- PASS: TestAccAzureRMVirtualMachine_basicWindowsMachine (765.90s)
    === RUN   TestAccAzureRMVirtualMachine_windowsUnattendedConfig
    --- PASS: TestAccAzureRMVirtualMachine_windowsUnattendedConfig
    (770.53s)
    === RUN   TestAccAzureRMVirtualMachine_winRMConfig
    --- PASS: TestAccAzureRMVirtualMachine_winRMConfig (827.90s)
    PASS
    ok      github.com/hashicorp/terraform/builtin/providers/azurerm
    4119.192s
    ```
2016-06-11 13:28:18 +02:00
Paul Stack
b4ed5dfba3 provider/azurerm: VMSS Tests still used old naming convention (#7121) 2016-06-11 10:12:20 +02:00
Paul Hinze
1c883b6854 Update CHANGELOG.md 2016-06-10 18:20:26 -05:00
Paul Hinze
b0485db5f4
website: Remove -backup from plan docs
Refs #7087
2016-06-10 18:06:26 -05:00
Paul Hinze
1a0893ddc7
command/plan: remove -backup from help text
The `-backup` flag no longer applies since `terrafom plan` does not
write state.

Fixes #7087
2016-06-10 18:05:28 -05:00
Paul Stack
4d0db07183 Update CHANGELOG.md 2016-06-10 23:37:51 +01:00
Paul Stack
514d8422f3 provider/azurerm: Add azurerm_virtual_machine_scale_set resource (#6711) 2016-06-11 00:37:14 +02:00
Paul Stack
5e23e87c30 provider/aws: aws_db_instance change to the default for (#7118)
`publicly_accessible` to be false
2016-06-11 00:13:53 +02:00
Paul Hinze
bba5a38c95 Merge pull request #7116 from hashicorp/b-aws-map-list-test-merrymaking
provider/aws: Clean up some map/set test checks
2016-06-10 16:57:24 -05:00
Paul Stack
5c2320d4d9 Update CHANGELOG.md 2016-06-10 22:56:12 +01:00
Paul Hinze
133b65d2ca Merge pull request #7040 from jritsema/master
Clarify HTTP URL module source docs
2016-06-10 16:56:00 -05:00
Paul Stack
5ecc8e3169 provider/aws: aws_db_instance now defaults publicly_accessible to (#7117)
false

Fixes #7035

A known issue in Terraform means that d.GetOk() on a bool which is false
will mean it doesn't get evaulated. Therefore, when people set
publicly_accessible to false, it will never get evaluated on the Create

We are going to make it default to false now
2016-06-10 23:55:36 +02:00
Paul Stack
2d4c0be268 Update CHANGELOG.md 2016-06-10 22:55:18 +01:00
Paul Hinze
00d004394c Merge pull request #7109 from hashicorp/f-state-lineage
core: State "Lineage" concept
2016-06-10 16:54:31 -05:00
Paul Stack
5644545680 provider/azurerm: DNS CNAME resource wasn't posting records (#7113)
* provider/azurerm: DNS CNAME resource wasn't posting records

Azure changed the API for CNAME at some point and since then we haven't
been creating CNAME records. The API changes from []records to a single
record

This PR changes the schema for dns cnames to have a record parameter and
adds a deprecation warning around records. Talked with @jen20 on this
and we decided that it's currently broken and we should handle this as
part of 0.7 where there are other breaking changes

```
TF_LOG=1 make testacc TEST=./builtin/providers/azurerm
TESTARGS='-run=TestAccAzureRMDnsCNameRecord' 2>~/tf.log
==> Checking that code complies with gofmt requirements...
go generate $(go list ./... | grep -v /vendor/)
TF_ACC=1 go test ./builtin/providers/azurerm -v
-run=TestAccAzureRMDnsCNameRecord -timeout 120m
=== RUN   TestAccAzureRMDnsCNameRecord_basic
--- PASS: TestAccAzureRMDnsCNameRecord_basic (97.22s)
=== RUN   TestAccAzureRMDnsCNameRecord_subdomain
--- PASS: TestAccAzureRMDnsCNameRecord_subdomain (94.94s)
=== RUN   TestAccAzureRMDnsCNameRecord_updateRecords
--- PASS: TestAccAzureRMDnsCNameRecord_updateRecords (116.62s)
```

* Change DNS Records to removed rather than deprecated
2016-06-10 23:53:32 +02:00
Paul Hinze
18178aa158 Update CHANGELOG.md 2016-06-10 16:21:20 -05:00
Paul Hinze
81a436e956 Merge pull request #7105 from hashicorp/b-arm-vm-winconfig
provider/azurerm: `azurerm_virtual_machine` Windows_config
2016-06-10 16:17:09 -05:00
Paul Hinze
ff8aa0caac Update CHANGELOG.md 2016-06-10 16:09:56 -05:00
Paul Hinze
757aae538b Merge pull request #7012 from hpcloud/lbaas-v2
OpenStack LBaaS v2 Support
2016-06-10 16:07:10 -05:00
Paul Hinze
b0b3a9cebf Merge pull request #7094 from hashicorp/docs-do-resize
provider/digitalocean: Update of droplet document to add a note about resize
2016-06-10 15:59:12 -05:00
stack72
155a47fa80 provider/azurerm: azurerm_virtual_machine Windows_config
Fixes #7053 where, when using `additional_unattend_config` in
`os_profile_windows_config` we got an error as follows:

```
azurerm_virtual_machine.test: [DEBUG] Error setting Virtual Machine
Storage OS Profile Windows Configuration: &errors.errorString{s:"Invalid
address to set: []string{\"os_profile_windows_config\", \"1534614206\",
\"additional_unattend_config\"}"}
```
2016-06-10 19:33:09 +01:00
Paul Stack
32e1a32476 remote: Rename mas to azure (#7114)
MAS wasn't obvious it was Azure so renamed it to Azure
2016-06-10 20:04:40 +02:00
Paul Stack
6be1e504e8 Update CHANGELOG.md 2016-06-10 18:54:41 +01:00
clint shryock
88ed387bd6 fix up cloudformation test checks 2016-06-10 12:52:10 -05:00
clint shryock
0530cf963d provider/aws: revert # -> % for tests 2016-06-10 12:45:24 -05:00
Maxime Bury
c98f391bee Add basic implementation for remote state on azure (#7064)
* Add basic implementation for remote state on azure

* Don't auto-provision the container

* Fix compilation errors

* Add factory to the remote map

* Add documentation

* Add acceptance tests
2016-06-10 19:27:57 +02:00
Paul Hinze
511101ab75 Merge pull request #7107 from mindw/static_linux_amd64_bin
make linux amd64 binaries static again.
2016-06-10 10:53:49 -05:00
Paul Hinze
d175b04182 Merge pull request #7110 from hashicorp/b-tags-match-update
Update tests for new map count indicator
2016-06-10 10:28:52 -05:00
clint shryock
7d71b8cc3c helper and terraform interpolate test update 2016-06-10 10:07:17 -05:00
clint shryock
fad26ec59e provider tests: Update to match new tags map in state 2016-06-10 10:07:02 -05:00
Martin Atkins
985fa371dc core: State "Lineage" concept
The lineage of a state is an identifier shared by a set of states whose
serials are meaningfully comparable because they are produced by
progressive Refresh/Apply operations from the same initial empty state.

This is initialized as a type-4 (random) UUID when a new state is
initialized and then preserved on all other changes.

Since states before this change will not have lineage but users may wish
to set a lineage for an existing state in order to get the safety
benefits it will grow to imply, an empty lineage is considered to be
compatible with all lineages.
2016-06-10 07:31:30 -07:00
Clint
19eb0079db provider/aws: update asg placement group test name, to fix import test (#7095) 2016-06-10 09:01:30 -05:00
Gabi Davar
33b3206ead make linux amd64 binaries static again.
* regression caused by mitchellh/gox#49
* pass CGO_ENABLED=0
2016-06-10 16:23:11 +03:00
Clint
48286ca970 Update CHANGELOG.md 2016-06-09 16:47:05 -05:00
Clint
771dafee3e Update CHANGELOG.md 2016-06-09 16:46:39 -05:00
Clint
6318b8fd4c provider/aws: Rename parameter_group_name to db_cluster_parameter_group_name (supersedes #7068) (#7083)
* modify parameter_group_name to db_cluster_parameter_group_name #7046

* provider/aws: Deprecate parameter_group_name in RDS Cluster

Use db_cluster_parameter_group_name instead
2016-06-09 16:45:29 -05:00
Paul Hinze
2536c7e489
website: fix up some wording on providers index 2016-06-09 16:44:28 -05:00
Clint
5e26cb9960 provider/aws: Update Lambda functions on name change (#7081)
Allows the updating of Lambda functions on name change alone
2016-06-09 16:44:10 -05:00
clint shryock
253a46b573 provider/aws: Randomize names in code deploy test to reduce chances of name collision on tests 2016-06-09 15:39:35 -05:00
dkalleg
8467f5219e OpenStack LBaaS v2 Support
CRUD, tests and Docs for managing a LoadBalancer, Listener,
Pool, Member, and Monitor resources.
2016-06-09 13:19:52 -07:00