Skip to content

Commit 5751fad

Browse files
committed
add passing tests, full support for cloud file tables
1 parent 5edc871 commit 5751fad

26 files changed

+2346
-412
lines changed

datadog/fwprovider/data_source_datadog_reference_table_rows.go

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package fwprovider
33
import (
44
"context"
55
"fmt"
6+
"net/http"
7+
"time"
68

79
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
810
"github.com/hashicorp/terraform-plugin-framework/datasource"
@@ -100,10 +102,37 @@ func (d *datadogReferenceTableRowsDataSource) Read(ctx context.Context, request
100102
return
101103
}
102104

103-
// Call API to get rows by ID
104-
ddResp, _, err := d.Api.GetRowsByID(d.Auth, tableId, rowIds)
105-
if err != nil {
106-
response.Diagnostics.Append(utils.FrameworkErrorDiag(err, "error getting reference table rows"))
105+
// Call API to get rows by ID with retry logic
106+
// Rows are written asynchronously, so we need to retry if the table hasn't synced yet
107+
// Use a 5-second interval to avoid spamming the API while waiting for sync
108+
var ddResp datadogV2.TableRowResourceArray
109+
var httpResp *http.Response
110+
var err error
111+
112+
retryErr := utils.Retry(5*time.Second, 10, func() error {
113+
ddResp, httpResp, err = d.Api.GetRowsByID(d.Auth, tableId, rowIds)
114+
if err != nil {
115+
// If we get a 404, the table might not have synced yet - retry
116+
if httpResp != nil && httpResp.StatusCode == 404 {
117+
return &utils.RetryableError{Prob: fmt.Sprintf("rows not found (table may not have synced yet): %v", err)}
118+
}
119+
// For other errors, don't retry
120+
return &utils.FatalError{Prob: fmt.Sprintf("error getting reference table rows: %v", err)}
121+
}
122+
// Success - check if we got the expected number of rows
123+
if len(ddResp.Data) == len(rowIds) {
124+
return nil
125+
}
126+
// If we got some rows but not all, the table might still be syncing - retry
127+
if len(ddResp.Data) > 0 && len(ddResp.Data) < len(rowIds) {
128+
return &utils.RetryableError{Prob: fmt.Sprintf("only %d of %d rows found (table may still be syncing)", len(ddResp.Data), len(rowIds))}
129+
}
130+
// If we got no rows, retry
131+
return &utils.RetryableError{Prob: "no rows found (table may not have synced yet)"}
132+
})
133+
134+
if retryErr != nil {
135+
response.Diagnostics.Append(utils.FrameworkErrorDiag(retryErr, "error getting reference table rows"))
107136
return
108137
}
109138

datadog/fwprovider/resource_datadog_reference_table.go

Lines changed: 287 additions & 145 deletions
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2025-11-05T18:58:39.163767-05:00
1+
2025-11-19T14:48:10.363541-05:00

datadog/tests/cassettes/TestAccDatadogReferenceTableDataSource.yaml

Lines changed: 466 additions & 1 deletion
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2025-11-05T18:58:39.171125-05:00
1+
2025-11-19T14:48:10.362679-05:00

datadog/tests/cassettes/TestAccDatadogReferenceTableRowsDataSource.yaml

Lines changed: 400 additions & 1 deletion
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2025-09-15T16:33:11.400007+02:00
1+
2025-11-19T14:48:10.524044-05:00

datadog/tests/cassettes/TestAccDatadogSecurityMonitoringRule_RemoveReferenceTables.yaml

Lines changed: 120 additions & 120 deletions
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2025-09-18T08:16:01.76008-04:00
1+
2025-11-19T14:48:10.363579-05:00

datadog/tests/cassettes/TestAccDatadogTagPipelineRulesetDataSource_ReferenceTableRule.yaml

Lines changed: 61 additions & 61 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)