From a585ef7727aa0c6b88fa0cea4638ba7e05fe7939 Mon Sep 17 00:00:00 2001 From: zengchen1024 Date: Thu, 14 Feb 2019 17:09:47 +0800 Subject: [PATCH] update sdk of agency --- openstack/client.go | 75 +------------------- openstack/identity/v3/agency/requests.go | 87 ++---------------------- 2 files changed, 6 insertions(+), 156 deletions(-) diff --git a/openstack/client.go b/openstack/client.go index 68025d860..b5419aa25 100644 --- a/openstack/client.go +++ b/openstack/client.go @@ -330,7 +330,7 @@ func v3AKSKAuth(client *golangsdk.ProviderClient, endpoint string, options golan } if options.DomainID == "" && options.Domain != "" { - id, err := getDomainIDV1(options.Domain, v3Client) + id, err := getDomainID(options.Domain, v3Client) if err != nil { return err } @@ -454,67 +454,6 @@ func getDomainID(name string, client *golangsdk.ServiceClient) (string, error) { old := client.Endpoint defer func() { client.Endpoint = old }() - endpoint, err := client.EndpointLocator( - golangsdk.EndpointOpts{ - Type: "identity", - Availability: golangsdk.AvailabilityPublic, - }) - if err != nil { - if v, ok := err.(ErrMultipleMatchingEndpointsV3); ok { - e := "" - for _, i := range v.Endpoints { - if i.Region == "" { - e = golangsdk.NormalizeURL(i.URL) + "auth/" - break - } - } - - if e == "" { - return "", err - } - client.Endpoint = e - } else { - return "", err - } - } else { - client.Endpoint = endpoint + "auth/" - } - - opts := domains.ListOpts{ - Name: name, - } - allPages, err := domains.List(client, &opts).AllPages() - if err != nil { - return "", fmt.Errorf("List domains failed, err=%s", err) - } - - all, err := domains.ExtractDomains(allPages) - if err != nil { - return "", fmt.Errorf("Extract domains failed, err=%s", err) - } - - count := len(all) - switch count { - case 0: - err := &golangsdk.ErrResourceNotFound{} - err.ResourceType = "iam" - err.Name = name - return "", err - case 1: - return all[0].ID, nil - default: - err := &golangsdk.ErrMultipleResourcesFound{} - err.ResourceType = "iam" - err.Name = name - err.Count = count - return "", err - } -} - -func getDomainIDV1(name string, client *golangsdk.ServiceClient) (string, error) { - old := client.Endpoint - defer func() { client.Endpoint = old }() - client.Endpoint = old + "auth/" opts := domains.ListOpts{ @@ -548,18 +487,6 @@ func getDomainIDV1(name string, client *golangsdk.ServiceClient) (string, error) } } -func HeaderForAdminToken(c *golangsdk.ServiceClient) (map[string]string, error) { - if c.AKSKAuthOptions.AccessKey != "" { - i, err := getDomainID(c.AKSKAuthOptions.Domain, c) - if err != nil { - return nil, err - } - - return map[string]string{"X-Domain-Id": i}, nil - } - return nil, nil -} - // NewIdentityV2 creates a ServiceClient that may be used to interact with the // v2 identity service. func NewIdentityV2(client *golangsdk.ProviderClient, eo golangsdk.EndpointOpts) (*golangsdk.ServiceClient, error) { diff --git a/openstack/identity/v3/agency/requests.go b/openstack/identity/v3/agency/requests.go index 568949c04..8e0b23f32 100644 --- a/openstack/identity/v3/agency/requests.go +++ b/openstack/identity/v3/agency/requests.go @@ -2,7 +2,6 @@ package agency import ( "github.com/huaweicloud/golangsdk" - "github.com/huaweicloud/golangsdk/openstack" ) type CreateOpts struct { @@ -27,14 +26,7 @@ func Create(c *golangsdk.ServiceClient, opts CreateOptsBuilder) (r CreateResult) return } - reqOpt := &golangsdk.RequestOpts{} - err = addHeaderWhenAuthByAKSK(c, reqOpt) - if err != nil { - r.Err = err - return - } - - _, r.Err = c.Post(rootURL(c), b, &r.Body, reqOpt) + _, r.Err = c.Post(rootURL(c), b, &r.Body, nil) return } @@ -59,119 +51,50 @@ func Update(c *golangsdk.ServiceClient, id string, opts UpdateOptsBuilder) (r Up } reqOpt := &golangsdk.RequestOpts{OkCodes: []int{200}} - err = addHeaderWhenAuthByAKSK(c, reqOpt) - if err != nil { - r.Err = err - return - } - _, r.Err = c.Put(resourceURL(c, id), b, &r.Body, reqOpt) return } func Get(c *golangsdk.ServiceClient, id string) (r GetResult) { - reqOpt := &golangsdk.RequestOpts{} - err := addHeaderWhenAuthByAKSK(c, reqOpt) - if err != nil { - r.Err = err - return - } - - _, r.Err = c.Get(resourceURL(c, id), &r.Body, reqOpt) + _, r.Err = c.Get(resourceURL(c, id), &r.Body, nil) return } func Delete(c *golangsdk.ServiceClient, id string) (r ErrResult) { - reqOpt := &golangsdk.RequestOpts{} - err := addHeaderWhenAuthByAKSK(c, reqOpt) - if err != nil { - r.Err = err - return - } - - _, r.Err = c.Delete(resourceURL(c, id), reqOpt) + _, r.Err = c.Delete(resourceURL(c, id), nil) return } func AttachRoleByProject(c *golangsdk.ServiceClient, agencyID, projectID, roleID string) (r ErrResult) { reqOpt := &golangsdk.RequestOpts{OkCodes: []int{204}} - err := addHeaderWhenAuthByAKSK(c, reqOpt) - if err != nil { - r.Err = err - return - } - _, r.Err = c.Put(roleURL(c, "projects", projectID, agencyID, roleID), nil, nil, reqOpt) return } func AttachRoleByDomain(c *golangsdk.ServiceClient, agencyID, domainID, roleID string) (r ErrResult) { reqOpt := &golangsdk.RequestOpts{OkCodes: []int{204}} - err := addHeaderWhenAuthByAKSK(c, reqOpt) - if err != nil { - r.Err = err - return - } - _, r.Err = c.Put(roleURL(c, "domains", domainID, agencyID, roleID), nil, nil, reqOpt) return } func DetachRoleByProject(c *golangsdk.ServiceClient, agencyID, projectID, roleID string) (r ErrResult) { reqOpt := &golangsdk.RequestOpts{OkCodes: []int{204}} - err := addHeaderWhenAuthByAKSK(c, reqOpt) - if err != nil { - r.Err = err - return - } - _, r.Err = c.Delete(roleURL(c, "projects", projectID, agencyID, roleID), reqOpt) return } func DetachRoleByDomain(c *golangsdk.ServiceClient, agencyID, domainID, roleID string) (r ErrResult) { reqOpt := &golangsdk.RequestOpts{OkCodes: []int{204}} - err := addHeaderWhenAuthByAKSK(c, reqOpt) - if err != nil { - r.Err = err - return - } - _, r.Err = c.Delete(roleURL(c, "domains", domainID, agencyID, roleID), reqOpt) return } func ListRolesAttachedOnProject(c *golangsdk.ServiceClient, agencyID, projectID string) (r ListRolesResult) { - reqOpt := &golangsdk.RequestOpts{} - err := addHeaderWhenAuthByAKSK(c, reqOpt) - if err != nil { - r.Err = err - return - } - - _, r.Err = c.Get(listRolesURL(c, "projects", projectID, agencyID), &r.Body, reqOpt) + _, r.Err = c.Get(listRolesURL(c, "projects", projectID, agencyID), &r.Body, nil) return } func ListRolesAttachedOnDomain(c *golangsdk.ServiceClient, agencyID, domainID string) (r ListRolesResult) { - reqOpt := &golangsdk.RequestOpts{} - err := addHeaderWhenAuthByAKSK(c, reqOpt) - if err != nil { - r.Err = err - return - } - - _, r.Err = c.Get(listRolesURL(c, "domains", domainID, agencyID), &r.Body, reqOpt) + _, r.Err = c.Get(listRolesURL(c, "domains", domainID, agencyID), &r.Body, nil) return } - -func addHeaderWhenAuthByAKSK(c *golangsdk.ServiceClient, opt *golangsdk.RequestOpts) error { - h, err := openstack.HeaderForAdminToken(c) - if err != nil { - return err - } - if h != nil { - opt.MoreHeaders = h - } - return nil -}