Commit 1d7d490c authored by Marc Siegfriedt's avatar Marc Siegfriedt

updated how vmx entries are handled

parent 6ca48fa3
...@@ -5,7 +5,6 @@ import ( ...@@ -5,7 +5,6 @@ import (
"io/ioutil" "io/ioutil"
"log" "log"
"regexp" "regexp"
"strings"
"github.com/mitchellh/multistep" "github.com/mitchellh/multistep"
"github.com/mitchellh/packer/packer" "github.com/mitchellh/packer/packer"
...@@ -53,7 +52,6 @@ func (s *StepConfigureVMX) Run(state multistep.StateBag) multistep.StepAction { ...@@ -53,7 +52,6 @@ func (s *StepConfigureVMX) Run(state multistep.StateBag) multistep.StepAction {
// Set custom data // Set custom data
for k, v := range s.CustomData { for k, v := range s.CustomData {
log.Printf("Setting VMX: '%s' = '%s'", k, v) log.Printf("Setting VMX: '%s' = '%s'", k, v)
k = strings.ToLower(k)
vmxData[k] = v vmxData[k] = v
} }
......
...@@ -17,7 +17,7 @@ import ( ...@@ -17,7 +17,7 @@ import (
func ParseVMX(contents string) map[string]string { func ParseVMX(contents string) map[string]string {
results := make(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") { for _, line := range strings.Split(contents, "\n") {
matches := lineRe.FindStringSubmatch(line) matches := lineRe.FindStringSubmatch(line)
...@@ -25,8 +25,7 @@ func ParseVMX(contents string) map[string]string { ...@@ -25,8 +25,7 @@ func ParseVMX(contents string) map[string]string {
continue continue
} }
key := strings.ToLower(matches[1]) results[matches[1]] = matches[2]
results[key] = matches[2]
} }
return results return results
...@@ -43,9 +42,22 @@ func EncodeVMX(contents map[string]string) string { ...@@ -43,9 +42,22 @@ func EncodeVMX(contents map[string]string) string {
i++ 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) sort.Strings(keys)
for _, k := range 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() return buf.String()
......
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