Skip to content

Fix Data Source Tag Filtering#143

Open
alakae wants to merge 6 commits into
masterfrom
alain/ds-by-tag
Open

Fix Data Source Tag Filtering#143
alakae wants to merge 6 commits into
masterfrom
alain/ds-by-tag

Conversation

@alakae

@alakae alakae commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Fixes #136

alakae added 6 commits June 26, 2026 11:47
The old filter loop used `m[key] != attr` for all attribute types. For TypeMap (tags), comparing two interface{} values whose dynamic type is map[string]interface{} panics in Go: maps are not comparable.

In practice this panic was masked: gather functions did not include "tags" in ResourceDataRaw, so m["tags"] was always nil. Comparing nil != someMap is safe and evaluates to true (no match), so the real provider silently returned "Found zero" rather than crashing.

This commit fixes both: it wires up TagsToState in every gather function so tags are actually returned, and replaces the generic != comparison with reflect.DeepEqual for scalars and subset-walk logic for TypeMap fields.
Makes it more clear what input and output of the funcs actually are.
Gather functions return []string directly from the SDK struct, but
d.GetOk on a schema.TypeList always returns []interface{}. The previous
reflect.DeepEqual call compared incompatible dynamic types and always
returned false, causing any TypeList filter to silently match nothing.

Add a TypeList/TypeSet branch that converts []string to []interface{}
via toInterfaceSlice before comparing.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Data source tag filtering is broken

1 participant