Rename configuration `cookbook_paths` to `cookbooks_paths` to
conform to Vagrant wording. Remove configuration `cookbook_path` to simplify some things.
This commit is contained in:
parent
543fdbd8c2
commit
5f81e605e8
|
@ -5,7 +5,6 @@ package chefSolo
|
|||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/mitchellh/iochan"
|
||||
"github.com/mitchellh/mapstructure"
|
||||
|
@ -29,13 +28,10 @@ var Ui packer.Ui
|
|||
|
||||
type config struct {
|
||||
// An array of local paths of cookbooks to upload.
|
||||
CookbookPaths []string `mapstructure:"cookbook_paths"`
|
||||
|
||||
// The local path of the cookbooks to upload.
|
||||
CookbookPath string `mapstructure:"cookbook_path"`
|
||||
CookbooksPaths []string `mapstructure:"cookbooks_paths"`
|
||||
|
||||
// An array of recipes to run.
|
||||
RunList []string `mapstructure:"run_list"`
|
||||
Recipes []string
|
||||
|
||||
// A string of JSON that will be used as the JSON attributes for the
|
||||
// Chef run.
|
||||
|
@ -64,24 +60,12 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
|
|||
}
|
||||
}
|
||||
|
||||
if p.config.CookbookPaths == nil {
|
||||
p.config.CookbookPaths = make([]string, 0)
|
||||
if p.config.CookbooksPaths == nil {
|
||||
p.config.CookbooksPaths = make([]string, 0)
|
||||
}
|
||||
|
||||
if p.config.CookbookPath == "" {
|
||||
p.config.CookbookPath = DefaultCookbookPath
|
||||
}
|
||||
|
||||
if len(p.config.CookbookPaths) > 0 && p.config.CookbookPath != "" {
|
||||
errs = append(errs, errors.New("Only one of cookbooks or cookbook can be specified."))
|
||||
}
|
||||
|
||||
if len(p.config.CookbookPaths) == 0 {
|
||||
p.config.CookbookPaths = append(p.config.CookbookPaths, p.config.CookbookPath)
|
||||
}
|
||||
|
||||
if p.config.RunList == nil {
|
||||
p.config.RunList = make([]string, 0)
|
||||
if p.config.Recipes == nil {
|
||||
p.config.Recipes = make([]string, 0)
|
||||
}
|
||||
|
||||
if p.config.Json != nil {
|
||||
|
@ -92,7 +76,7 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
|
|||
p.config.Json = make(map[string]interface{})
|
||||
}
|
||||
|
||||
for _, path := range p.config.CookbookPaths {
|
||||
for _, path := range p.config.CookbooksPaths {
|
||||
pFileInfo, err := os.Stat(path)
|
||||
|
||||
if err != nil || !pFileInfo.IsDir() {
|
||||
|
@ -108,8 +92,8 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
|
|||
}
|
||||
|
||||
func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
|
||||
cookbookPaths := make([]string, len(p.config.CookbookPaths))
|
||||
copy(cookbookPaths, p.config.CookbookPaths)
|
||||
cookbooksPaths := make([]string, len(p.config.CookbooksPaths))
|
||||
copy(cookbooksPaths, p.config.CookbooksPaths)
|
||||
|
||||
Ui = ui
|
||||
|
||||
|
@ -124,18 +108,18 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
|
|||
return fmt.Errorf("Error creating remote staging directory: %s", err)
|
||||
}
|
||||
|
||||
soloRbPath, err := CreateSoloRb(p.config.CookbookPaths, comm)
|
||||
soloRbPath, err := CreateSoloRb(p.config.CookbooksPaths, comm)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error creating Chef Solo configuration file: %s", err)
|
||||
}
|
||||
|
||||
jsonPath, err := CreateAttributesJson(p.config.Json, p.config.RunList, comm)
|
||||
jsonPath, err := CreateAttributesJson(p.config.Json, p.config.Recipes, comm)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error uploading JSON attributes file: %s", err)
|
||||
}
|
||||
|
||||
// Upload all cookbooks
|
||||
for _, path := range cookbookPaths {
|
||||
for _, path := range cookbooksPaths {
|
||||
ui.Say(fmt.Sprintf("Copying cookbook path: %s", path))
|
||||
err = UploadLocalDirectory(path, comm)
|
||||
if err != nil {
|
||||
|
@ -156,7 +140,7 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
|
|||
return fmt.Errorf("Error running Chef Solo: %s", err)
|
||||
}
|
||||
|
||||
return fmt.Errorf("Die")
|
||||
// return fmt.Errorf("Die")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
@ -214,7 +198,7 @@ func CreateRemoteDirectory(path string, comm packer.Communicator) (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func CreateSoloRb(cookbookPaths []string, comm packer.Communicator) (str string, err error) {
|
||||
func CreateSoloRb(cookbooksPaths []string, comm packer.Communicator) (str string, err error) {
|
||||
Ui.Say(fmt.Sprintf("Creating Chef configuration file..."))
|
||||
|
||||
remotePath := RemoteStagingPath + "/solo.rb"
|
||||
|
@ -227,7 +211,7 @@ func CreateSoloRb(cookbookPaths []string, comm packer.Communicator) (str string,
|
|||
writer := bufio.NewWriter(tf)
|
||||
|
||||
// Messy, messy...
|
||||
cbPathsCat := "\"" + RemoteCookbookPath + "/" + strings.Join(cookbookPaths, "\",\"" + RemoteCookbookPath + "/") + "\""
|
||||
cbPathsCat := "\"" + RemoteCookbookPath + "/" + strings.Join(cookbooksPaths, "\",\"" + RemoteCookbookPath + "/") + "\""
|
||||
contents := "file_cache_path \"" + RemoteFileCachePath + "\"\ncookbook_path [" + cbPathsCat + "]\n"
|
||||
|
||||
if _, err := writer.WriteString(contents); err != nil {
|
||||
|
@ -254,17 +238,17 @@ func CreateSoloRb(cookbookPaths []string, comm packer.Communicator) (str string,
|
|||
return remotePath, nil
|
||||
}
|
||||
|
||||
func CreateAttributesJson(jsonAttrs map[string]interface{}, runList []string, comm packer.Communicator) (str string, err error) {
|
||||
func CreateAttributesJson(jsonAttrs map[string]interface{}, recipes []string, comm packer.Communicator) (str string, err error) {
|
||||
Ui.Say(fmt.Sprintf("Creating and uploading Chef attributes file"))
|
||||
remotePath := RemoteStagingPath + "/node.json"
|
||||
|
||||
var formattedRunList []string
|
||||
for _, value := range runList {
|
||||
formattedRunList = append(formattedRunList, "recipe[" + value + "]")
|
||||
var formattedRecipes []string
|
||||
for _, value := range recipes {
|
||||
formattedRecipes = append(formattedRecipes, "recipe[" + value + "]")
|
||||
}
|
||||
|
||||
// Add RunList to JSON
|
||||
jsonAttrs["run_list"] = formattedRunList
|
||||
// Add Recipes to JSON
|
||||
jsonAttrs["run_list"] = formattedRecipes
|
||||
|
||||
// Convert to JSON string
|
||||
jsonString, err := json.MarshalIndent(jsonAttrs, "", " ")
|
||||
|
|
Loading…
Reference in New Issue