diff --git a/builder/vmware/builder.go b/builder/vmware/builder.go index f6388827e..e48103c73 100644 --- a/builder/vmware/builder.go +++ b/builder/vmware/builder.go @@ -39,6 +39,7 @@ type config struct { HTTPPortMax uint `mapstructure:"http_port_max"` BootCommand []string `mapstructure:"boot_command"` BootWait time.Duration `` + SkipCompaction bool `mapstructure:"skip_compaction"` ShutdownCommand string `mapstructure:"shutdown_command"` ShutdownTimeout time.Duration `` SSHUser string `mapstructure:"ssh_username"` diff --git a/builder/vmware/step_compact_disk.go b/builder/vmware/step_compact_disk.go index d399322a7..05bbc62da 100644 --- a/builder/vmware/step_compact_disk.go +++ b/builder/vmware/step_compact_disk.go @@ -4,11 +4,14 @@ import ( "fmt" "github.com/mitchellh/multistep" "github.com/mitchellh/packer/packer" + "log" ) -// This step compacts the virtual disk for the VM. +// This step compacts the virtual disk for the VM unless the "skip_compaction" +// boolean is true. // // Uses: +// config *config // driver Driver // full_disk_path string // ui packer.Ui @@ -18,10 +21,16 @@ import ( type stepCompactDisk struct{} func (stepCompactDisk) Run(state map[string]interface{}) multistep.StepAction { + config := state["config"].(*config) driver := state["driver"].(Driver) ui := state["ui"].(packer.Ui) full_disk_path := state["full_disk_path"].(string) + if config.SkipCompaction == true { + log.Println("Skipping disk compaction step...") + return multistep.ActionContinue + } + ui.Say("Compacting the disk image") if err := driver.CompactDisk(full_disk_path); err != nil { state["error"] = fmt.Errorf("Error compacting disk: %s", err)