diff --git a/pkg/esxi/agent.go b/pkg/esxi/agent.go index 06cccc21c6..a889ba27ff 100644 --- a/pkg/esxi/agent.go +++ b/pkg/esxi/agent.go @@ -133,7 +133,6 @@ func Start(app *appsrv.Application) error { } func (agent *SEsxiAgent) AddImageCacheHandler(prefix string, app *appsrv.Application) { - hostutils.InitWorkerManager() app.AddHandler("POST", fmt.Sprintf("%s/disks/image_cache", prefix), auth.Authenticate(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { diff --git a/pkg/esxi/options/options.go b/pkg/esxi/options/options.go index 1f52f27b31..d0a5edbcee 100644 --- a/pkg/esxi/options/options.go +++ b/pkg/esxi/options/options.go @@ -19,18 +19,19 @@ import common_options "yunion.io/x/onecloud/pkg/cloudcommon/options" type EsxiOptions struct { common_options.CommonOptions - ListenInterface string `help:"Master address of host server" default:"br0"` - ListenAddress string `help:"Host serve IP address to select when multiple address bind to ListenInterface"` - EsxiAgentPath string `default:"/opt/cloud/workspace/esxi_agent" help:"Path for esxi agent configuration files"` - ImageCachePath string `help:"Path for storing image caches"` - ImageCacheLimit int `help:"Maximal storage space for image caching, in GB" default:"20"` - AgentTempPath string `help:"Path for ESXI Agent"` - AgentTempLimit int `help:"Maximal storage space for ESXi agent, in GB" default:"20"` - LinuxDefaultRootUser bool `help:"Default account for Linux system is root" default:"false"` - WindowsDefaultAdminUser bool `help:"Default account for Windows system is Administrator" default:"true"` - DefaultImageSaveFormat string `help:"Default image save format, default is vmdk, canbe qcow2" default:"vmdk"` - Zone string `help:"Zone where the agent locates"` - DeployServerSocketPath string `help:"Deploy server listen socket path" default:"/var/run/deploy.sock"` + ListenInterface string `help:"Master address of host server" default:"br0"` + ListenAddress string `help:"Host serve IP address to select when multiple address bind to ListenInterface"` + EsxiAgentPath string `default:"/opt/cloud/workspace/esxi_agent" help:"Path for esxi agent configuration files"` + ImageCachePath string `help:"Path for storing image caches"` + ImageCacheLimit int `help:"Maximal storage space for image caching, in GB" default:"20"` + AgentTempPath string `help:"Path for ESXI Agent"` + AgentTempLimit int `help:"Maximal storage space for ESXi agent, in GB" default:"20"` + LinuxDefaultRootUser bool `help:"Default account for Linux system is root" default:"false"` + WindowsDefaultAdminUser bool `help:"Default account for Windows system is Administrator" default:"true"` + DefaultImageSaveFormat string `help:"Default image save format, default is vmdk, canbe qcow2" default:"vmdk"` + Zone string `help:"Zone where the agent locates"` + DeployServerSocketPath string `help:"Deploy server listen socket path" default:"/var/run/deploy.sock"` + HostDelayTaskWorkerCount int `default:"8" help:"Host delay worker thread count, default is 8"` } var ( diff --git a/pkg/esxi/service/esxi_agent_service.go b/pkg/esxi/service/esxi_agent_service.go index 13f77f4614..1b84a42d30 100644 --- a/pkg/esxi/service/esxi_agent_service.go +++ b/pkg/esxi/service/esxi_agent_service.go @@ -30,6 +30,7 @@ import ( "yunion.io/x/onecloud/pkg/esxi/options" "yunion.io/x/onecloud/pkg/hostman/guestfs/fsdriver" "yunion.io/x/onecloud/pkg/hostman/hostdeployer/deployclient" + "yunion.io/x/onecloud/pkg/hostman/hostutils" ) type SExsiAgentService struct { @@ -70,6 +71,7 @@ func (s *SExsiAgentService) StartService() { fsdriver.Init(nil) deployclient.Init(options.Options.DeployServerSocketPath) + hostutils.InitWorkerManagerWithCount(options.Options.HostDelayTaskWorkerCount) app := app_common.InitApp(&options.Options.BaseOptions, false) handler.InitHandlers(app) diff --git a/pkg/hostman/hostutils/hostutils.go b/pkg/hostman/hostutils/hostutils.go index acb3a74273..06a8ae7251 100644 --- a/pkg/hostman/hostutils/hostutils.go +++ b/pkg/hostman/hostutils/hostutils.go @@ -189,7 +189,11 @@ func DelayTaskWithWorker( } func InitWorkerManager() { - wm = workmanager.NewWorkManger(TaskFailed, TaskComplete, options.HostOptions.DefaultRequestWorkerCount) + InitWorkerManagerWithCount(options.HostOptions.DefaultRequestWorkerCount) +} + +func InitWorkerManagerWithCount(count int) { + wm = workmanager.NewWorkManger(TaskFailed, TaskComplete, count) } func InitK8sWorkerManager() {