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

     1  package peers
     2  
     3  import (
     4  	"github.com/gophercloud/gophercloud"
     5  	"github.com/gophercloud/gophercloud/pagination"
     6  )
     7  
     8  // List the bgp peers
     9  func List(c *gophercloud.ServiceClient) pagination.Pager {
    10  	url := listURL(c)
    11  	return pagination.NewPager(c, url, func(r pagination.PageResult) pagination.Page {
    12  		return BGPPeerPage{pagination.SinglePageBase(r)}
    13  	})
    14  }
    15  
    16  // Get retrieve the specific bgp peer by its uuid
    17  func Get(c *gophercloud.ServiceClient, id string) (r GetResult) {
    18  	resp, err := c.Get(getURL(c, id), &r.Body, nil)
    19  	_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
    20  	return
    21  }
    22  
    23  // CreateOptsBuilder allows extensions to add additional parameters to the
    24  // Create request.
    25  type CreateOptsBuilder interface {
    26  	ToPeerCreateMap() (map[string]interface{}, error)
    27  }
    28  
    29  // CreateOpts represents options used to create a BGP Peer.
    30  type CreateOpts struct {
    31  	AuthType string `json:"auth_type"`
    32  	RemoteAS int    `json:"remote_as"`
    33  	Name     string `json:"name"`
    34  	Password string `json:"password,omitempty"`
    35  	PeerIP   string `json:"peer_ip"`
    36  }
    37  
    38  // ToPeerCreateMap builds a request body from CreateOpts.
    39  func (opts CreateOpts) ToPeerCreateMap() (map[string]interface{}, error) {
    40  	return gophercloud.BuildRequestBody(opts, jroot)
    41  }
    42  
    43  // Create a BGP Peer
    44  func Create(c *gophercloud.ServiceClient, opts CreateOpts) (r CreateResult) {
    45  	b, err := opts.ToPeerCreateMap()
    46  	if err != nil {
    47  		r.Err = err
    48  		return
    49  	}
    50  	resp, err := c.Post(createURL(c), b, &r.Body, nil)
    51  	_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
    52  	return
    53  }
    54  
    55  // Delete accepts a unique ID and deletes the bgp Peer associated with it.
    56  func Delete(c *gophercloud.ServiceClient, bgpPeerID string) (r DeleteResult) {
    57  	resp, err := c.Delete(deleteURL(c, bgpPeerID), nil)
    58  	_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
    59  	return
    60  }
    61  
    62  // UpdateOptsBuilder allows extensions to add additional parameters to the
    63  // Update request.
    64  type UpdateOptsBuilder interface {
    65  	ToPeerUpdateMap() (map[string]interface{}, error)
    66  }
    67  
    68  // UpdateOpts represents options used to update a BGP Peer.
    69  type UpdateOpts struct {
    70  	Name     string `json:"name,omitempty"`
    71  	Password string `json:"password,omitempty"`
    72  }
    73  
    74  // ToPeerUpdateMap builds a request body from UpdateOpts.
    75  func (opts UpdateOpts) ToPeerUpdateMap() (map[string]interface{}, error) {
    76  	return gophercloud.BuildRequestBody(opts, jroot)
    77  }
    78  
    79  // Update accept a BGP Peer ID and an UpdateOpts and update the BGP Peer
    80  func Update(c *gophercloud.ServiceClient, bgpPeerID string, opts UpdateOpts) (r UpdateResult) {
    81  	b, err := opts.ToPeerUpdateMap()
    82  	if err != nil {
    83  		r.Err = err
    84  		return
    85  	}
    86  	resp, err := c.Put(updateURL(c, bgpPeerID), b, &r.Body, &gophercloud.RequestOpts{
    87  		OkCodes: []int{200},
    88  	})
    89  	_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
    90  	return
    91  }