James Bardin
90055c6ae2
convert the consul backend to use consul/testutil
...
Start up our own consul server for unit tests.
2017-03-13 18:25:58 -04:00
Mitchell Hashimoto
35afb7bc86
backend/consul: some comments
2017-03-01 23:01:28 -08:00
Mitchell Hashimoto
b842fd0c27
backend/consul: support named states
2017-03-01 22:58:51 -08:00
Mitchell Hashimoto
3db55cf747
backend/consul: build your own backend
2017-03-01 22:19:36 -08:00
Mitchell Hashimoto
08b47cf73b
backend/atlas: adhere to new multi-state interface
2017-03-01 13:31:52 -08:00
Mitchell Hashimoto
e6a87cf8de
backend/atlas: adhere to backend.CLI
2017-03-01 13:29:16 -08:00
Mitchell Hashimoto
942572b574
backend/init: add atlas, remove legacy atlas remote state
2017-03-01 13:29:16 -08:00
Mitchell Hashimoto
d00d6bc7fe
backend/atlas: initial state working
2017-03-01 13:29:16 -08:00
Mitchell Hashimoto
bdde7d845a
Merge pull request #12347 from hashicorp/b-env-migrate
...
command: migrating envs when changing backends
2017-03-01 12:58:40 -08:00
Mitchell Hashimoto
549d525487
Merge pull request #12320 from hashicorp/b-legacy-state
...
command: fix loading legacy remote state + migration guide
2017-03-01 12:39:17 -08:00
Mitchell Hashimoto
e75b666591
command: test multi-state to single state
2017-03-01 11:34:45 -08:00
Mitchell Hashimoto
1d8b76c89d
command: initial work on migrating envs, basic cases first
2017-03-01 10:59:17 -08:00
Mitchell Hashimoto
6ea0dc0964
backend/consul: make address have a default to prevent input
2017-02-28 19:29:05 -08:00
James Bardin
4dac986a91
Local.StatePaths doesn't need to reutrn an error
...
add a test to ensure we have consistent output
2017-02-28 19:18:16 -05:00
James Bardin
b53704ed87
Thread the environment through all commands
...
Add Env and SetEnv methods to command.Meta to retrieve the current
environment name inside any command.
Make sure all calls to Backend.State contain an environment name, and
make the package compile against the update backend package.
2017-02-28 16:35:46 -05:00
James Bardin
f866bb545c
update remote-state/consul
2017-02-28 16:35:46 -05:00
James Bardin
597eb6c918
update remote-state/inmem client
2017-02-28 16:35:45 -05:00
James Bardin
8fdf3a42b8
update remote-state.Backend
2017-02-28 16:35:45 -05:00
James Bardin
5762878eba
Make backcend/legacy match new Backend iface
...
move the unsupported error value to backend.ErrNamedStatesNotSupported
to be used by any backend implementation.
2017-02-28 16:35:45 -05:00
James Bardin
65527f35a4
update local.Local to match the latest Backend
...
Update the methods, remove the handling of "current", and make tests
pass.
2017-02-28 16:07:31 -05:00
James Bardin
96194fbc0d
Update Backend interface to latest iteration
...
What will hopfully be the final version of the Backend interface. This
combines the MultiState interface into Backend since it will be required
to implement, and simplifies the interface because the Backend is no
longer responsible for tracking the current state.
2017-02-28 16:07:07 -05:00
James Bardin
7f453f3341
remove some leftover methods in the legacy backend
...
These were left from the initial implementation, but are not used.
2017-02-28 16:07:07 -05:00
James Bardin
fbc11c7961
fix incorrect current state in local backend
...
Forgot to remove the currentState field, which was not always set. The
current state should always just be read from the environment file.
Always return the default state name when we can't determine the state.
2017-02-28 16:07:07 -05:00
James Bardin
e6eb71dde5
Add tests to check Backend delegation
...
Ensure that when MultiState methods are properly delegated when there is
a defined Local.Backend.
2017-02-28 16:07:06 -05:00
James Bardin
0933541a8c
Split out the backend environment interface
...
Split the interface to change environments out from the minimal Backend
interface, to make it optional for backend implementations. If
backend.MultiState isn't implemented, return a "not implemented" from
environment related methods.
Have the Local backend delegate the MultiState methods to the proper
backend.
2017-02-28 16:06:14 -05:00
James Bardin
dbc45b907c
Make the Local backend handle its own named states
...
Add the functionality required for terraform environments
2017-02-28 16:03:36 -05:00
James Bardin
761c63d14a
Update Backend to incorporate environments
...
Add the missing methods/arguments to handle Terraform environments in
Backends. Extra functionality simply returns defaults for now.
2017-02-28 16:03:36 -05:00
Mitchell Hashimoto
3cedfa00f4
command: use backend.CLIIinit
...
I made this interface way back with the original backend work and I
guess I forgot to hook it up! This is becoming an issue as I'm working
on our 2nd enhanced backend that requires this information and I
realized it was hardcoded before.
This propertly uses the CLIInit interface allowing any backend to gain
access to this data.
2017-02-28 10:58:29 -08:00
Mitchell Hashimoto
8f11068ab2
Merge pull request #12173 from hashicorp/b-remote-state-ds
...
providers/terraform: remote state data source supports backends
2017-02-22 18:43:06 -08:00
Mitchell Hashimoto
d2d87bccf0
Merge pull request #12155 from hashicorp/b-state-backend
...
command: refresh state in old commands for backend
2017-02-22 18:40:55 -08:00
Mitchell Hashimoto
9574f16f92
backend/local: refresh with no config should not crash on input
...
Fixes #12174
You're allowed to refresh with a nil module (no configs) as long as you
have state. However, if `-input=true` (default) then this would crash
since the input attempts to read the configs.
The API contract with `terraform.Context` says that the module tree must
be non-nil and loaded. To do this for other commands we create an empty
module tree. We do that here now.
2017-02-22 13:10:08 -08:00
Mitchell Hashimoto
ebb22d3ecd
backend/local: don't RefreshState on State API
2017-02-22 13:01:16 -08:00
Mitchell Hashimoto
52720ce880
providers/terraform: data source uses backends for state loading
2017-02-22 11:37:56 -08:00
Mitchell Hashimoto
f79e04500f
backend/init: a package for storing the factories for backends
2017-02-22 11:17:06 -08:00
James Bardin
2392455a67
Add inmem remote backend
...
Add an Inmem remote state backend.
The only config option right now is a lock_id, which will instantiate
the backend in a locked state for testing.
2017-02-20 14:49:46 -05:00
Mitchell Hashimoto
d443bf1b56
backend/local: allow nil modules (no config) if executing a plan
2017-02-16 10:56:39 -08:00
Mitchell Hashimoto
1480d0c5b8
backend/local: check for empty config on apply
...
This prevents Terraform from crashing on apply/destroy with a directory
with no Terraform configuration files. We allow a destroy with no files
but not an apply.
2017-02-15 16:00:59 -08:00
Mitchell Hashimoto
efe754183b
state/remote: export ClientLocker, test for implementation
...
This adds unit tests (that will fail at compile time) if various structs
don't implement the right interfaces for locking
2017-02-15 14:20:59 -08:00
James Bardin
ec00564be6
Clean up LockInfo and LockError and use them
...
Gove LockInfo a Marshal method for easy serialization, and a String
method for more readable output.
Have the state.Locker implementations use LockError when possible to
return LockInfo and an error.
2017-02-15 14:44:43 -05:00
James Bardin
67bbebce08
Have consul state reutrn the lock ID
...
The lock ID isn't used because the lock is tied to the client, but
return the lock ID to match the behavior of other locks.
2017-02-15 14:44:43 -05:00
James Bardin
f2e496a14c
Have backend operations properly unlock state
...
Make sure unlock is called with the correct LockID during operations
2017-02-15 14:41:55 -05:00
James Bardin
f5ed8cd288
Use NewLockInfo to get a pre-populated value
...
Using NewLockInfo ensure we start with all required fields filled.
2017-02-15 14:41:55 -05:00
James Bardin
cd233fef6a
make consul client pass state.Locker tests
2017-02-15 14:41:55 -05:00
James Bardin
67dc16c9ca
Make backend/local test pass
2017-02-15 14:41:55 -05:00
Mitchell Hashimoto
235b7eb38e
Merge pull request #11944 from hashicorp/f-state-slow
...
show message if state lock acquisition/release is slow
2017-02-14 14:00:23 -08:00
Mitchell Hashimoto
5e4f6cf2b1
backend/local: fix could not to did not to prevent error look
2017-02-14 12:09:45 -08:00
Mitchell Hashimoto
65982bd412
backend/local: use new command/state package for better UX
2017-02-14 11:17:28 -08:00
James Bardin
80fab23e04
Don't test consul using demo.consul.io
...
We shoudn't require an external service for unit test.
TODO: create some proper acceptance tests for consul
2017-02-08 11:34:31 -05:00
James Bardin
14d965722e
Use single state.LockInfo struct
...
Remove redundant structures
2017-02-08 11:34:31 -05:00
James Bardin
9b76f6e138
Move TestRemoteLocks to state/remote
...
This was legacy remote state client and backends can use this test
function without an import cycle.
2017-02-08 11:25:52 -05:00