github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/vpcep/services_test.go (about)

     1  package vpcep
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients"
     8  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools"
     9  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/networking/v2/extensions/lbaas_v2/loadbalancers"
    10  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/vpcep/v1/services"
    11  	th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
    12  )
    13  
    14  var (
    15  	routerID  = clients.EnvOS.GetEnv("ROUTER_ID", "VPC_ID")
    16  	networkID = clients.EnvOS.GetEnv("NETWORK_ID")
    17  	subnetID  = clients.EnvOS.GetEnv("SUBNET_ID")
    18  )
    19  
    20  func createELB(t *testing.T) *loadbalancers.LoadBalancer {
    21  	client, err := clients.NewElbV2Client()
    22  	th.AssertNoErr(t, err)
    23  	lb, err := loadbalancers.Create(client, loadbalancers.CreateOpts{
    24  		Name:        tools.RandomString("svc-lb-", 5),
    25  		VipSubnetID: subnetID,
    26  	}).Extract()
    27  	th.AssertNoErr(t, err)
    28  	return lb
    29  }
    30  
    31  func deleteELB(t *testing.T, id string) {
    32  	client, err := clients.NewNetworkV2Client()
    33  	th.AssertNoErr(t, err)
    34  	th.AssertNoErr(t, loadbalancers.Delete(client, id).ExtractErr())
    35  }
    36  
    37  func TestListPublicServices(t *testing.T) {
    38  	t.Parallel()
    39  
    40  	client, err := clients.NewVPCEndpointV1Client()
    41  	th.AssertNoErr(t, err)
    42  
    43  	pages, err := services.ListPublic(client, nil).AllPages()
    44  	th.AssertNoErr(t, err)
    45  
    46  	public, err := services.ExtractPublicServices(pages)
    47  	th.AssertNoErr(t, err)
    48  	if len(public) == 0 {
    49  		t.Fatal("Empty public service list")
    50  	}
    51  	th.AssertEquals(t, "OTC", public[0].Owner)
    52  }
    53  
    54  func TestServicesWorkflow(t *testing.T) {
    55  	if routerID == "" || networkID == "" || subnetID == "" {
    56  		t.Skip("OS_ROUTER_ID/VPC_ID, OS_SUBNET_ID and OS_NETWORK_ID variables need to be set")
    57  	}
    58  
    59  	t.Parallel()
    60  
    61  	client, err := clients.NewVPCEndpointV1Client()
    62  	th.AssertNoErr(t, err)
    63  
    64  	elb := createELB(t)
    65  	defer deleteELB(t, elb.ID)
    66  
    67  	createOpts := &services.CreateOpts{
    68  		PortID:      elb.VipPortID,
    69  		ServiceName: tools.RandomString("svc-", 5),
    70  		RouterID:    routerID,
    71  		ServerType:  services.ServerTypeLB,
    72  		ServiceType: services.ServiceTypeInterface,
    73  		Ports: []services.PortMapping{
    74  			{
    75  				ClientPort: 80,
    76  				ServerPort: 8080,
    77  			},
    78  		},
    79  	}
    80  	svc, err := services.Create(client, createOpts).Extract()
    81  	th.AssertNoErr(t, err)
    82  
    83  	err = services.WaitForServiceStatus(client, svc.ID, services.StatusAvailable, 30)
    84  	th.AssertNoErr(t, err)
    85  
    86  	defer func() {
    87  		err := services.Delete(client, svc.ID).ExtractErr()
    88  		th.AssertNoErr(t, err)
    89  		th.AssertNoErr(t, services.WaitForServiceStatus(client, svc.ID, services.StatusDeleted, 30))
    90  	}()
    91  
    92  	pages, err := services.List(client, &services.ListOpts{
    93  		ID: svc.ID,
    94  	}).AllPages()
    95  	th.AssertNoErr(t, err)
    96  
    97  	svcs, err := services.ExtractServices(pages)
    98  	th.AssertNoErr(t, err)
    99  	th.AssertEquals(t, 1, len(svcs))
   100  	th.AssertEquals(t, svc.ID, svcs[0].ID)
   101  
   102  	got, err := services.Get(client, svc.ID).Extract()
   103  	th.AssertNoErr(t, err)
   104  
   105  	th.AssertEquals(t, svc.VIPPortID, got.VIPPortID)
   106  	th.AssertEquals(t, svc.ApprovalEnabled, got.ApprovalEnabled)
   107  	th.AssertEquals(t, svc.CreatedAt, got.CreatedAt)
   108  	th.AssertEquals(t, 0, svc.ConnectionCount)
   109  
   110  	iFalse := false
   111  	uOpts := services.UpdateOpts{
   112  		ApprovalEnabled: &iFalse,
   113  		ServiceName:     tools.RandomString("edited-", 5),
   114  	}
   115  	updated, err := services.Update(client, svc.ID, uOpts).Extract()
   116  	th.AssertNoErr(t, err)
   117  
   118  	th.AssertEquals(t, fmt.Sprintf("%s.%s.%s", client.RegionID, uOpts.ServiceName, svc.ID), updated.ServiceName)
   119  }