github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/identity/v3/agency/requests.go (about)

     1  package agency
     2  
     3  import (
     4  	"github.com/opentelekomcloud/gophertelekomcloud"
     5  	"github.com/opentelekomcloud/gophertelekomcloud/pagination"
     6  )
     7  
     8  type CreateOpts struct {
     9  	Name            string `json:"name" required:"true"`
    10  	DomainID        string `json:"domain_id" required:"true"`
    11  	DelegatedDomain string `json:"trust_domain_name" required:"true"`
    12  	Description     string `json:"description,omitempty"`
    13  }
    14  
    15  type CreateOptsBuilder interface {
    16  	ToAgencyCreateMap() (map[string]interface{}, error)
    17  }
    18  
    19  func (opts CreateOpts) ToAgencyCreateMap() (map[string]interface{}, error) {
    20  	return golangsdk.BuildRequestBody(opts, "agency")
    21  }
    22  
    23  func Create(c *golangsdk.ServiceClient, opts CreateOptsBuilder) (r CreateResult) {
    24  	b, err := opts.ToAgencyCreateMap()
    25  	if err != nil {
    26  		r.Err = err
    27  		return
    28  	}
    29  
    30  	_, r.Err = c.Post(rootURL(c), b, &r.Body, nil)
    31  	return
    32  }
    33  
    34  type UpdateOpts struct {
    35  	DelegatedDomain string `json:"trust_domain_name,omitempty"`
    36  	Description     string `json:"description,omitempty"`
    37  }
    38  
    39  type UpdateOptsBuilder interface {
    40  	ToAgencyUpdateMap() (map[string]interface{}, error)
    41  }
    42  
    43  func (opts UpdateOpts) ToAgencyUpdateMap() (map[string]interface{}, error) {
    44  	return golangsdk.BuildRequestBody(opts, "agency")
    45  }
    46  
    47  func Update(c *golangsdk.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) {
    48  	b, err := opts.ToAgencyUpdateMap()
    49  	if err != nil {
    50  		r.Err = err
    51  		return
    52  	}
    53  
    54  	reqOpt := &golangsdk.RequestOpts{OkCodes: []int{200}}
    55  	_, r.Err = c.Put(resourceURL(c, id), b, &r.Body, reqOpt)
    56  	return
    57  }
    58  
    59  func Get(c *golangsdk.ServiceClient, id string) (r GetResult) {
    60  	_, r.Err = c.Get(resourceURL(c, id), &r.Body, nil)
    61  	return
    62  }
    63  
    64  func Delete(c *golangsdk.ServiceClient, id string) (r ErrResult) {
    65  	_, r.Err = c.Delete(resourceURL(c, id), nil)
    66  	return
    67  }
    68  
    69  func AttachRoleByProject(c *golangsdk.ServiceClient, agencyID, projectID, roleID string) (r ErrResult) {
    70  	reqOpt := &golangsdk.RequestOpts{OkCodes: []int{204}}
    71  	_, r.Err = c.Put(roleURL(c, "projects", projectID, agencyID, roleID), nil, nil, reqOpt)
    72  	return
    73  }
    74  
    75  func AttachRoleByDomain(c *golangsdk.ServiceClient, agencyID, domainID, roleID string) (r ErrResult) {
    76  	reqOpt := &golangsdk.RequestOpts{OkCodes: []int{204}}
    77  	_, r.Err = c.Put(roleURL(c, "domains", domainID, agencyID, roleID), nil, nil, reqOpt)
    78  	return
    79  }
    80  
    81  func DetachRoleByProject(c *golangsdk.ServiceClient, agencyID, projectID, roleID string) (r ErrResult) {
    82  	reqOpt := &golangsdk.RequestOpts{OkCodes: []int{204}}
    83  	_, r.Err = c.Delete(roleURL(c, "projects", projectID, agencyID, roleID), reqOpt)
    84  	return
    85  }
    86  
    87  func DetachRoleByDomain(c *golangsdk.ServiceClient, agencyID, domainID, roleID string) (r ErrResult) {
    88  	reqOpt := &golangsdk.RequestOpts{OkCodes: []int{204}}
    89  	_, r.Err = c.Delete(roleURL(c, "domains", domainID, agencyID, roleID), reqOpt)
    90  	return
    91  }
    92  
    93  func ListRolesAttachedOnProject(c *golangsdk.ServiceClient, agencyID, projectID string) (r ListRolesResult) {
    94  	_, r.Err = c.Get(listRolesURL(c, "projects", projectID, agencyID), &r.Body, nil)
    95  	return
    96  }
    97  
    98  func ListRolesAttachedOnDomain(c *golangsdk.ServiceClient, agencyID, domainID string) (r ListRolesResult) {
    99  	_, r.Err = c.Get(listRolesURL(c, "domains", domainID, agencyID), &r.Body, nil)
   100  	return
   101  }
   102  
   103  type ListOptsBuilder interface {
   104  	ToAgencyListQuery() (string, error)
   105  }
   106  
   107  type ListOpts struct {
   108  	DomainID      string `q:"domain_id"`
   109  	Name          string `q:"name"`
   110  	TrustDomainID string `q:"trust_domain_id"`
   111  }
   112  
   113  func (opts ListOpts) ToAgencyListQuery() (string, error) {
   114  	q, err := golangsdk.BuildQueryString(opts)
   115  	if err != nil {
   116  		return "", err
   117  	}
   118  	return q.String(), nil
   119  }
   120  
   121  func List(client *golangsdk.ServiceClient, opts ListOptsBuilder) pagination.Pager {
   122  	url := rootURL(client)
   123  	if opts != nil {
   124  		q, err := opts.ToAgencyListQuery()
   125  		if err != nil {
   126  			return pagination.Pager{Err: err}
   127  		}
   128  		url += q
   129  	}
   130  	pager := pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page {
   131  		return AgenciesPage{SinglePageBase: pagination.SinglePageBase(r)}
   132  	})
   133  	pager.Headers = map[string]string{"Content-Type": "application/json"}
   134  	return pager
   135  }