Commit Graph

15267 Commits

Author SHA1 Message Date
Paddy e1a5805833 Fix instance/template metadata support
Update our instance template to include metadata_startup_script, to
match our instance resource. Also, we've resolved the diff errors around
metadata.startup-script, and people want to use that to create startup
scripts that don't force a restart when they're changed, so let's stop
disallowing it.

Also, we had a bunch of calls to `schema.ResourceData.Set` that ignored
the errors, so I added error handling for those calls. It's mostly
bundled with this code because I couldn't be sure whether it was the
root of bugs or not, so I took care of it while addressing the startup
script issue.
2016-12-05 02:45:28 -08:00
Paul Stack aba6c904ce Update CHANGELOG.md 2016-12-05 09:53:37 +00:00
Otto Jongerius 5a4578edf6 provider/datadog #9026: Make thresholds optional. (#10526) 2016-12-05 09:52:59 +00:00
Ninir c250c10d4e Force the master username & password to be defined when not in a restore mode 2016-12-04 19:04:26 +01:00
Paul Stack c2041b7488 Update CHANGELOG.md 2016-12-04 14:24:43 +00:00
Joe Topjian b2f9a3a6fd provider/openstack: Detect Region for Importing Resources (#10509)
* provider/openstack: Detect Region for Importing Resources

This commit changes the way the OpenStack region is detected and set.
Any time a region is required, the region attribute will first be
checked. Next, the OS_REGION_NAME environment variable will be checked.
While schema.EnvDefaultFunc handles this same situation, it is not
applicable when importing resources.

* provider/openstack: No longer ignore region in importing tests

* provider/openstack: Network and Subnet Import Fixes

This commit fixes the OpenStack Network and Subnet resources so that
importing of those resources is successful.
2016-12-04 14:24:07 +00:00
Mitchell Hashimoto 0e4a6e3e89
terraform: apply resource must depend on destroy deps
Fixes #10440

This updates the behavior of "apply" resources to depend on the
destroy versions of their dependencies.

We make an exception to this behavior when the "apply" resource is CBD.
This is odd and not 100% correct, but it mimics the behavior of the
legacy graphs and avoids us having to do major core work to support the
100% correct solution.

I'll explain this in examples...

Given the following configuration:

    resource "null_resource" "a" {
       count = "${var.count}"
    }

    resource "null_resource" "b" {
      triggers { key = "${join(",", null_resource.a.*.id)}" }
    }

Assume we've successfully created this configuration with count = 2.
When going from count = 2 to count = 1, `null_resource.b` should wait
for `null_resource.a.1` to destroy.

If it doesn't, then it is a race: depending when we interpolate the
`triggers.key` attribute of `null_resource.b`, we may get 1 value or 2.
If `null_resource.a.1` is destroyed, we'll get 1. Otherwise, we'll get
2. This was the root cause of #10440

In the legacy graphs, `null_resource.b` would depend on the destruction
of any `null_resource.a` (orphans, tainted, anything!). This would
ensure proper ordering. We mimic that behavior here.

The difference is CBD. If `null_resource.b` has CBD enabled, then the
ordering **in the legacy graph** becomes:

  1. null_resource.b (create)
  2. null_resource.b (destroy)
  3. null_resource.a (destroy)

In this case, the update would always have 2 values for `triggers.key`,
even though we were destroying a resource later! This scenario required
two `terraform apply` operations.

This is what the CBD check is for in this PR. We do this to mimic the
behavior of the legacy graph.

The correct solution to do one day is to allow splat references
(`null_resource.a.*.id`) to happen in parallel and only read up to to
the `count` amount in the state. This requires some fairly significant
work close to the 0.8 release date, so we can defer this to later and
adopt the 0.7.x behavior for now.
2016-12-03 23:54:29 -08:00
Mitchell Hashimoto 5f7bc12941 Merge pull request #10519 from hashicorp/b-state-purpose
website: document state purpose [GH-10474]
2016-12-03 15:52:14 -08:00
Mitchell Hashimoto 95a8172106
website: document state purpose [GH-10474] 2016-12-03 15:49:31 -08:00
Mitchell Hashimoto 5b444842a0
website: update graph command 2016-12-03 15:29:04 -08:00
Mitchell Hashimoto 26ac58bc97
terraform: refactor NodeApplyableProvider to use NodeAbstractProvider
This is important so that the graph looks correct.
2016-12-03 15:27:38 -08:00
Mitchell Hashimoto 8a9e1c1527
dag: call into DotNode to get attributes 2016-12-03 15:17:14 -08:00
Mitchell Hashimoto 22e868b966
command/graph: update for new graphs 2016-12-03 15:17:10 -08:00
Mitchell Hashimoto 018e517672 Update CHANGELOG.md 2016-12-03 11:55:40 -08:00
Mitchell Hashimoto a141b0e3d1 Merge pull request #10515 from hashicorp/b-update-homedir
vendor: update homedir
2016-12-03 14:54:58 -05:00
Mitchell Hashimoto a62a23ee37
vendor: update homedir
Fixes #10510
2016-12-03 11:52:54 -08:00
Mitchell Hashimoto fb8f2e2753
terraform: new Graph API that can return the graph for each op 2016-12-02 22:56:22 -05:00
Mitchell Hashimoto 9197422881
terraform: new graph nodes implement Dotter 2016-12-02 22:26:40 -05:00
Mitchell Hashimoto 4c9d9ffae8 Merge pull request #10511 from hashicorp/foudn-a-typo
fix typo
2016-12-02 21:41:11 -05:00
clint shryock 44ffe71695 provider/aws: Add Lightsail Instance
Adds initial support for AWS Lightsail Instances
2016-12-02 16:35:57 -06:00
Clint 7a6aa1292f fix typo
fix typo
2016-12-02 16:23:07 -06:00
Mitchell Hashimoto 84d8b28b40 Update CHANGELOG.md 2016-12-02 15:22:09 -05:00
James Bardin f833958505 Merge pull request #10502 from hashicorp/jbardin/validate-crash
Make sure that a Context.diff is never nil
2016-12-02 15:15:49 -05:00
Mitchell Hashimoto 8ffe25ef9b release: clean up after v0.8.0-rc2 2016-12-02 20:09:28 +00:00
Mitchell Hashimoto a6ac5bed69
v0.8.0-rc2 2016-12-02 20:05:22 +00:00
Adam Stankiewicz 22a8ef1662 [docs] Correct typo in azure storage account docs (#10508) 2016-12-02 19:29:13 +00:00
Mitchell Hashimoto 14b371d533
config: validate that RawConfig.Copy doesn't copy the interpolated
values
2016-12-02 13:25:32 -05:00
Mitchell Hashimoto 966f5b920d
update CHANGELOG 2016-12-02 13:14:44 -05:00
Mitchell Hashimoto be012a5ebb Merge pull request #10504 from hashicorp/b-no-prune
terraform: don't prune state on init()
2016-12-02 13:13:32 -05:00
Paul Stack 8dec180793 docs/aws: Ensure completeness of aws_api_gateway_domain_name example (#10506)
Fixes #10493
2016-12-02 20:02:09 +02:00
Clint 50b3beb4e0 Merge pull request #10495 from hashicorp/f-aws-sdk-1.5.13
Update aws sdk to 1.5.13
2016-12-02 11:29:27 -06:00
James Bardin 6a8df0cbe2 Make sure that a Context.diff is never nil
The context and diff passed along during a walk, and the diff is assumed
to be valid.
2016-12-02 11:52:18 -05:00
Mitchell Hashimoto cfb440ea60
terraform: don't prune state on init()
Init should only _add_ values, not remove them.

During graph execution, there are steps that expect that a state isn't
being actively pruned out from under it. Namely: writing deposed states.

Writing deposed states has no way to handle if a state changes
underneath it because the only way to uniquely identify a deposed state
is its index in the deposed array. When destroying deposed resources, we
set the value to `<nil>`. If the array is pruned before the next deposed
destroy, then the indexes have changed, and this can cause a crash.

This PR does the following (with more details below):

  * `init()` no longer prunes.

  * `ReadState()` always prunes before returning. I can't think of a
    scenario where this is unsafe since generally we can always START
    from a pruned state, its just causing problems to prune
    mid-execution.

  * Exported State APIs updated to be robust against nil ModuleStates.

Instead, I think we should adopt the following semantics for init/prune
in our structures that support it (Diff, for example). By having
consistent semantics around these functions, we can avoid this in the
future and have set expectations working with them.

  * `init()` (in anything) will only ever be additive, and won't change
    ordering or existing values. It won't remove values.

  * `prune()` is destructive, expectedly.

  * Functions on a structure must not assume a pruned structure 100% of
    the time. They must be robust to handle nils. This is especially
    important because in many cases values such as `Modules` in state
    are exported so end users can simply modify them outside of the
    exported APIs.

This PR may expose us to unknown crashes but I've tried to cover our
cases in exposed APIs by checking for nil.
2016-12-02 11:48:34 -05:00
Mitchell Hashimoto 08a56304bb Merge pull request #10455 from hashicorp/b-non-cbd-promote
terraform: when promoting non-CBD to CBD, mark the config as such
2016-12-02 09:51:27 -05:00
Mitchell Hashimoto 95239a7fe6
terraform: when promoting non-CBD to CBD, mark the config as such
This brings the change for the  new graph. See #10455
2016-12-02 09:46:42 -05:00
Mitchell Hashimoto f3a62c694d
terraform: when promoting non-CBD to CBD, mark the config as such
Fixes #10439

When a CBD resource depends on a non-CBD resource, the non-CBD resource
is auto-promoted to CBD. This was done in
cf3a259. This PR makes it so that we
also set the config CBD to true. This causes the proper runtime
execution behavior to occur where we depose state and so on.

So in addition to simple graph edge tricks we also treat the non-CBD
resources as CBD resources.
2016-12-02 09:46:04 -05:00
clint shryock 5b0792bd17 update aws sdk to 1.5.13 2016-12-02 08:37:53 -06:00
Ninir 615da28b6e provider/aws: Fixed Lambda environment removal 2016-12-02 14:36:55 +01:00
Paul Stack 7ff079b338 docs/aws: Enhance the aws lambda function example to include environment (#10490) 2016-12-02 14:54:06 +02:00
Paul Stack 6760d589d6 Update CHANGELOG.md 2016-12-02 14:23:10 +02:00
Ninir 1d090eb1ab provider/aws: Added s3 bucket region attribute management (#10482) 2016-12-02 14:22:47 +02:00
Paul Stack f304036d6d Update CHANGELOG.md 2016-12-02 13:54:15 +02:00
Jan Schumann 2e83eb1cfe fix #9104 (#10394) 2016-12-02 13:53:06 +02:00
Paul Stack e3924b1831 Update CHANGELOG.md 2016-12-02 13:46:16 +02:00
Jan Schumann b8caddda21 provider/aws resource_aws_opsworks_application does not accept document_root parameter (#10477)
* switched to stack in vpc

* validate also on update

* validate attributes based on app type
2016-12-02 13:45:10 +02:00
Paddy 5618ed3228 Update CHANGELOG.md 2016-12-01 15:14:05 -08:00
Paddy ce89d6ca9d Merge pull request #10469 from hashicorp/paddy_10425_import_projects
providers/google: make projects importable.
2016-12-01 15:13:16 -08:00
Mitchell Hashimoto 3b0ae1a77b Merge pull request #10421 from tamsky/patch-1
Explain list-type variables, and their use
2016-12-01 18:09:14 -05:00
Mitchell Hashimoto 773872fbce Merge pull request #10471 from cblecker/chef-gh3329-docs
Add documentation for Chef Provisioner Policyfile support
2016-12-01 18:04:38 -05:00
Mitchell Hashimoto 5e6093e4dc
update CHANGELOG 2016-12-01 18:03:38 -05:00