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 }