Commit 58daa1d8 authored by Steven Merrill's avatar Steven Merrill

Add a 'skip_compaction' step.

parent af5721c8
...@@ -39,6 +39,7 @@ type config struct { ...@@ -39,6 +39,7 @@ type config struct {
HTTPPortMax uint `mapstructure:"http_port_max"` HTTPPortMax uint `mapstructure:"http_port_max"`
BootCommand []string `mapstructure:"boot_command"` BootCommand []string `mapstructure:"boot_command"`
BootWait time.Duration `` BootWait time.Duration ``
SkipCompaction bool `mapstructure:"skip_compaction"`
ShutdownCommand string `mapstructure:"shutdown_command"` ShutdownCommand string `mapstructure:"shutdown_command"`
ShutdownTimeout time.Duration `` ShutdownTimeout time.Duration ``
SSHUser string `mapstructure:"ssh_username"` SSHUser string `mapstructure:"ssh_username"`
......
...@@ -4,11 +4,14 @@ import ( ...@@ -4,11 +4,14 @@ import (
"fmt" "fmt"
"github.com/mitchellh/multistep" "github.com/mitchellh/multistep"
"github.com/mitchellh/packer/packer" "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: // Uses:
// config *config
// driver Driver // driver Driver
// full_disk_path string // full_disk_path string
// ui packer.Ui // ui packer.Ui
...@@ -18,10 +21,16 @@ import ( ...@@ -18,10 +21,16 @@ import (
type stepCompactDisk struct{} type stepCompactDisk struct{}
func (stepCompactDisk) Run(state map[string]interface{}) multistep.StepAction { func (stepCompactDisk) Run(state map[string]interface{}) multistep.StepAction {
config := state["config"].(*config)
driver := state["driver"].(Driver) driver := state["driver"].(Driver)
ui := state["ui"].(packer.Ui) ui := state["ui"].(packer.Ui)
full_disk_path := state["full_disk_path"].(string) 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") ui.Say("Compacting the disk image")
if err := driver.CompactDisk(full_disk_path); err != nil { if err := driver.CompactDisk(full_disk_path); err != nil {
state["error"] = fmt.Errorf("Error compacting disk: %s", err) state["error"] = fmt.Errorf("Error compacting disk: %s", err)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment