From ea095eda87456d99cb5ee069bb9bfd20c1e175fc Mon Sep 17 00:00:00 2001 From: James Bardin Date: Thu, 16 Mar 2017 15:31:50 -0400 Subject: [PATCH] change to default state after backend migration When migrating from a multi-state backend to a single-state backend, we have to ensure that our locally configured environment is changed back to "default", or we won't be able to access the new backend. --- command/meta_backend_migrate.go | 4 ++++ command/meta_backend_test.go | 5 +++++ .../backend-change-multi-to-single/.terraform/environment | 1 + .../env1/terraform.tfstate} | 0 4 files changed, 10 insertions(+) create mode 100644 command/test-fixtures/backend-change-multi-to-single/.terraform/environment rename command/test-fixtures/backend-change-multi-to-single/{local-state.tfstate => terraform.tfstate.d/env1/terraform.tfstate} (100%) diff --git a/command/meta_backend_migrate.go b/command/meta_backend_migrate.go index 1531b4a92..cce00c35b 100644 --- a/command/meta_backend_migrate.go +++ b/command/meta_backend_migrate.go @@ -183,6 +183,10 @@ func (m *Meta) backendMigrateState_S_s(opts *backendMigrateOpts) error { // Copy the default state opts.oneEnv = currentEnv + + // now switch back to the default env so we can acccess the new backend + m.SetEnv(backend.DefaultStateName) + return m.backendMigrateState_s_s(opts) } diff --git a/command/meta_backend_test.go b/command/meta_backend_test.go index dda5db644..b9ff80658 100644 --- a/command/meta_backend_test.go +++ b/command/meta_backend_test.go @@ -1144,6 +1144,11 @@ func TestMetaBackend_configuredChangeCopy_multiToSingle(t *testing.T) { if _, err := os.Stat(envPath); err != nil { t.Fatal("env should exist") } + + // Verify we are now in the default env, or we may not be able to access the new backend + if env := m.Env(); env != backend.DefaultStateName { + t.Fatal("using non-default env with single-env backend") + } } // Changing a configured backend that supports multi-state to a diff --git a/command/test-fixtures/backend-change-multi-to-single/.terraform/environment b/command/test-fixtures/backend-change-multi-to-single/.terraform/environment new file mode 100644 index 000000000..e5e601095 --- /dev/null +++ b/command/test-fixtures/backend-change-multi-to-single/.terraform/environment @@ -0,0 +1 @@ +env1 diff --git a/command/test-fixtures/backend-change-multi-to-single/local-state.tfstate b/command/test-fixtures/backend-change-multi-to-single/terraform.tfstate.d/env1/terraform.tfstate similarity index 100% rename from command/test-fixtures/backend-change-multi-to-single/local-state.tfstate rename to command/test-fixtures/backend-change-multi-to-single/terraform.tfstate.d/env1/terraform.tfstate