feat(zero_trust_device_posture_rule): improve v4 to v5 migration #110
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.
Summary
Implements migration support for the
namefield inzero_trust_device_posture_ruleresource when upgrading from provider v4 to v5. The name field was optional in v4 but became required in v5, requiring special handling during migration.Problem
In v4, the
namefield was optional for device posture rules. When users didn't provide a name, the API stored an empty string. In v5, the name field is required, causing migration failures for resources that were created without names.Solution
Implements a three-tier fallback strategy to automatically populate missing names during migration:
This ensures all v4 configurations migrate successfully to v5 without requiring manual intervention.
Implementation Details
Core Changes
v4_to_v5.go:TransformConfig()fetchNameFromAPI()to retrieve resource names from Cloudflare APIctx.StateJSONusing gjson for state lookupsmain.go:✓ Loaded state file for config cross-referencing⚠ Failed to read state fileℹ No state file specifiedTest Coverage
v4_to_v5_test.go:TransformConfig()methodTesting
All unit tests pass:
✓ TestConfigTransformation (11 subtests)
✓ TestConfigTransformationWithState (3 subtests)
✓ TestStateTransformation (12 subtests)
Acceptance test passes with real API:
✓ TestMigrateDevicePostureRuleWithoutName - Verifies v4 resources without names successfully migrate to v5
Migration Behavior
Before: