Merge pull request #19350 from hashicorp/b-select-workspace
backend/migrations: only select workspaces if supported
This commit is contained in:
commit
3c850947a7
|
@ -700,6 +700,10 @@ func (m *Meta) backend_C_r_s(c *configs.Backend, cHash int, sMgr *state.LocalSta
|
||||||
return nil, diags
|
return nil, diags
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// By now the backend is successfully configured.
|
||||||
|
m.Ui.Output(m.Colorize().Color(fmt.Sprintf(
|
||||||
|
"[reset][green]\n"+strings.TrimSpace(successBackendSet), s.Backend.Type)))
|
||||||
|
|
||||||
// Its possible that the currently selected workspace is not migrated,
|
// Its possible that the currently selected workspace is not migrated,
|
||||||
// so we call selectWorkspace to ensure a valid workspace is selected.
|
// so we call selectWorkspace to ensure a valid workspace is selected.
|
||||||
if err := m.selectWorkspace(b); err != nil {
|
if err := m.selectWorkspace(b); err != nil {
|
||||||
|
@ -707,9 +711,6 @@ func (m *Meta) backend_C_r_s(c *configs.Backend, cHash int, sMgr *state.LocalSta
|
||||||
return nil, diags
|
return nil, diags
|
||||||
}
|
}
|
||||||
|
|
||||||
m.Ui.Output(m.Colorize().Color(fmt.Sprintf(
|
|
||||||
"[reset][green]\n"+strings.TrimSpace(successBackendSet), s.Backend.Type)))
|
|
||||||
|
|
||||||
// Return the backend
|
// Return the backend
|
||||||
return b, diags
|
return b, diags
|
||||||
}
|
}
|
||||||
|
@ -720,10 +721,14 @@ func (m *Meta) backend_C_r_s(c *configs.Backend, cHash int, sMgr *state.LocalSta
|
||||||
func (m *Meta) selectWorkspace(b backend.Backend) error {
|
func (m *Meta) selectWorkspace(b backend.Backend) error {
|
||||||
workspaces, err := b.Workspaces()
|
workspaces, err := b.Workspaces()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if err == backend.ErrWorkspacesNotSupported {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return fmt.Errorf("Failed to get migrated workspaces: %s", err)
|
return fmt.Errorf("Failed to get migrated workspaces: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(workspaces) == 0 {
|
if len(workspaces) == 0 {
|
||||||
return fmt.Errorf(errBackendNoMigratedWorkspaces)
|
return fmt.Errorf(strings.TrimSpace(errBackendNoMigratedWorkspaces))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the currently selected workspace.
|
// Get the currently selected workspace.
|
||||||
|
@ -744,18 +749,18 @@ func (m *Meta) selectWorkspace(b backend.Backend) error {
|
||||||
v, err := m.UIInput().Input(&terraform.InputOpts{
|
v, err := m.UIInput().Input(&terraform.InputOpts{
|
||||||
Id: "select-workspace",
|
Id: "select-workspace",
|
||||||
Query: fmt.Sprintf(
|
Query: fmt.Sprintf(
|
||||||
"[reset][bold][yellow]The currently selected workspace (%s) is not migrated.[reset]",
|
"\n[reset][bold][yellow]The currently selected workspace (%s) is not migrated.[reset]",
|
||||||
workspace),
|
workspace),
|
||||||
Description: fmt.Sprintf(
|
Description: fmt.Sprintf(
|
||||||
strings.TrimSpace(inputBackendSelectWorkspace), list.String()),
|
strings.TrimSpace(inputBackendSelectWorkspace), list.String()),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error asking to select workspace: %s", err)
|
return fmt.Errorf("Failed to select workspace: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
idx, err := strconv.Atoi(v)
|
idx, err := strconv.Atoi(v)
|
||||||
if err != nil || (idx < 1 || idx > len(workspaces)) {
|
if err != nil || (idx < 1 || idx > len(workspaces)) {
|
||||||
return fmt.Errorf("Error selecting workspace: input not a valid number")
|
return fmt.Errorf("Failed to select workspace: input not a valid number")
|
||||||
}
|
}
|
||||||
|
|
||||||
return m.SetWorkspace(workspaces[idx-1])
|
return m.SetWorkspace(workspaces[idx-1])
|
||||||
|
@ -1086,6 +1091,14 @@ If you'd like to run Terraform and store state locally, you can fix this
|
||||||
error by removing the backend configuration from your configuration.
|
error by removing the backend configuration from your configuration.
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const errBackendNoMigratedWorkspaces = `
|
||||||
|
No workspaces are migrated.
|
||||||
|
|
||||||
|
Use the "terraform workspace" command to create and select a new workspace.
|
||||||
|
If the backend already contains existing workspaces, you may need to update
|
||||||
|
the backend configuration.
|
||||||
|
`
|
||||||
|
|
||||||
const errBackendRemoteRead = `
|
const errBackendRemoteRead = `
|
||||||
Error reading backend state: %s
|
Error reading backend state: %s
|
||||||
|
|
||||||
|
|
|
@ -475,14 +475,6 @@ The state in the previous backend remains intact and unmodified. Please resolve
|
||||||
the error above and try again.
|
the error above and try again.
|
||||||
`
|
`
|
||||||
|
|
||||||
const errBackendNoMigratedWorkspaces = `
|
|
||||||
No workspaces are migrated. Use the "terraform workspace" command to create
|
|
||||||
and select a new workspace.
|
|
||||||
|
|
||||||
If the backend already contains existing workspaces, you may need to update
|
|
||||||
the workspace name or prefix in the backend configuration.
|
|
||||||
`
|
|
||||||
|
|
||||||
const inputBackendMigrateEmpty = `
|
const inputBackendMigrateEmpty = `
|
||||||
Pre-existing state was found while migrating the previous %q backend to the
|
Pre-existing state was found while migrating the previous %q backend to the
|
||||||
newly configured %q backend. No existing state was found in the newly
|
newly configured %q backend. No existing state was found in the newly
|
||||||
|
|
Loading…
Reference in New Issue