From 0b11ee0281c376b8fd77f6cf589cf5b8e31dea1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Thu, 14 Mar 2024 15:54:08 +0800 Subject: [PATCH] fix(esxi-agent): create vmware vm with suitable version (#19725) --- go.mod | 4 +- go.sum | 6 +-- vendor/modules.txt | 2 +- .../x/cloudmux/pkg/multicloud/esxi/host.go | 41 +++++++++++++++++-- 4 files changed, 42 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index 1b886fa191..6549d1b20b 100644 --- a/go.mod +++ b/go.mod @@ -66,6 +66,7 @@ require ( github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74 github.com/vmihailenco/msgpack v4.0.4+incompatible github.com/xuri/excelize/v2 v2.7.1 + github.com/zexi/golosetup v0.0.1 github.com/zexi/influxql-to-metricsql v0.0.6 go.etcd.io/etcd/api/v3 v3.5.0 go.etcd.io/etcd/client/v3 v3.5.0 @@ -89,7 +90,7 @@ require ( k8s.io/cluster-bootstrap v0.19.3 k8s.io/cri-api v0.22.17 moul.io/http2curl/v2 v2.3.0 - yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240308095621-979378c55149 + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240314033843-5935078cc5c5 yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 yunion.io/x/jsonutils v1.0.1-0.20240203102553-4096f103b401 yunion.io/x/log v1.0.1-0.20240305175729-7cf2d6cd5a91 @@ -249,7 +250,6 @@ require ( github.com/xuri/efp v0.0.0-20220603152613-6918739fd470 // indirect github.com/xuri/nfp v0.0.0-20220409054826-5e722a1d9e22 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect - github.com/zexi/golosetup v0.0.1 // indirect go.etcd.io/etcd/client/pkg/v3 v3.5.0 // indirect go.opencensus.io v0.22.4 // indirect go.uber.org/atomic v1.7.0 // indirect diff --git a/go.sum b/go.sum index 1a176913e0..0e98bbe686 100644 --- a/go.sum +++ b/go.sum @@ -753,8 +753,6 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -github.com/zexi/golosetup v0.0.0-20181117053200-8c308e8bbf44 h1:t8QkjgKJTQyJT7/MJJgAdRGt316wkQ0Ar3poFd1E0X0= -github.com/zexi/golosetup v0.0.0-20181117053200-8c308e8bbf44/go.mod h1:uswjAAGley+FRw3bgWor83twfO8Ru6owCpic+Xnh2Xo= github.com/zexi/golosetup v0.0.1 h1:y7RRI/2xqzR2ByO3a2QTARUp5ivbC5R6zFXEx2WrInA= github.com/zexi/golosetup v0.0.1/go.mod h1:U4bxWs+J/Kq1/pyRHBCOk2FzqO+AYA4GTzrwgeDmWvY= github.com/zexi/influxql-to-metricsql v0.0.6 h1:E16T4oqgjIJtSNVvhGGHnw+pmY3yGz2iRsmmmSVuOpY= @@ -1214,8 +1212,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.20240308095621-979378c55149 h1:Dl+rEbNcuy76Lou3/C2U5bDKSsVB9GyFQJXkIh8ORzo= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240308095621-979378c55149/go.mod h1:dsUESXIbXJ+/ywbNClhldOrbPOiBi2udrgOnB/ffoWk= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240314033843-5935078cc5c5 h1:MFldLYXlTgTx5cdQ2k1Id4Uj2lP3h1lkay0tVdbR17A= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240314033843-5935078cc5c5/go.mod h1:dsUESXIbXJ+/ywbNClhldOrbPOiBi2udrgOnB/ffoWk= yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 h1:v7POYkQwo1XzOxBoIoRVr/k0V9Y5JyjpshlIFa9raug= yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32/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 11bbf8a4a4..305946a239 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1480,7 +1480,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.20240308095621-979378c55149 +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240314033843-5935078cc5c5 ## 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/multicloud/esxi/host.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/host.go index 36f03fc7b5..bb907c5d29 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/host.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/host.go @@ -1052,10 +1052,7 @@ func (host *SHost) DoCreateVM(ctx context.Context, ds *SDatastore, params SCreat guestId = "windows7Server64Guest" } - version := "vmx-10" - if host.isVersion50() { - version = "vmx-08" - } + version := host.getVmVersion() if params.CpuSockets == 0 { params.CpuSockets = 1 @@ -1433,6 +1430,19 @@ func (host *SHost) CloneVM(ctx context.Context, from *SVirtualMachine, snapshot return vm, nil } } + + task, err = vm.getVmObj().UpgradeVM(ctx, host.getVmVersion()) + if err != nil { + log.Errorf("upgrade vm %s error: %v", vm.GetName(), err) + return vm, nil + } + + err = task.Wait(ctx) + if err != nil { + log.Errorf("wait vm %s upgrade error: %v", vm.GetName(), err) + return vm, nil + } + return vm, nil } @@ -1457,6 +1467,29 @@ func (host *SHost) isVersion50() bool { return false } +func (host *SHost) getVmVersion() string { + ver := func() string { + version := host.GetVersion() + if len(version) >= 3 { + return version[:3] + } + return version + }() + version, ok := map[string]string{ + "5.0": "vmx-08", + "5.1": "vmx-09", + "5.5": "vmx-10", + "6.0": "vmx-11", + "6.5": "vmx-13", + "6.7": "vmx-14", + "7.0": "vmx-17", + }[ver] + if ok { + return version + } + return "vmx-10" +} + func (host *SHost) GetIHostNics() ([]cloudprovider.ICloudHostNetInterface, error) { nics, err := host.GetIHostNicsInternal(false) if err != nil {