Merge pull request #17545 from hashicorp/jbardin/remote-state-environment
don't let default workspace override environment
This commit is contained in:
commit
bb8f859113
|
@ -64,7 +64,7 @@ func dataSourceRemoteState() *schema.Resource {
|
||||||
}
|
}
|
||||||
|
|
||||||
func dataSourceRemoteStateRead(d *schema.ResourceData, meta interface{}) error {
|
func dataSourceRemoteStateRead(d *schema.ResourceData, meta interface{}) error {
|
||||||
backend := d.Get("backend").(string)
|
backendType := d.Get("backend").(string)
|
||||||
|
|
||||||
// Get the configuration in a type we want.
|
// Get the configuration in a type we want.
|
||||||
rawConfig, err := config.NewRawConfig(d.Get("config").(map[string]interface{}))
|
rawConfig, err := config.NewRawConfig(d.Get("config").(map[string]interface{}))
|
||||||
|
@ -73,16 +73,16 @@ func dataSourceRemoteStateRead(d *schema.ResourceData, meta interface{}) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't break people using the old _local syntax - but note warning above
|
// Don't break people using the old _local syntax - but note warning above
|
||||||
if backend == "_local" {
|
if backendType == "_local" {
|
||||||
log.Println(`[INFO] Switching old (unsupported) backend "_local" to "local"`)
|
log.Println(`[INFO] Switching old (unsupported) backend "_local" to "local"`)
|
||||||
backend = "local"
|
backendType = "local"
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the client to access our remote state
|
// Create the client to access our remote state
|
||||||
log.Printf("[DEBUG] Initializing remote state backend: %s", backend)
|
log.Printf("[DEBUG] Initializing remote state backend: %s", backendType)
|
||||||
f := backendinit.Backend(backend)
|
f := backendinit.Backend(backendType)
|
||||||
if f == nil {
|
if f == nil {
|
||||||
return fmt.Errorf("Unknown backend type: %s", backend)
|
return fmt.Errorf("Unknown backend type: %s", backendType)
|
||||||
}
|
}
|
||||||
b := f()
|
b := f()
|
||||||
|
|
||||||
|
@ -94,9 +94,10 @@ func dataSourceRemoteStateRead(d *schema.ResourceData, meta interface{}) error {
|
||||||
// environment is deprecated in favour of workspace.
|
// environment is deprecated in favour of workspace.
|
||||||
// If both keys are set workspace should win.
|
// If both keys are set workspace should win.
|
||||||
name := d.Get("environment").(string)
|
name := d.Get("environment").(string)
|
||||||
if ws, ok := d.GetOk("workspace"); ok {
|
if ws, ok := d.GetOk("workspace"); ok && ws != backend.DefaultStateName {
|
||||||
name = ws.(string)
|
name = ws.(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
state, err := b.State(name)
|
state, err := b.State(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error loading the remote state: %s", err)
|
return fmt.Errorf("error loading the remote state: %s", err)
|
||||||
|
|
|
@ -129,6 +129,27 @@ func testAccCheckStateValue(id, name, value string) resource.TestCheckFunc {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// make sure that the deprecated environment field isn't overridden by the
|
||||||
|
// default value for workspace.
|
||||||
|
func TestState_deprecatedEnvironment(t *testing.T) {
|
||||||
|
resource.UnitTest(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
{
|
||||||
|
Config: testAccState_deprecatedEnvironment,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckStateValue(
|
||||||
|
// if the workspace default value overrides the
|
||||||
|
// environment, this will get the foo value from the
|
||||||
|
// default state.
|
||||||
|
"data.terraform_remote_state.foo", "foo", ""),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const testAccState_basic = `
|
const testAccState_basic = `
|
||||||
data "terraform_remote_state" "foo" {
|
data "terraform_remote_state" "foo" {
|
||||||
backend = "local"
|
backend = "local"
|
||||||
|
@ -190,3 +211,13 @@ data "terraform_remote_state" "foo" {
|
||||||
foo = "not bar"
|
foo = "not bar"
|
||||||
}
|
}
|
||||||
}`
|
}`
|
||||||
|
|
||||||
|
const testAccState_deprecatedEnvironment = `
|
||||||
|
data "terraform_remote_state" "foo" {
|
||||||
|
backend = "local"
|
||||||
|
environment = "deprecated"
|
||||||
|
|
||||||
|
config {
|
||||||
|
path = "./test-fixtures/basic.tfstate"
|
||||||
|
}
|
||||||
|
}`
|
||||||
|
|
Loading…
Reference in New Issue