existing Data Sources now return errors on 404s #6241
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes hashicorp/terraform-provider-google#12873
This does not guarantee all data sources will return errors if empty -- there are some for which this is intended functionality such as data sources filtering for what data they would have displayed, or if an endpoint is successfully reached due to actually existing but simply containing no information for the data source to display, as their lack of data is intentional.
Local testing entailed doing trial runs of data sources that had more unusual configurations (e.g. 1), and verifying functionality for a few different resources that the more universal configurations (e.g. 1 and 2) that involved either replacing references to
transport_tpg.HandleNotFoundError
withtransport_tpg.HandleDataSourceNotFoundError
or wrapping standard resource read functions with a check for an empty ID, as this would be returned by these resource reads usingtransport_tpg.HandleNotFoundError
.Should not result in false-positives as the two main functionality changes due the following:
If using the
transport_tpg.HandleDataSourceNotFoundError
return an error on 404 directly, maintains logic for returning non 404 errorsIf using the
d.Id == ""
check, the d.SetId("") would be passed up via thetransport_tpg.HandleNotFoundError
function, in which case this is the Error we directly are intending to add (the example functionality previously added via Container Cluster per parent issue)Release Note Template for Downstream PRs (will be copied)
Derived from GoogleCloudPlatform/magic-modules#8858