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

     1  package vpcep
     2  
     3  import (
     4  	"testing"
     5  
     6  	golangsdk "github.com/opentelekomcloud/gophertelekomcloud"
     7  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients"
     8  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/openstack"
     9  	"github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools"
    10  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/common/tags"
    11  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/vpcep/v1/endpoints"
    12  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/vpcep/v1/services"
    13  	th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
    14  )
    15  
    16  func createService(t *testing.T, client *golangsdk.ServiceClient, elbPortID string) string {
    17  	iFalse := false
    18  	createOpts := &services.CreateOpts{
    19  		PortID:      elbPortID,
    20  		ServiceName: tools.RandomString("svc-", 5),
    21  		RouterID:    routerID,
    22  		ServerType:  services.ServerTypeLB,
    23  		ServiceType: services.ServiceTypeInterface,
    24  		Ports: []services.PortMapping{
    25  			{
    26  				ClientPort: 80,
    27  				ServerPort: 8080,
    28  			},
    29  		},
    30  		ApprovalEnabled: &iFalse,
    31  	}
    32  	svc, err := services.Create(client, createOpts).Extract()
    33  	th.AssertNoErr(t, err)
    34  
    35  	err = services.WaitForServiceStatus(client, svc.ID, services.StatusAvailable, 30)
    36  	th.AssertNoErr(t, err)
    37  	return svc.ID
    38  }
    39  
    40  func deleteService(t *testing.T, client *golangsdk.ServiceClient, id string) {
    41  	th.AssertNoErr(t, services.Delete(client, id).ExtractErr())
    42  }
    43  
    44  func TestEndpointLifecycle(t *testing.T) {
    45  	if routerID == "" || networkID == "" || subnetID == "" {
    46  		t.Skip("OS_ROUTER_ID/VPC_ID, OS_SUBNET_ID and OS_NETWORK_ID variables need to be set")
    47  	}
    48  
    49  	t.Parallel()
    50  
    51  	client, err := clients.NewVPCEndpointV1Client()
    52  	th.AssertNoErr(t, err)
    53  
    54  	elb := createELB(t)
    55  	defer deleteELB(t, elb.ID)
    56  
    57  	srvID := createService(t, client, elb.VipPortID)
    58  	defer deleteService(t, client, srvID)
    59  
    60  	opts := endpoints.CreateOpts{
    61  		NetworkID: networkID,
    62  		ServiceID: srvID,
    63  		RouterID:  routerID,
    64  		EnableDNS: true,
    65  		PortIP:    openstack.ValidIP(t, networkID),
    66  		Tags:      []tags.ResourceTag{{Key: "fizz", Value: "buzz"}},
    67  	}
    68  	created, err := endpoints.Create(client, opts).Extract()
    69  	th.AssertNoErr(t, err)
    70  	th.AssertEquals(t, endpoints.StatusCreating, created.Status)
    71  
    72  	defer func() {
    73  		th.AssertNoErr(t, endpoints.Delete(client, created.ID).ExtractErr())
    74  	}()
    75  
    76  	th.AssertNoErr(t, endpoints.WaitForEndpointStatus(client, created.ID, endpoints.StatusAccepted, 30))
    77  
    78  	batchUpdate := endpoints.BatchUpdateReq{
    79  		Permissions: []string{
    80  			"iam:domain::698f9bf85ca9437a9b2f41132ab3aa0e",
    81  		},
    82  		Action: "add",
    83  	}
    84  
    85  	whiteList, err := endpoints.BatchUpdateWhitelist(client, created.ServiceID, batchUpdate)
    86  	th.AssertNoErr(t, err)
    87  	th.AssertEquals(t, whiteList.Permissions[0], batchUpdate.Permissions[0])
    88  
    89  	getWhitelist, err := endpoints.GetWhitelist(client, created.ServiceID)
    90  	th.AssertNoErr(t, err)
    91  	th.AssertEquals(t, getWhitelist.Permissions[0].Permission, batchUpdate.Permissions[0])
    92  
    93  	got, err := endpoints.Get(client, created.ID).Extract()
    94  	th.AssertNoErr(t, err)
    95  	th.AssertEquals(t, opts.PortIP, got.IP)
    96  
    97  	pages, err := endpoints.List(client, nil).AllPages()
    98  	th.AssertNoErr(t, err)
    99  
   100  	eps, err := endpoints.ExtractEndpoints(pages)
   101  	th.AssertNoErr(t, err)
   102  
   103  	th.AssertEquals(t, created.ID, eps[0].ID)
   104  }