From 77efa9585642c0800cff1bb6a80e8f60b7a1da55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Thu, 27 Feb 2025 14:49:24 +0800 Subject: [PATCH] fix(esxi-agent): vendor update (#22203) --- go.mod | 2 +- go.sum | 4 ++-- pkg/hostman/storageman/storage_agent.go | 4 +++- vendor/modules.txt | 2 +- .../x/cloudmux/pkg/multicloud/esxi/devtools.go | 1 + .../x/cloudmux/pkg/multicloud/esxi/host.go | 5 +++++ .../x/cloudmux/pkg/multicloud/esxi/vdisk.go | 2 +- .../cloudmux/pkg/multicloud/esxi/virtualmachine.go | 13 ++++++++++--- 8 files changed, 24 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 1ee7cb2067..552210f8ef 100644 --- a/go.mod +++ b/go.mod @@ -87,7 +87,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.20250225101418-162e21a39499 + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250227042131-f593167ee17c yunion.io/x/executor v0.0.0-20241205080005-48f5b1212256 yunion.io/x/jsonutils v1.0.1-0.20240930100528-1671a2d0d22f yunion.io/x/log v1.0.1-0.20240305175729-7cf2d6cd5a91 diff --git a/go.sum b/go.sum index b93395c353..e5ed81cc29 100644 --- a/go.sum +++ b/go.sum @@ -1274,8 +1274,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.20250225101418-162e21a39499 h1:+Hzzk52JkHCyLlPWASkn+t7TWve2zRbnLj5VEEjF4JM= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250225101418-162e21a39499/go.mod h1:KQ/jWx7bZlmjCE711KEWuvHW/dzpdr/UTlBjjutkj0Y= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250227042131-f593167ee17c h1:hzn/h8hXzDdecs6fJ6ZU/qq1HRg8M2ovEle0n80q7Tg= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250227042131-f593167ee17c/go.mod h1:KQ/jWx7bZlmjCE711KEWuvHW/dzpdr/UTlBjjutkj0Y= yunion.io/x/executor v0.0.0-20241205080005-48f5b1212256 h1:kLKQ6zbgPDQflRwoHFAjxNChcbhXIFgsUVLkJwiXu/8= yunion.io/x/executor v0.0.0-20241205080005-48f5b1212256/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws= yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634= diff --git a/pkg/hostman/storageman/storage_agent.go b/pkg/hostman/storageman/storage_agent.go index 201457939e..73af4b74c1 100644 --- a/pkg/hostman/storageman/storage_agent.go +++ b/pkg/hostman/storageman/storage_agent.go @@ -125,12 +125,14 @@ func (as *SAgentStorage) agentRebuildRoot(ctx context.Context, data jsonutils.JS return errors.Wrap(hostutils.ParamsError, "agentRebuildRoot data.desc.disks is empty") } imagePath := rp.Desc.Disks[0].ImagePath + uefi := false var newPath string if len(imagePath) == 0 { vm, err := host.SearchTemplateVM(rp.Desc.Disks[0].ImageInfo.ImageExternalId) if err != nil { return errors.Wrapf(err, "SearchTemplateVM(%s)", rp.Desc.Disks[0].ImageInfo.ImageExternalId) } + uefi = vm.GetBios() == cloudprovider.UEFI newPath, err = vm.GetRootImagePath() if err != nil { return errors.Wrapf(err, "GetRootImagePath") @@ -143,7 +145,7 @@ func (as *SAgentStorage) agentRebuildRoot(ctx context.Context, data jsonutils.JS } diskId := rp.Desc.Disks[0].DiskId vm := ivm.(*esxi.SVirtualMachine) - return vm.DoRebuildRoot(ctx, newPath, diskId) + return vm.DoRebuildRoot(ctx, newPath, diskId, uefi) } func (as *SAgentStorage) agentCreateGuest(ctx context.Context, data *jsonutils.JSONDict) (bool, error) { diff --git a/vendor/modules.txt b/vendor/modules.txt index d006833630..77d0f9a0ef 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1576,7 +1576,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.20250225101418-162e21a39499 +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20250227042131-f593167ee17c ## explicit; go 1.21 yunion.io/x/cloudmux/pkg/apis yunion.io/x/cloudmux/pkg/apis/billing diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/devtools.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/devtools.go index 95194fa9fb..f277cc1353 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/devtools.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/devtools.go @@ -26,6 +26,7 @@ import ( ) type SDiskConfig struct { + Uefi bool SizeMb int64 Uuid string ControllerKey int32 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 4c46942987..dba6730940 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/host.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/host.go @@ -1335,6 +1335,11 @@ func (host *SHost) CloneVM(ctx context.Context, from *SVirtualMachine, snapshot MemoryHotAddEnabled: &True, ExtraConfig: []types.BaseOptionValue{}, + + Firmware: "bios", + } + if from.GetBios() == cloudprovider.UEFI { + spec.Firmware = "efi" } if !params.EnableEsxiSwap { spec.ExtraConfig = append(spec.ExtraConfig, &types.OptionValue{ diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/vdisk.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/vdisk.go index 0c314b0807..2f6f7d0d13 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/vdisk.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/vdisk.go @@ -569,7 +569,7 @@ func (disk *SVirtualDisk) GetExpiredAt() time.Time { } func (disk *SVirtualDisk) Rebuild(ctx context.Context) error { - return disk.vm.rebuildDisk(ctx, disk, "") + return disk.vm.rebuildDisk(ctx, disk, "", false) } func (disk *SVirtualDisk) GetProjectId() string { diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/virtualmachine.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/virtualmachine.go index 93cbc86fa4..2ea64b2a19 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/virtualmachine.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/virtualmachine.go @@ -289,14 +289,14 @@ func (svm *SVirtualMachine) RebuildRoot(ctx context.Context, desc *cloudprovider return "", cloudprovider.ErrNotImplemented } -func (svm *SVirtualMachine) DoRebuildRoot(ctx context.Context, imagePath string, uuid string) error { +func (svm *SVirtualMachine) DoRebuildRoot(ctx context.Context, imagePath string, uuid string, uefi bool) error { if len(svm.vdisks) == 0 { return errors.Wrapf(errors.ErrNotFound, "empty vdisks") } - return svm.rebuildDisk(ctx, &svm.vdisks[0], imagePath) + return svm.rebuildDisk(ctx, &svm.vdisks[0], imagePath, uefi) } -func (svm *SVirtualMachine) rebuildDisk(ctx context.Context, disk *SVirtualDisk, imagePath string) error { +func (svm *SVirtualMachine) rebuildDisk(ctx context.Context, disk *SVirtualDisk, imagePath string, uefi bool) error { uuid := disk.GetId() sizeMb := disk.GetDiskSizeMB() diskKey := disk.getKey() @@ -308,6 +308,7 @@ func (svm *SVirtualMachine) rebuildDisk(ctx context.Context, disk *SVirtualDisk, return err } return svm.createDiskInternal(ctx, SDiskConfig{ + Uefi: uefi, SizeMb: int64(sizeMb), Uuid: uuid, ControllerKey: ctlKey, @@ -1240,6 +1241,12 @@ func (svm *SVirtualMachine) createDiskWithDeviceChange(ctx context.Context, devi } configSpec := types.VirtualMachineConfigSpec{} configSpec.DeviceChange = append(deviceChange, spec) + if config.IsRoot { + configSpec.Firmware = "bios" + if config.Uefi { + configSpec.Firmware = "efi" + } + } vmObj := svm.getVmObj()