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