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 }