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