Commit Graph

59 Commits

Author SHA1 Message Date
Paul Hinze 473b03ccae providers/aws: fix source_dest_check on instance creation
The `SourceDestCheck` attribute can only be changed via
`ModifyInstance`, so the AWS instance resource's `Create` function calls
out to `Update` before it returns to take care of applying
`source_dest_check` properly.

The `Update` function originally guarded against unnecessary API calls
with `GetOk`, which worked fine until #993 when we changed the `GetOk`
semantics to no longer distinguish between "configured and zero-value"
and "not configured".

I attempted in #1003 to fix this by switching to `HasChange` for the
guard, but this does not work in the `Create` case.

I played around with a few different ideas, none of which worked:

(a) Setting `Default: true` on `source_dest_check' has no effect

(b) Setting `Computed: true` on `source_dest_check' and adding a `d.Set`
    call in the `Read` function (which will initially set the value to `true`
    after instance creation). I really thought I could get this to work,
    but it results in the following:

```go
d.Get('source_dest_check')       // true
d.HasChange('source_dest_check') // false
d.GetChange('source_dest_check') // old: false, new: false
```

I couldn't figure out a way of coherently dealing with that result, so I
ended up throwing up my hands and giving up on the guard altogether.
We'll call `ModifyInstance` more than we have to, but this at least
yields expected behavior for both Creates and Updates.

Fixes #1020
2015-02-21 14:26:46 -06:00
Paul Hinze 3c4d1791e5 providers/aws: fix aws_instance source_dest_check
Was relying on old behavior of GetOk and therefore never properly seeing
a change from true -> false.

This fixes the acceptance test failure of
`TestAccAWSInstance_sourceDestCheck`.
2015-02-18 17:46:50 -06:00
Mitchell Hashimoto 05a34d7d77 providers/aws: root block device not being set properly
The value to set must not contain invalid fields.
2015-02-18 14:45:13 -08:00
Paul Hinze 73d20b4c58 providers/aws: add root_block_device to aws_instance
AWS provides a single `BlockDeviceMapping` to manage three different
kinds of block devices:

 (a) The root volume
 (b) Ephemeral storage
 (c) Additional EBS volumes

Each of these types has slightly different semantics [1].

(a) The root volume is defined by the AMI; it can only be customized
with `volume_size`, `volume_type`, and `delete_on_termination`.

(b) Ephemeral storage is made available based on instance type [2]. It's
attached automatically if _no_ block device mappings are specified, and
must otherwise be defined with block device mapping entries that contain
only DeviceName set to a device like "/dev/sdX" and VirtualName set to
"ephemeralN".

(c) Additional EBS volumes are controlled by mappings that omit
`virtual_name` and can specify `volume_size`, `volume_type`,
`delete_on_termination`, `snapshot_id`, and `encryption`.

After deciding to ignore root block devices to fix #859, we had users
with configurations that were attempting to manage the root block device chime
in on #913.

Terraform does not have the primitives to be able to properly handle a
single collection of resources that is partially managed and partially
computed, so our strategy here is to break out logical sub-resources for
Terraform and hide the BlockDeviceMapping inside the provider
implementation.

Now (a) is supported by the `root_block_device` sub-resource, and (b)
and (c) are still both merged together under `block_device`, though I
have yet to see ephemeral block devices working properly.

Looking into possibly separating out `ephemeral_block_device` and
`ebs_block_device` sub-resources as well, which seem like the logical
next step. We'll wait until the next big release for this, though, since
it will break backcompat.

[1] http://bit.ly/ec2bdmap
[2] http://bit.ly/instancestorebytype

Fixes #913
Refs #858
2015-02-18 13:15:11 -06:00
Paul Hinze c88c4a33e1 providers/aws: ignore ec2 root devices
fixes #859

EC2 root block devices are attached automatically at launch [1] and show
up in DescribeInstances responses from then on. By skipping these when
recording state, Terraform can avoid thinking there should be block
device changes when there are none.

Note this requires that https://github.com/mitchellh/goamz/pull/214 land
first so the proper field is exposed.

[1] http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/RootDeviceStorage.html
2015-01-28 05:14:21 -06:00
Sander van Harmelen 57ae6a5da6 Fixing aws_instance schema
Some instance types have a block device by default. So when selecting
such an instance type, you will not set a config for the block device,
but the update/refresh func will notice one and update the state
nonetheless.

So in those cases the `block_device` becomes a `computed` field.
2014-12-25 21:58:26 +01:00
Sander van Harmelen b96f373ee9 Fixing some logic issues with the aws-instance resource
1. The schema contained a few fields that where not marked as
`computed`, while they were updated inside the resource.

2. While updating the `volume_size` it was doing so with a `string`,
but in the schema this field is set as `int`.

3. The set func for calculating the hashes for the `block` set items,
also used computed values to calculate the hash. As these values will
not be in the config, but only in the state, this will always show as a
diff. The solution is to only use the fields that aren’t computed in
order to get consistent hashes.

