mirror of https://github.com/hashicorp/packer
Share .Device and .MountPath between builders, provisioners and post-processors (#8621)
parent
d25b4cf514
commit
0b7251a4bb
@ -0,0 +1,20 @@
|
||||
package builder
|
||||
|
||||
import "github.com/hashicorp/packer/helper/multistep"
|
||||
|
||||
// GeneratedData manages variables exported by a builder after
|
||||
// it started. It uses the builder's multistep.StateBag internally, make sure it
|
||||
// is not nil before calling any functions.
|
||||
type GeneratedData struct {
|
||||
// The builder's StateBag
|
||||
State multistep.StateBag
|
||||
}
|
||||
|
||||
func (gd *GeneratedData) Put(key string, data interface{}) {
|
||||
genData := make(map[string]interface{})
|
||||
if _, ok := gd.State.GetOk("generated_data"); ok {
|
||||
genData = gd.State.Get("generated_data").(map[string]interface{})
|
||||
}
|
||||
genData[key] = data
|
||||
gd.State.Put("generated_data", genData)
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
package builder
|
||||
|
||||
import (
|
||||
"github.com/hashicorp/packer/helper/multistep"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestGeneratedData_Put(t *testing.T) {
|
||||
state := new(multistep.BasicStateBag)
|
||||
generatedData := GeneratedData{
|
||||
State: state,
|
||||
}
|
||||
expectedValue := "data value"
|
||||
secondExpectedValue := "another data value"
|
||||
|
||||
generatedData.Put("data_key", expectedValue)
|
||||
generatedData.Put("another_data_key", secondExpectedValue)
|
||||
|
||||
if _, ok := generatedData.State.GetOk("generated_data"); !ok {
|
||||
t.Fatalf("BAD: StateBag should contain generated_data")
|
||||
}
|
||||
|
||||
generatedDataState := generatedData.State.Get("generated_data").(map[string]interface{})
|
||||
if generatedDataState["data_key"] != expectedValue {
|
||||
t.Fatalf("Unexpected state for data_key: expected %#v got %#v\n", expectedValue, generatedDataState["data_key"])
|
||||
}
|
||||
if generatedDataState["another_data_key"] != secondExpectedValue {
|
||||
t.Fatalf("Unexpected state for another_data_key: expected %#v got %#v\n", secondExpectedValue, generatedDataState["another_data_key"])
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue