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  }