From da3b0f54c71473d5536317a125500529c3a96751 Mon Sep 17 00:00:00 2001 From: Steven Merrill Date: Sat, 29 Jun 2013 23:08:27 -0400 Subject: [PATCH] Upload the linux.iso to /tmp/linux.iso. --- builder/vmware/builder.go | 1 + builder/vmware/driver.go | 5 +++++ builder/vmware/step_upload_tools.go | 35 +++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 builder/vmware/step_upload_tools.go diff --git a/builder/vmware/builder.go b/builder/vmware/builder.go index e49609ab0..bac14188a 100644 --- a/builder/vmware/builder.go +++ b/builder/vmware/builder.go @@ -222,6 +222,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe &stepRun{}, &stepTypeBootCommand{}, &stepWaitForSSH{}, + &stepUploadTools{}, &stepProvision{}, &stepShutdown{}, &stepCleanFiles{}, diff --git a/builder/vmware/driver.go b/builder/vmware/driver.go index 45a8f05fb..810031664 100644 --- a/builder/vmware/driver.go +++ b/builder/vmware/driver.go @@ -121,6 +121,11 @@ func (d *Fusion5Driver) vmrunPath() string { return filepath.Join(d.AppPath, "Contents", "Library", "vmrun") } +// @TODO: Be smarter about guest type before deciding on linux.iso. +func (d *Fusion5Driver) vmwareToolsIsoPath() string { + return filepath.Join(d.AppPath, "Contents", "Library", "isoimages", "linux.iso") +} + func (d *Fusion5Driver) runAndLog(cmd *exec.Cmd) (string, string, error) { var stdout, stderr bytes.Buffer diff --git a/builder/vmware/step_upload_tools.go b/builder/vmware/step_upload_tools.go new file mode 100644 index 000000000..5e6fbfe5b --- /dev/null +++ b/builder/vmware/step_upload_tools.go @@ -0,0 +1,35 @@ +package vmware + +import ( + "github.com/mitchellh/multistep" + "github.com/mitchellh/packer/packer" + "log" +) + +a { + +type stepUploadTools struct{} + +func (*stepUploadTools) Run(state map[string]interface{}) multistep.StepAction { + comm := state["communicator"].(packer.Communicator) + ui := state["ui"].(packer.Ui) + driver := state["driver"].(Driver) + + ui.Say("Uploading the VMware Tools.") + log.Println("Uploading the VMware Tools.") + + f, err := os.Open(driver.vmwareToolsIsoPath()) + if err != nil { + state["error"] = fmt.Errorf("Error opening VMware Tools ISO: %s", err) + return multistep.ActionHalt + } + + if err := comm.Upload("/tmp/linux.iso", f); err != nil { + state["error"] = fmt.Errorf("Error uploading VMware Tools: %s", err) + return multistep.ActionHalt + } + + return multistep.ActionContinue +} + +func (*stepUploadTools) Cleanup(map[string]interface{}) {}