mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-08-30 17:13:08 +08:00
Merge pull request #5991 from ioito/automated-cherry-pick-of-#5918-upstream-release-3.2
Automated cherry pick of #5918: fix: 修复华为云eneterprise-project-list异常问题
This commit is contained in:
@@ -83,7 +83,7 @@ type Client struct {
|
||||
Traces *modules.STraceManager
|
||||
CloudEye *modules.SCloudEyeManager
|
||||
Quotas *modules.SQuotaManager
|
||||
EnterpriceProjects *modules.SEnterpriceProjectManager
|
||||
EnterpriseProjects *modules.SEnterpriseProjectManager
|
||||
}
|
||||
|
||||
func (self *Client) SetHttpClient(httpClient *http.Client) {
|
||||
@@ -136,10 +136,10 @@ func (self *Client) SetHttpClient(httpClient *http.Client) {
|
||||
self.DBInstanceJob.SetHttpClient(httpClient)
|
||||
self.Traces.SetHttpClient(httpClient)
|
||||
self.CloudEye.SetHttpClient(httpClient)
|
||||
self.EnterpriceProjects.SetHttpClient(httpClient)
|
||||
self.EnterpriseProjects.SetHttpClient(httpClient)
|
||||
}
|
||||
|
||||
func (self *Client) InitWithOptions(regionId, projectId string, credential auth.Credential) error {
|
||||
func (self *Client) InitWithOptions(regionId, domainId, projectId string, credential auth.Credential) error {
|
||||
// 从signer中初始化
|
||||
signer, err := auth.NewSignerWithCredential(credential)
|
||||
if err != nil {
|
||||
@@ -148,21 +148,20 @@ func (self *Client) InitWithOptions(regionId, projectId string, credential auth.
|
||||
self.signer = signer
|
||||
self.regionId = regionId
|
||||
self.projectId = projectId
|
||||
// 暂时还未用到domainId
|
||||
self.domainId = ""
|
||||
self.domainId = domainId
|
||||
// 初始化 resource manager
|
||||
self.initManagers()
|
||||
return err
|
||||
}
|
||||
|
||||
func (self *Client) InitWithAccessKey(regionId, projectId, accessKey, secretKey string) error {
|
||||
func (self *Client) InitWithAccessKey(regionId, domainId, projectId, accessKey, secretKey string) error {
|
||||
// accessKey signer
|
||||
credential := &credentials.AccessKeyCredential{
|
||||
AccessKeyId: accessKey,
|
||||
AccessKeySecret: secretKey,
|
||||
}
|
||||
|
||||
return self.InitWithOptions(regionId, projectId, credential)
|
||||
return self.InitWithOptions(regionId, domainId, projectId, credential)
|
||||
}
|
||||
|
||||
func (self *Client) initManagers() {
|
||||
@@ -217,14 +216,15 @@ func (self *Client) initManagers() {
|
||||
self.Traces = modules.NewTraceManager(self.regionId, self.projectId, self.signer, self.debug)
|
||||
self.CloudEye = modules.NewCloudEyeManager(self.regionId, self.projectId, self.signer, self.debug)
|
||||
self.Quotas = modules.NewQuotaManager(self.regionId, self.projectId, self.signer, self.debug)
|
||||
self.EnterpriceProjects = modules.NewEnterpriceProjectManager(self.regionId, self.projectId, self.signer, self.debug)
|
||||
self.EnterpriseProjects = modules.NewEnterpriseProjectManager(self.regionId, self.projectId, self.signer, self.debug)
|
||||
self.EnterpriseProjects.SetDomainId(self.domainId)
|
||||
}
|
||||
|
||||
self.init = true
|
||||
}
|
||||
|
||||
func NewClientWithAccessKey(regionId, projectId, accessKey, secretKey string, debug bool) (*Client, error) {
|
||||
func NewClientWithAccessKey(regionId, domainId, projectId, accessKey, secretKey string, debug bool) (*Client, error) {
|
||||
c := &Client{debug: debug}
|
||||
err := c.InitWithAccessKey(regionId, projectId, accessKey, secretKey)
|
||||
err := c.InitWithAccessKey(regionId, domainId, projectId, accessKey, secretKey)
|
||||
return c, err
|
||||
}
|
||||
|
||||
@@ -72,10 +72,11 @@ type SResourceManager struct {
|
||||
ctx manager.IManagerContext
|
||||
ServiceName ServiceNameType // 服务名称: ecs
|
||||
Region string // 区域: cn-north-1
|
||||
ProjectId string // 项目ID: uuid
|
||||
version string // api 版本号
|
||||
Keyword string // 资源名称单数。构建URL时使用
|
||||
KeywordPlural string // 资源名称复数形式。构建URL时使用
|
||||
DomainId string
|
||||
ProjectId string // 项目ID: uuid
|
||||
version string // api 版本号
|
||||
Keyword string // 资源名称单数。构建URL时使用
|
||||
KeywordPlural string // 资源名称复数形式。构建URL时使用
|
||||
|
||||
ResourceKeyword string // 资源名称。url中使用
|
||||
}
|
||||
@@ -104,6 +105,10 @@ func (self *SResourceManager) GetColumns() []string {
|
||||
return []string{}
|
||||
}
|
||||
|
||||
func (self *SResourceManager) SetDomainId(domainId string) {
|
||||
self.DomainId = domainId
|
||||
}
|
||||
|
||||
func (self *SResourceManager) getReourcePath(ctx manager.IManagerContext, rid string, spec string) string {
|
||||
segs := []string{}
|
||||
if ctx != nil {
|
||||
@@ -144,6 +149,9 @@ func (self *SResourceManager) ListInContextWithSpec(ctx manager.IManagerContext,
|
||||
for k, v := range queries {
|
||||
request.AddQueryParam(k, v)
|
||||
}
|
||||
if len(self.DomainId) > 0 {
|
||||
request.AddHeaderParam("X-Domain-Id", self.DomainId)
|
||||
}
|
||||
|
||||
return self._list(request, responseKey)
|
||||
}
|
||||
|
||||
@@ -18,19 +18,19 @@ import (
|
||||
"yunion.io/x/onecloud/pkg/multicloud/huawei/client/auth"
|
||||
)
|
||||
|
||||
type SEnterpriceProjectManager struct {
|
||||
type SEnterpriseProjectManager struct {
|
||||
SResourceManager
|
||||
}
|
||||
|
||||
func NewEnterpriceProjectManager(regionId string, projectId string, signer auth.Signer, debug bool) *SEnterpriceProjectManager {
|
||||
return &SEnterpriceProjectManager{SResourceManager: SResourceManager{
|
||||
func NewEnterpriseProjectManager(regionId string, projectId string, signer auth.Signer, debug bool) *SEnterpriseProjectManager {
|
||||
return &SEnterpriseProjectManager{SResourceManager: SResourceManager{
|
||||
SBaseManager: NewBaseManager(signer, debug),
|
||||
ServiceName: ServiceNameEPS,
|
||||
Region: "",
|
||||
ProjectId: "",
|
||||
version: "v1.0",
|
||||
Keyword: "enterprise-project",
|
||||
KeywordPlural: "enterprise-projects",
|
||||
Keyword: "enterprise_project",
|
||||
KeywordPlural: "enterprise_projects",
|
||||
|
||||
ResourceKeyword: "enterprise-projects",
|
||||
}}
|
||||
|
||||
@@ -23,7 +23,7 @@ import (
|
||||
)
|
||||
|
||||
// https://support.huaweicloud.com/api-em/zh-cn_topic_0121230880.html
|
||||
type SEnterpriceProject struct {
|
||||
type SEnterpriseProject struct {
|
||||
multicloud.SResourceBase
|
||||
|
||||
Id string
|
||||
@@ -34,13 +34,13 @@ type SEnterpriceProject struct {
|
||||
UpdatedAt time.Time
|
||||
}
|
||||
|
||||
func (self *SHuaweiClient) GetEnterpriceProjects() ([]SEnterpriceProject, error) {
|
||||
projects := []SEnterpriceProject{}
|
||||
func (self *SHuaweiClient) GetEnterpriseProjects() ([]SEnterpriseProject, error) {
|
||||
projects := []SEnterpriseProject{}
|
||||
client, err := self.newGeneralAPIClient()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "newGeneralAPIClient")
|
||||
}
|
||||
err = doListAllWithOffset(client.EnterpriceProjects.List, map[string]string{}, &projects)
|
||||
err = doListAllWithOffset(client.EnterpriseProjects.List, map[string]string{}, &projects)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "doListAllWithOffset")
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ func (self *SHuaweiClient) initSigner() error {
|
||||
}
|
||||
|
||||
func (self *SHuaweiClient) newRegionAPIClient(regionId string) (*client.Client, error) {
|
||||
cli, err := client.NewClientWithAccessKey(regionId, self.projectId, self.accessKey, self.accessSecret, self.debug)
|
||||
cli, err := client.NewClientWithAccessKey(regionId, self.ownerId, self.projectId, self.accessKey, self.accessSecret, self.debug)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -151,7 +151,7 @@ func (self *SHuaweiClient) newRegionAPIClient(regionId string) (*client.Client,
|
||||
}
|
||||
|
||||
func (self *SHuaweiClient) newGeneralAPIClient() (*client.Client, error) {
|
||||
cli, err := client.NewClientWithAccessKey("", "", self.accessKey, self.accessSecret, self.debug)
|
||||
cli, err := client.NewClientWithAccessKey("", self.ownerId, "", self.accessKey, self.accessSecret, self.debug)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -20,10 +20,10 @@ import (
|
||||
)
|
||||
|
||||
func init() {
|
||||
type EnterpriceProjectListOptions struct {
|
||||
type EnterpriseProjectListOptions struct {
|
||||
}
|
||||
shellutils.R(&EnterpriceProjectListOptions{}, "enterprice-project-list", "List regions", func(cli *huawei.SRegion, args *EnterpriceProjectListOptions) error {
|
||||
projects, err := cli.GetClient().GetEnterpriceProjects()
|
||||
shellutils.R(&EnterpriseProjectListOptions{}, "enterprise-project-list", "List regions", func(cli *huawei.SRegion, args *EnterpriseProjectListOptions) error {
|
||||
projects, err := cli.GetClient().GetEnterpriseProjects()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user