core: Log diff mismatch using spew instead of %#v
This commit improves the error logging for "Diffs do not match" errors by using the go-spew library to ensure that the structures are presented fully and in a consistent order. This allows use of the command line diff tool to analyse what is wrong.
This commit is contained in:
parent
2b577ea6db
commit
7dab27065f
|
@ -5,6 +5,7 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/davecgh/go-spew/spew"
|
||||||
"github.com/hashicorp/terraform/config"
|
"github.com/hashicorp/terraform/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -42,10 +43,11 @@ func (n *EvalCompareDiff) Eval(ctx EvalContext) (interface{}, error) {
|
||||||
}()
|
}()
|
||||||
|
|
||||||
if same, reason := one.Same(two); !same {
|
if same, reason := one.Same(two); !same {
|
||||||
|
spew.Config.SortKeys = true
|
||||||
log.Printf("[ERROR] %s: diffs didn't match", n.Info.Id)
|
log.Printf("[ERROR] %s: diffs didn't match", n.Info.Id)
|
||||||
log.Printf("[ERROR] %s: reason: %s", n.Info.Id, reason)
|
log.Printf("[ERROR] %s: reason: %s", n.Info.Id, reason)
|
||||||
log.Printf("[ERROR] %s: diff one: %#v", n.Info.Id, one)
|
log.Printf("[ERROR] %s: diff one: %s", n.Info.Id, spew.Sdump(one))
|
||||||
log.Printf("[ERROR] %s: diff two: %#v", n.Info.Id, two)
|
log.Printf("[ERROR] %s: diff two: %s", n.Info.Id, spew.Sdump(two))
|
||||||
return nil, fmt.Errorf(
|
return nil, fmt.Errorf(
|
||||||
"%s: diffs didn't match during apply. This is a bug with "+
|
"%s: diffs didn't match during apply. This is a bug with "+
|
||||||
"Terraform and should be reported as a GitHub Issue.\n"+
|
"Terraform and should be reported as a GitHub Issue.\n"+
|
||||||
|
@ -55,12 +57,12 @@ func (n *EvalCompareDiff) Eval(ctx EvalContext) (interface{}, error) {
|
||||||
" Terraform Version: %s\n"+
|
" Terraform Version: %s\n"+
|
||||||
" Resource ID: %s\n"+
|
" Resource ID: %s\n"+
|
||||||
" Mismatch reason: %s\n"+
|
" Mismatch reason: %s\n"+
|
||||||
" Diff One (usually from plan): %#v\n"+
|
" Diff One (usually from plan): %s\n"+
|
||||||
" Diff Two (usually from apply): %#v\n"+
|
" Diff Two (usually from apply): %s\n"+
|
||||||
"\n"+
|
"\n"+
|
||||||
"Also include as much context as you can about your config, state, "+
|
"Also include as much context as you can about your config, state, "+
|
||||||
"and the steps you performed to trigger this error.\n",
|
"and the steps you performed to trigger this error.\n",
|
||||||
n.Info.Id, Version, n.Info.Id, reason, one, two)
|
n.Info.Id, Version, n.Info.Id, reason, spew.Sdump(one), spew.Sdump(two))
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, nil
|
return nil, nil
|
||||||
|
|
Loading…
Reference in New Issue