Merge pull request #7546 from kondor6c/6092,qemu_size_string

Qemu builder disk size as a string
This commit is contained in:
Megan Marsh 2019-10-01 14:58:26 -07:00 committed by GitHub
commit 6c73e8991e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 20 additions and 19 deletions

View File

@ -146,9 +146,11 @@ type Config struct {
// one of the other listed interfaces. Using the `scsi` interface under
// these circumstances will cause the build to fail.
DiskInterface string `mapstructure:"disk_interface" required:"false"`
// The size, in megabytes, of the hard disk to create
// for the VM. By default, this is 40960 (40 GB).
DiskSize uint `mapstructure:"disk_size" required:"false"`
// The size in bytes, suffixes of the first letter of common byte types
// like "k" or "K", "M" for megabytes, G for gigabytes, T for terabytes.
// Will create the of the hard disk of the VM. By default, this is
// `40960M` (40 GB).
DiskSize string `mapstructure:"disk_size" required:"false"`
// The cache mode to use for disk. Allowed values include any of
// `writethrough`, `writeback`, `none`, `unsafe` or `directsync`. By
// default, this is set to `writeback`.
@ -316,7 +318,6 @@ type Config struct {
// "BUILDNAME" is the name of the build. Currently, no file extension will be
// used unless it is specified in this option.
VMName string `mapstructure:"vm_name" required:"false"`
// These are deprecated, but we keep them around for BC
// TODO(@mitchellh): remove
SSHWaitTimeout time.Duration `mapstructure:"ssh_wait_timeout" required:"false"`
@ -344,11 +345,10 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) {
var errs *packer.MultiError
warnings := make([]string, 0)
errs = packer.MultiErrorAppend(errs, b.config.ShutdownConfig.Prepare(&b.config.ctx)...)
if b.config.DiskSize == 0 {
b.config.DiskSize = 40960
if b.config.DiskSize == "" || b.config.DiskSize == "0" {
b.config.DiskSize = "40960M"
}
if b.config.DiskCache == "" {
@ -700,7 +700,7 @@ func (b *Builder) Run(ctx context.Context, ui packer.Ui, hook packer.Hook) (pack
artifact.state["diskPaths"] = diskpaths
}
artifact.state["diskType"] = b.config.Format
artifact.state["diskSize"] = uint64(b.config.DiskSize)
artifact.state["diskSize"] = b.config.DiskSize
artifact.state["domainType"] = b.config.Accelerator
return artifact, nil

View File

@ -169,11 +169,11 @@ func TestBuilderPrepare_DiskSize(t *testing.T) {
t.Fatalf("bad err: %s", err)
}
if b.config.DiskSize != 40960 {
t.Fatalf("bad size: %d", b.config.DiskSize)
if b.config.DiskSize != "40960M" {
t.Fatalf("bad size: %s", b.config.DiskSize)
}
config["disk_size"] = 60000
config["disk_size"] = "60000M"
b = Builder{}
warns, err = b.Prepare(config)
if len(warns) > 0 {
@ -183,8 +183,8 @@ func TestBuilderPrepare_DiskSize(t *testing.T) {
t.Fatalf("should not have error: %s", err)
}
if b.config.DiskSize != 60000 {
t.Fatalf("bad size: %d", b.config.DiskSize)
if b.config.DiskSize != "60000M" {
t.Fatalf("bad size: %s", b.config.DiskSize)
}
}

View File

@ -29,7 +29,7 @@ func (s *stepCreateDisk) Run(ctx context.Context, state multistep.StateBag) mult
ui.Say("Creating required virtual machine disks")
// The 'main' or 'default' disk
diskFullPaths = append(diskFullPaths, filepath.Join(config.OutputDir, name))
diskSizes = append(diskSizes, fmt.Sprintf("%dM", uint64(config.DiskSize)))
diskSizes = append(diskSizes, fmt.Sprintf("%s", config.DiskSize))
// Additional disks
if len(config.AdditionalDiskSize) > 0 {
for i, diskSize := range config.AdditionalDiskSize {

View File

@ -23,9 +23,8 @@ func (s *stepResizeDisk) Run(ctx context.Context, state multistep.StateBag) mult
"resize",
"-f", config.Format,
path,
fmt.Sprintf("%vM", config.DiskSize),
fmt.Sprintf("%s", config.DiskSize),
}
if config.DiskImage == false {
return multistep.ActionContinue
}

View File

@ -37,7 +37,7 @@ to files, URLS for ISOs and checksums.
"iso_checksum_type": "md5",
"output_directory": "output_centos_tdhtest",
"shutdown_command": "echo 'packer' | sudo -S shutdown -P now",
"disk_size": 5000,
"disk_size": "5000M",
"format": "qcow2",
"accelerator": "kvm",
"http_directory": "path/to/httpdir",

View File

@ -47,8 +47,10 @@
one of the other listed interfaces. Using the `scsi` interface under
these circumstances will cause the build to fail.
- `disk_size` (uint) - The size, in megabytes, of the hard disk to create
for the VM. By default, this is 40960 (40 GB).
- `disk_size` (string) - The size in bytes, suffixes of the first letter of common byte types
like "k" or "K", "M" for megabytes, G for gigabytes, T for terabytes.
Will create the of the hard disk of the VM. By default, this is
`40960M` (40 GB).
- `disk_cache` (string) - The cache mode to use for disk. Allowed values include any of
`writethrough`, `writeback`, `none`, `unsafe` or `directsync`. By