fix(region): vendor update (#23640)

This commit is contained in:
屈轩
2025-10-30 10:06:28 +08:00
committed by GitHub
parent cd68e4c156
commit 2bb2742bf0
9 changed files with 94 additions and 119 deletions
+2 -2
View File
@@ -88,12 +88,12 @@ 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.20251024142004-e98de79fcabf
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251029114425-e74e51b2ee51
yunion.io/x/executor v0.0.0-20250518005516-5402e9e0bed0
yunion.io/x/jsonutils v1.0.1-0.20250507052344-1abcf4f443b1
yunion.io/x/log v1.0.1-0.20240305175729-7cf2d6cd5a91
yunion.io/x/ovsdb v0.0.0-20230306173834-f164f413a900
yunion.io/x/pkg v1.10.4-0.20250820035218-6008459eb4f0
yunion.io/x/pkg v1.10.4-0.20251029085629-5e6cd5e0d3ad
yunion.io/x/s3cli v0.0.0-20241221171442-1c11599d28e1
yunion.io/x/sqlchemy v1.1.3-0.20250925091009-4ca0766fc8f0
yunion.io/x/structarg v0.0.0-20231017124457-df4d5009457c
+4 -4
View File
@@ -1279,8 +1279,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.20251024142004-e98de79fcabf h1:YXvJjd2mhGAYsACGXygfJ5Jti4xHE7E6iD4z7FHbWBo=
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251024142004-e98de79fcabf/go.mod h1:S9o/TRZsnYWGaGe7o3PpeOv6CgMY8ZJwITYsEnGfOgQ=
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251029114425-e74e51b2ee51 h1:gbA7+xd3rsHgj8W2XCNBRet5hSdbiBoME3082fs/p4U=
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251029114425-e74e51b2ee51/go.mod h1:S9o/TRZsnYWGaGe7o3PpeOv6CgMY8ZJwITYsEnGfOgQ=
yunion.io/x/executor v0.0.0-20250518005516-5402e9e0bed0 h1:msG4SiDSVU7CrXH06WuHlNEZXIooTcmNbfrIGHuIHBU=
yunion.io/x/executor v0.0.0-20250518005516-5402e9e0bed0/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws=
yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634=
@@ -1294,8 +1294,8 @@ yunion.io/x/ovsdb v0.0.0-20230306173834-f164f413a900 h1:Hu/4ERvoWaN6aiFs4h4/yvVB
yunion.io/x/ovsdb v0.0.0-20230306173834-f164f413a900/go.mod h1:0vLkNEhlmA64HViPBAnSTUMrx5QP1CLsxXmxDKQ80tc=
yunion.io/x/pkg v0.0.0-20190620104149-945c25821dbf/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E=
yunion.io/x/pkg v0.0.0-20190628082551-f4033ba2ea30/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E=
yunion.io/x/pkg v1.10.4-0.20250820035218-6008459eb4f0 h1:/vHcYqzQInxqR1jjS+e7A0owRXj+/rvrIgES6uadUqs=
yunion.io/x/pkg v1.10.4-0.20250820035218-6008459eb4f0/go.mod h1:0Bwxqd9MA3ACi119/l02FprY/o9gHahmYC2bsSbnVpM=
yunion.io/x/pkg v1.10.4-0.20251029085629-5e6cd5e0d3ad h1:rvh05lRDppYWzVyIjU/y/vzXUvfQ8Oi47vioL+zGayA=
yunion.io/x/pkg v1.10.4-0.20251029085629-5e6cd5e0d3ad/go.mod h1:0Bwxqd9MA3ACi119/l02FprY/o9gHahmYC2bsSbnVpM=
yunion.io/x/s3cli v0.0.0-20241221171442-1c11599d28e1 h1:1KJ3YYinydPHpDEQRXdr/T8SYcKZ5Er+m489H+PnaQ4=
yunion.io/x/s3cli v0.0.0-20241221171442-1c11599d28e1/go.mod h1:0iFKpOs1y4lbCxeOmq3Xx/0AcQoewVPwj62eRluioEo=
yunion.io/x/sqlchemy v1.1.3-0.20250925091009-4ca0766fc8f0 h1:L4zE6kTD1PEki1jQnLLBiYnEYFKWa/weoful0Sl4tKw=
+2 -2
View File
@@ -1605,7 +1605,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.20251024142004-e98de79fcabf
# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251029114425-e74e51b2ee51
## explicit; go 1.21
yunion.io/x/cloudmux/pkg/apis
yunion.io/x/cloudmux/pkg/apis/billing
@@ -1700,7 +1700,7 @@ yunion.io/x/log/hooks
yunion.io/x/ovsdb/cli_util
yunion.io/x/ovsdb/schema/ovn_nb
yunion.io/x/ovsdb/types
# yunion.io/x/pkg v1.10.4-0.20250820035218-6008459eb4f0
# yunion.io/x/pkg v1.10.4-0.20251029085629-5e6cd5e0d3ad
## explicit; go 1.18
yunion.io/x/pkg/appctx
yunion.io/x/pkg/errors
-2
View File
@@ -342,8 +342,6 @@ type ICloudVM interface {
GetInternetMaxBandwidthOut() int
GetThroughput() int
// GetStatus() string
// GetRemoteStatus() string
GetSerialOutput(port int) (string, error) // 目前仅谷歌云windows机器会使用到此接口
+18 -16
View File
@@ -22,22 +22,23 @@ import (
)
func WaitStatusWithSync(res ICloudResource, expect string, sync func(status string), interval time.Duration, timeout time.Duration) error {
startTime := time.Now()
startTime, status := time.Now(), res.GetStatus()
for time.Since(startTime) < timeout {
err := res.Refresh()
if err != nil {
return err
return errors.Wrapf(err, "Refresh")
}
log.Infof("%s status %s expect %s", res.GetName(), res.GetStatus(), expect)
status = res.GetStatus()
log.Infof("%s status %s expect %s", res.GetName(), status, expect)
if sync != nil {
sync(res.GetStatus())
sync(status)
}
if res.GetStatus() == expect {
return nil
}
time.Sleep(interval)
}
return ErrTimeout
return errors.Wrapf(errors.ErrTimeout, "status %s expect %s", status, expect)
}
func WaitStatus(res ICloudResource, expect string, interval time.Duration, timeout time.Duration) error {
@@ -45,14 +46,14 @@ func WaitStatus(res ICloudResource, expect string, interval time.Duration, timeo
}
func WaitMultiStatusWithSync(res ICloudResource, expects []string, sync func(string), interval time.Duration, timeout time.Duration) error {
startTime := time.Now()
startTime, status := time.Now(), res.GetStatus()
for time.Since(startTime) < timeout {
err := res.Refresh()
if err != nil {
return errors.Wrap(err, "resource.Refresh()")
return errors.Wrapf(err, "Refresh")
}
status := res.GetStatus()
log.Infof("%s status %s expect %s", res.GetName(), status, expects)
status = res.GetStatus()
log.Infof("%s status %s expect %v", res.GetName(), status, expects)
if sync != nil {
sync(status)
}
@@ -63,7 +64,7 @@ func WaitMultiStatusWithSync(res ICloudResource, expects []string, sync func(str
}
time.Sleep(interval)
}
return errors.Wrap(errors.ErrTimeout, "WaitMultistatus")
return errors.Wrapf(errors.ErrTimeout, "status %s expect %v", status, expects)
}
func WaitMultiStatus(res ICloudResource, expects []string, interval time.Duration, timeout time.Duration) error {
@@ -76,14 +77,15 @@ func WaitStatusWithDelay(res ICloudResource, expect string, delay time.Duration,
}
func WaitStatusWithInstanceErrorCheck(res ICloudResource, expect string, interval time.Duration, timeout time.Duration, errCheck func() error) error {
startTime := time.Now()
startTime, status := time.Now(), res.GetStatus()
for time.Since(startTime) < timeout {
err := res.Refresh()
if err != nil {
return err
return errors.Wrapf(err, "Refresh")
}
log.Infof("%s status %s expect %s", res.GetName(), res.GetStatus(), expect)
if res.GetStatus() == expect {
status = res.GetStatus()
log.Infof("%s status %s expect %s", res.GetName(), status, expect)
if status == expect {
return nil
}
err = errCheck()
@@ -92,7 +94,7 @@ func WaitStatusWithInstanceErrorCheck(res ICloudResource, expect string, interva
}
time.Sleep(interval)
}
return ErrTimeout
return errors.Wrapf(errors.ErrTimeout, "status %s expect %s", status, expect)
}
func WaitDeletedWithDelay(res ICloudResource, delay time.Duration, interval time.Duration, timeout time.Duration) error {
@@ -108,7 +110,7 @@ func WaitDeleted(res ICloudResource, interval time.Duration, timeout time.Durati
if errors.Cause(err) == ErrNotFound {
return nil
} else {
return err
return errors.Wrapf(err, "Refresh")
}
}
time.Sleep(interval)
+19 -68
View File
@@ -418,66 +418,25 @@ func (self *SInstance) GetHealthStatus() string {
func (self *SInstance) Refresh() error {
ins, err := self.host.zone.region.GetInstance(self.InstanceId)
if err != nil {
return err
return errors.Wrapf(err, "GetInstance %s", self.InstanceId)
}
return jsonutils.Update(self, ins)
}
/*
func (self *SInstance) GetRemoteStatus() string {
// Running:运行中
//Starting:启动中
//Stopping:停止中
//Stopped:已停止
switch self.Status {
case InstanceStatusRunning:
return cloudprovider.CloudVMStatusRunning
case InstanceStatusStarting:
return cloudprovider.CloudVMStatusStopped
case InstanceStatusStopping:
return cloudprovider.CloudVMStatusRunning
case InstanceStatusStopped:
return cloudprovider.CloudVMStatusStopped
default:
return cloudprovider.CloudVMStatusOther
}
}
*/
func (self *SInstance) GetHypervisor() string {
return api.HYPERVISOR_ALIYUN
}
func (self *SInstance) StartVM(ctx context.Context) error {
timeout := 300 * time.Second
interval := 15 * time.Second
startTime := time.Now()
for time.Now().Sub(startTime) < timeout {
err := self.Refresh()
if err != nil {
return err
}
log.Debugf("status %s expect %s", self.GetStatus(), api.VM_RUNNING)
if self.GetStatus() == api.VM_RUNNING {
return nil
} else if self.GetStatus() == api.VM_READY {
err := self.host.zone.region.StartVM(self.InstanceId)
if err != nil {
return err
}
}
time.Sleep(interval)
}
return cloudprovider.ErrTimeout
return self.host.zone.region.StartVM(self.InstanceId)
}
func (self *SInstance) StopVM(ctx context.Context, opts *cloudprovider.ServerStopOptions) error {
err := self.host.zone.region.StopVM(self.InstanceId, opts.IsForce, opts.StopCharging)
if err != nil {
return err
return errors.Wrapf(err, "StopVM %s", self.InstanceId)
}
return cloudprovider.WaitStatus(self, api.VM_READY, 10*time.Second, 300*time.Second) // 5mintues
return cloudprovider.WaitStatus(self, api.VM_READY, 10*time.Second, 5*time.Minute)
}
func (self *SInstance) GetVNCInfo(input *cloudprovider.ServerVncInput) (*cloudprovider.ServerVncOutput, error) {
@@ -789,12 +748,10 @@ func (self *SRegion) doDeleteVM(instanceId string) error {
func (self *SRegion) StartVM(instanceId string) error {
status, err := self.GetInstanceStatus(instanceId)
if err != nil {
log.Errorf("Fail to get instance status on StartVM: %s", err)
return err
return errors.Wrapf(err, "GetInstanceStatus")
}
if status != InstanceStatusStopped {
log.Errorf("StartVM: vm status is %s expect %s", status, InstanceStatusStopped)
return cloudprovider.ErrInvalidStatus
return errors.Wrapf(cloudprovider.ErrInvalidStatus, "vm status is %s expect %s", status, InstanceStatusStopped)
}
return self.doStartVM(instanceId)
}
@@ -802,15 +759,13 @@ func (self *SRegion) StartVM(instanceId string) error {
func (self *SRegion) StopVM(instanceId string, isForce, stopCharging bool) error {
status, err := self.GetInstanceStatus(instanceId)
if err != nil {
log.Errorf("Fail to get instance status on StopVM: %s", err)
return err
return errors.Wrapf(err, "GetInstanceStatus")
}
if status == InstanceStatusStopped {
return nil
}
if status != InstanceStatusRunning {
log.Errorf("StopVM: vm status is %s expect %s", status, InstanceStatusRunning)
return cloudprovider.ErrInvalidStatus
return errors.Wrapf(cloudprovider.ErrInvalidStatus, "vm status is %s expect %s", status, InstanceStatusRunning)
}
return self.doStopVM(instanceId, isForce, stopCharging)
}
@@ -818,10 +773,8 @@ func (self *SRegion) StopVM(instanceId string, isForce, stopCharging bool) error
func (self *SRegion) DeleteVM(instanceId string) error {
status, err := self.GetInstanceStatus(instanceId)
if err != nil {
log.Errorf("Fail to get instance status on DeleteVM: %s", err)
return err
return errors.Wrapf(err, "GetInstanceStatus")
}
log.Debugf("Instance status on delete is %s", status)
if status != InstanceStatusStopped {
log.Warningf("DeleteVM: vm status is %s expect %s", status, InstanceStatusStopped)
}
@@ -831,14 +784,14 @@ func (self *SRegion) DeleteVM(instanceId string) error {
func (self *SRegion) DeployVM(instanceId string, opts *cloudprovider.SInstanceDeployOptions) error {
instance, err := self.GetInstance(instanceId)
if err != nil {
return err
return errors.Wrapf(err, "GetInstance")
}
// 修改密钥时直接返回
if opts.DeleteKeypair {
err = self.DetachKeyPair(instanceId, instance.KeyPairName)
if err != nil {
return err
return errors.Wrapf(err, "DetachKeyPair")
}
}
@@ -847,11 +800,11 @@ func (self *SRegion) DeployVM(instanceId string, opts *cloudprovider.SInstanceDe
var err error
keypairName, err = self.syncKeypair(opts.PublicKey)
if err != nil {
return err
return errors.Wrapf(err, "syncKeypair")
}
err = self.AttachKeypair(instanceId, keypairName)
if err != nil {
return err
return errors.Wrapf(err, "AttachKeypair")
}
}
@@ -880,7 +833,7 @@ func (self *SInstance) DeleteVM(ctx context.Context) error {
}
e, ok := errors.Cause(err).(*alierr.ServerError)
if !ok {
return err
return errors.Wrapf(err, "DeleteVM")
}
switch e.ErrorCode() {
case "IncorrectInstanceStatus.Initializing":
@@ -888,7 +841,7 @@ func (self *SInstance) DeleteVM(ctx context.Context) error {
case "LastTokenProcessing": // 等待转换按量付费完成
time.Sleep(10 * time.Second)
default:
return err
return errors.Wrapf(err, "DeleteVM")
}
}
return cloudprovider.WaitDeleted(self, 10*time.Second, 300*time.Second) // 5minutes
@@ -943,9 +896,8 @@ func (self *SRegion) ReplaceSystemDisk(instanceId string, imageId string, passwd
}
body, err := self.ecsRequest("ReplaceSystemDisk", params)
if err != nil {
return "", err
return "", errors.Wrapf(err, "ReplaceSystemDisk")
}
// log.Debugf("%s", body.String())
return body.GetString("DiskId")
}
@@ -1057,7 +1009,7 @@ func (region *SRegion) ModifyInstanceChargeType(vmId string, billingType string)
}
_, err := region.ecsRequest("ModifyInstanceChargeType", params)
if err != nil {
return err
return errors.Wrapf(err, "ModifyInstanceChargeType %v", params)
}
if billingType == billing_api.BILLING_TYPE_PREPAID {
cycle := billing.SBillingCycle{
@@ -1122,13 +1074,12 @@ func (region *SRegion) RenewInstance(instanceId string, bc billing.SBillingCycle
params["InstanceId"] = instanceId
err := billingCycle2Params(&bc, params)
if err != nil {
return err
return errors.Wrapf(err, "billingCycle2Params %v", params)
}
params["ClientToken"] = utils.GenRequestId(20)
_, err = region.ecsRequest("RenewInstance", params)
if err != nil {
log.Errorf("RenewInstance fail %s", err)
return err
return errors.Wrapf(err, "RenewInstance %v", params)
}
return nil
}
+48 -3
View File
@@ -20,6 +20,7 @@ import (
"time"
"yunion.io/x/cloudmux/pkg/cloudprovider"
"yunion.io/x/pkg/util/netutils"
"yunion.io/x/pkg/util/secrules"
"yunion.io/x/pkg/utils"
)
@@ -127,7 +128,7 @@ func (self *SPermission) Delete() error {
}
func (self *SPermission) Update(opts *cloudprovider.SecurityGroupRuleUpdateOptions) error {
return self.region.UpdateSecurityGroupRule(self.SecurityGroupId, self.SecurityGroupRuleId, self.GetDirection(), opts.Desc)
return self.region.UpdateSecurityGroupRule(self.SecurityGroupId, self.SecurityGroupRuleId, self.GetDirection(), opts)
}
func (self *SRegion) GetSecurityGroupRules(id string) ([]SPermission, error) {
@@ -170,15 +171,59 @@ func (self *SRegion) DeleteSecurityGroupRule(groupId string, direction secrules.
return err
}
func (self *SRegion) UpdateSecurityGroupRule(groupId, ruleId string, direction secrules.TSecurityRuleDirection, desc string) error {
func (self *SRegion) UpdateSecurityGroupRule(groupId, ruleId string, direction secrules.TSecurityRuleDirection, opts *cloudprovider.SecurityGroupRuleUpdateOptions) error {
params := map[string]string{
"ClientToken": utils.GenRequestId(20),
"SecurityGroupId": groupId,
"SecurityGroupRuleId": ruleId,
}
if len(opts.Desc) > 0 {
params["Description"] = opts.Desc
}
switch opts.Protocol {
case secrules.PROTO_TCP, secrules.PROTO_UDP:
params["IpProtocol"] = opts.Protocol
if len(opts.Ports) > 0 {
params["PortRange"] = fmt.Sprintf("%s/%s", opts.Ports, opts.Ports)
if strings.Contains(opts.Ports, "-") {
params["PortRange"] = strings.ReplaceAll(opts.Ports, "-", "/")
}
}
case secrules.PROTO_ICMP:
params["IpProtocol"] = "icmp"
case secrules.PROTO_ANY:
params["IpProtocol"] = "all"
}
if opts.Priority > 0 {
params["Priority"] = fmt.Sprintf("%d", opts.Priority)
}
switch opts.Action {
case secrules.SecurityRuleAllow:
params["Policy"] = "accept"
case secrules.SecurityRuleDeny:
params["Policy"] = "drop"
}
action := "ModifySecurityGroupRule"
if direction == secrules.DIR_OUT {
switch direction {
case secrules.DIR_IN:
if len(opts.CIDR) > 0 {
if _, err := netutils.NewIPV6Prefix(opts.CIDR); err == nil {
params["Ipv6SourceCidrIp"] = opts.CIDR
} else {
params["SourceCidrIp"] = opts.CIDR
}
}
case secrules.DIR_OUT:
action = "ModifySecurityGroupEgressRule"
if len(opts.CIDR) > 0 {
if _, err := netutils.NewIPV6Prefix(opts.CIDR); err == nil {
params["Ipv6DestCidrIp"] = opts.CIDR
} else {
params["DestCidrIp"] = opts.CIDR
}
}
}
_, err := self.ecsRequest(action, params)
return err
-21
View File
@@ -361,27 +361,6 @@ func (self *SInstance) Refresh() error {
return jsonutils.Update(self, new)
}
/*
func (self *SInstance) GetRemoteStatus() string {
// Running:运行中
//Starting:启动中
//Stopping:停止中
//Stopped:已停止
switch self.Status {
case InstanceStatusRunning:
return cloudprovider.CloudVMStatusRunning
case InstanceStatusStarting:
return cloudprovider.CloudVMStatusStopped
case InstanceStatusStopping:
return cloudprovider.CloudVMStatusRunning
case InstanceStatusStopped:
return cloudprovider.CloudVMStatusStopped
default:
return cloudprovider.CloudVMStatusOther
}
}
*/
func (self *SInstance) GetHypervisor() string {
return api.HYPERVISOR_APSARA
}
+1 -1
View File
@@ -175,7 +175,7 @@ func (req *JsonBaseRequest) GetHttpMethod() THttpMethod {
}
func (req *JsonBaseRequest) GetRequestBody() jsonutils.JSONObject {
if req.params != nil {
if !gotypes.IsNil(req.params) {
return jsonutils.Marshal(req.params)
}
return nil