From dd5dc038cd4c5679e537ee353601ea8010413da2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Wed, 24 Dec 2025 19:45:10 +0800 Subject: [PATCH] fix(region): vendor update (#23994) --- go.mod | 2 +- go.sum | 4 +- pkg/compute/options/options.go | 2 + vendor/modules.txt | 2 +- .../x/cloudmux/pkg/cloudprovider/instance.go | 4 ++ .../cloudmux/pkg/multicloud/aws/aws_invoke.go | 27 ++++++++++-- .../pkg/multicloud/aws/aws_request.go | 44 +++++++++++++++++-- .../x/cloudmux/pkg/multicloud/ksyun/host.go | 4 ++ 8 files changed, 78 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index 5026555e99..e3ff9e13d6 100644 --- a/go.mod +++ b/go.mod @@ -98,7 +98,7 @@ require ( k8s.io/cri-api v0.28.15 k8s.io/klog/v2 v2.20.0 moul.io/http2curl/v2 v2.3.0 - yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251205085801-178d14a173e0 + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251224112641-a56dd685232b 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 diff --git a/go.sum b/go.sum index 0b18b71197..436e8bb4c2 100644 --- a/go.sum +++ b/go.sum @@ -1661,8 +1661,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.20251205085801-178d14a173e0 h1:qCGkj0FDYNdWVUlD2RXsp5FMPCfJjri6E6djUDItWz8= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251205085801-178d14a173e0/go.mod h1:aWRX5Phwz3nbHUNnIAm1oVogjguXPYDDgCOy/9Hnnvk= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251224112641-a56dd685232b h1:LjRozyb00R7cbBFQFr0zrB9iN4IbJNXXepXfM1M0YcE= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251224112641-a56dd685232b/go.mod h1:aWRX5Phwz3nbHUNnIAm1oVogjguXPYDDgCOy/9Hnnvk= 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= diff --git a/pkg/compute/options/options.go b/pkg/compute/options/options.go index 96b82261dd..48351d483e 100644 --- a/pkg/compute/options/options.go +++ b/pkg/compute/options/options.go @@ -240,6 +240,8 @@ type ComputeOptions struct { SkipSyncHostConfigInfoProviders string `help:"Skip sync host cpu and mem config by provider"` SkipSyncStorageConfigInfoProviders string `help:"Skip sync storage capacity and media type config by provider"` + KsyunPostpaidChargeType string `help:"Ksyun server postpaid charge type" choices:"Daily|HourlyInstantSettlement"` + esxi.EsxiOptions NetworkAlwaysManualConfig bool `help:"always manually configure network settings" default:"false"` diff --git a/vendor/modules.txt b/vendor/modules.txt index 9d779aa005..ec6097a4a6 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -2243,7 +2243,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.20251205085801-178d14a173e0 +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251224112641-a56dd685232b ## explicit; go 1.24 yunion.io/x/cloudmux/pkg/apis yunion.io/x/cloudmux/pkg/apis/billing diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/instance.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/instance.go index a7078cae1e..b59d931e22 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/instance.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/instance.go @@ -161,6 +161,10 @@ type SManagedVMCreateConfig struct { ProjectId string EnableMonitorAgent bool + // 金山云按量付费类型 + // Daily(按量付费(按日月结))、 HourlyInstantSettlement(按量付费(按小时月结)) + KsyunPostpaidChargeType string + SPublicIpInfo Tags map[string]string diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/aws_invoke.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/aws_invoke.go index 8639aaa202..6a9ba2b6c6 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/aws_invoke.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/aws_invoke.go @@ -17,6 +17,7 @@ package aws import ( "io/ioutil" "strings" + "time" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" @@ -122,15 +123,35 @@ func jsonInvoke(cli *client.Client, apiName, path string, params map[string]inte }, } + isQuery := false + for _, prefix := range []string{"List", "Describe", "Get"} { + if strings.HasPrefix(apiName, prefix) { + isQuery = true + break + } + } + var err error + + retry := 1 + if isQuery { + retry = 3 + } req := cli.NewRequest(op, params, retval) - err := req.Send() - if err != nil { + for i := 0; i < retry; i++ { + err = req.Send() + if err == nil { + return nil + } if e, ok := err.(awserr.RequestFailure); ok && e.StatusCode() == 404 { return cloudprovider.ErrNotFound } + if isHTTPReqErrorRetryable(err) { + time.Sleep(time.Second * 10) + continue + } return err } - return nil + return err } var JsonBuildHandler = request.NamedHandler{ diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/aws_request.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/aws_request.go index 2f9a3f08ab..8a9b9d8fe0 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/aws_request.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/aws/aws_request.go @@ -21,6 +21,7 @@ import ( "io/ioutil" "net/url" "strings" + "time" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" @@ -268,7 +269,13 @@ func (self *SAwsClient) request(regionId, serviceName, serviceId, apiVersion str } func jsonRequest(cli *client.Client, apiName string, params map[string]string, retval interface{}) error { - method, path := "POST", "/" + method, path, isQuery := "POST", "/", false + for _, prefix := range []string{"List", "Get", "Describe"} { + if strings.HasPrefix(apiName, prefix) { + isQuery = true + break + } + } if cli.ServiceID == CDN_SERVICE_ID { for _, prefix := range []string{"List", "Get"} { if strings.HasPrefix(apiName, prefix) { @@ -343,12 +350,41 @@ func jsonRequest(cli *client.Client, apiName string, params map[string]string, r } req := cli.NewRequest(op, params, retval) - err := req.Send() - if err != nil { + retry := 1 + if isQuery { + retry = 3 + } + var err error + for i := 0; i < retry; i++ { + err = req.Send() + if err == nil { + return nil + } if e, ok := err.(awserr.RequestFailure); ok && e.StatusCode() == 404 { return cloudprovider.ErrNotFound } + if isHTTPReqErrorRetryable(err) { + time.Sleep(time.Second * 10) + continue + } return err } - return nil + return err +} + +func isHTTPReqErrorRetryable(err error) bool { + for _, code := range []string{ + "EOF", + "i/o timeout", + "TLS handshake timeout", + "Client.Timeout exceeded while awaiting headers", + "connection reset by peer", + "context deadline exceeded", + "server misbehaving", + } { + if strings.Contains(err.Error(), code) { + return true + } + } + return false } diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/ksyun/host.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/ksyun/host.go index 65fa9318fc..5c4749cf77 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/ksyun/host.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/ksyun/host.go @@ -22,6 +22,7 @@ import ( "yunion.io/x/cloudmux/pkg/cloudprovider" "yunion.io/x/cloudmux/pkg/multicloud" "yunion.io/x/pkg/errors" + "yunion.io/x/pkg/utils" "yunion.io/x/jsonutils" ) @@ -92,6 +93,9 @@ func (region *SRegion) CreateVM(opts *cloudprovider.SManagedVMCreateConfig) (*SI "SystemDisk.DiskSize": fmt.Sprintf("%d", opts.SysDisk.SizeGB), "SyncTag": "true", } + if utils.IsInStringArray(opts.KsyunPostpaidChargeType, []string{"HourlyInstantSettlement", "Daily"}) { + params["ChargeType"] = opts.KsyunPostpaidChargeType + } if len(opts.Hostname) > 0 { params["HostName"] = opts.Hostname }