From c7ac4898ed84c1f61f64e602a2306765b6811227 Mon Sep 17 00:00:00 2001 From: zheng chai Date: Tue, 24 Mar 2020 23:21:35 +0800 Subject: [PATCH] Add options to configure vCPU numbers for XVA builders also. Signed-off-by: zheng chai --- builder/xenserver/xva/builder.go | 13 +++++++++++++ builder/xenserver/xva/step_import_instance.go | 12 ++++++++++++ 2 files changed, 25 insertions(+) diff --git a/builder/xenserver/xva/builder.go b/builder/xenserver/xva/builder.go index 278bef1..d5781ab 100644 --- a/builder/xenserver/xva/builder.go +++ b/builder/xenserver/xva/builder.go @@ -21,6 +21,8 @@ type config struct { xscommon.CommonConfig `mapstructure:",squash"` SourcePath string `mapstructure:"source_path"` + VCPUsMax uint `mapstructure:"vcpus_max"` + VCPUsAtStartup uint `mapstructure:"vcpus_atstartup"` VMMemory uint `mapstructure:"vm_memory"` PlatformArgs map[string]string `mapstructure:"platform_args"` @@ -54,6 +56,17 @@ func (self *Builder) Prepare(raws ...interface{}) (params []string, retErr error errs, self.config.CommonConfig.Prepare(&self.config.ctx, &self.config.PackerConfig)...) // Set default values + if self.config.VCPUsMax == 0 { + self.config.VCPUsMax = 1 + } + + if self.config.VCPUsAtStartup == 0 { + self.config.VCPUsAtStartup = 1 + } + + if self.config.VCPUsAtStartup > self.config.VCPUsMax { + self.config.VCPUsAtStartup = self.config.VCPUsMax + } if self.config.VMMemory == 0 { self.config.VMMemory = 1024 diff --git a/builder/xenserver/xva/step_import_instance.go b/builder/xenserver/xva/step_import_instance.go index 0a734b7..5d7078a 100644 --- a/builder/xenserver/xva/step_import_instance.go +++ b/builder/xenserver/xva/step_import_instance.go @@ -60,6 +60,18 @@ func (self *stepImportInstance) Run(state multistep.StateBag) multistep.StepActi } state.Put("instance_uuid", instanceId) + err = instance.SetVCPUsMax(config.VCPUsMax) + if err != nil { + ui.Error(fmt.Sprintf("Error setting VM VCPUs Max=%d: %s", config.VCPUsMax, err.Error())) + return multistep.ActionHalt + } + + err = instance.SetVCPUsAtStartup(config.VCPUsAtStartup) + if err != nil { + ui.Error(fmt.Sprintf("Error setting VM VCPUs At Startup=%d: %s", config.VCPUsAtStartup, err.Error())) + return multistep.ActionHalt + } + instance.SetDescription(config.VMDescription) if err != nil { ui.Error(fmt.Sprintf("Error setting VM description: %s", err.Error()))