|
1 | 1 | package load_balancer_pool |
2 | 2 |
|
3 | 3 | import ( |
4 | | - "fmt" |
5 | 4 | "strings" |
6 | 5 |
|
7 | 6 | "github.com/hashicorp/hcl/v2/hclsyntax" |
8 | 7 | "github.com/hashicorp/hcl/v2/hclwrite" |
9 | 8 | "github.com/tidwall/gjson" |
10 | | - "github.com/tidwall/sjson" |
11 | 9 |
|
12 | 10 | "github.com/cloudflare/tf-migrate/internal" |
13 | 11 | "github.com/cloudflare/tf-migrate/internal/transform" |
@@ -166,59 +164,14 @@ func transformHeaderBlock(body *hclwrite.Body) { |
166 | 164 | } |
167 | 165 |
|
168 | 166 | func (m *V4ToV5Migrator) TransformState(ctx *transform.Context, stateJSON gjson.Result, resourcePath, resourceName string) (string, error) { |
169 | | - result := stateJSON.String() |
170 | | - |
171 | | - // Transform load_shedding from array to object (or null if empty) |
172 | | - // v4: "load_shedding": [{ ... }] or [] |
173 | | - // v5: "load_shedding": { ... } or null |
174 | | - loadShedding := stateJSON.Get("attributes.load_shedding") |
175 | | - if loadShedding.Exists() && loadShedding.IsArray() { |
176 | | - if len(loadShedding.Array()) > 0 { |
177 | | - firstElement := loadShedding.Array()[0] |
178 | | - result, _ = sjson.Set(result, "attributes.load_shedding", firstElement.Value()) |
179 | | - } else { |
180 | | - // Empty array -> null |
181 | | - result, _ = sjson.Set(result, "attributes.load_shedding", nil) |
182 | | - } |
183 | | - } |
184 | | - |
185 | | - // Transform origin_steering from array to object (or null if empty) |
186 | | - // v4: "origin_steering": [{ ... }] or [] |
187 | | - // v5: "origin_steering": { ... } or null |
188 | | - originSteering := stateJSON.Get("attributes.origin_steering") |
189 | | - if originSteering.Exists() && originSteering.IsArray() { |
190 | | - if len(originSteering.Array()) > 0 { |
191 | | - firstElement := originSteering.Array()[0] |
192 | | - result, _ = sjson.Set(result, "attributes.origin_steering", firstElement.Value()) |
193 | | - } else { |
194 | | - // Empty array -> null |
195 | | - result, _ = sjson.Set(result, "attributes.origin_steering", nil) |
196 | | - } |
197 | | - } |
198 | | - |
199 | | - // Transform header field inside each origin from array to object/null |
200 | | - // v4: origins[*].header = [] or [{ ... }] |
201 | | - // v5: origins[*].header = {} or null (provider expects object, not array) |
202 | | - // Re-parse to get updated state after previous transformations |
203 | | - updatedState := gjson.Parse(result) |
204 | | - origins := updatedState.Get("attributes.origins") |
205 | | - if origins.Exists() && origins.IsArray() { |
206 | | - originsArray := origins.Array() |
207 | | - for i, origin := range originsArray { |
208 | | - header := origin.Get("header") |
209 | | - if header.Exists() && header.IsArray() { |
210 | | - if len(header.Array()) == 0 { |
211 | | - // Empty array -> empty object (v5 provider expects object type) |
212 | | - result, _ = sjson.Set(result, fmt.Sprintf("attributes.origins.%d.header", i), map[string]interface{}{}) |
213 | | - } else { |
214 | | - // Non-empty array -> convert first element to object |
215 | | - // This handles the case where v4 had header as array of objects |
216 | | - firstElement := header.Array()[0] |
217 | | - result, _ = sjson.Set(result, fmt.Sprintf("attributes.origins.%d.header", i), firstElement.Value()) |
218 | | - } |
219 | | - } |
220 | | - } |
221 | | - } |
222 | | - |
223 | | - return result, nil |
| 167 | + // State transformation is now handled by the provider's StateUpgraders (UpgradeState) |
| 168 | + // The provider's migration/v500 package handles all state transformations: |
| 169 | + // - load_shedding: array[0] → object |
| 170 | + // - origin_steering: array[0] → object |
| 171 | + // - origins.header: array → object with structure change |
| 172 | + // - check_regions: Set → List |
| 173 | + // |
| 174 | + // This function is a no-op for cloudflare_load_balancer_pool migration. |
| 175 | + // The provider automatically applies state upgrades when users run `terraform apply`. |
| 176 | + return stateJSON.String(), nil |
224 | 177 | } |
0 commit comments