These where all issues before, but weren’t visible as such. All should
be good again now.
2014-12-25 18:21:05 +01:00
Armon Dadgar 7182e5618e Merge pull request #612 from MerlinDMC/feature/aws_block_device_virtual_name
allow setting the block device virtual_name
2014-12-03 12:08:07 -08:00
Armon Dadgar a2c8859f04 Merge pull request #615 from Banno/fix-aws-instance-block-devices-index-range
fixing array length for aws instance volumes
2014-12-03 12:00:31 -08:00
Luke Amdor f3ff4bece8 fixing array length for aws instance volumes 2014-11-30 08:24:23 -06:00
Sneha Somwanshi f63e032c23 Merge remote-tracking branch 'upstream/master' 2014-11-26 17:06:42 +05:30
Daniel Malon 1e3065ae11 allow setting the block device virtual_name 2014-11-22 09:50:22 +00:00
Sander van Harmelen eccd5ad308 Refactored about 90%
Still need to update 2 resources and check the acceptance tests, but
overall we’re nearly there 😃
2014-11-21 17:58:34 +01:00
sneha somwanshi 750a36c51e AWS instance resource now supports tenancy 2014-11-04 16:38:30 +05:30
Eric Buth f10e84aa16 added block_device attribute 2014-10-17 12:12:45 -04:00
Sean Herron 3e16190e69 Expands AWS tagging to cover EC2 instances 2014-10-13 16:55:59 -04:00
Mitchell Hashimoto a362a97979 providers/aws: forcenew on SGs for now [GH-299] 2014-10-10 17:14:35 -07:00
Mitchell Hashimoto 699b2efa1c providers/aws: convert aws_vpc to helper/schema 2014-10-08 16:43:13 -07:00
Mitchell Hashimoto 3941dbac5d fmt 2014-09-28 11:51:49 -07:00
Ian Delahorne 9f91c4e8c3 Add IAM Instance profile support to AWS instance provider 2014-09-23 13:06:30 -05:00
Mitchell Hashimoto 166847d5dc Merge branch 'f-state'
Conflicts:
	builtin/providers/aws/resource_aws_subnet.go
2014-09-22 08:55:44 -07:00
Alek Storm ba0591c85d Force recreation when aws_instance.private_ip changes 2014-09-18 13:26:49 -07:00
Mitchell Hashimoto c5d6df692d providers/aws: tests passing, compiles 2014-09-16 17:49:24 -07:00
Mitchell Hashimoto a5c884f5aa fmt 2014-09-09 13:43:03 -07:00
Mitchell Hashimoto 634dd7e4a3 Merge pull request #260 from jkinred/master
providers/amazon: Allow building of EC2 instances with ebs_optimized flag
2014-09-07 16:01:59 -07:00
shin1x1 781e512dde fix associate_public_ip_address parameter name 2014-09-03 20:54:36 +09:00
Jonathan Kinred 2b764de383 Allow building of EC2 instances with ebs_optimized flag 2014-09-03 20:18:40 +10:00
Mitchell Hashimoto c9a541d95b helper/schema: generate a full diff in destroy/create cycle 2014-08-27 15:45:52 -07:00
Mitchell Hashimoto b7e16c6b53 providers/aws: source_dest_check applies [GH-229] 2014-08-26 15:05:36 -07:00
Ryan Uber e530eea226 provider/aws: fix panic when user_data receives nil from StateFunc 2014-08-23 00:20:41 -07:00
Mitchell Hashimoto 8f70920c17 providers/aws: fix some other issues with aws_instance 2014-08-22 12:20:06 -07:00
Mitchell Hashimoto ba68be5672 providers/aws: use StateFunc to process the user_data 2014-08-22 08:46:48 -07:00
Mitchell Hashimoto 7be2f1b091 helper/schema: add GetOk 2014-08-21 23:03:04 -07:00
Mitchell Hashimoto 2fd2470c92 providers/aws: resource_aws_instance partially to schema.Resource 2014-08-21 18:38:43 -07:00
Alek Storm b6c5e5bbf6 Allow aws_instance private IP's to be specified 2014-08-21 17:13:36 -07:00
Danny Cosson e838624468 Allow specifying the AWS availability zone on creation 2014-07-31 13:52:03 -04:00
Jack Pearkes 86c7aeb8a6 providers/aws: use merged reosource state for associate_public_ip
cc/ @vertis
2014-07-29 10:23:48 -04:00
Luke Chadwick 974074fee9 Add associate_public_ip_address as an attribute of the aws_instance resource 2014-07-29 22:06:53 +10:00
Armon Dadgar c2677b3c0a provider/aws: More strict check 2014-07-28 12:50:19 -04:00
Armon Dadgar c8d5ea4d9d provider/aws: fixing instance for EC2-VPC /cc:@pearkes 2014-07-28 12:47:40 -04:00
Armon Dadgar bc64366a92 provider/aws: Less aggressive API rate 2014-07-28 12:10:35 -04:00
Mitchell Hashimoto a6bb0144a6 providers/aws: remove some debug 2014-07-16 16:46:28 -07:00
Mitchell Hashimoto 0d8f6645fa providers/aws/aws_instance: user_data diffs properly 2014-07-16 16:41:20 -07:00
Mitchell Hashimoto 9ec1990608 providers/aws/aws_instance: fix security group and key name issues in count 2014-07-16 15:21:01 -07:00
Mitchell Hashimoto 082790c4c1 providers/aws: basic user data, doesn't fully work yet because diffs are broke 2014-07-16 09:01:56 -07:00
Armon Dadgar 104b28e19e terraform: Remove ResourceConnectionInfo, use raw map 2014-07-15 12:34:07 -07:00
Armon Dadgar 9cd69a2b29 aws: Expose host in the ConnInfo 2014-07-15 12:34:07 -07:00
Mitchell Hashimoto 16c99e78b3 providers/aws: security_groups support 2014-07-14 21:56:37 -07:00
Mitchell Hashimoto 72b7e2c11a providers/aws/aws_instance: key_name 2014-07-14 17:52:29 -07:00
Mitchell Hashimoto 735c909264 providers/aws/aws_instance: test modifying source_dest_check 2014-07-14 17:38:56 -07:00