github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/nsxt_edgegateway_dns_test.go (about)

     1  //go:build ALL || openapi || functional || nsxt
     2  
     3  /*
     4   * Copyright 2023 VMware, Inc.  All rights reserved.  Licensed under the Apache v2 License.
     5   */
     6  
     7  package govcd
     8  
     9  import (
    10  	"github.com/vmware/go-vcloud-director/v2/types/v56"
    11  	. "gopkg.in/check.v1"
    12  )
    13  
    14  func (vcd *TestVCD) Test_NsxtEdgeGatewayDns(check *C) {
    15  	skipOpenApiEndpointTest(vcd, check, types.OpenApiPathVersion1_0_0+types.OpenApiEndpointEdgeGatewayDns)
    16  	skipNoNsxtConfiguration(vcd, check)
    17  
    18  	org, err := vcd.client.GetOrgByName(vcd.config.VCD.Org)
    19  	check.Assert(err, IsNil)
    20  	nsxtVdc, err := org.GetVDCByName(vcd.config.VCD.Nsxt.Vdc, false)
    21  	check.Assert(err, IsNil)
    22  	edge, err := nsxtVdc.GetNsxtEdgeGatewayByName(vcd.config.VCD.Nsxt.EdgeGateway)
    23  	check.Assert(err, IsNil)
    24  	AddToCleanupList(vcd.config.VCD.Nsxt.EdgeGateway, "nsxtEdgeGatewayDns", vcd.config.VCD.Org, check.TestName())
    25  
    26  	disabledDns, err := edge.GetDnsConfig()
    27  	check.Assert(err, IsNil)
    28  	check.Assert(disabledDns.NsxtEdgeGatewayDns.Enabled, Equals, false)
    29  
    30  	enabledDnsConfig := &types.NsxtEdgeGatewayDns{
    31  		Enabled: true,
    32  		DefaultForwarderZone: &types.NsxtDnsForwarderZoneConfig{
    33  			DisplayName: "test",
    34  			UpstreamServers: []string{
    35  				"1.2.3.4",
    36  				"2.3.4.5",
    37  			},
    38  		},
    39  		ConditionalForwarderZones: []*types.NsxtDnsForwarderZoneConfig{
    40  			{
    41  				DisplayName: "test-conditional",
    42  				UpstreamServers: []string{
    43  					"5.5.5.5",
    44  					"2.3.4.1",
    45  				},
    46  				DnsDomainNames: []string{
    47  					"test.com",
    48  					"abc.com",
    49  					"example.org",
    50  				},
    51  			},
    52  		},
    53  	}
    54  
    55  	enabledDns, err := disabledDns.Update(enabledDnsConfig)
    56  	check.Assert(err, IsNil)
    57  	dnsConfig := enabledDns.NsxtEdgeGatewayDns
    58  	check.Assert(dnsConfig.Enabled, Equals, true)
    59  	check.Assert(dnsConfig.DefaultForwarderZone.DisplayName, Equals, "test")
    60  	check.Assert(len(dnsConfig.DefaultForwarderZone.UpstreamServers), Equals, 2)
    61  	check.Assert(len(dnsConfig.ConditionalForwarderZones), Equals, 1)
    62  	check.Assert(dnsConfig.ConditionalForwarderZones[0].DisplayName, Equals, "test-conditional")
    63  
    64  	updatedDnsConfig := &types.NsxtEdgeGatewayDns{
    65  		Enabled: true,
    66  		DefaultForwarderZone: &types.NsxtDnsForwarderZoneConfig{
    67  			DisplayName: "test",
    68  			UpstreamServers: []string{
    69  				"1.2.3.5",
    70  				"2.3.4.6",
    71  				"2.3.4.5",
    72  			},
    73  		},
    74  		ConditionalForwarderZones: []*types.NsxtDnsForwarderZoneConfig{
    75  			{
    76  				DisplayName: "test-conditional",
    77  				UpstreamServers: []string{
    78  					"5.5.5.5",
    79  					"2.3.4.1",
    80  				},
    81  				DnsDomainNames: []string{
    82  					"test.com",
    83  					"abc.com",
    84  					"example.org",
    85  				},
    86  			},
    87  			{
    88  				DisplayName: "test-conditional-2",
    89  				UpstreamServers: []string{
    90  					"1.2.3.4",
    91  					"4.3.2.1",
    92  				},
    93  				DnsDomainNames: []string{
    94  					"example.com",
    95  				},
    96  			},
    97  		},
    98  	}
    99  	updatedDns, err := enabledDns.Update(updatedDnsConfig)
   100  	updatedDnsConfig = updatedDns.NsxtEdgeGatewayDns
   101  	check.Assert(err, IsNil)
   102  	check.Assert(updatedDnsConfig.Enabled, Equals, true)
   103  	check.Assert(updatedDnsConfig.DefaultForwarderZone.DisplayName, Equals, "test")
   104  	check.Assert(len(updatedDnsConfig.DefaultForwarderZone.UpstreamServers), Equals, 3)
   105  	conditionalZones := updatedDnsConfig.ConditionalForwarderZones
   106  	check.Assert(len(conditionalZones), Equals, 2)
   107  	// Flip the asserts in both cases of conditional zones arrays returned
   108  	if conditionalZones[0].DisplayName == "test-conditional" {
   109  		check.Assert(len(conditionalZones[0].UpstreamServers), Equals, 2)
   110  		check.Assert(len(conditionalZones[0].DnsDomainNames), Equals, 3)
   111  		check.Assert(len(conditionalZones[1].UpstreamServers), Equals, 2)
   112  		check.Assert(len(conditionalZones[1].DnsDomainNames), Equals, 1)
   113  	} else {
   114  		check.Assert(len(conditionalZones[1].UpstreamServers), Equals, 2)
   115  		check.Assert(len(conditionalZones[1].DnsDomainNames), Equals, 3)
   116  		check.Assert(len(conditionalZones[0].UpstreamServers), Equals, 2)
   117  		check.Assert(len(conditionalZones[0].DnsDomainNames), Equals, 1)
   118  	}
   119  
   120  	err = enabledDns.Delete()
   121  	check.Assert(err, IsNil)
   122  
   123  	deletedDns, err := edge.GetDnsConfig()
   124  	check.Assert(err, IsNil)
   125  	check.Assert(deletedDns.NsxtEdgeGatewayDns.Enabled, Equals, false)
   126  }