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 }