github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/nsxt_route_advertisement_test.go (about) 1 //go:build network || nsxt || functional || openapi || ALL 2 3 /* 4 * Copyright 2022 VMware, Inc. All rights reserved. Licensed under the Apache v2 License. 5 */ 6 7 package govcd 8 9 import ( 10 "fmt" 11 "github.com/vmware/go-vcloud-director/v2/types/v56" 12 . "gopkg.in/check.v1" 13 ) 14 15 func (vcd *TestVCD) Test_NsxtEdgeRouteAdvertisement(check *C) { 16 skipNoNsxtConfiguration(vcd, check) 17 skipOpenApiEndpointTest(vcd, check, types.OpenApiPathVersion1_0_0+types.OpenApiEndpointNsxtRouteAdvertisement) 18 vcd.skipIfNotSysAdmin(check) 19 20 org, err := vcd.client.GetOrgByName(vcd.config.VCD.Org) 21 check.Assert(err, IsNil) 22 nsxtVdc, err := org.GetVDCByName(vcd.config.VCD.Nsxt.Vdc, false) 23 check.Assert(err, IsNil) 24 edge, err := nsxtVdc.GetNsxtEdgeGatewayByName(vcd.config.VCD.Nsxt.EdgeGateway) 25 check.Assert(err, IsNil) 26 27 // Make sure we are using a dedicated Tier-0 gateway (otherwise route advertisement won't be available) 28 edge, err = setDedicateTier0Gateway(edge, true) 29 check.Assert(err, IsNil) 30 check.Assert(edge, NotNil) 31 32 // Make sure that things get back to normal when the test is done 33 defer setDedicateTier0Gateway(edge, false) 34 35 network1 := "192.168.1.0/24" 36 network2 := "192.168.2.0/24" 37 networksToAdvertise := []string{network1, network2} // Sample networks to advertise 38 39 // Test UpdateNsxtRouteAdvertisement 40 nsxtEdgeRouteAdvertisement, err := edge.UpdateNsxtRouteAdvertisement(true, networksToAdvertise) 41 check.Assert(err, IsNil) 42 check.Assert(nsxtEdgeRouteAdvertisement, NotNil) 43 check.Assert(nsxtEdgeRouteAdvertisement.Enable, Equals, true) 44 check.Assert(len(nsxtEdgeRouteAdvertisement.Subnets), Equals, 2) 45 check.Assert(checkNetworkInSubnetsSlice(network1, networksToAdvertise), IsNil) 46 check.Assert(checkNetworkInSubnetsSlice(network2, networksToAdvertise), IsNil) 47 48 // Test DeleteNsxtRouteAdvertisement 49 err = edge.DeleteNsxtRouteAdvertisement() 50 check.Assert(err, IsNil) 51 nsxtEdgeRouteAdvertisement, err = edge.GetNsxtRouteAdvertisement() 52 check.Assert(err, IsNil) 53 check.Assert(nsxtEdgeRouteAdvertisement, NotNil) 54 check.Assert(nsxtEdgeRouteAdvertisement.Enable, Equals, false) 55 check.Assert(len(nsxtEdgeRouteAdvertisement.Subnets), Equals, 0) 56 } 57 58 func checkNetworkInSubnetsSlice(network string, subnets []string) error { 59 for _, subnet := range subnets { 60 if subnet == network { 61 return nil 62 } 63 } 64 return fmt.Errorf("network %s is not within the slice provided", network) 65 } 66 67 func setDedicateTier0Gateway(edgeGateway *NsxtEdgeGateway, dedicate bool) (*NsxtEdgeGateway, error) { 68 edgeGateway.EdgeGateway.EdgeGatewayUplinks[0].Dedicated = dedicate 69 edgeGateway, err := edgeGateway.Update(edgeGateway.EdgeGateway) 70 if err != nil { 71 return nil, err 72 } 73 74 return edgeGateway, nil 75 }