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  }