github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/loadbalancer/v2/quotas_test.go (about) 1 //go:build acceptance || networking || loadbalancer || quotas 2 // +build acceptance networking loadbalancer quotas 3 4 package v2 5 6 import ( 7 "log" 8 "os" 9 "reflect" 10 "testing" 11 12 "github.com/gophercloud/gophercloud" 13 "github.com/gophercloud/gophercloud/internal/acceptance/clients" 14 "github.com/gophercloud/gophercloud/internal/acceptance/tools" 15 "github.com/gophercloud/gophercloud/openstack/loadbalancer/v2/quotas" 16 th "github.com/gophercloud/gophercloud/testhelper" 17 ) 18 19 func TestQuotasGet(t *testing.T) { 20 clients.RequireAdmin(t) 21 22 client, err := clients.NewLoadBalancerV2Client() 23 th.AssertNoErr(t, err) 24 25 quotasInfo, err := quotas.Get(client, os.Getenv("OS_PROJECT_NAME")).Extract() 26 th.AssertNoErr(t, err) 27 28 tools.PrintResource(t, quotasInfo) 29 } 30 31 func TestQuotasUpdate(t *testing.T) { 32 clients.RequireAdmin(t) 33 34 client, err := clients.NewLoadBalancerV2Client() 35 th.AssertNoErr(t, err) 36 37 originalQuotas, err := quotas.Get(client, os.Getenv("OS_PROJECT_NAME")).Extract() 38 th.AssertNoErr(t, err) 39 40 var quotaUpdateOpts = quotas.UpdateOpts{ 41 Loadbalancer: gophercloud.IntToPointer(25), 42 Listener: gophercloud.IntToPointer(45), 43 Member: gophercloud.IntToPointer(205), 44 Pool: gophercloud.IntToPointer(25), 45 Healthmonitor: gophercloud.IntToPointer(5), 46 } 47 // L7 parameters are only supported in microversion v2.19 introduced in victoria 48 if clients.IsCurrentAbove(t, "stable/ussuri") { 49 quotaUpdateOpts.L7Policy = gophercloud.IntToPointer(55) 50 quotaUpdateOpts.L7Rule = gophercloud.IntToPointer(105) 51 } 52 53 newQuotas, err := quotas.Update(client, os.Getenv("OS_PROJECT_NAME"), quotaUpdateOpts).Extract() 54 th.AssertNoErr(t, err) 55 56 tools.PrintResource(t, newQuotas) 57 58 if reflect.DeepEqual(originalQuotas, newQuotas) { 59 log.Fatal("Original and New Loadbalancer Quotas are the same") 60 } 61 62 var restoredQuotaUpdate = quotas.UpdateOpts{ 63 Loadbalancer: &originalQuotas.Loadbalancer, 64 Listener: &originalQuotas.Listener, 65 Member: &originalQuotas.Member, 66 Pool: &originalQuotas.Pool, 67 Healthmonitor: &originalQuotas.Healthmonitor, 68 } 69 // L7 parameters are only supported in microversion v2.19 introduced in victoria 70 if clients.IsCurrentAbove(t, "stable/ussuri") { 71 restoredQuotaUpdate.L7Policy = &originalQuotas.L7Policy 72 restoredQuotaUpdate.L7Rule = &originalQuotas.L7Rule 73 } 74 75 // Restore original quotas. 76 restoredQuotas, err := quotas.Update(client, os.Getenv("OS_PROJECT_NAME"), restoredQuotaUpdate).Extract() 77 th.AssertNoErr(t, err) 78 79 th.AssertDeepEquals(t, originalQuotas, restoredQuotas) 80 81 tools.PrintResource(t, restoredQuotas) 82 }