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  }