From f01578c91e140f67a0b56773be2b3f7d08d8faa9 Mon Sep 17 00:00:00 2001 From: Jake Champlin Date: Mon, 25 Jan 2016 12:01:56 -0500 Subject: [PATCH] Only validate vmware resources on local hosts Disable resource validation when `remote_type` is specified --- builder/vmware/common/vmx_config.go | 15 +++++++++------ builder/vmware/iso/builder.go | 12 +++++++----- builder/vmware/vmx/config.go | 2 +- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/builder/vmware/common/vmx_config.go b/builder/vmware/common/vmx_config.go index 6a707abe0..9b3162382 100644 --- a/builder/vmware/common/vmx_config.go +++ b/builder/vmware/common/vmx_config.go @@ -13,16 +13,19 @@ type VMXConfig struct { VMXDataPost map[string]string `mapstructure:"vmx_data_post"` } -func (c *VMXConfig) Prepare(ctx *interpolate.Context) []error { +func (c *VMXConfig) Prepare(ctx *interpolate.Context, remoteType string) []error { var errs []error var err error var desiredMem uint64 - for k, v := range c.VMXData { - if k == "memsize" { - desiredMem, err = strconv.ParseUint(v, 10, 64) - if err != nil { - errs = append(errs, fmt.Errorf("Error parsing string: %s", err)) + // Validate memory resources, only on local hosts + if remoteType == "" { + for k, v := range c.VMXData { + if k == "memsize" { + desiredMem, err = strconv.ParseUint(v, 10, 64) + if err != nil { + errs = append(errs, fmt.Errorf("Error parsing string: %s", err)) + } } } } diff --git a/builder/vmware/iso/builder.go b/builder/vmware/iso/builder.go index ea6f88b5a..9f6ad62ab 100755 --- a/builder/vmware/iso/builder.go +++ b/builder/vmware/iso/builder.go @@ -93,7 +93,7 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) { errs = packer.MultiErrorAppend(errs, b.config.ShutdownConfig.Prepare(&b.config.ctx)...) errs = packer.MultiErrorAppend(errs, b.config.SSHConfig.Prepare(&b.config.ctx)...) errs = packer.MultiErrorAppend(errs, b.config.ToolsConfig.Prepare(&b.config.ctx)...) - errs = packer.MultiErrorAppend(errs, b.config.VMXConfig.Prepare(&b.config.ctx)...) + errs = packer.MultiErrorAppend(errs, b.config.VMXConfig.Prepare(&b.config.ctx, b.config.RemoteType)...) if b.config.DiskName == "" { b.config.DiskName = "disk" @@ -171,10 +171,12 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) { } } - // Determine if DiskSize is able to be allocated - if err = common.AvailableDisk(uint64(b.config.DiskSize)); err != nil { - errs = packer.MultiErrorAppend(errs, - fmt.Errorf("Unavailable Resources: %s", err)) + // Determine if DiskSize is able to be allocated, only when running locally + if b.config.RemoteType == "" { + if err = common.AvailableDisk(uint64(b.config.DiskSize)); err != nil { + errs = packer.MultiErrorAppend(errs, + fmt.Errorf("Unavailable Resources: %s", err)) + } } // Warnings diff --git a/builder/vmware/vmx/config.go b/builder/vmware/vmx/config.go index 4f93db9f3..87aad7d59 100644 --- a/builder/vmware/vmx/config.go +++ b/builder/vmware/vmx/config.go @@ -63,7 +63,7 @@ func NewConfig(raws ...interface{}) (*Config, []string, error) { errs = packer.MultiErrorAppend(errs, c.ShutdownConfig.Prepare(&c.ctx)...) errs = packer.MultiErrorAppend(errs, c.SSHConfig.Prepare(&c.ctx)...) errs = packer.MultiErrorAppend(errs, c.ToolsConfig.Prepare(&c.ctx)...) - errs = packer.MultiErrorAppend(errs, c.VMXConfig.Prepare(&c.ctx)...) + errs = packer.MultiErrorAppend(errs, c.VMXConfig.Prepare(&c.ctx, c.RemoteType)...) if c.SourcePath == "" { errs = packer.MultiErrorAppend(errs, fmt.Errorf("source_path is blank, but is required"))