Merge pull request #30142 from hashicorp/chrisarcand/remote-backend-no-workspaces-regression

command/meta_backend: Allow the remote backend to have no workspaces [again]
This commit is contained in:
Chris Arcand 2021-12-14 09:58:50 -06:00 committed by GitHub
commit 8b8fe2771f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 3 deletions

View File

@ -1025,13 +1025,26 @@ func (m *Meta) backend_C_r_s(c *configs.Backend, cHash int, sMgr *clistate.Local
Hash: uint64(cHash),
}
// Verify that selected workspace exist. Otherwise prompt user to create one
// Verify that selected workspace exists in the backend.
if opts.Init && b != nil {
if err := m.selectWorkspace(b); err != nil {
err := m.selectWorkspace(b)
if err != nil {
diags = diags.Append(err)
// FIXME: A compatibility oddity with the 'remote' backend.
// As an awkward legacy UX, when the remote backend is configured and there
// are no workspaces, the output to the user saying that there are none and
// the user should create one with 'workspace new' takes the form of an
// error message - even though it's happy path, expected behavior.
//
// Therefore, only return nil with errored diags for everything else, and
// allow the remote backend to continue and write its configuration to state
// even though no workspace is selected.
if c.Type != "remote" {
return nil, diags
}
}
}
if err := sMgr.WriteState(s); err != nil {
diags = diags.Append(fmt.Errorf(errBackendWriteSaved, err))