github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/networking/v2/extensions/qos/rules/rules.go (about)

     1  package rules
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/gophercloud/gophercloud"
     7  	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/qos/rules"
     8  	th "github.com/gophercloud/gophercloud/testhelper"
     9  )
    10  
    11  // CreateBandwidthLimitRule will create a QoS BandwidthLimitRule associated with the provided QoS policy.
    12  // An error will be returned if the QoS rule could not be created.
    13  func CreateBandwidthLimitRule(t *testing.T, client *gophercloud.ServiceClient, policyID string) (*rules.BandwidthLimitRule, error) {
    14  	maxKBps := 3000
    15  	maxBurstKBps := 300
    16  
    17  	createOpts := rules.CreateBandwidthLimitRuleOpts{
    18  		MaxKBps:      maxKBps,
    19  		MaxBurstKBps: maxBurstKBps,
    20  	}
    21  
    22  	t.Logf("Attempting to create a QoS bandwidth limit rule with max_kbps: %d, max_burst_kbps: %d", maxKBps, maxBurstKBps)
    23  
    24  	rule, err := rules.CreateBandwidthLimitRule(client, policyID, createOpts).ExtractBandwidthLimitRule()
    25  	if err != nil {
    26  		return nil, err
    27  	}
    28  
    29  	t.Logf("Succesfully created a QoS bandwidth limit rule")
    30  
    31  	th.AssertEquals(t, maxKBps, rule.MaxKBps)
    32  	th.AssertEquals(t, maxBurstKBps, rule.MaxBurstKBps)
    33  
    34  	return rule, nil
    35  }
    36  
    37  // CreateDSCPMarkingRule will create a QoS DSCPMarkingRule associated with the provided QoS policy.
    38  // An error will be returned if the QoS rule could not be created.
    39  func CreateDSCPMarkingRule(t *testing.T, client *gophercloud.ServiceClient, policyID string) (*rules.DSCPMarkingRule, error) {
    40  	dscpMark := 26
    41  
    42  	createOpts := rules.CreateDSCPMarkingRuleOpts{
    43  		DSCPMark: dscpMark,
    44  	}
    45  
    46  	t.Logf("Attempting to create a QoS DSCP marking rule with dscp_mark: %d", dscpMark)
    47  
    48  	rule, err := rules.CreateDSCPMarkingRule(client, policyID, createOpts).ExtractDSCPMarkingRule()
    49  	if err != nil {
    50  		return nil, err
    51  	}
    52  
    53  	t.Logf("Succesfully created a QoS DSCP marking rule")
    54  
    55  	th.AssertEquals(t, dscpMark, rule.DSCPMark)
    56  
    57  	return rule, nil
    58  }
    59  
    60  // CreateMinimumBandwidthRule will create a QoS MinimumBandwidthRule associated with the provided QoS policy.
    61  // An error will be returned if the QoS rule could not be created.
    62  func CreateMinimumBandwidthRule(t *testing.T, client *gophercloud.ServiceClient, policyID string) (*rules.MinimumBandwidthRule, error) {
    63  	minKBps := 1000
    64  
    65  	createOpts := rules.CreateMinimumBandwidthRuleOpts{
    66  		MinKBps: minKBps,
    67  	}
    68  
    69  	t.Logf("Attempting to create a QoS minimum bandwidth rule with min_kbps: %d", minKBps)
    70  
    71  	rule, err := rules.CreateMinimumBandwidthRule(client, policyID, createOpts).ExtractMinimumBandwidthRule()
    72  	if err != nil {
    73  		return nil, err
    74  	}
    75  
    76  	t.Logf("Succesfully created a QoS minimum bandwidth rule")
    77  
    78  	th.AssertEquals(t, minKBps, rule.MinKBps)
    79  
    80  	return rule, nil
    81  }