diff --git a/datadog/resource_datadog_dashboard.go b/datadog/resource_datadog_dashboard.go index 9106fde642..917014ca5b 100644 --- a/datadog/resource_datadog_dashboard.go +++ b/datadog/resource_datadog_dashboard.go @@ -540,6 +540,11 @@ func getNonGroupWidgetSchema() map[string]*schema.Schema { Schema: getWidgetLayoutSchema(), }, }, + "id": { + Type: schema.TypeInt, + Computed: true, + Description: "The ID of the widget.", + }, // A widget should implement exactly one of the following definitions "alert_graph_definition": { Type: schema.TypeList, @@ -903,6 +908,7 @@ func buildTerraformWidget(datadogWidget datadogV1.Widget) (map[string]interface{ if v, ok := datadogWidget.GetLayoutOk(); ok { terraformWidget["layout"] = buildTerraformWidgetLayout(*v) } + terraformWidget["id"] = datadogWidget.GetId() // Build definition widgetDefinition := datadogWidget.GetDefinition() diff --git a/datadog/resource_datadog_dashboard_test.go b/datadog/resource_datadog_dashboard_test.go index 1173751207..3047018c29 100644 --- a/datadog/resource_datadog_dashboard_test.go +++ b/datadog/resource_datadog_dashboard_test.go @@ -1186,6 +1186,11 @@ func TestAccDatadogDashboard_update(t *testing.T) { asserts = append(asserts, fmt.Sprintf("title = %s", dbName)) defer cleanup(t) accProvider := testAccProvider(t, accProviders) + checks := testCheckResourceAttrs("datadog_dashboard.ordered_dashboard", checkDashboardExists(accProvider), asserts) + for i := 0; i < 16; i++ { + checks = append(checks, resource.TestCheckResourceAttrSet( + "datadog_dashboard.ordered_dashboard", fmt.Sprintf("widget.%d.id", i))) + } resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -1194,9 +1199,7 @@ func TestAccDatadogDashboard_update(t *testing.T) { Steps: []resource.TestStep{ { Config: datadogOrderedDashboardConfig(dbName), - Check: resource.ComposeTestCheckFunc( - testCheckResourceAttrs("datadog_dashboard.ordered_dashboard", checkDashboardExists(accProvider), asserts)..., - ), + Check: resource.ComposeTestCheckFunc(checks...), }, }, }) @@ -1209,6 +1212,11 @@ func TestAccDatadogFreeDashboard(t *testing.T) { asserts = append(asserts, fmt.Sprintf("title = %s", dbName)) defer cleanup(t) accProvider := testAccProvider(t, accProviders) + checks := testCheckResourceAttrs("datadog_dashboard.free_dashboard", checkDashboardExists(accProvider), asserts) + for i := 0; i < 8; i++ { + checks = append(checks, resource.TestCheckResourceAttrSet( + "datadog_dashboard.free_dashboard", fmt.Sprintf("widget.%d.id", i))) + } resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -1217,9 +1225,7 @@ func TestAccDatadogFreeDashboard(t *testing.T) { Steps: []resource.TestStep{ { Config: datadogFreeDashboardConfig(dbName), - Check: resource.ComposeTestCheckFunc( - testCheckResourceAttrs("datadog_dashboard.free_dashboard", checkDashboardExists(accProvider), asserts)..., - ), + Check: resource.ComposeTestCheckFunc(checks...), }, }, })