From 064d0926c5e52bba69673a26d761f6bb9f7c7335 Mon Sep 17 00:00:00 2001 From: Francesc Gil Date: Mon, 13 Mar 2023 15:43:28 +0100 Subject: [PATCH] interpolator: Now interpolation compares with Lowcase values (#356) --- CHANGELOG.md | 5 +++++ azurerm/provider.go | 1 - interpolator/interpolator.go | 4 ++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f46d8dfcd9..1602f6d845 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ - Azurerm `azurerm_network_security_group.security_rule.protocol` now has the right format ([PR #357](https://github.com/cycloidio/terracognita/pull/357)) +### Changed + +- Interpolation now will compare value lowcasing them beforehand + ([PR #356](https://github.com/cycloidio/terracognita/pull/356)) + ## [0.8.2] _2023-03-07_ ### Added diff --git a/azurerm/provider.go b/azurerm/provider.go index 9c62d67ef6..3a32ac88e1 100644 --- a/azurerm/provider.go +++ b/azurerm/provider.go @@ -271,7 +271,6 @@ func (a *azurerm) FixResource(t string, v cty.Value) (cty.Value, error) { if err != nil { return v, errors.Wrapf(err, "failed to convert CTY value to GO type") } - case "azurerm_windows_virtual_machine": v, err = cty.Transform(v, func(path cty.Path, v cty.Value) (cty.Value, error) { if len(path) > 0 { diff --git a/interpolator/interpolator.go b/interpolator/interpolator.go index f07dfeeea6..0f7d63482c 100644 --- a/interpolator/interpolator.go +++ b/interpolator/interpolator.go @@ -111,14 +111,14 @@ func (i *Interpolator) Interpolate(k, v string) (string, bool) { func (i *Interpolator) checkAttributes(sk []string, v string, ngi int, ng string, rns map[string]map[string]string) string { for rn, attrs := range rns { att := strings.Join(sk[(len(sk)-(ngi)):len(sk)], "_") - if av, ok := attrs[att]; ok && av == v { + if av, ok := attrs[att]; ok && strings.ToLower(av) == strings.ToLower(v) { return fmt.Sprintf("${%s.%s.%s}", fmt.Sprintf("%s_%s", i.provider, ng), rn, att) } } // Then if no exact we try to find first one with the same value on the resource for rn, attrs := range rns { for ak, av := range attrs { - if av == v { + if strings.ToLower(av) == strings.ToLower(v) { return fmt.Sprintf("${%s.%s.%s}", fmt.Sprintf("%s_%s", i.provider, ng), rn, ak) } }