From e7b07e109f339f808f296b4ddf544a6bf68b69f7 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Tue, 21 Mar 2017 11:12:44 -0700 Subject: [PATCH] terraform: V1 to V2 upgrade should treat nil path as root path It appears there are no tests for this as far as I can find. We change V1 states (very old) to assume a nil path is a root path. Staet.Validate() later will catch any duplicate paths. --- terraform/state_upgrade_v1_to_v2.go | 5 +++++ terraform/state_upgrade_v2_to_v3.go | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/terraform/state_upgrade_v1_to_v2.go b/terraform/state_upgrade_v1_to_v2.go index 928cdba11..88192e87e 100644 --- a/terraform/state_upgrade_v1_to_v2.go +++ b/terraform/state_upgrade_v1_to_v2.go @@ -68,6 +68,11 @@ func (old *moduleStateV1) upgradeToV2() (*ModuleState, error) { if err != nil { return nil, fmt.Errorf("Error upgrading ModuleState V1: %v", err) } + if path == nil { + // We found some V1 states with a nil path. Assume root and catch + // duplicate path errors later (as part of Validate). + path = rootModulePath + } // Outputs needs upgrading to use the new structure outputs := make(map[string]*OutputState) diff --git a/terraform/state_upgrade_v2_to_v3.go b/terraform/state_upgrade_v2_to_v3.go index 1fc458d15..e52d35fcd 100644 --- a/terraform/state_upgrade_v2_to_v3.go +++ b/terraform/state_upgrade_v2_to_v3.go @@ -18,7 +18,7 @@ func upgradeStateV2ToV3(old *State) (*State, error) { // Ensure the copied version is v2 before attempting to upgrade if new.Version != 2 { - return nil, fmt.Errorf("Cannot appply v2->v3 state upgrade to " + + return nil, fmt.Errorf("Cannot apply v2->v3 state upgrade to " + "a state which is not version 2.") }