From 7b3eabfd39da3f7dcca2cbc9819b00c1da3532a8 Mon Sep 17 00:00:00 2001 From: mhf Date: Wed, 21 Sep 2022 16:19:15 +0800 Subject: [PATCH] resert endpoint --- pkg/cloudid/models/clouduser.go | 2 +- pkg/compute/models/modelarts_pools.go | 2 - .../tasks/modelarts_pool_create_task.go | 2 +- pkg/multicloud/hcso/hcso.go | 50 ++++++++++++++----- pkg/multicloud/hcso/modelarts.go | 3 +- pkg/multicloud/hcso/shell/modelarts.go | 2 - 6 files changed, 40 insertions(+), 21 deletions(-) diff --git a/pkg/cloudid/models/clouduser.go b/pkg/cloudid/models/clouduser.go index a949e36798..be2ff8569f 100644 --- a/pkg/cloudid/models/clouduser.go +++ b/pkg/cloudid/models/clouduser.go @@ -1546,7 +1546,7 @@ func (self *SClouduser) GetDetailsAccessKeys(ctx context.Context, userCred mccli return jsonutils.Marshal(ret), nil } -func (self *SClouduser) DeleteAccessKey(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input api.ClouduserDeleteAccessKeyInput) (jsonutils.JSONObject, error) { +func (self *SClouduser) PerformDeleteAccessKey(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input api.ClouduserDeleteAccessKeyInput) (jsonutils.JSONObject, error) { user, err := self.GetIClouduser() if err != nil { return nil, errors.Wrapf(err, "GetIClouduser") diff --git a/pkg/compute/models/modelarts_pools.go b/pkg/compute/models/modelarts_pools.go index 2ff7106bb8..0e41a6554c 100644 --- a/pkg/compute/models/modelarts_pools.go +++ b/pkg/compute/models/modelarts_pools.go @@ -20,7 +20,6 @@ import ( "time" "yunion.io/x/jsonutils" - "yunion.io/x/log" "yunion.io/x/pkg/errors" "yunion.io/x/pkg/util/compare" "yunion.io/x/sqlchemy" @@ -278,7 +277,6 @@ func (self *SCloudregion) SyncModelartsPools(ctx context.Context, userCred mccli // 判断资源是否可以删除 func (self *SModelartsPool) ValidateDeleteCondition(ctx context.Context, info jsonutils.JSONObject) error { - log.Errorln("this is IN Validata") if self.DisableDelete.IsTrue() { return httperrors.NewInvalidStatusError("ModelartsPool is locked, cannot delete") } diff --git a/pkg/compute/tasks/modelarts_pool_create_task.go b/pkg/compute/tasks/modelarts_pool_create_task.go index 6e4f35632c..3cb9fdc64b 100644 --- a/pkg/compute/tasks/modelarts_pool_create_task.go +++ b/pkg/compute/tasks/modelarts_pool_create_task.go @@ -60,7 +60,7 @@ func (self *ModelartsPoolCreateTask) OnInit(ctx context.Context, obj db.IStandal ipool, err := iRegion.CreateIModelartsPool(opts) if err != nil { - self.taskFailed(ctx, pool, errors.Wrapf(err, "iProvider.CreateIModelartsPool")) + self.taskFailed(ctx, pool, errors.Wrapf(err, "iRegion.CreateIModelartsPool")) return } err = db.SetExternalId(pool, self.GetUserCred(), ipool.GetGlobalId()) diff --git a/pkg/multicloud/hcso/hcso.go b/pkg/multicloud/hcso/hcso.go index 839ea04571..c9c9906b16 100644 --- a/pkg/multicloud/hcso/hcso.go +++ b/pkg/multicloud/hcso/hcso.go @@ -108,55 +108,77 @@ func (self *SHuaweiClient) request(method httputils.THttpMethod, url string, que return resp, err } +func (self *SHuaweiClient) resetEndpoint(endpoint, serviceName string) string { + if len(endpoint) == 0 { + domain := self.HuaweiClientConfig.endpoints.EndpointDomain + regionId := self.HuaweiClientConfig.cpcfg.DefaultRegion + if len(regionId) == 0 { + regionId = self.GetRegions()[0].ID + } + endpoint = fmt.Sprintf("%s.%s.%s", serviceName, regionId, domain) + } + return endpoint +} + func (self *SHuaweiClient) getAKSKList(userId string) (jsonutils.JSONObject, error) { - uri := fmt.Sprintf("https://%s/v3.0/OS-CREDENTIAL/credentials", self.endpoints.Iam) + endpoint := self.resetEndpoint(self.endpoints.Iam, "iam-pub") + uri := fmt.Sprintf("https://%s/v3.0/OS-CREDENTIAL/credentials", endpoint) query := url.Values{} query.Set("user_id", userId) return self.request(httputils.GET, uri, query, nil) } func (self *SHuaweiClient) createAKSK(params map[string]interface{}) (jsonutils.JSONObject, error) { - uri := fmt.Sprintf("https://%s/v3.0/OS-CREDENTIAL/credentials", self.endpoints.Iam) + endpoint := self.resetEndpoint(self.endpoints.Iam, "iam-pub") + uri := fmt.Sprintf("https://%s/v3.0/OS-CREDENTIAL/credentials", endpoint) return self.request(httputils.POST, uri, nil, params) } func (self *SHuaweiClient) deleteAKSK(accessKey string) (jsonutils.JSONObject, error) { - uri := fmt.Sprintf("https://%s/v3.0/OS-CREDENTIAL/credentials/%s", self.endpoints.Iam, accessKey) - return self.request(httputils.POST, uri, nil, nil) + endpoint := self.resetEndpoint(self.endpoints.Iam, "iam-pub") + uri := fmt.Sprintf("https://%s/v3.0/OS-CREDENTIAL/credentials/%s", endpoint, accessKey) + return self.request(httputils.DELETE, uri, nil, nil) } func (self *SHuaweiClient) modelartsPoolNetworkList(params map[string]interface{}) (jsonutils.JSONObject, error) { - uri := fmt.Sprintf("https://%s/v1/%s/networks", self.endpoints.Modelarts, self.projectId) + endpoint := self.resetEndpoint(self.endpoints.Modelarts, "modelarts") + uri := fmt.Sprintf("https://%s/v1/%s/networks", endpoint, self.projectId) return self.request(httputils.GET, uri, url.Values{}, params) } func (self *SHuaweiClient) modelartsPoolNetworkCreate(params map[string]interface{}) (jsonutils.JSONObject, error) { - uri := fmt.Sprintf("https://%s/v1/%s/networks", self.endpoints.Modelarts, self.projectId) + endpoint := self.resetEndpoint(self.endpoints.Modelarts, "modelarts") + uri := fmt.Sprintf("https://%s/v1/%s/networks", endpoint, self.projectId) return self.request(httputils.POST, uri, url.Values{}, params) } func (self *SHuaweiClient) modelartsPoolById(poolName string, params map[string]interface{}) (jsonutils.JSONObject, error) { - uri := fmt.Sprintf("https://modelarts.%s.myhuaweicloud.com/v2/%s/pools/%s", self.endpoints.Modelarts, self.projectId, poolName) + endpoint := self.resetEndpoint(self.endpoints.Modelarts, "modelarts") + uri := fmt.Sprintf("https://modelarts.%s.myhuaweicloud.com/v2/%s/pools/%s", endpoint, self.projectId, poolName) return self.request(httputils.GET, uri, url.Values{}, params) } func (self *SHuaweiClient) modelartsPoolList(params map[string]interface{}) (jsonutils.JSONObject, error) { - uri := fmt.Sprintf("https://%s/v2/%s/pools", self.endpoints.Modelarts, self.projectId) + endpoint := self.resetEndpoint(self.endpoints.Modelarts, "modelarts") + uri := fmt.Sprintf("https://%s/v2/%s/pools", endpoint, self.projectId) return self.request(httputils.GET, uri, url.Values{}, params) } func (self *SHuaweiClient) modelartsPoolCreate(params map[string]interface{}) (jsonutils.JSONObject, error) { - uri := fmt.Sprintf("https://%s/v2/%s/pools", self.endpoints.Modelarts, self.projectId) + endpoint := self.resetEndpoint(self.endpoints.Modelarts, "modelarts") + uri := fmt.Sprintf("https://%s/v2/%s/pools", endpoint, self.projectId) return self.request(httputils.POST, uri, url.Values{}, params) } func (self *SHuaweiClient) modelartsPoolDelete(poolName string, params map[string]interface{}) (jsonutils.JSONObject, error) { - uri := fmt.Sprintf("https://%s/v2/%s/pools/%s", self.endpoints.Modelarts, self.projectId, poolName) + endpoint := self.resetEndpoint(self.endpoints.Modelarts, "modelarts") + uri := fmt.Sprintf("https://%s/v2/%s/pools/%s", endpoint, self.projectId, poolName) return self.request(httputils.DELETE, uri, url.Values{}, params) } func (self *SHuaweiClient) modelartsPoolUpdate(poolName string, params map[string]interface{}) (jsonutils.JSONObject, error) { - uri := fmt.Sprintf("https://modelarts.%s.myhuaweicloud.com/v2/%s/pools/%s", self.endpoints.Modelarts, self.projectId, poolName) + endpoint := self.resetEndpoint(self.endpoints.Modelarts, "modelarts") + uri := fmt.Sprintf("https://%s/v2/%s/pools/%s", endpoint, self.projectId, poolName) urlValue := url.Values{} urlValue.Add("time_range", "") urlValue.Add("statistics", "") @@ -165,12 +187,14 @@ func (self *SHuaweiClient) modelartsPoolUpdate(poolName string, params map[strin } func (self *SHuaweiClient) modelartsPoolMonitor(poolName string, params map[string]interface{}) (jsonutils.JSONObject, error) { - uri := fmt.Sprintf("https://modelarts.%s.myhuaweicloud.com/v2/%s/pools/%s/monitor", self.endpoints.Modelarts, self.projectId, poolName) + endpoint := self.resetEndpoint(self.endpoints.Modelarts, "modelarts") + uri := fmt.Sprintf("https://%s/v2/%s/pools/%s/monitor", endpoint, self.projectId, poolName) return self.request(httputils.GET, uri, url.Values{}, params) } func (self *SHuaweiClient) modelartsResourceflavors(params map[string]interface{}) (jsonutils.JSONObject, error) { - uri := fmt.Sprintf("https://%s/v1/%s/resourceflavors", self.endpoints.Modelarts, self.projectId) + endpoint := self.resetEndpoint(self.endpoints.Modelarts, "modelarts") + uri := fmt.Sprintf("https://%s/v1/%s/resourceflavors", endpoint, self.projectId) return self.request(httputils.GET, uri, url.Values{}, params) } diff --git a/pkg/multicloud/hcso/modelarts.go b/pkg/multicloud/hcso/modelarts.go index 8625209940..c734752676 100644 --- a/pkg/multicloud/hcso/modelarts.go +++ b/pkg/multicloud/hcso/modelarts.go @@ -19,7 +19,6 @@ import ( "time" "yunion.io/x/jsonutils" - "yunion.io/x/log" "yunion.io/x/pkg/errors" billing_api "yunion.io/x/onecloud/pkg/apis/billing" @@ -91,7 +90,6 @@ type SModelartsPoolNetworkMetadata struct { func (self *SRegion) GetIModelartsPools() ([]cloudprovider.ICloudModelartsPool, error) { pools := make([]SModelartsPool, 0) - log.Errorln("this is in GetIModelartsPools:", self.client.endpoints.Modelarts) resObj, err := self.client.modelartsPoolList(nil) if err != nil { return nil, errors.Wrap(err, "region.GetPools") @@ -111,6 +109,7 @@ func (self *SRegion) GetIModelartsPools() ([]cloudprovider.ICloudModelartsPool, } func (self *SRegion) CreateIModelartsPool(args *cloudprovider.ModelartsPoolCreateOption) (cloudprovider.ICloudModelartsPool, error) { + netObj, err := self.client.modelartsPoolNetworkList(nil) if err != nil { return nil, errors.Wrap(err, "SHuaweiClient.GetPools") diff --git a/pkg/multicloud/hcso/shell/modelarts.go b/pkg/multicloud/hcso/shell/modelarts.go index 3d65525072..a60c285b02 100644 --- a/pkg/multicloud/hcso/shell/modelarts.go +++ b/pkg/multicloud/hcso/shell/modelarts.go @@ -16,7 +16,6 @@ package shell import ( - "yunion.io/x/log" "yunion.io/x/onecloud/pkg/cloudprovider" huawei "yunion.io/x/onecloud/pkg/multicloud/hcso" "yunion.io/x/onecloud/pkg/util/shellutils" @@ -28,7 +27,6 @@ func init() { } shellutils.R(&ModelartsPoolListOption{}, "modelarts-pool-list", "List Modelarts Pool", func(cli *huawei.SRegion, args *ModelartsPoolListOption) error { - log.Errorf("this is endpoints:%v,err:%s\n", cli.GetClient()) pools, err := cli.GetIModelartsPools() if err != nil { return err