terraform-provider-datadog: datadog_screenboard - panic: interface conversion: interface {} is string, not float64
Terraform Version
$ terraform -v
Terraform v0.11.10
+ provider.datadog v1.5.0
Affected Resource(s)
datadog_screenboard
Terraform Configuration Files
resource "datadog_screenboard" "example" {
title = "Datadog Terraform Testing"
read_only = false
widget {
type = "timeseries"
x = 25
y = 5
title = "graph title terraform"
title_size = 16
title_align = "right"
legend = true
legend_size = 16
time {
live_span = "1d"
}
tile_def {
viz = "timeseries"
request {
q = "avg:system.cpu.user{*}"
type = "line"
style {
palette = "purple"
type = "dashed"
width = "thin"
}
}
marker {
label = "test marker"
type = "error dashed"
value = "y < 6"
}
event {
q = "test event"
}
}
}
}
Panic Output
https://gist.github.com/sudomateo/14662ec6cd8684cef2a8f6d6b9499649
Expected Behavior
The terraform apply command should have created the datadog_screenboard resource successfully.
Actual Behavior
The terraform apply command produced a panic as noted above.
Steps to Reproduce
- Create
main.tfwith the content above. - Run
terraform initto download the Datadog provider plugin. - Run
terraform planto verify the plan output. - Run
terraform applyto apply the plan. Enteryeswhen prompted. - Note the crash.
Important Factoids
After testing with previous commits, it seems that this issue was introduced by commit 19ba2e52a2ee8218716157608b40a215c15d798c. However, you’ll have to build using commit bd8075f19b50ff62cc391c5238054dc390143eb9 if you want to compile the provider plugin successfully.
Also, even the acceptance tests are failing:
$ pwd
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/datadog
$ TF_ACC=1 go test -run TestAccDatadogScreenboard_update -v -timeout 120m
=== RUN TestAccDatadogScreenboard_update
panic: interface conversion: interface {} is string, not float64
goroutine 1931 [running]:
github.com/terraform-providers/terraform-provider-datadog/datadog.setJSONNumberFromDict(0xc0005b6330, 0x19780e4, 0x9, 0xc0000f6120)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/datadog/resource_datadog_screenboard.go:601 +0x13d
github.com/terraform-providers/terraform-provider-datadog/datadog.setFromDict(0xc0005b6330, 0x19780e4, 0x9, 0x17fc940, 0xc0000f6120)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/datadog/resource_datadog_screenboard.go:624 +0x24d
github.com/terraform-providers/terraform-provider-datadog/datadog.batchSetFromDict(0xc0005b6330, 0xc000554a38, 0xa, 0xa)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/datadog/resource_datadog_screenboard.go:644 +0x7e
github.com/terraform-providers/terraform-provider-datadog/datadog.buildTileDef(0x181e300, 0xc000350ba0, 0x1977607)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/datadog/resource_datadog_screenboard.go:795 +0x1dc
github.com/terraform-providers/terraform-provider-datadog/datadog.buildWidgets(0xc0005554b8, 0x1978162, 0x9, 0x1823ea0)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/datadog/resource_datadog_screenboard.go:940 +0x882
github.com/terraform-providers/terraform-provider-datadog/datadog.buildScreenboard(0xc000280150, 0xc000555548, 0x102d321, 0x19ba9a8)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/datadog/resource_datadog_screenboard.go:963 +0x3c3
github.com/terraform-providers/terraform-provider-datadog/datadog.resourceDatadogScreenboardCreate(0xc000280150, 0x1970080, 0xc00063de40, 0x24, 0x21dec60)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/datadog/resource_datadog_screenboard.go:969 +0x35
github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/helper/schema.(*Resource).Apply(0xc0002817a0, 0xc0004140f0, 0xc00047e480, 0x1970080, 0xc00063de40, 0xc0003cc001, 0x43, 0x0)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/helper/schema/resource.go:225 +0x351
github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/helper/schema.(*Provider).Apply(0xc0002818f0, 0xc0001f61e0, 0xc0004140f0, 0xc00047e480, 0x1, 0x107e533, 0x0)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/helper/schema/provider.go:283 +0x9c
github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/terraform.(*EvalApply).Eval(0xc0003f3e40, 0x1b06360, 0xc0001c3d40, 0x2, 0x2, 0x197355f, 0x4)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/terraform/eval_apply.go:57 +0x226
github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/terraform.EvalRaw(0x1af7500, 0xc0003f3e40, 0x1b06360, 0xc0001c3d40, 0x0, 0x0, 0x0, 0x0)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/terraform/eval.go:53 +0x156
github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/terraform.(*EvalSequence).Eval(0xc000351ba0, 0x1b06360, 0xc0001c3d40, 0x2, 0x2, 0x197355f, 0x4)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/terraform/eval_sequence.go:14 +0x9c
github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/terraform.EvalRaw(0x1af7a40, 0xc000351ba0, 0x1b06360, 0xc0001c3d40, 0x18660c0, 0x2156502, 0x182bf20, 0xc0003b6570)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/terraform/eval.go:53 +0x156
github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/terraform.Eval(0x1af7a40, 0xc000351ba0, 0x1b06360, 0xc0001c3d40, 0xc000351ba0, 0x1af7a40, 0xc000351ba0, 0x19bab48)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/terraform/eval.go:34 +0x4d
github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/terraform.(*Graph).walk.func1(0x19412e0, 0xc00040e000, 0x0, 0x0)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/terraform/graph.go:126 +0xc45
github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/dag.(*Walker).walkVertex(0xc0003702a0, 0x19412e0, 0xc00040e000, 0xc00063d680)
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/dag/walk.go:387 +0x367
created by github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/dag.(*Walker).Update
/Users/msanabria/go/src/github.com/terraform-providers/terraform-provider-datadog/vendor/github.com/hashicorp/terraform/dag/walk.go:310 +0x986
exit status 2
FAIL github.com/terraform-providers/terraform-provider-datadog/datadog 1.165s
About this issue
- Original URL
- State: closed
- Created 6 years ago
- Reactions: 2
- Comments: 24 (9 by maintainers)
Yeah, it seems if I jump from 0.14 to 0.16 I have to delete the board,
state rmit from my state file then re-create the dashboard. No reason to open this, but others may find this report helpful.The root cause is fixed locally (bypass the conversion logic that assumes everything is a float) but the fix is taking more time than expected due to recent changes to the client. In particular, the client changed the type for some of the
Precisionfields on the different structs that support it fromstringtojson.Number, making impossible to encode valid configs likeprecision: "*". I opened https://github.com/zorkian/go-datadog-api/pull/193 to revert all the fields to the string type but in the meantime https://github.com/zorkian/go-datadog-api/pull/190 was merged and acceptance tests don’t pass anymore, opened https://github.com/zorkian/go-datadog-api/issues/192 to discuss the issue.From doing some digging – this is happening on state retrieval, so the HCL isn’t what I need to show – it look as though I have a
"height": "",in my response. Looks like I didn’t specify a height and am entrusting Datadog to do the right thing? 😃Hey @masci, I’m getting this error now in 1.6.0 for
Screenboard.height:versions: