github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/networking/v2/extensions/vpnaas/siteconnection_test.go (about) 1 //go:build acceptance || networking || vpnaas 2 // +build acceptance networking vpnaas 3 4 package vpnaas 5 6 import ( 7 "testing" 8 9 "github.com/gophercloud/gophercloud/internal/acceptance/clients" 10 networks "github.com/gophercloud/gophercloud/internal/acceptance/openstack/networking/v2" 11 layer3 "github.com/gophercloud/gophercloud/internal/acceptance/openstack/networking/v2/extensions/layer3" 12 "github.com/gophercloud/gophercloud/internal/acceptance/tools" 13 "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers" 14 "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/vpnaas/siteconnections" 15 th "github.com/gophercloud/gophercloud/testhelper" 16 ) 17 18 func TestConnectionList(t *testing.T) { 19 client, err := clients.NewNetworkV2Client() 20 th.AssertNoErr(t, err) 21 22 allPages, err := siteconnections.List(client, nil).AllPages() 23 th.AssertNoErr(t, err) 24 25 allConnections, err := siteconnections.ExtractConnections(allPages) 26 th.AssertNoErr(t, err) 27 28 for _, connection := range allConnections { 29 tools.PrintResource(t, connection) 30 } 31 } 32 33 func TestConnectionCRUD(t *testing.T) { 34 clients.SkipReleasesAbove(t, "stable/wallaby") 35 client, err := clients.NewNetworkV2Client() 36 th.AssertNoErr(t, err) 37 38 // Create Network 39 network, err := networks.CreateNetwork(t, client) 40 th.AssertNoErr(t, err) 41 defer networks.DeleteNetwork(t, client, network.ID) 42 43 // Create Subnet 44 subnet, err := networks.CreateSubnet(t, client, network.ID) 45 th.AssertNoErr(t, err) 46 defer networks.DeleteSubnet(t, client, subnet.ID) 47 48 router, err := layer3.CreateExternalRouter(t, client) 49 th.AssertNoErr(t, err) 50 defer layer3.DeleteRouter(t, client, router.ID) 51 52 // Link router and subnet 53 aiOpts := routers.AddInterfaceOpts{ 54 SubnetID: subnet.ID, 55 } 56 57 _, err = routers.AddInterface(client, router.ID, aiOpts).Extract() 58 th.AssertNoErr(t, err) 59 defer func() { 60 riOpts := routers.RemoveInterfaceOpts{ 61 SubnetID: subnet.ID, 62 } 63 routers.RemoveInterface(client, router.ID, riOpts) 64 }() 65 66 // Create all needed resources for the connection 67 service, err := CreateService(t, client, router.ID) 68 th.AssertNoErr(t, err) 69 defer DeleteService(t, client, service.ID) 70 71 ikepolicy, err := CreateIKEPolicy(t, client) 72 th.AssertNoErr(t, err) 73 defer DeleteIKEPolicy(t, client, ikepolicy.ID) 74 75 ipsecpolicy, err := CreateIPSecPolicy(t, client) 76 th.AssertNoErr(t, err) 77 defer DeleteIPSecPolicy(t, client, ipsecpolicy.ID) 78 79 peerEPGroup, err := CreateEndpointGroup(t, client) 80 th.AssertNoErr(t, err) 81 defer DeleteEndpointGroup(t, client, peerEPGroup.ID) 82 83 localEPGroup, err := CreateEndpointGroupWithSubnet(t, client, subnet.ID) 84 th.AssertNoErr(t, err) 85 defer DeleteEndpointGroup(t, client, localEPGroup.ID) 86 87 conn, err := CreateSiteConnection(t, client, ikepolicy.ID, ipsecpolicy.ID, service.ID, peerEPGroup.ID, localEPGroup.ID) 88 th.AssertNoErr(t, err) 89 defer DeleteSiteConnection(t, client, conn.ID) 90 91 newConnection, err := siteconnections.Get(client, conn.ID).Extract() 92 th.AssertNoErr(t, err) 93 94 tools.PrintResource(t, conn) 95 tools.PrintResource(t, newConnection) 96 }