github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/networking/v2/extensions/bgp/speakers/bgpspeakers_test.go (about) 1 package speakers 2 3 import ( 4 "testing" 5 6 "github.com/gophercloud/gophercloud/internal/acceptance/clients" 7 networking "github.com/gophercloud/gophercloud/internal/acceptance/openstack/networking/v2" 8 ap "github.com/gophercloud/gophercloud/internal/acceptance/openstack/networking/v2/extensions/bgp/peers" 9 "github.com/gophercloud/gophercloud/internal/acceptance/tools" 10 "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/bgp/peers" 11 "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/bgp/speakers" 12 th "github.com/gophercloud/gophercloud/testhelper" 13 ) 14 15 func TestBGPSpeakerCRUD(t *testing.T) { 16 clients.RequireAdmin(t) 17 client, err := clients.NewNetworkV2Client() 18 th.AssertNoErr(t, err) 19 20 // Create a BGP Speaker 21 bgpSpeaker, err := CreateBGPSpeaker(t, client) 22 th.AssertNoErr(t, err) 23 24 // Create a BGP Peer 25 bgpPeer, err := ap.CreateBGPPeer(t, client) 26 th.AssertNoErr(t, err) 27 28 // List BGP Speakers 29 allPages, err := speakers.List(client).AllPages() 30 th.AssertNoErr(t, err) 31 allSpeakers, err := speakers.ExtractBGPSpeakers(allPages) 32 th.AssertNoErr(t, err) 33 34 t.Logf("Retrieved BGP Speakers") 35 tools.PrintResource(t, allSpeakers) 36 th.AssertIntGreaterOrEqual(t, len(allSpeakers), 1) 37 38 // Create a network 39 network, err := networking.CreateNetwork(t, client) 40 th.AssertNoErr(t, err) 41 defer networking.DeleteNetwork(t, client, network.ID) 42 43 // Update BGP Speaker 44 opts := speakers.UpdateOpts{ 45 Name: tools.RandomString("TESTACC-BGPSPEAKER-", 10), 46 AdvertiseTenantNetworks: false, 47 AdvertiseFloatingIPHostRoutes: true, 48 } 49 speakerUpdated, err := speakers.Update(client, bgpSpeaker.ID, opts).Extract() 50 th.AssertNoErr(t, err) 51 th.AssertEquals(t, speakerUpdated.Name, opts.Name) 52 t.Logf("Updated the BGP Speaker, name set from %s to %s", bgpSpeaker.Name, speakerUpdated.Name) 53 54 // Get a BGP Speaker 55 bgpSpeakerGot, err := speakers.Get(client, bgpSpeaker.ID).Extract() 56 th.AssertNoErr(t, err) 57 th.AssertEquals(t, bgpSpeaker.ID, bgpSpeakerGot.ID) 58 th.AssertEquals(t, opts.Name, bgpSpeakerGot.Name) 59 60 // AddBGPPeer 61 addBGPPeerOpts := speakers.AddBGPPeerOpts{BGPPeerID: bgpPeer.ID} 62 _, err = speakers.AddBGPPeer(client, bgpSpeaker.ID, addBGPPeerOpts).Extract() 63 th.AssertNoErr(t, err) 64 speakerGot, err := speakers.Get(client, bgpSpeaker.ID).Extract() 65 th.AssertNoErr(t, err) 66 th.AssertEquals(t, bgpPeer.ID, speakerGot.Peers[0]) 67 t.Logf("Successfully added BGP Peer %s to BGP Speaker %s", bgpPeer.Name, speakerUpdated.Name) 68 69 // RemoveBGPPeer 70 removeBGPPeerOpts := speakers.RemoveBGPPeerOpts{BGPPeerID: bgpPeer.ID} 71 err = speakers.RemoveBGPPeer(client, bgpSpeaker.ID, removeBGPPeerOpts).ExtractErr() 72 th.AssertNoErr(t, err) 73 speakerGot, err = speakers.Get(client, bgpSpeaker.ID).Extract() 74 th.AssertNoErr(t, err) 75 th.AssertEquals(t, len(speakerGot.Networks), 0) 76 t.Logf("Successfully removed BGP Peer %s to BGP Speaker %s", bgpPeer.Name, speakerUpdated.Name) 77 78 // GetAdvertisedRoutes 79 pages, err := speakers.GetAdvertisedRoutes(client, bgpSpeaker.ID).AllPages() 80 th.AssertNoErr(t, err) 81 routes, err := speakers.ExtractAdvertisedRoutes(pages) 82 th.AssertNoErr(t, err) 83 th.AssertIntGreaterOrEqual(t, len(routes), 0) 84 t.Logf("Successfully retrieved advertised routes") 85 86 // AddGatewayNetwork 87 optsAddGatewayNetwork := speakers.AddGatewayNetworkOpts{NetworkID: network.ID} 88 r, err := speakers.AddGatewayNetwork(client, bgpSpeaker.ID, optsAddGatewayNetwork).Extract() 89 th.AssertNoErr(t, err) 90 th.AssertEquals(t, r.NetworkID, network.ID) 91 t.Logf("Successfully added gateway network %s to BGP Speaker", network.ID) 92 93 // RemoveGatewayNetwork 94 optsRemoveGatewayNetwork := speakers.RemoveGatewayNetworkOpts{NetworkID: network.ID} 95 err = speakers.RemoveGatewayNetwork(client, bgpSpeaker.ID, optsRemoveGatewayNetwork).ExtractErr() 96 th.AssertNoErr(t, err) 97 t.Logf("Successfully removed gateway network %s to BGP Speaker", network.ID) 98 99 // Delete a BGP Peer 100 t.Logf("Delete the BGP Peer %s", bgpPeer.Name) 101 err = peers.Delete(client, bgpPeer.ID).ExtractErr() 102 th.AssertNoErr(t, err) 103 104 // Delete a BGP Speaker 105 t.Logf("Delete the BGP Speaker %s", speakerUpdated.Name) 106 err = speakers.Delete(client, bgpSpeaker.ID).ExtractErr() 107 th.AssertNoErr(t, err) 108 }