From 891a018bef6619067701d1439728b86d8865271c Mon Sep 17 00:00:00 2001 From: Rain Date: Thu, 9 Jan 2020 15:50:24 +0800 Subject: [PATCH] fix(esxi-agent): Avoid redundant agent & Adjust workspace path 1. There is only one esxi agent needed in OneCloud. 2. Workspace path shoule be EsxiAgentPath not the parent directory of this. 3. The VM name is too long for vcenter when importing VM so that shrink it. --- pkg/cloudcommon/agent/agent.go | 5 ++++- pkg/esxi/service/esxi_agent_service.go | 4 ++-- pkg/multicloud/esxi/storage.go | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/pkg/cloudcommon/agent/agent.go b/pkg/cloudcommon/agent/agent.go index 19047305c1..aac8b3f4ca 100644 --- a/pkg/cloudcommon/agent/agent.go +++ b/pkg/cloudcommon/agent/agent.go @@ -24,6 +24,7 @@ import ( "yunion.io/x/pkg/errors" "yunion.io/x/pkg/util/version" + api "yunion.io/x/onecloud/pkg/apis/compute" "yunion.io/x/onecloud/pkg/cloudcommon/agent/iagent" "yunion.io/x/onecloud/pkg/cloudcommon/object" "yunion.io/x/onecloud/pkg/hostman/storageman" @@ -234,7 +235,9 @@ func (agent *SBaseAgent) createOrUpdateBaremetalAgent(session *mcclient.ClientSe if err != nil { return err } - params.Add(jsonutils.NewString(naccessIP.String()), "access_ip") + if agent.IAgent().GetAgentType() != string(api.AgentTypeEsxi) { + params.Add(jsonutils.NewString(naccessIP.String()), "access_ip") + } params.Add(jsonutils.NewString(agent.IAgent().GetAgentType()), "agent_type") ret, err := modules.Baremetalagents.List(session, params) if err != nil { diff --git a/pkg/esxi/service/esxi_agent_service.go b/pkg/esxi/service/esxi_agent_service.go index 46d9dc125b..13f77f4614 100644 --- a/pkg/esxi/service/esxi_agent_service.go +++ b/pkg/esxi/service/esxi_agent_service.go @@ -44,7 +44,7 @@ func (s *SExsiAgentService) StartService() { options_common.ParseOptions(&options.Options, os.Args, "esxiagent.conf", "esxiagent") if len(options.Options.ImageCachePath) == 0 { - options.Options.ImageCachePath = filepath.Join(filepath.Dir(options.Options.EsxiAgentPath), "image_cache") + options.Options.ImageCachePath = filepath.Join(options.Options.EsxiAgentPath, "image_cache") log.Infof("No cachepath, use default %s", options.Options.ImageCachePath) err := os.MkdirAll(options.Options.ImageCachePath, 0760) if err != nil { @@ -52,7 +52,7 @@ func (s *SExsiAgentService) StartService() { } } if len(options.Options.AgentTempPath) == 0 { - options.Options.AgentTempPath = filepath.Join(filepath.Dir(options.Options.EsxiAgentPath), "agent_tmp") + options.Options.AgentTempPath = filepath.Join(options.Options.EsxiAgentPath, "agent_tmp") log.Infof("No agent temp path, use default %s", options.Options.AgentTempPath) err := os.MkdirAll(options.Options.AgentTempPath, 0760) if err != nil { diff --git a/pkg/multicloud/esxi/storage.go b/pkg/multicloud/esxi/storage.go index bdc691a331..310110d7af 100644 --- a/pkg/multicloud/esxi/storage.go +++ b/pkg/multicloud/esxi/storage.go @@ -766,7 +766,7 @@ func (self *SDatastore) domainName(name string) string { // ImportVMDK will upload local vmdk 'diskFile' to the 'remotePath' of remote datastore func (self *SDatastore) ImportVMDK(ctx context.Context, diskFile, remotePath string, host *SHost) error { - name := fmt.Sprintf("yunioncloud.%s%d", self.domainName(remotePath), rand.Int()) + name := fmt.Sprintf("yunioncloud.%s%d", self.domainName(remotePath)[:20], rand.Int()) vm, err := self.ImportVM(ctx, diskFile, name, host) if err != nil { return errors.Wrap(err, "SDatastore.ImportVM")