From 241dd713db39472c95b273c3ebac664f6462403d Mon Sep 17 00:00:00 2001 From: apattar Date: Thu, 19 Sep 2024 11:49:23 +0530 Subject: [PATCH] Fix for NPA-166: inconsistent 'delegated_ttl' value for zone_delegated resource and datasource --- infoblox/datasource_infoblox_zone_delegated.go | 11 ++++++++++- infoblox/resource_infoblox_zone_delegated.go | 12 +++++++++++- infoblox/resource_infoblox_zone_forward.go | 6 +++--- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/infoblox/datasource_infoblox_zone_delegated.go b/infoblox/datasource_infoblox_zone_delegated.go index f6d6772c4..bd9939be0 100644 --- a/infoblox/datasource_infoblox_zone_delegated.go +++ b/infoblox/datasource_infoblox_zone_delegated.go @@ -180,9 +180,18 @@ func flattenZoneDelegated(zoneDelegated ibclient.ZoneDelegated) (map[string]inte if zoneDelegated.NsGroup != nil { res["ns_group"] = *zoneDelegated.NsGroup } - if zoneDelegated.DelegatedTtl != nil { + if zoneDelegated.UseDelegatedTtl != nil { + if !*zoneDelegated.UseDelegatedTtl { + res["delegated_ttl"] = ttlUndef + } + } + + if zoneDelegated.DelegatedTtl != nil && *zoneDelegated.DelegatedTtl > 0 { res["delegated_ttl"] = *zoneDelegated.DelegatedTtl + } else { + res["delegated_ttl"] = ttlUndef } + if zoneDelegated.DelegateTo.IsNull == false { nsInterface := convertNullableNameServersToInterface(zoneDelegated.DelegateTo) res["delegate_to"] = nsInterface diff --git a/infoblox/resource_infoblox_zone_delegated.go b/infoblox/resource_infoblox_zone_delegated.go index 983e0f8df..f33862207 100644 --- a/infoblox/resource_infoblox_zone_delegated.go +++ b/infoblox/resource_infoblox_zone_delegated.go @@ -489,6 +489,7 @@ func resourceZoneDelegatedImport(d *schema.ResourceData, m interface{}) ([]*sche return nil, err } + var ttl int connector := m.(ibclient.IBConnector) objMgr := ibclient.NewObjectManager(connector, "Terraform", "") @@ -546,8 +547,17 @@ func resourceZoneDelegatedImport(d *schema.ResourceData, m interface{}) ([]*sche } } + if zoneDelegated.DelegatedTtl != nil && *zoneDelegated.DelegatedTtl > 0 { + ttl = int(*zoneDelegated.DelegatedTtl) + } else { + ttl = ttlUndef + } + if !*zoneDelegated.UseDelegatedTtl { + ttl = ttlUndef + } + if zoneDelegated.DelegatedTtl != nil { - if err = d.Set("delegated_ttl", *zoneDelegated.DelegatedTtl); err != nil { + if err = d.Set("delegated_ttl", ttl); err != nil { return nil, err } } diff --git a/infoblox/resource_infoblox_zone_forward.go b/infoblox/resource_infoblox_zone_forward.go index 64fd4150f..10346a646 100644 --- a/infoblox/resource_infoblox_zone_forward.go +++ b/infoblox/resource_infoblox_zone_forward.go @@ -263,12 +263,12 @@ func validateNameServers(ftSlice []interface{}) ([]ibclient.NameServer, error) { if err != nil { return nil, fmt.Errorf("failed to marshal nameservers: %s", err) } - var forwardTo []ibclient.NameServer - err = json.Unmarshal(nsStr, &forwardTo) + var nameServers []ibclient.NameServer + err = json.Unmarshal(nsStr, &nameServers) if err != nil { return nil, fmt.Errorf("failed to unmarshal nameservers: %s", err) } - return forwardTo, nil + return nameServers, nil } func resourceZoneForwardRead(d *schema.ResourceData, m interface{}) error {