packer: Post-processors are configured

This commit is contained in:
Mitchell Hashimoto 2013-06-18 10:31:52 -07:00
parent 1015df8fa8
commit 04a8bfb455
3 changed files with 31 additions and 3 deletions

View File

@ -109,6 +109,15 @@ func (b *coreBuild) Prepare() (err error) {
} }
} }
// Prepare the post-processors
for _, ppSeq := range b.postProcessors {
for _, corePP := range ppSeq {
if err = corePP.processor.Configure(corePP.config); err != nil {
return
}
}
}
return return
} }

View File

@ -16,6 +16,11 @@ func testBuild() Build {
provisioners: []coreBuildProvisioner{ provisioners: []coreBuildProvisioner{
coreBuildProvisioner{&TestProvisioner{}, []interface{}{42}}, coreBuildProvisioner{&TestProvisioner{}, []interface{}{42}},
}, },
postProcessors: [][]coreBuildPostProcessor{
[]coreBuildPostProcessor{
coreBuildPostProcessor{&TestPostProcessor{}, 42},
},
},
} }
} }
@ -47,6 +52,11 @@ func TestBuild_Prepare(t *testing.T) {
prov := coreProv.provisioner.(*TestProvisioner) prov := coreProv.provisioner.(*TestProvisioner)
assert.True(prov.prepCalled, "prepare should be called") assert.True(prov.prepCalled, "prepare should be called")
assert.Equal(prov.prepConfigs, []interface{}{42, debugFalseConfig}, "prepare should be called with proper config") assert.Equal(prov.prepConfigs, []interface{}{42, debugFalseConfig}, "prepare should be called with proper config")
corePP := coreB.postProcessors[0][0]
pp := corePP.processor.(*TestPostProcessor)
assert.True(pp.configCalled, "config should be called")
assert.Equal(pp.configVal, 42, "config should have right value")
} }
func TestBuild_Prepare_Twice(t *testing.T) { func TestBuild_Prepare_Twice(t *testing.T) {

View File

@ -1,11 +1,20 @@
package packer package packer
type TestPostProcessor struct{} type TestPostProcessor struct {
configCalled bool
configVal interface{}
ppCalled bool
ppArtifact Artifact
}
func (*TestPostProcessor) Configure(interface{}) error { func (pp *TestPostProcessor) Configure(v interface{}) error {
pp.configCalled = true
pp.configVal = v
return nil return nil
} }
func (*TestPostProcessor) PostProcess(Artifact) (Artifact, error) { func (pp *TestPostProcessor) PostProcess(a Artifact) (Artifact, error) {
pp.ppCalled = true
pp.ppArtifact = a
return nil, nil return nil, nil
} }