Commit Graph

10839 Commits

Author SHA1 Message Date
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
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
dkalleg 95731f2d26 Openstack - Updating gophercloud version 2016-06-09 13:19:06 -07:00
James Bardin 2c7b702d1f Merge pull request #7091 from hashicorp/jbardin/serialize
Serialization for hash panics on TypeMap
2016-06-09 16:16:41 -04:00
James Bardin bab031aac5 Add test for TypeMap in a Schema 2016-06-09 16:00:33 -04:00
Mark Bainter a08b72df9b Update vpc_peering documentation (#7056)
The documentation wording implies that in all cases you have to manually accept peering requests.  This change is intended to clarify where this is required.  The documentation also separates between "basic usage" and "basic usage with tags", but the expanded usage didn't actually provide much additional useful information.  Expanded a bit to show the use of auto_accept since both VPCs are created by the content and to show setting the Name tag for proper display in the console.
2016-06-09 21:48:03 +02:00
stack72 84770e6c08 provider/digitalocean: Update of droplet document to add a note about
resize

When resizing a DO droplet, you can only increase the size not
descrease. If you try and go down in size, the API will return this
error:

```
 * digitalocean_droplet.foobar: Error resizing droplet (17090364):
   POST https://api.digitalocean.com/v2/droplets/17090364/actions:
   422 Size can not decrease size of Droplet's disk image
```
2016-06-09 20:09:33 +01:00
James Bardin d8fbaa7924 Serialization for hash panics on TypeMap
The serializeCollectionMemberForHash helper can't be called for the
MapType values, because MapType doesn't have a schema.Elem. Instead, we
can write the key/value pairs directly to the buffer. This still doesn't
allow for nested maps or lists, but we need to define that use case
before committing to it here.
2016-06-09 13:37:58 -04:00
Mitchell Hashimoto f2bceecac1
website: add missing page 2016-06-09 10:37:19 -07:00
James Nugent 9a986f88a3 Merge pull request #7086 from glasser/patch-2
Mention in CHANGELOG that var.map.key doesn't work
2016-06-09 14:39:05 +02:00
James Nugent 57cf9fd295 Merge pull request #7082 from hashicorp/b-empty-map-types
core: Make lists and maps distinguishable in state
2016-06-09 12:36:24 +02:00
James Nugent 9554d54116 core: Add test for V2->V3 state upgrade 2016-06-09 11:16:34 +01:00
James Nugent 706ccb7dfe core: Introduce state v3 and upgrade process
This commit makes the current Terraform state version 3 (previously 2),
and a migration process as part of reading v2 state. For the most part
this is unnecessary: helper/schema will deal with upgrading state for
providers written with that framework. However, for providers which
implemented the resource model directly, this gives a best-efforts
attempt at lossless upgrade.

The heuristics used to change the count of a map from the .# key to the
.% key are as follows:

    - if the flat map contains any non-numeric keys, we treat it as a
      map
    - if the map is empty it must be computed or optional, so we remove
      it from state

There is a known edge condition: maps with all-numeric keys are
indistinguishable from sets without access to the schema. They will need
manual conversion or may result in spurious diffs.
2016-06-09 10:49:49 +01:00
James Nugent 75ef7ab636 provider/test: Add more variants of maps
This commit adds a binary for the test provider, and adds a variety of
different types of map to the schema.
2016-06-09 10:49:49 +01:00
James Nugent 074545e536 core: Use .% instead of .# for maps in state
The flatmapped representation of state prior to this commit encoded maps
and lists (and therefore by extension, sets) with a key corresponding to
the number of elements, or the unknown variable indicator under a .# key
and then individual items. For example, the list ["a", "b", "c"] would
have been encoded as:

    listname.# = 3
    listname.0 = "a"
    listname.1 = "b"
    listname.2 = "c"

And the map {"key1": "value1", "key2", "value2"} would have been encoded
as:

    mapname.# = 2
    mapname.key1 = "value1"
    mapname.key2 = "value2"

Sets use the hash code as the key - for example a set with a (fictional)
hashcode calculation may look like:

    setname.# = 2
    setname.12312512 = "value1"
    setname.56345233 = "value2"

Prior to the work done to extend the type system, this was sufficient
since the internal representation of these was effectively the same.
However, following the separation of maps and lists into distinct
first-class types, this encoding presents a problem: given a state file,
it is impossible to tell the encoding of an empty list and an empty map
apart. This presents problems for the type checker during interpolation,
as many interpolation functions will operate on only one of these two
structures.

This commit therefore changes the representation in state of maps to use
a "%" as the key for the number of elements. Consequently the map above
will now be encoded as:

    mapname.% = 2
    mapname.key1 = "value1"
    mapname.key2 = "value2"

This has the effect of an empty list (or set) now being encoded as:

    listname.# = 0

And an empty map now being encoded as:

    mapname.% = 0

Therefore we can eliminate some nasty guessing logic from the resource
variable supplier for interpolation, at the cost of having to migrate
state up front (to follow in a subsequent commit).

In order to reduce the number of potential situations in which resources
would be "forced new", we continue to accept "#" as the count key when
reading maps via helper/schema. There is no situation under which we can
allow "#" as an actual map key in any case, as it would not be
distinguishable from a list or set in state.
2016-06-09 10:49:42 +01:00
Paul Stack 57dda90177 Update CHANGELOG.md 2016-06-09 10:25:07 +02:00
Benjamin Chelli cc22cef085 DigitalOcean - droplet always being recreated (#7044)
The region returned by the API is always lowercase therefore when you specify a region uppercase in your config file it forces the droplet to be regenerated on every ```terraform apply``` (even when it is not needed).
2016-06-09 10:23:44 +02:00
Paul Stack 7b273bcd01 Update CHANGELOG.md 2016-06-09 10:20:24 +02:00
dkalleg fb6f2bc750 provider/vSphere - Add DiskEnableUUID option (#7088)
Since the custom_configuration_parameters can't take dots, we cannot
set 'disk.EnableUUID'.  This adds a parameter for this options that gets
added to a configSpec. This option causes the vm to mount disks by uuid
on the guest OS.
2016-06-09 10:19:10 +02:00
David Glasser 533a644ad0 Mention in CHANGELOG that var.map.key doesn't work 2016-06-08 16:15:10 -07:00
Clint 946cbafb75 Update CHANGELOG.md 2016-06-08 15:57:11 -05:00
Paul Forman 391a7f85b0 provider/aws: Fix issue with Root Block Devices and encrypted flag in Launch Configurations [GH-6512]
Fixed the problem where the root_block_device could cause an apply error
by reading back an "encrypted" parameter that was meant for an
ebs_block_device.  "encrypted" is not part of the root_block_device
schema, since it can't be set explicitly.

Added a check in Create to fail when the root device is incorrectly
specified as an ebs_block_device, as this causes continual refreshing
due to mismatched state between root_block_device and ebs_block_device.

"encrypted" and "snapshot_id" should be guarded with ConflictsWith, but
that doesn't appear to work on nested resources despite #1926.
2016-06-08 15:56:27 -05:00
clint shryock c667b2d8cd Merge branch 'pr-7075'
* pr-7075:
  provider/aws: Log ElasticCache subnet removal
  provider/aws: Update state on `aws_elasticache_subnet_group` not found exception
2016-06-08 13:42:08 -05:00
clint shryock 1624c7e27f provider/aws: Log ElasticCache subnet removal 2016-06-08 13:35:49 -05:00
James Nugent cb9ef298f3 core: Defeat backward compatibilty in mapstructure
The mapstructure library has a regrettable backward compatibility
concern whereby a WeakDecode of []interface{}{} into a target of
map[string]interface{} yields an empty map rather than an error. One
possibility is to switch to using Decode instead of WeakDecode, but this
loses the nice handling of type conversion, requiring a large volume of
code to be added to Terraform or HIL in order to retain that behaviour.

Instead we add a DecodeHook to our usage of the mapstructure library
which checks for decoding []interface{}{} or []string{} into a map and
returns an error instead.

This has the effect of defeating the code added to retain backwards
compatibility in mapstructure, giving us the correct (for our
circumstances) behaviour of Decode for empty structures and the type
conversion of WeakDecode.

The code is identical to that in the HIL library, and packaged into a
helper.
2016-06-08 18:38:41 +01:00
James Nugent 819bd3fba3 deps: Update github.com/hashicorp/hil/... 2016-06-08 18:38:41 +01:00
James Nugent 49995428fd core: Remove support for V0 state
This removes support for the V0 binary state format which was present in
Terraform prior to 0.3. We still check for the file type and present an
error message explaining to the user that they can upgrade it using a
prior version of Terraform.
2016-06-08 18:38:41 +01:00