|
|
|
|
@ -5,6 +5,7 @@ import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"log"
|
|
|
|
|
|
|
|
|
|
"github.com/hashicorp/packer/common"
|
|
|
|
|
"github.com/hashicorp/packer/helper/multistep"
|
|
|
|
|
"github.com/hashicorp/packer/packer"
|
|
|
|
|
)
|
|
|
|
|
@ -12,6 +13,7 @@ import (
|
|
|
|
|
type StepRun struct {
|
|
|
|
|
GuiCancelFunc context.CancelFunc
|
|
|
|
|
Headless bool
|
|
|
|
|
SwitchName string
|
|
|
|
|
vmName string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -20,17 +22,17 @@ func (s *StepRun) Run(ctx context.Context, state multistep.StateBag) multistep.S
|
|
|
|
|
ui := state.Get("ui").(packer.Ui)
|
|
|
|
|
vmName := state.Get("vmName").(string)
|
|
|
|
|
|
|
|
|
|
ui.Say("Starting the virtual machine...")
|
|
|
|
|
|
|
|
|
|
err := driver.Start(vmName)
|
|
|
|
|
ui.Say("Determine Host IP for HyperV machine...")
|
|
|
|
|
hostIp, err := driver.GetHostAdapterIpAddressForSwitch(s.SwitchName)
|
|
|
|
|
if err != nil {
|
|
|
|
|
err := fmt.Errorf("Error starting vm: %s", err)
|
|
|
|
|
err := fmt.Errorf("Error getting host adapter ip address: %s", err)
|
|
|
|
|
state.Put("error", err)
|
|
|
|
|
ui.Error(err.Error())
|
|
|
|
|
return multistep.ActionHalt
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
s.vmName = vmName
|
|
|
|
|
ui.Say(fmt.Sprintf("Host IP for the HyperV machine: %s", hostIp))
|
|
|
|
|
common.SetHTTPIP(hostIp)
|
|
|
|
|
|
|
|
|
|
if !s.Headless {
|
|
|
|
|
ui.Say("Attempting to connect with vmconnect...")
|
|
|
|
|
@ -39,6 +41,19 @@ func (s *StepRun) Run(ctx context.Context, state multistep.StateBag) multistep.S
|
|
|
|
|
log.Printf(fmt.Sprintf("Non-fatal error starting vmconnect: %s. continuing...", err))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ui.Say("Starting the virtual machine...")
|
|
|
|
|
|
|
|
|
|
err = driver.Start(vmName)
|
|
|
|
|
if err != nil {
|
|
|
|
|
err := fmt.Errorf("Error starting vm: %s", err)
|
|
|
|
|
state.Put("error", err)
|
|
|
|
|
ui.Error(err.Error())
|
|
|
|
|
return multistep.ActionHalt
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
s.vmName = vmName
|
|
|
|
|
|
|
|
|
|
return multistep.ActionContinue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|