Commit Graph

11035 Commits

Author SHA1 Message Date
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
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
Vladimir Dobriakov 18fe3bfb55 Explain instantiating terraform module multiple times 2016-06-09 17:11:45 +02: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
James Nugent 91587a49f3 core: Remove unnecessary debug logging
Some unnecessary debug logging was introduced in 7b6df27e4, this commit
removes it so as not to clutter logs.
2016-06-08 18:38:41 +01:00
James Nugent a31cb5087e Merge pull request #7073 from ottenhoff/bgp-private-range
BGP AS 60000 is assigned to EQUINIX-CLOUD-EXCHANGE-AMSTERDAM-ASN.
2016-06-08 16:04:13 +02:00
stack72 2a09941f76 provider/aws: Update state on `aws_elasticache_subnet_group` not found exception
Fixes #7062

make testacc TEST=./builtin/providers/aws TESTARGS='-run=TestAccAWSElasticacheSubnetGroup'
==> Checking that code complies with gofmt requirements...
go generate $(go list ./... | grep -v /vendor/)
TF_ACC=1 go test ./builtin/providers/aws -v -run=TestAccAWSElasticacheSubnetGroup -timeout 120m
=== RUN   TestAccAWSElasticacheSubnetGroup_basic
--- PASS: TestAccAWSElasticacheSubnetGroup_basic (44.62s)
=== RUN   TestAccAWSElasticacheSubnetGroup_update
--- PASS: TestAccAWSElasticacheSubnetGroup_update (73.74s)
PASS
ok  	github.com/hashicorp/terraform/builtin/providers/aws	118.379s
2016-06-08 16:00:13 +02:00
Sam Ottenhoff bd36bc60aa BGP AS 60000 is assigned to EQUINIX-CLOUD-EXCHANGE-AMSTERDAM-ASN.
AS65000 is reserved for private use. https://en.wikipedia.org/wiki/Autonomous_system_\(Internet\)
2016-06-08 13:46:56 +00:00
Joakim Sernbrant dd5f121494 provider/cloudstack: add root_disk_size 2016-06-08 10:23:14 +02:00
James Bardin ac2d195cc5 Update CHANGELOG.md
add Elastic Transcoder resources
2016-06-07 17:31:02 -04:00
James Bardin cd160d3f3f Merge pull request #6965 from hashicorp/jbardin/GH-3968
Add support for Amazon Elastic Transcoder
2016-06-07 17:28:55 -04:00