builder/virtualbox: Ability to set DiskSize

This commit is contained in:
Mitchell Hashimoto 2013-06-23 20:43:40 -07:00
parent ffd1219388
commit 72741dbe3a
3 changed files with 33 additions and 1 deletions

View File

@ -27,6 +27,7 @@ type Builder struct {
type config struct { type config struct {
BootCommand []string `mapstructure:"boot_command"` BootCommand []string `mapstructure:"boot_command"`
BootWait time.Duration `` BootWait time.Duration ``
DiskSize uint `mapstructure:"disk_size"`
GuestOSType string `mapstructure:"guest_os_type"` GuestOSType string `mapstructure:"guest_os_type"`
HTTPDir string `mapstructure:"http_directory"` HTTPDir string `mapstructure:"http_directory"`
HTTPPortMin uint `mapstructure:"http_port_min"` HTTPPortMin uint `mapstructure:"http_port_min"`
@ -61,6 +62,10 @@ func (b *Builder) Prepare(raws ...interface{}) error {
} }
} }
if b.config.DiskSize == 0 {
b.config.DiskSize = 40000
}
if b.config.GuestOSType == "" { if b.config.GuestOSType == "" {
b.config.GuestOSType = "Other" b.config.GuestOSType = "Other"
} }

View File

@ -75,6 +75,32 @@ func TestBuilderPrepare_BootWait(t *testing.T) {
} }
} }
func TestBuilderPrepare_DiskSize(t *testing.T) {
var b Builder
config := testConfig()
delete(config, "disk_size")
err := b.Prepare(config)
if err != nil {
t.Fatalf("bad err: %s", err)
}
if b.config.DiskSize != 40000 {
t.Fatalf("bad size: %d", b.config.DiskSize)
}
config["disk_size"] = 60000
b = Builder{}
err = b.Prepare(config)
if err != nil {
t.Fatalf("should not have error: %s", err)
}
if b.config.DiskSize != 60000 {
t.Fatalf("bad size: %s", b.config.DiskSize)
}
}
func TestBuilderPrepare_HTTPPort(t *testing.T) { func TestBuilderPrepare_HTTPPort(t *testing.T) {
var b Builder var b Builder
config := testConfig() config := testConfig()

View File

@ -5,6 +5,7 @@ import (
"github.com/mitchellh/multistep" "github.com/mitchellh/multistep"
"github.com/mitchellh/packer/packer" "github.com/mitchellh/packer/packer"
"path/filepath" "path/filepath"
"strconv"
"strings" "strings"
) )
@ -24,7 +25,7 @@ func (s *stepCreateDisk) Run(state map[string]interface{}) multistep.StepAction
command := []string{ command := []string{
"createhd", "createhd",
"--filename", path, "--filename", path,
"--size", "40000", "--size", strconv.FormatUint(uint64(config.DiskSize), 10),
"--format", format, "--format", format,
"--variant", "Standard", "--variant", "Standard",
} }