More Terraform Cloud UX changes
* Update e2e tests to specify Terraform Cloud * Update more of the terraform command flow to specify Terraform Cloud
This commit is contained in:
parent
261a2b49d3
commit
93bfcff61a
|
@ -68,7 +68,7 @@ func Test_migrate_multi_to_tfc_cloud_name_strategy(t *testing.T) {
|
||||||
userInput: []string{"yes", "yes"},
|
userInput: []string{"yes", "yes"},
|
||||||
postInputOutput: []string{
|
postInputOutput: []string{
|
||||||
`Do you want to copy existing state to the new backend?`,
|
`Do you want to copy existing state to the new backend?`,
|
||||||
`Successfully configured the backend "cloud"!`},
|
`Successfully configured Terraform Cloud!`},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
command: []string{"workspace", "show"},
|
command: []string{"workspace", "show"},
|
||||||
|
@ -139,7 +139,7 @@ func Test_migrate_multi_to_tfc_cloud_name_strategy(t *testing.T) {
|
||||||
userInput: []string{"yes", "yes"},
|
userInput: []string{"yes", "yes"},
|
||||||
postInputOutput: []string{
|
postInputOutput: []string{
|
||||||
`Do you want to copy existing state to the new backend?`,
|
`Do you want to copy existing state to the new backend?`,
|
||||||
`Successfully configured the backend "cloud"!`},
|
`Successfully configured Terraform Cloud!`},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
command: []string{"workspace", "list"},
|
command: []string{"workspace", "list"},
|
||||||
|
@ -191,7 +191,7 @@ func Test_migrate_multi_to_tfc_cloud_name_strategy(t *testing.T) {
|
||||||
op.prep(t, organization.Name, tf.WorkDir())
|
op.prep(t, organization.Name, tf.WorkDir())
|
||||||
for _, tfCmd := range op.commands {
|
for _, tfCmd := range op.commands {
|
||||||
t.Log("Running commands: ", tfCmd.command)
|
t.Log("Running commands: ", tfCmd.command)
|
||||||
tfCmd.command = append(tfCmd.command, "-ignore-remote-version")
|
tfCmd.command = append(tfCmd.command)
|
||||||
cmd := tf.Cmd(tfCmd.command...)
|
cmd := tf.Cmd(tfCmd.command...)
|
||||||
cmd.Stdin = exp.Tty()
|
cmd.Stdin = exp.Tty()
|
||||||
cmd.Stdout = exp.Tty()
|
cmd.Stdout = exp.Tty()
|
||||||
|
@ -303,7 +303,7 @@ func Test_migrate_multi_to_tfc_cloud_tags_strategy(t *testing.T) {
|
||||||
commands: []tfCommand{
|
commands: []tfCommand{
|
||||||
{
|
{
|
||||||
command: []string{"init", "-migrate-state"},
|
command: []string{"init", "-migrate-state"},
|
||||||
expectedCmdOutput: `The "cloud" backend configuration only allows named workspaces!`,
|
expectedCmdOutput: `Terraform Cloud configuration only allows named workspaces!`,
|
||||||
userInput: []string{"dev", "1", "app-*", "1"},
|
userInput: []string{"dev", "1", "app-*", "1"},
|
||||||
postInputOutput: []string{
|
postInputOutput: []string{
|
||||||
`Would you like to rename your workspaces?`,
|
`Would you like to rename your workspaces?`,
|
||||||
|
|
|
@ -52,7 +52,7 @@ func Test_migrate_remote_backend_name_to_tfc_name(t *testing.T) {
|
||||||
command: []string{"init", "-migrate-state", "-ignore-remote-version"},
|
command: []string{"init", "-migrate-state", "-ignore-remote-version"},
|
||||||
expectedCmdOutput: `Do you want to copy existing state to the new backend?`,
|
expectedCmdOutput: `Do you want to copy existing state to the new backend?`,
|
||||||
userInput: []string{"yes"},
|
userInput: []string{"yes"},
|
||||||
postInputOutput: []string{`Successfully configured the backend "cloud"!`},
|
postInputOutput: []string{`Successfully configured Terraform Cloud!`},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
command: []string{"workspace", "show"},
|
command: []string{"workspace", "show"},
|
||||||
|
@ -234,7 +234,7 @@ func Test_migrate_remote_backend_name_to_tfc_name_different_org(t *testing.T) {
|
||||||
command: []string{"init", "-migrate-state", "-ignore-remote-version"},
|
command: []string{"init", "-migrate-state", "-ignore-remote-version"},
|
||||||
expectedCmdOutput: `Do you want to copy existing state to the new backend?`,
|
expectedCmdOutput: `Do you want to copy existing state to the new backend?`,
|
||||||
userInput: []string{"yes"},
|
userInput: []string{"yes"},
|
||||||
postInputOutput: []string{`Successfully configured the backend "cloud"!`},
|
postInputOutput: []string{`Successfully configured Terraform Cloud!`},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
command: []string{"workspace", "show"},
|
command: []string{"workspace", "show"},
|
||||||
|
@ -373,7 +373,7 @@ func Test_migrate_remote_backend_name_to_tfc_tags(t *testing.T) {
|
||||||
commands: []tfCommand{
|
commands: []tfCommand{
|
||||||
{
|
{
|
||||||
command: []string{"init", "-migrate-state", "-ignore-remote-version"},
|
command: []string{"init", "-migrate-state", "-ignore-remote-version"},
|
||||||
expectedCmdOutput: `The "cloud" backend configuration only allows named workspaces!`,
|
expectedCmdOutput: `Terraform Cloud configuration only allows named workspaces!`,
|
||||||
userInput: []string{"cloud-workspace", "yes"},
|
userInput: []string{"cloud-workspace", "yes"},
|
||||||
postInputOutput: []string{
|
postInputOutput: []string{
|
||||||
`Do you want to copy existing state to the new backend?`,
|
`Do you want to copy existing state to the new backend?`,
|
||||||
|
@ -516,7 +516,7 @@ func Test_migrate_remote_backend_prefix_to_tfc_name(t *testing.T) {
|
||||||
expectedCmdOutput: `Do you want to copy existing state to the new backend?`,
|
expectedCmdOutput: `Do you want to copy existing state to the new backend?`,
|
||||||
userInput: []string{"yes"},
|
userInput: []string{"yes"},
|
||||||
postInputOutput: []string{
|
postInputOutput: []string{
|
||||||
`Successfully configured the backend "cloud"!`},
|
`Successfully configured Terraform Cloud!`},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
command: []string{"workspace", "show"},
|
command: []string{"workspace", "show"},
|
||||||
|
|
|
@ -51,9 +51,9 @@ func Test_migrate_single_to_tfc(t *testing.T) {
|
||||||
commands: []tfCommand{
|
commands: []tfCommand{
|
||||||
{
|
{
|
||||||
command: []string{"init", "-migrate-state"},
|
command: []string{"init", "-migrate-state"},
|
||||||
expectedCmdOutput: `Do you want to copy existing state to the new backend?`,
|
expectedCmdOutput: `Do you want to copy existing state to the Terraform Cloud?`,
|
||||||
userInput: []string{"yes"},
|
userInput: []string{"yes"},
|
||||||
postInputOutput: []string{`Successfully configured the backend "cloud"!`},
|
postInputOutput: []string{`Successfully configured Terraform Cloud!`},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
command: []string{"workspace", "list"},
|
command: []string{"workspace", "list"},
|
||||||
|
@ -102,9 +102,9 @@ func Test_migrate_single_to_tfc(t *testing.T) {
|
||||||
commands: []tfCommand{
|
commands: []tfCommand{
|
||||||
{
|
{
|
||||||
command: []string{"init", "-migrate-state"},
|
command: []string{"init", "-migrate-state"},
|
||||||
expectedCmdOutput: `The "cloud" backend configuration only allows named workspaces!`,
|
expectedCmdOutput: `Terraform Cloud configuration only allows named workspaces!`,
|
||||||
userInput: []string{"new-workspace", "yes"},
|
userInput: []string{"new-workspace", "yes"},
|
||||||
postInputOutput: []string{`Successfully configured the backend "cloud"!`},
|
postInputOutput: []string{`Successfully configured Terraform Cloud!`},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
command: []string{"workspace", "list"},
|
command: []string{"workspace", "list"},
|
||||||
|
|
|
@ -952,7 +952,11 @@ func (m *Meta) backend_C_r_S_changed(c *configs.Backend, cHash int, sMgr *clista
|
||||||
|
|
||||||
// no need to confuse the user if the backend types are the same
|
// no need to confuse the user if the backend types are the same
|
||||||
if s.Backend.Type != c.Type {
|
if s.Backend.Type != c.Type {
|
||||||
m.Ui.Output(strings.TrimSpace(fmt.Sprintf(outputBackendMigrateChange, s.Backend.Type, c.Type)))
|
output := fmt.Sprintf(outputBackendMigrateChange, s.Backend.Type, c.Type)
|
||||||
|
if c.Type == "cloud" {
|
||||||
|
output = fmt.Sprintf(outputBackendMigrateChangeCloud, s.Backend.Type)
|
||||||
|
}
|
||||||
|
m.Ui.Output(strings.TrimSpace(output))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Grab the existing backend
|
// Grab the existing backend
|
||||||
|
@ -1011,8 +1015,12 @@ func (m *Meta) backend_C_r_S_changed(c *configs.Backend, cHash int, sMgr *clista
|
||||||
}
|
}
|
||||||
|
|
||||||
if output {
|
if output {
|
||||||
m.Ui.Output(m.Colorize().Color(fmt.Sprintf(
|
// By now the backend is successfully configured. If using Terraform Cloud, the success
|
||||||
"[reset][green]\n"+strings.TrimSpace(successBackendSet), s.Backend.Type)))
|
// message is handled as part of the final init message
|
||||||
|
if _, ok := b.(*cloud.Cloud); !ok {
|
||||||
|
m.Ui.Output(m.Colorize().Color(fmt.Sprintf(
|
||||||
|
"[reset][green]\n"+strings.TrimSpace(successBackendSet), s.Backend.Type)))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return b, diags
|
return b, diags
|
||||||
|
@ -1306,6 +1314,10 @@ const outputBackendMigrateChange = `
|
||||||
Terraform detected that the backend type changed from %q to %q.
|
Terraform detected that the backend type changed from %q to %q.
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const outputBackendMigrateChangeCloud = `
|
||||||
|
Terraform detected that the backend type changed from %q to Terraform Cloud.
|
||||||
|
`
|
||||||
|
|
||||||
const outputBackendMigrateLocal = `
|
const outputBackendMigrateLocal = `
|
||||||
Terraform has detected you're unconfiguring your previously set %q backend.
|
Terraform has detected you're unconfiguring your previously set %q backend.
|
||||||
`
|
`
|
||||||
|
|
|
@ -686,12 +686,15 @@ func (m *Meta) promptMultiToSingleCloudMigration(opts *backendMigrateOpts) error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Meta) promptNewWorkspaceName(destinationType string) (string, error) {
|
func (m *Meta) promptNewWorkspaceName(destinationType string) (string, error) {
|
||||||
|
message := fmt.Sprintf("[reset][bold][yellow]The %q backend configuration only allows "+
|
||||||
|
"named workspaces![reset]", destinationType)
|
||||||
|
if destinationType == "cloud" {
|
||||||
|
message = fmt.Sprintf("[reset][bold][yellow]The Terraform Cloud configuration only allows " +
|
||||||
|
"named workspaces![reset]")
|
||||||
|
}
|
||||||
name, err := m.UIInput().Input(context.Background(), &terraform.InputOpts{
|
name, err := m.UIInput().Input(context.Background(), &terraform.InputOpts{
|
||||||
Id: "new-state-name",
|
Id: "new-state-name",
|
||||||
Query: fmt.Sprintf(
|
Query: message,
|
||||||
"[reset][bold][yellow]The %q backend configuration only allows "+
|
|
||||||
"named workspaces![reset]",
|
|
||||||
destinationType),
|
|
||||||
Description: strings.TrimSpace(inputBackendNewWorkspaceName),
|
Description: strings.TrimSpace(inputBackendNewWorkspaceName),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue