diff options
Diffstat (limited to 'vendor/github.com/hashicorp/terraform/states')
3 files changed, 29 insertions, 13 deletions
diff --git a/vendor/github.com/hashicorp/terraform/states/state_deepcopy.go b/vendor/github.com/hashicorp/terraform/states/state_deepcopy.go index ea717d0..8664f3b 100644 --- a/vendor/github.com/hashicorp/terraform/states/state_deepcopy.go +++ b/vendor/github.com/hashicorp/terraform/states/state_deepcopy.go | |||
@@ -147,7 +147,7 @@ func (obj *ResourceInstanceObjectSrc) DeepCopy() *ResourceInstanceObjectSrc { | |||
147 | 147 | ||
148 | var private []byte | 148 | var private []byte |
149 | if obj.Private != nil { | 149 | if obj.Private != nil { |
150 | private := make([]byte, len(obj.Private)) | 150 | private = make([]byte, len(obj.Private)) |
151 | copy(private, obj.Private) | 151 | copy(private, obj.Private) |
152 | } | 152 | } |
153 | 153 | ||
@@ -181,14 +181,17 @@ func (obj *ResourceInstanceObject) DeepCopy() *ResourceInstanceObject { | |||
181 | 181 | ||
182 | var private []byte | 182 | var private []byte |
183 | if obj.Private != nil { | 183 | if obj.Private != nil { |
184 | private := make([]byte, len(obj.Private)) | 184 | private = make([]byte, len(obj.Private)) |
185 | copy(private, obj.Private) | 185 | copy(private, obj.Private) |
186 | } | 186 | } |
187 | 187 | ||
188 | // Some addrs.Referencable implementations are technically mutable, but | 188 | // Some addrs.Referenceable implementations are technically mutable, but |
189 | // we treat them as immutable by convention and so we don't deep-copy here. | 189 | // we treat them as immutable by convention and so we don't deep-copy here. |
190 | dependencies := make([]addrs.Referenceable, len(obj.Dependencies)) | 190 | var dependencies []addrs.Referenceable |
191 | copy(dependencies, obj.Dependencies) | 191 | if obj.Dependencies != nil { |
192 | dependencies = make([]addrs.Referenceable, len(obj.Dependencies)) | ||
193 | copy(dependencies, obj.Dependencies) | ||
194 | } | ||
192 | 195 | ||
193 | return &ResourceInstanceObject{ | 196 | return &ResourceInstanceObject{ |
194 | Value: obj.Value, | 197 | Value: obj.Value, |
diff --git a/vendor/github.com/hashicorp/terraform/states/statefile/version2.go b/vendor/github.com/hashicorp/terraform/states/statefile/version2.go index 6fe2ab8..be93924 100644 --- a/vendor/github.com/hashicorp/terraform/states/statefile/version2.go +++ b/vendor/github.com/hashicorp/terraform/states/statefile/version2.go | |||
@@ -205,5 +205,5 @@ type instanceStateV2 struct { | |||
205 | type backendStateV2 struct { | 205 | type backendStateV2 struct { |
206 | Type string `json:"type"` // Backend type | 206 | Type string `json:"type"` // Backend type |
207 | ConfigRaw json.RawMessage `json:"config"` // Backend raw config | 207 | ConfigRaw json.RawMessage `json:"config"` // Backend raw config |
208 | Hash int `json:"hash"` // Hash of portion of configuration from config files | 208 | Hash uint64 `json:"hash"` // Hash of portion of configuration from config files |
209 | } | 209 | } |
diff --git a/vendor/github.com/hashicorp/terraform/states/statefile/version3_upgrade.go b/vendor/github.com/hashicorp/terraform/states/statefile/version3_upgrade.go index 2cbe8a5..fbec547 100644 --- a/vendor/github.com/hashicorp/terraform/states/statefile/version3_upgrade.go +++ b/vendor/github.com/hashicorp/terraform/states/statefile/version3_upgrade.go | |||
@@ -79,7 +79,7 @@ func upgradeStateV3ToV4(old *stateV3) (*stateV4, error) { | |||
79 | case addrs.DataResourceMode: | 79 | case addrs.DataResourceMode: |
80 | modeStr = "data" | 80 | modeStr = "data" |
81 | default: | 81 | default: |
82 | return nil, fmt.Errorf("state contains resource %s with an unsupported resource mode", resAddr) | 82 | return nil, fmt.Errorf("state contains resource %s with an unsupported resource mode %#v", resAddr, resAddr.Mode) |
83 | } | 83 | } |
84 | 84 | ||
85 | // In state versions prior to 4 we allowed each instance of a | 85 | // In state versions prior to 4 we allowed each instance of a |
@@ -98,7 +98,7 @@ func upgradeStateV3ToV4(old *stateV3) (*stateV4, error) { | |||
98 | var diags tfdiags.Diagnostics | 98 | var diags tfdiags.Diagnostics |
99 | providerAddr, diags = addrs.ParseAbsProviderConfigStr(oldProviderAddr) | 99 | providerAddr, diags = addrs.ParseAbsProviderConfigStr(oldProviderAddr) |
100 | if diags.HasErrors() { | 100 | if diags.HasErrors() { |
101 | return nil, diags.Err() | 101 | return nil, fmt.Errorf("invalid provider config reference %q for %s: %s", oldProviderAddr, instAddr, diags.Err()) |
102 | } | 102 | } |
103 | } else { | 103 | } else { |
104 | // Smells like an old-style module-local provider address, | 104 | // Smells like an old-style module-local provider address, |
@@ -109,7 +109,7 @@ func upgradeStateV3ToV4(old *stateV3) (*stateV4, error) { | |||
109 | if oldProviderAddr != "" { | 109 | if oldProviderAddr != "" { |
110 | localAddr, diags := addrs.ParseProviderConfigCompactStr(oldProviderAddr) | 110 | localAddr, diags := addrs.ParseProviderConfigCompactStr(oldProviderAddr) |
111 | if diags.HasErrors() { | 111 | if diags.HasErrors() { |
112 | return nil, diags.Err() | 112 | return nil, fmt.Errorf("invalid legacy provider config reference %q for %s: %s", oldProviderAddr, instAddr, diags.Err()) |
113 | } | 113 | } |
114 | providerAddr = localAddr.Absolute(moduleAddr) | 114 | providerAddr = localAddr.Absolute(moduleAddr) |
115 | } else { | 115 | } else { |
@@ -272,7 +272,7 @@ func upgradeInstanceObjectV3ToV4(rsOld *resourceStateV2, isOld *instanceStateV2, | |||
272 | instKeyRaw = string(tk) | 272 | instKeyRaw = string(tk) |
273 | default: | 273 | default: |
274 | if instKeyRaw != nil { | 274 | if instKeyRaw != nil { |
275 | return nil, fmt.Errorf("insupported instance key: %#v", instKey) | 275 | return nil, fmt.Errorf("unsupported instance key: %#v", instKey) |
276 | } | 276 | } |
277 | } | 277 | } |
278 | 278 | ||
@@ -301,7 +301,11 @@ func upgradeInstanceObjectV3ToV4(rsOld *resourceStateV2, isOld *instanceStateV2, | |||
301 | 301 | ||
302 | dependencies := make([]string, len(rsOld.Dependencies)) | 302 | dependencies := make([]string, len(rsOld.Dependencies)) |
303 | for i, v := range rsOld.Dependencies { | 303 | for i, v := range rsOld.Dependencies { |
304 | dependencies[i] = parseLegacyDependency(v) | 304 | depStr, err := parseLegacyDependency(v) |
305 | if err != nil { | ||
306 | return nil, fmt.Errorf("invalid dependency reference %q: %s", v, err) | ||
307 | } | ||
308 | dependencies[i] = depStr | ||
305 | } | 309 | } |
306 | 310 | ||
307 | return &instanceObjectStateV4{ | 311 | return &instanceObjectStateV4{ |
@@ -414,7 +418,7 @@ func simplifyImpliedValueType(ty cty.Type) cty.Type { | |||
414 | } | 418 | } |
415 | } | 419 | } |
416 | 420 | ||
417 | func parseLegacyDependency(s string) string { | 421 | func parseLegacyDependency(s string) (string, error) { |
418 | parts := strings.Split(s, ".") | 422 | parts := strings.Split(s, ".") |
419 | ret := parts[0] | 423 | ret := parts[0] |
420 | for _, part := range parts[1:] { | 424 | for _, part := range parts[1:] { |
@@ -427,5 +431,14 @@ func parseLegacyDependency(s string) string { | |||
427 | } | 431 | } |
428 | ret = ret + "." + part | 432 | ret = ret + "." + part |
429 | } | 433 | } |
430 | return ret | 434 | |
435 | // The result must parse as a reference, or else we'll create an invalid | ||
436 | // state file. | ||
437 | var diags tfdiags.Diagnostics | ||
438 | _, diags = addrs.ParseRefStr(ret) | ||
439 | if diags.HasErrors() { | ||
440 | return "", diags.Err() | ||
441 | } | ||
442 | |||
443 | return ret, nil | ||
431 | } | 444 | } |