github.phpd.cn/hashicorp/packer@v1.3.2/builder/parallels/pvm/step_import.go (about) 1 package pvm 2 3 import ( 4 "context" 5 "fmt" 6 7 parallelscommon "github.com/hashicorp/packer/builder/parallels/common" 8 "github.com/hashicorp/packer/helper/multistep" 9 "github.com/hashicorp/packer/packer" 10 ) 11 12 // This step imports an PVM VM into Parallels. 13 type StepImport struct { 14 Name string 15 SourcePath string 16 vmName string 17 } 18 19 func (s *StepImport) Run(_ context.Context, state multistep.StateBag) multistep.StepAction { 20 driver := state.Get("driver").(parallelscommon.Driver) 21 ui := state.Get("ui").(packer.Ui) 22 config := state.Get("config").(*Config) 23 24 ui.Say(fmt.Sprintf("Importing VM: %s", s.SourcePath)) 25 if err := driver.Import(s.Name, s.SourcePath, config.OutputDir, config.ReassignMAC); err != nil { 26 err := fmt.Errorf("Error importing VM: %s", err) 27 state.Put("error", err) 28 ui.Error(err.Error()) 29 return multistep.ActionHalt 30 } 31 32 s.vmName = s.Name 33 state.Put("vmName", s.Name) 34 return multistep.ActionContinue 35 } 36 37 func (s *StepImport) Cleanup(state multistep.StateBag) { 38 39 if s.vmName == "" { 40 return 41 } 42 43 driver := state.Get("driver").(parallelscommon.Driver) 44 ui := state.Get("ui").(packer.Ui) 45 46 ui.Say("Unregistering virtual machine...") 47 if err := driver.Prlctl("unregister", s.vmName); err != nil { 48 ui.Error(fmt.Sprintf("Error unregistering virtual machine: %s", err)) 49 } 50 }