Commit 55b0b586 authored by Mitchell Hashimoto's avatar Mitchell Hashimoto

provisioner/chef-solo: code re-org

parent 893c9e02
......@@ -145,46 +145,6 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
return nil
}
func (p *Provisioner) processJsonUserVars() (map[string]interface{}, error) {
jsonBytes, err := json.Marshal(p.config.Json)
if err != nil {
// This really shouldn't happen since we literally just unmarshalled
panic(err)
}
// Copy the user variables so that we can restore them later, and
// make sure we make the quotes JSON-friendly in the user variables.
originalUserVars := make(map[string]string)
for k, v := range p.config.tpl.UserVars {
originalUserVars[k] = v
}
// Make sure we reset them no matter what
defer func() {
p.config.tpl.UserVars = originalUserVars
}()
// Make the current user variables JSON string safe.
for k, v := range p.config.tpl.UserVars {
v = strings.Replace(v, `\`, `\\`, -1)
v = strings.Replace(v, `"`, `\"`, -1)
p.config.tpl.UserVars[k] = v
}
// Process the bytes with the template processor
jsonBytesProcessed, err := p.config.tpl.Process(string(jsonBytes), nil)
if err != nil {
return nil, err
}
var result map[string]interface{}
if err := json.Unmarshal([]byte(jsonBytesProcessed), &result); err != nil {
return nil, err
}
return result, nil
}
func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
if !p.config.SkipInstall {
if err := p.installChef(ui, comm); err != nil {
......@@ -361,6 +321,46 @@ func (p *Provisioner) installChef(ui packer.Ui, comm packer.Communicator) error
return nil
}
func (p *Provisioner) processJsonUserVars() (map[string]interface{}, error) {
jsonBytes, err := json.Marshal(p.config.Json)
if err != nil {
// This really shouldn't happen since we literally just unmarshalled
panic(err)
}
// Copy the user variables so that we can restore them later, and
// make sure we make the quotes JSON-friendly in the user variables.
originalUserVars := make(map[string]string)
for k, v := range p.config.tpl.UserVars {
originalUserVars[k] = v
}
// Make sure we reset them no matter what
defer func() {
p.config.tpl.UserVars = originalUserVars
}()
// Make the current user variables JSON string safe.
for k, v := range p.config.tpl.UserVars {
v = strings.Replace(v, `\`, `\\`, -1)
v = strings.Replace(v, `"`, `\"`, -1)
p.config.tpl.UserVars[k] = v
}
// Process the bytes with the template processor
jsonBytesProcessed, err := p.config.tpl.Process(string(jsonBytes), nil)
if err != nil {
return nil, err
}
var result map[string]interface{}
if err := json.Unmarshal([]byte(jsonBytesProcessed), &result); err != nil {
return nil, err
}
return result, nil
}
var DefaultConfigTemplate = `
cookbook_path [{{.CookbookPaths}}]
`
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