From a0dea0ccf2374d43a8e56e4790b48e9d041f751a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Thu, 17 Nov 2022 18:40:04 +0800 Subject: [PATCH] fix(region): hcs vender update (#15391) --- go.mod | 2 +- go.sum | 4 +- vendor/modules.txt | 2 +- .../pkg/apis/compute/modelarts_pool_sku.go | 7 ++++ .../x/cloudmux/pkg/multicloud/hcs/disk.go | 10 +++-- .../x/cloudmux/pkg/multicloud/hcs/hcs.go | 1 + .../x/cloudmux/pkg/multicloud/hcs/instance.go | 41 ++++++++++--------- .../x/cloudmux/pkg/multicloud/hcs/port.go | 4 +- .../pkg/multicloud/hcso/modelarts_sku.go | 10 +++++ .../multicloud/huawei/modelarts_pool_sku.go | 10 +++++ 10 files changed, 62 insertions(+), 29 deletions(-) diff --git a/go.mod b/go.mod index ef912f2341..53dba912f2 100644 --- a/go.mod +++ b/go.mod @@ -83,7 +83,7 @@ require ( k8s.io/client-go v0.19.3 k8s.io/cluster-bootstrap v0.19.3 moul.io/http2curl/v2 v2.3.0 - yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221116084146-820fb31ddff8 + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221117091109-7f94a8910b85 yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656 yunion.io/x/jsonutils v1.0.1-0.20220819091305-3bab322ab4fd yunion.io/x/log v1.0.0 diff --git a/go.sum b/go.sum index d7c4a214ec..08347e2fb8 100644 --- a/go.sum +++ b/go.sum @@ -1162,8 +1162,8 @@ sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221116084146-820fb31ddff8 h1:n1yIfyx/jK3BiWIYdq9hZBR/pokTyiourwSTdXFWbVk= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221116084146-820fb31ddff8/go.mod h1:drc/WDD65r6wI1tSejk19xcl9QwmzZlgJGXN7a9o2KQ= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221117091109-7f94a8910b85 h1:ZmH9nfWPIMiq6Qs9RnzBt7p9hYZdKVXDrnI3hU0rJMo= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221117091109-7f94a8910b85/go.mod h1:drc/WDD65r6wI1tSejk19xcl9QwmzZlgJGXN7a9o2KQ= yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656 h1:0zlZD5uhZoIHgLVAWCz2aHaYk2ZrNsACCYD7R6EIBII= yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws= yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634= diff --git a/vendor/modules.txt b/vendor/modules.txt index 86e9f406b5..8035b09551 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1428,7 +1428,7 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.2.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221116084146-820fb31ddff8 +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221117091109-7f94a8910b85 ## explicit; go 1.18 yunion.io/x/cloudmux/pkg/apis yunion.io/x/cloudmux/pkg/apis/billing diff --git a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/modelarts_pool_sku.go b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/modelarts_pool_sku.go index 3dec38e833..ca429b413f 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/modelarts_pool_sku.go +++ b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/modelarts_pool_sku.go @@ -17,4 +17,11 @@ package compute const ( MODELARTS_POOL_SKU_AVAILABLE = "available" MODELARTS_POOL_SKU_SOLDOUT = "soldout" + + MODELARTS_POOL_SKU_X86 = "x86" + MODELARTS_POOL_SKU_ARM = "arm64" + + MODELARTS_POOL_SKU_CPU = "CPU" + MODELARTS_POOL_SKU_GPU = "GPU" + MODELARTS_POOL_SKU_ASCEND = "ASCEND" ) diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/disk.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/disk.go index 740ba16271..b4beb3d085 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/disk.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/disk.go @@ -92,9 +92,9 @@ type VolumeImageMetadata struct { type SDisk struct { multicloud.SDisk huawei.HuaweiDiskTags - //details *SResourceDetail - region *SRegion + region *SRegion + storage *SStorage Id string `json:"id"` Name string `json:"name"` @@ -192,8 +192,10 @@ func (self *SDisk) GetCreatedAt() time.Time { } func (self *SDisk) GetIStorage() (cloudprovider.ICloudStorage, error) { - return nil, cloudprovider.ErrNotImplemented - // return self.storage, nil + if self.storage != nil { + return self.storage, nil + } + return nil, cloudprovider.ErrNotFound } func (self *SDisk) GetDiskFormat() string { diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/hcs.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/hcs.go index cc14e8af35..bda0e16ea4 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/hcs.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/hcs.go @@ -486,6 +486,7 @@ func (self *SHcsClient) _url(product, version, regionId string, resource string) "images", "cloudimages", "nat_gateways", "lbaas", "products", "snat_rules", "dnat_rules", "vpc/peerings", + "ports", } { if strings.HasPrefix(resource, prefix) { url = fmt.Sprintf("%s.%s.%s/%s/%s", product, regionId, self.authUrl, version, resource) diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/instance.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/instance.go index d2353f1bda..d98b26c7de 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/instance.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/instance.go @@ -355,7 +355,7 @@ func (self *SInstance) GetIDisks() ([]cloudprovider.ICloudDisk, error) { if err != nil { return nil, err } - + disk.storage = &SStorage{zone: self.host.zone, storageType: disk.VolumeType} disks = append(disks, *disk) } @@ -496,10 +496,13 @@ func (self *SInstance) GetMachine() string { } func (self *SInstance) GetOsArch() string { - if flavor, err := self.host.zone.region.GetICloudSku(self.Flavor.Id); err == nil { + image, err := self.host.zone.region.GetImage(self.Image.Id) + if err == nil { + return image.GetOsArch() + } + flavor, err := self.host.zone.region.GetICloudSku(self.Flavor.Id) + if err == nil { return flavor.GetCpuArch() - } else { - log.Debugf("GetOSArch.GetICloudSku %s: %s", self.Flavor.Id, err) } t := self.GetInstanceType() @@ -517,17 +520,14 @@ func (self *SInstance) AssignSecurityGroup(secgroupId string) error { } func (self *SInstance) SetSecurityGroups(secgroupIds []string) error { - currentSecgroups, err := self.GetSecurityGroupIds() + ports, err := self.host.zone.region.GetPorts(self.Id) if err != nil { - return err + return errors.Wrapf(err, "GetPorts") } - - add, remove, _ := compareSet(currentSecgroups, secgroupIds) - err = self.host.zone.region.AssignSecurityGroups(add, self.GetId()) - if err != nil { - return err + for i := range ports { + return self.host.zone.region.SetSecurityGroups(secgroupIds, ports[i].Id) } - return self.host.zone.region.UnassignSecurityGroups(remove, self.GetId()) + return nil } func (self *SInstance) GetHypervisor() string { @@ -851,13 +851,15 @@ func (self *SRegion) CreateInstance(name string, imageId string, instanceType st return nil, fmt.Errorf("no server id returned with job %s", jsonutils.Marshal(job)) } -func (self *SRegion) AssignSecurityGroups(secgroupIds []string, instanceId string) error { - return cloudprovider.ErrNotImplemented -} - // https://support.huaweicloud.com/api-ecs/zh-cn_topic_0067161717.html -func (self *SRegion) UnassignSecurityGroups(secgroupIds []string, instanceId string) error { - return cloudprovider.ErrNotImplemented +func (self *SRegion) SetSecurityGroups(secgroupIds []string, portId string) error { + res := fmt.Sprintf("ports/%s", portId) + params := map[string]interface{}{ + "port": map[string]interface{}{ + "security_groups": secgroupIds, + }, + } + return self.update("vpc", "v2.0", res, params) } // https://support.huaweicloud.com/api-ecs/zh-cn_topic_0020212207.html @@ -972,7 +974,8 @@ func (self *SRegion) DeployVM(instanceId string, name string, password string, k "new_password": password, }, } - return self.perform("ecs", "v1", "cloudservers/"+instanceId, "os-reset-password", params, nil) + res := fmt.Sprintf("cloudservers/%s/os-reset-password", instanceId) + return self.update("ecs", "v1", res, params) } return nil } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/port.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/port.go index e6cd402d6b..1cfaa6547a 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/port.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcs/port.go @@ -148,7 +148,7 @@ func (region *SRegion) GetINetworkInterfaces() ([]cloudprovider.ICloudNetworkInt func (self *SRegion) GetPort(id string) (*Port, error) { port := &Port{} res := fmt.Sprintf("ports/%s", id) - return port, self.vpcGet(res, port) + return port, self.get("vpc", "v2.0", res, port) } // https://support.huaweicloud.com/api-vpc/zh-cn_topic_0133195888.html @@ -158,5 +158,5 @@ func (self *SRegion) GetPorts(instanceId string) ([]Port, error) { if len(instanceId) > 0 { params.Set("device_id", instanceId) } - return ports, self.vpcList("ports", params, &ports) + return ports, self.list("vpc", "v2.0", "ports", params, &ports) } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcso/modelarts_sku.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcso/modelarts_sku.go index 5cda651842..a718b34671 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcso/modelarts_sku.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/hcso/modelarts_sku.go @@ -92,6 +92,16 @@ func (self *SModelartsPoolSku) GetCpuArch() string { return self.Spec.CpuArch } +func (sku *SModelartsPoolSku) GetProcessorType() string { + if len(sku.GetNpuType()) != 0 { + return compute.MODELARTS_POOL_SKU_ASCEND + } + if len(sku.GetGpuType()) != 0 { + return compute.MODELARTS_POOL_SKU_GPU + } + return compute.MODELARTS_POOL_SKU_CPU +} + func (self *SModelartsPoolSku) GetCpuCoreCount() int { return self.Spec.Cpu } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/modelarts_pool_sku.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/modelarts_pool_sku.go index 5ab9a99bd2..3906d5939a 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/modelarts_pool_sku.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/huawei/modelarts_pool_sku.go @@ -91,6 +91,16 @@ func (self *SModelartsPoolSku) GetCpuArch() string { return self.Spec.CpuArch } +func (sku *SModelartsPoolSku) GetProcessorType() string { + if len(sku.GetNpuType()) != 0 { + return compute.MODELARTS_POOL_SKU_ASCEND + } + if len(sku.GetGpuType()) != 0 { + return compute.MODELARTS_POOL_SKU_GPU + } + return compute.MODELARTS_POOL_SKU_CPU +} + func (self *SModelartsPoolSku) GetCpuCoreCount() int { return self.Spec.Cpu }