github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/dns/v2/resolverrule/requests.go (about) 1 package resolverrule 2 3 import ( 4 "github.com/chnsz/golangsdk" 5 "github.com/chnsz/golangsdk/pagination" 6 ) 7 8 type CreateOpts struct { 9 Name string `json:"name" required:"true"` 10 DomainName string `json:"domain_name" required:"true"` 11 EndpointID string `json:"endpoint_id" required:"true"` 12 IPAddresses []IPAddress `json:"ipaddresses" required:"true"` 13 } 14 15 type IPAddress struct { 16 IP string `json:"ip,omitempty"` 17 } 18 19 type UpdateOpts struct { 20 Name string `json:"name,omitempty"` 21 IPAddresses []IPAddress `json:"ipaddresses,omitempty"` 22 } 23 24 type ListOpts struct { 25 Limit int `q:"limit"` 26 Offset int `q:"offset"` 27 DomainName string `q:"domain_name"` 28 } 29 30 func Create(client *golangsdk.ServiceClient, opts CreateOpts) (r CreateResult) { 31 b, err := golangsdk.BuildRequestBody(opts, "") 32 if err != nil { 33 r.Err = err 34 return 35 } 36 37 _, r.Err = client.Post(baseURL(client), b, &r.Body, nil) 38 return 39 } 40 41 func Update(client *golangsdk.ServiceClient, resolverRuleID string, opts UpdateOpts) (r UpdateResult) { 42 b, err := golangsdk.BuildRequestBody(opts, "") 43 if err != nil { 44 r.Err = err 45 return 46 } 47 48 _, r.Err = client.Put(resourceURL(client, resolverRuleID), b, &r.Body, nil) 49 return 50 } 51 52 func Get(client *golangsdk.ServiceClient, resolverRuleID string) (r GetResult) { 53 _, r.Err = client.Get(resourceURL(client, resolverRuleID), &r.Body, nil) 54 return 55 } 56 57 func List(client *golangsdk.ServiceClient, opts *ListOpts) (r ListResult) { 58 url := baseURL(client) 59 if opts != nil { 60 query, err := golangsdk.BuildQueryString(opts) 61 if err != nil { 62 r.Err = err 63 return 64 } 65 url += query.String() 66 } 67 68 r.Body, r.Err = pagination.ListAllItems(client, pagination.Offset, url, nil) 69 return 70 } 71 72 func Delete(client *golangsdk.ServiceClient, resolverRuleID string) (r DeleteResult) { 73 _, r.Err = client.Delete(resourceURL(client, resolverRuleID), nil) 74 return 75 }