github.com/gophercloud/gophercloud@v1.11.0/openstack/networking/v2/extensions/mtu/requests.go (about)

     1  package mtu
     2  
     3  import (
     4  	"fmt"
     5  	"net/url"
     6  
     7  	"github.com/gophercloud/gophercloud"
     8  	"github.com/gophercloud/gophercloud/openstack/networking/v2/networks"
     9  )
    10  
    11  // ListOptsExt adds an MTU option to the base ListOpts.
    12  type ListOptsExt struct {
    13  	networks.ListOptsBuilder
    14  
    15  	// The maximum transmission unit (MTU) value to address fragmentation.
    16  	// Minimum value is 68 for IPv4, and 1280 for IPv6.
    17  	MTU int `q:"mtu"`
    18  }
    19  
    20  // ToNetworkListQuery adds the router:external option to the base network
    21  // list options.
    22  func (opts ListOptsExt) ToNetworkListQuery() (string, error) {
    23  	q, err := gophercloud.BuildQueryString(opts.ListOptsBuilder)
    24  	if err != nil {
    25  		return "", err
    26  	}
    27  
    28  	params := q.Query()
    29  	if opts.MTU > 0 {
    30  		params.Add("mtu", fmt.Sprintf("%d", opts.MTU))
    31  	}
    32  
    33  	q = &url.URL{RawQuery: params.Encode()}
    34  	return q.String(), err
    35  }
    36  
    37  // CreateOptsExt adds an MTU option to the base Network CreateOpts.
    38  type CreateOptsExt struct {
    39  	networks.CreateOptsBuilder
    40  
    41  	// The maximum transmission unit (MTU) value to address fragmentation.
    42  	// Minimum value is 68 for IPv4, and 1280 for IPv6.
    43  	MTU int `json:"mtu,omitempty"`
    44  }
    45  
    46  // ToNetworkCreateMap adds an MTU to the base network creation options.
    47  func (opts CreateOptsExt) ToNetworkCreateMap() (map[string]interface{}, error) {
    48  	base, err := opts.CreateOptsBuilder.ToNetworkCreateMap()
    49  	if err != nil {
    50  		return nil, err
    51  	}
    52  
    53  	if opts.MTU == 0 {
    54  		return base, nil
    55  	}
    56  
    57  	networkMap := base["network"].(map[string]interface{})
    58  	networkMap["mtu"] = opts.MTU
    59  
    60  	return base, nil
    61  }
    62  
    63  // CreateOptsExt adds an MTU option to the base Network UpdateOpts.
    64  type UpdateOptsExt struct {
    65  	networks.UpdateOptsBuilder
    66  
    67  	// The maximum transmission unit (MTU) value to address fragmentation.
    68  	// Minimum value is 68 for IPv4, and 1280 for IPv6.
    69  	MTU int `json:"mtu,omitempty"`
    70  }
    71  
    72  // ToNetworkUpdateMap adds an MTU to the base network uptade options.
    73  func (opts UpdateOptsExt) ToNetworkUpdateMap() (map[string]interface{}, error) {
    74  	base, err := opts.UpdateOptsBuilder.ToNetworkUpdateMap()
    75  	if err != nil {
    76  		return nil, err
    77  	}
    78  
    79  	if opts.MTU == 0 {
    80  		return base, nil
    81  	}
    82  
    83  	networkMap := base["network"].(map[string]interface{})
    84  	networkMap["mtu"] = opts.MTU
    85  
    86  	return base, nil
    87  }