Commit 43771d91 authored by Mitchell Hashimoto's avatar Mitchell Hashimoto

Merge pull request #2271 from legal90/prl-default-settings

Parallels: Apply default settings on the VM creation step.
parents d9fceaf3 2860bfdf
...@@ -44,6 +44,9 @@ type Driver interface { ...@@ -44,6 +44,9 @@ type Driver interface {
// Send scancodes to the vm using the prltype python script. // Send scancodes to the vm using the prltype python script.
SendKeyScanCodes(string, ...string) error SendKeyScanCodes(string, ...string) error
// Apply default сonfiguration settings to the virtual machine
SetDefaultConfiguration(string) error
// Finds the MAC address of the NIC nic0 // Finds the MAC address of the NIC nic0
Mac(string) (string, error) Mac(string) (string, error)
......
...@@ -5,3 +5,27 @@ package common ...@@ -5,3 +5,27 @@ package common
type Parallels10Driver struct { type Parallels10Driver struct {
Parallels9Driver Parallels9Driver
} }
func (d *Parallels10Driver) SetDefaultConfiguration(vmName string) error {
commands := make([][]string, 12)
commands[0] = []string{"set", vmName, "--cpus", "1"}
commands[1] = []string{"set", vmName, "--memsize", "512"}
commands[2] = []string{"set", vmName, "--startup-view", "same"}
commands[3] = []string{"set", vmName, "--on-shutdown", "close"}
commands[4] = []string{"set", vmName, "--on-window-close", "keep-running"}
commands[5] = []string{"set", vmName, "--auto-share-camera", "off"}
commands[6] = []string{"set", vmName, "--smart-guard", "off"}
commands[7] = []string{"set", vmName, "--shared-cloud", "off"}
commands[8] = []string{"set", vmName, "--shared-profile", "off"}
commands[9] = []string{"set", vmName, "--smart-mount", "off"}
commands[10] = []string{"set", vmName, "--sh-app-guest-to-host", "off"}
commands[11] = []string{"set", vmName, "--sh-app-host-to-guest", "off"}
for _, command := range commands {
err := d.Prlctl(command...)
if err != nil {
return err
}
}
return nil
}
...@@ -255,6 +255,25 @@ func prepend(head string, tail []string) []string { ...@@ -255,6 +255,25 @@ func prepend(head string, tail []string) []string {
return tmp return tmp
} }
func (d *Parallels9Driver) SetDefaultConfiguration(vmName string) error {
commands := make([][]string, 7)
commands[0] = []string{"set", vmName, "--cpus", "1"}
commands[1] = []string{"set", vmName, "--memsize", "512"}
commands[2] = []string{"set", vmName, "--startup-view", "same"}
commands[3] = []string{"set", vmName, "--on-shutdown", "close"}
commands[4] = []string{"set", vmName, "--on-window-close", "keep-running"}
commands[5] = []string{"set", vmName, "--auto-share-camera", "off"}
commands[6] = []string{"set", vmName, "--smart-guard", "off"}
for _, command := range commands {
err := d.Prlctl(command...)
if err != nil {
return err
}
}
return nil
}
func (d *Parallels9Driver) Mac(vmName string) (string, error) { func (d *Parallels9Driver) Mac(vmName string) (string, error) {
var stdout bytes.Buffer var stdout bytes.Buffer
......
...@@ -23,38 +23,34 @@ func (s *stepCreateVM) Run(state multistep.StateBag) multistep.StepAction { ...@@ -23,38 +23,34 @@ func (s *stepCreateVM) Run(state multistep.StateBag) multistep.StepAction {
ui := state.Get("ui").(packer.Ui) ui := state.Get("ui").(packer.Ui)
name := config.VMName name := config.VMName
commands := make([][]string, 8) command := []string{
commands[0] = []string{
"create", name, "create", name,
"--distribution", config.GuestOSType, "--distribution", config.GuestOSType,
"--dst", config.OutputDir, "--dst", config.OutputDir,
"--vmtype", "vm", "--vmtype", "vm",
"--no-hdd", "--no-hdd",
} }
commands[1] = []string{"set", name, "--cpus", "1"}
commands[2] = []string{"set", name, "--memsize", "512"}
commands[3] = []string{"set", name, "--startup-view", "same"}
commands[4] = []string{"set", name, "--on-shutdown", "close"}
commands[5] = []string{"set", name, "--on-window-close", "keep-running"}
commands[6] = []string{"set", name, "--auto-share-camera", "off"}
commands[7] = []string{"set", name, "--smart-guard", "off"}
ui.Say("Creating virtual machine...") ui.Say("Creating virtual machine...")
for _, command := range commands { if err := driver.Prlctl(command...); err != nil {
err := driver.Prlctl(command...)
ui.Say(fmt.Sprintf("Executing: prlctl %s", command))
if err != nil {
err := fmt.Errorf("Error creating VM: %s", err) err := fmt.Errorf("Error creating VM: %s", err)
state.Put("error", err) state.Put("error", err)
ui.Error(err.Error()) ui.Error(err.Error())
return multistep.ActionHalt return multistep.ActionHalt
} }
ui.Say("Applying default settings...")
if err := driver.SetDefaultConfiguration(name); err != nil {
err := fmt.Errorf("Error VM configuration: %s", err)
state.Put("error", err)
ui.Error(err.Error())
return multistep.ActionHalt
}
// Set the VM name property on the first command // Set the VM name property on the first command
if s.vmName == "" { if s.vmName == "" {
s.vmName = name s.vmName = name
} }
}
// Set the final name in the state bag so others can use it // Set the final name in the state bag so others can use it
state.Put("vmName", s.vmName) state.Put("vmName", s.vmName)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment