github.com/kaixiang/packer@v0.5.2-0.20140114230416-1f5786b0d7f1/builder/vmware/iso/step_register.go (about) 1 package iso 2 3 import ( 4 "fmt" 5 6 "github.com/mitchellh/multistep" 7 vmwcommon "github.com/mitchellh/packer/builder/vmware/common" 8 "github.com/mitchellh/packer/packer" 9 ) 10 11 type StepRegister struct { 12 registeredPath string 13 } 14 15 func (s *StepRegister) Run(state multistep.StateBag) multistep.StepAction { 16 driver := state.Get("driver").(vmwcommon.Driver) 17 ui := state.Get("ui").(packer.Ui) 18 vmxPath := state.Get("vmx_path").(string) 19 20 if remoteDriver, ok := driver.(RemoteDriver); ok { 21 ui.Say("Registering remote VM...") 22 if err := remoteDriver.Register(vmxPath); err != nil { 23 err := fmt.Errorf("Error registering VM: %s", err) 24 state.Put("error", err) 25 ui.Error(err.Error()) 26 return multistep.ActionHalt 27 } 28 29 s.registeredPath = vmxPath 30 } 31 32 return multistep.ActionContinue 33 } 34 35 func (s *StepRegister) Cleanup(state multistep.StateBag) { 36 if s.registeredPath == "" { 37 return 38 } 39 40 driver := state.Get("driver").(vmwcommon.Driver) 41 ui := state.Get("ui").(packer.Ui) 42 43 if remoteDriver, ok := driver.(RemoteDriver); ok { 44 ui.Say("Unregistering virtual machine...") 45 if err := remoteDriver.Unregister(s.registeredPath); err != nil { 46 ui.Error(fmt.Sprintf("Error unregistering VM: %s", err)) 47 } 48 49 s.registeredPath = "" 50 } 51 52 }