From aa954c9406f9440d5654ecc1443ac337ef7ae3d3 Mon Sep 17 00:00:00 2001 From: Marc Siegfriedt Date: Wed, 24 Jun 2015 11:58:00 -0700 Subject: [PATCH] updated how vmx entries are handled --- builder/vmware/common/step_configure_vmx.go | 2 -- builder/vmware/common/vmx.go | 20 ++++++++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) mode change 100644 => 100755 builder/vmware/common/step_configure_vmx.go mode change 100644 => 100755 builder/vmware/common/vmx.go diff --git a/builder/vmware/common/step_configure_vmx.go b/builder/vmware/common/step_configure_vmx.go old mode 100644 new mode 100755 index 401d53055..14c68e76a --- a/builder/vmware/common/step_configure_vmx.go +++ b/builder/vmware/common/step_configure_vmx.go @@ -5,7 +5,6 @@ import ( "io/ioutil" "log" "regexp" - "strings" "github.com/mitchellh/multistep" "github.com/mitchellh/packer/packer" @@ -53,7 +52,6 @@ func (s *StepConfigureVMX) Run(state multistep.StateBag) multistep.StepAction { // Set custom data for k, v := range s.CustomData { log.Printf("Setting VMX: '%s' = '%s'", k, v) - k = strings.ToLower(k) vmxData[k] = v } diff --git a/builder/vmware/common/vmx.go b/builder/vmware/common/vmx.go old mode 100644 new mode 100755 index e7cdb662f..ab0291807 --- a/builder/vmware/common/vmx.go +++ b/builder/vmware/common/vmx.go @@ -17,7 +17,7 @@ import ( func ParseVMX(contents string) map[string]string { results := make(map[string]string) - lineRe := regexp.MustCompile(`^(.+?)\s*=\s*"(.*?)"\s*$`) + lineRe := regexp.MustCompile(`^(.+?)\s*=\s*"?(.*?)"?\s*$`) for _, line := range strings.Split(contents, "\n") { matches := lineRe.FindStringSubmatch(line) @@ -25,8 +25,7 @@ func ParseVMX(contents string) map[string]string { continue } - key := strings.ToLower(matches[1]) - results[key] = matches[2] + results[matches[1]] = matches[2] } return results @@ -43,9 +42,22 @@ func EncodeVMX(contents map[string]string) string { i++ } + // a list of VMX key fragments that should not be wrapped in quotes, + // fragments because multiple disks can use the virtualSSD suffix + noQuotes := []string { + "virtualSSD", + } + sort.Strings(keys) for _, k := range keys { - buf.WriteString(fmt.Sprintf("%s = \"%s\"\n", k, contents[k])) + pat := "%s = \"%s\"\n" + for _, q := range noQuotes { + if strings.Contains(k, q) { + pat = "%s = %s\n" + break; + } + } + buf.WriteString(fmt.Sprintf(pat, k, contents[k])) } return buf.String()