Merge branch 'matthbak-master'

This commit is contained in:
Mitchell Hashimoto 2014-09-02 09:24:40 -07:00
commit 9a032c8e74
3 changed files with 17 additions and 8 deletions

View File

@ -26,6 +26,7 @@ var netDevice = map[string]bool{
"pcnet": true, "pcnet": true,
"virtio": true, "virtio": true,
"virtio-net": true, "virtio-net": true,
"virtio-net-pci": true,
"usb-net": true, "usb-net": true,
"i82559a": true, "i82559a": true,
"i82559b": true, "i82559b": true,
@ -255,9 +256,9 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) {
errs, errors.New("invalid format, only 'qcow2' or 'raw' are allowed")) errs, errors.New("invalid format, only 'qcow2' or 'raw' are allowed"))
} }
if !(b.config.Accelerator == "kvm" || b.config.Accelerator == "xen") { if !(b.config.Accelerator == "kvm" || b.config.Accelerator == "xen" || b.config.Accelerator == "none") {
errs = packer.MultiErrorAppend( errs = packer.MultiErrorAppend(
errs, errors.New("invalid format, only 'kvm' or 'xen' are allowed")) errs, errors.New("invalid format, only 'kvm' or 'xen' or 'none' are allowed"))
} }
if _, ok := netDevice[b.config.NetDevice]; !ok { if _, ok := netDevice[b.config.NetDevice]; !ok {

View File

@ -61,23 +61,23 @@ func getCommandArgs(bootDrive string, state multistep.StateBag) ([]string, error
sshHostPort := state.Get("sshHostPort").(uint) sshHostPort := state.Get("sshHostPort").(uint)
ui := state.Get("ui").(packer.Ui) ui := state.Get("ui").(packer.Ui)
guiArgument := "sdl"
vnc := fmt.Sprintf("0.0.0.0:%d", vncPort-5900) vnc := fmt.Sprintf("0.0.0.0:%d", vncPort-5900)
vmName := config.VMName vmName := config.VMName
imgPath := filepath.Join(config.OutputDir, imgPath := filepath.Join(config.OutputDir,
fmt.Sprintf("%s.%s", vmName, strings.ToLower(config.Format))) fmt.Sprintf("%s.%s", vmName, strings.ToLower(config.Format)))
defaultArgs := make(map[string]string)
if config.Headless == true { if config.Headless == true {
ui.Message("WARNING: The VM will be started in headless mode, as configured.\n" + ui.Message("WARNING: The VM will be started in headless mode, as configured.\n" +
"In headless mode, errors during the boot sequence or OS setup\n" + "In headless mode, errors during the boot sequence or OS setup\n" +
"won't be easily visible. Use at your own discretion.") "won't be easily visible. Use at your own discretion.")
guiArgument = "none" } else {
defaultArgs["-display"] = "sdl"
} }
defaultArgs := make(map[string]string)
defaultArgs["-name"] = vmName defaultArgs["-name"] = vmName
defaultArgs["-machine"] = fmt.Sprintf("type=%s,accel=%s", config.MachineType, config.Accelerator) defaultArgs["-machine"] = fmt.Sprintf("type=%s", config.MachineType)
defaultArgs["-display"] = guiArgument
defaultArgs["-netdev"] = "user,id=user.0" defaultArgs["-netdev"] = "user,id=user.0"
defaultArgs["-device"] = fmt.Sprintf("%s,netdev=user.0", config.NetDevice) defaultArgs["-device"] = fmt.Sprintf("%s,netdev=user.0", config.NetDevice)
defaultArgs["-drive"] = fmt.Sprintf("file=%s,if=%s", imgPath, config.DiskInterface) defaultArgs["-drive"] = fmt.Sprintf("file=%s,if=%s", imgPath, config.DiskInterface)
@ -87,6 +87,14 @@ func getCommandArgs(bootDrive string, state multistep.StateBag) ([]string, error
defaultArgs["-redir"] = fmt.Sprintf("tcp:%v::22", sshHostPort) defaultArgs["-redir"] = fmt.Sprintf("tcp:%v::22", sshHostPort)
defaultArgs["-vnc"] = vnc defaultArgs["-vnc"] = vnc
// Append the accelerator to the machine type if it is specified
if config.Accelerator != "none" {
defaultArgs["-machine"] += fmt.Sprintf(",accel=%s", config.Accelerator)
} else {
ui.Message("WARNING: The VM will be started with no hardware acceleration.\n" +
"The installation may take considerably longer to finish.\n")
}
// Determine if we have a floppy disk to attach // Determine if we have a floppy disk to attach
if floppyPathRaw, ok := state.GetOk("floppy_path"); ok { if floppyPathRaw, ok := state.GetOk("floppy_path"); ok {
defaultArgs["-fda"] = floppyPathRaw.(string) defaultArgs["-fda"] = floppyPathRaw.(string)

View File

@ -92,7 +92,7 @@ each category, the available options are alphabetized and described.
### Optional: ### Optional:
* `accelerator` (string) - The accelerator type to use when running the VM. * `accelerator` (string) - The accelerator type to use when running the VM.
This may have a value of either "kvm" or "xen" and you must have that This may have a value of either "none", "kvm", or "xen" and you must have that
support in on the machine on which you run the builder. support in on the machine on which you run the builder.
* `boot_command` (array of strings) - This is an array of commands to type * `boot_command` (array of strings) - This is an array of commands to type