github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/dns/v2/endpoints/requests.go (about) 1 package endpoints 2 3 import ( 4 "encoding/json" 5 6 "github.com/chnsz/golangsdk" 7 "github.com/chnsz/golangsdk/pagination" 8 ) 9 10 type ListOpts struct { 11 Direction string `q:"direction" required:"true"` 12 VpcID string `q:"vpc_id,omitempty"` 13 Limit int `q:"limit,omitempty"` 14 Offset int `q:"offset,omitempty"` 15 } 16 17 type CreateOpt struct { 18 Name string `json:"name" required:"true"` 19 Direction string `json:"direction" required:"true"` 20 Region string `json:"region" required:"true"` 21 IPAddresses []IPAddresses `json:"ipaddresses" required:"true"` 22 } 23 24 type IPAddresses struct { 25 SubnetID string `json:"subnet_id" required:"true"` 26 IP string `json:"ip,omitempty"` 27 } 28 29 type UpdateOpts struct { 30 Name string `json:"name" required:"true"` 31 } 32 33 func Create(c *golangsdk.ServiceClient, opts CreateOpt) (r CreateResult) { 34 _, err := c.Post(baseUrl(c), opts, &r.Body, nil) 35 if err != nil { 36 r.Err = err 37 } 38 return r 39 } 40 41 func Get(c *golangsdk.ServiceClient, endpointID string) (r GetResult) { 42 _, r.Err = c.Get(resourceUrl(c, endpointID), &r.Body, nil) 43 return r 44 } 45 46 func Update(c *golangsdk.ServiceClient, endpointID string, opts UpdateOpts) (r UpdateResult) { 47 _, r.Err = c.Put(resourceUrl(c, endpointID), opts, &r.Body, nil) 48 return 49 } 50 51 func Delete(c *golangsdk.ServiceClient, endpointID string) (r DeleteResult) { 52 _, r.Err = c.Delete(resourceUrl(c, endpointID), nil) 53 return 54 } 55 56 func List(c *golangsdk.ServiceClient, opts ListOpts) ([]Endpoint, error) { 57 url := baseUrl(c) 58 query, err := golangsdk.BuildQueryString(opts) 59 if err != nil { 60 return nil, err 61 } 62 url += query.String() 63 64 resp, err := pagination.ListAllItems(c, pagination.Offset, url, nil) 65 if err != nil { 66 return nil, err 67 } 68 69 body, err := json.Marshal(resp) 70 if err != nil { 71 return nil, err 72 } 73 74 var e struct { 75 Instances []Endpoint `json:"endpoints"` 76 } 77 if err = json.Unmarshal(body, &e); err != nil { 78 return nil, err 79 } 80 return e.Instances, nil 81 }