From 3d329d741230c41ddc873fd54df81e0c8c719e05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Thu, 21 Sep 2023 20:50:24 +0800 Subject: [PATCH] fix(esxi-agent): vmware hostname (#18122) --- go.mod | 2 +- go.sum | 4 +-- vendor/modules.txt | 2 +- .../pkg/multicloud/esxi/virtualmachine.go | 26 ++++++++++++++----- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index 16479b0558..cd17ffb217 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.20230920120331-bc6c02f3d5dc + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230921121036-ab3056658f2f yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 yunion.io/x/jsonutils v1.0.1-0.20230613121553-0f3b41e2ef19 yunion.io/x/log v1.0.1-0.20230411060016-feb3f46ab361 diff --git a/go.sum b/go.sum index 00fbba1c6d..b1d7c6b1f8 100644 --- a/go.sum +++ b/go.sum @@ -1174,8 +1174,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.20230920120331-bc6c02f3d5dc h1:EsuxH+yW4w0taqZMGD8AZVFspx5rI0LAqKuqFE6J0tU= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230920120331-bc6c02f3d5dc/go.mod h1:2sgCN7nRPQL3woLfdgqLDd92vwAHqtlz3KKiHxC5BAw= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230921121036-ab3056658f2f h1:BDjzB7nOkoLxEdcTiIUFoocafFaIEulvAnxi5grRycY= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230921121036-ab3056658f2f/go.mod h1:2sgCN7nRPQL3woLfdgqLDd92vwAHqtlz3KKiHxC5BAw= 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 07dc272444..088ce50df4 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1432,7 +1432,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.20230920120331-bc6c02f3d5dc +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230921121036-ab3056658f2f ## 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/virtualmachine.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/virtualmachine.go index 8e32afbf6f..77937dd304 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/virtualmachine.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/virtualmachine.go @@ -21,6 +21,7 @@ import ( "sort" "strings" "time" + "unicode" "github.com/vmware/govmomi/nfc" "github.com/vmware/govmomi/object" @@ -1408,20 +1409,30 @@ func (svm *SVirtualMachine) DoCustomize(ctx context.Context, params jsonutils.JS spec.NicSettingMap = maps var ( - osName string - name = "yunionhost" + osName string + name = "yunionhost" + hostname = name ) if params.Contains("os_name") { osName, _ = params.GetString("os_name") } if params.Contains("name") { name, _ = params.GetString("name") + hostname = name + } + if params.Contains("hostname") { + hostname, _ = params.GetString("hostname") } // avoid spec.identity.hostName error - hostname := strings.ReplaceAll(name, "_", "") - if len(hostname) > 15 { - hostname = hostname[:15] - } + hostname = func() string { + ret := "" + for _, s := range hostname { + if unicode.IsDigit(s) || unicode.IsLetter(s) || s == '-' { + ret += string(s) + } + } + return ret + }() if osName == "Linux" { linuxPrep := types.CustomizationLinuxPrep{ HostName: &types.CustomizationFixedName{Name: hostname}, @@ -1430,6 +1441,9 @@ func (svm *SVirtualMachine) DoCustomize(ctx context.Context, params jsonutils.JS } spec.Identity = &linuxPrep } else if osName == "Windows" { + if len(hostname) > 15 { + hostname = hostname[:15] + } sysPrep := types.CustomizationSysprep{ GuiUnattended: types.CustomizationGuiUnattended{ TimeZone: 210,