diff --git a/command/build/command.go b/command/build/command.go index dde79cf6d..84e14fc0d 100644 --- a/command/build/command.go +++ b/command/build/command.go @@ -144,7 +144,7 @@ func (c Command) Run(env packer.Environment, args []string) int { // Prepare all the builds for _, b := range builds { log.Printf("Preparing build: %s", b.Name()) - err := b.Prepare(buildUis[b.Name()]) + err := b.Prepare() if err != nil { env.Ui().Error(err.Error()) return 1 diff --git a/packer/build.go b/packer/build.go index df91ccf85..5261da8b2 100644 --- a/packer/build.go +++ b/packer/build.go @@ -6,7 +6,7 @@ import "log" // building some machine image artifact. Builds are meant to be parallelized. type Build interface { Name() string - Prepare(Ui) error + Prepare() error Run(Ui, Cache) (Artifact, error) Cancel() } @@ -39,7 +39,7 @@ func (b *coreBuild) Name() string { // Prepare prepares the build by doing some initialization for the builder // and any hooks. This _must_ be called prior to Run. -func (b *coreBuild) Prepare(ui Ui) (err error) { +func (b *coreBuild) Prepare() (err error) { // TODO: lock b.prepareCalled = true diff --git a/packer/build_test.go b/packer/build_test.go index 8852319c6..1fa567717 100644 --- a/packer/build_test.go +++ b/packer/build_test.go @@ -34,12 +34,11 @@ func TestBuild_Prepare(t *testing.T) { assert := asserts.NewTestingAsserts(t, true) build := testBuild() - ui := testUi() coreB := build.(*coreBuild) builder := coreB.builder.(*TestBuilder) - build.Prepare(ui) + build.Prepare() assert.True(builder.prepareCalled, "prepare should be called") assert.Equal(builder.prepareConfig, 42, "prepare config should be 42") @@ -57,7 +56,7 @@ func TestBuild_Run(t *testing.T) { ui := testUi() build := testBuild() - build.Prepare(ui) + build.Prepare() build.Run(ui, cache) coreB := build.(*coreBuild) diff --git a/packer/rpc/build.go b/packer/rpc/build.go index 8ea699141..53577a542 100644 --- a/packer/rpc/build.go +++ b/packer/rpc/build.go @@ -17,10 +17,6 @@ type BuildServer struct { build packer.Build } -type BuildPrepareArgs struct { - RPCAddress string -} - type BuildRunArgs struct { UiRPCAddress string } @@ -34,14 +30,8 @@ func (b *build) Name() (result string) { return } -func (b *build) Prepare(ui packer.Ui) (err error) { - // Create and start the server for the UI - // TODO: Error handling - server := rpc.NewServer() - RegisterUi(server, ui) - args := &BuildPrepareArgs{serveSingleConn(server)} - - if cerr := b.client.Call("Build.Prepare", args, &err); cerr != nil { +func (b *build) Prepare() (err error) { + if cerr := b.client.Call("Build.Prepare", new(interface{}), &err); cerr != nil { return cerr } @@ -79,13 +69,8 @@ func (b *BuildServer) Name(args *interface{}, reply *string) error { return nil } -func (b *BuildServer) Prepare(args *BuildPrepareArgs, reply *error) error { - client, err := rpc.Dial("tcp", args.RPCAddress) - if err != nil { - return err - } - - *reply = b.build.Prepare(&Ui{client}) +func (b *BuildServer) Prepare(args interface{}, reply *error) error { + *reply = b.build.Prepare() return nil } diff --git a/packer/rpc/build_test.go b/packer/rpc/build_test.go index e7aed364d..959f5d3ba 100644 --- a/packer/rpc/build_test.go +++ b/packer/rpc/build_test.go @@ -13,7 +13,6 @@ var testBuildArtifact = &testArtifact{} type testBuild struct { nameCalled bool prepareCalled bool - prepareUi packer.Ui runCalled bool runCache packer.Cache runUi packer.Ui @@ -27,9 +26,8 @@ func (b *testBuild) Name() string { return "name" } -func (b *testBuild) Prepare(ui packer.Ui) error { +func (b *testBuild) Prepare() error { b.prepareCalled = true - b.prepareUi = ui return nil } @@ -70,13 +68,12 @@ func TestBuildRPC(t *testing.T) { assert.True(b.nameCalled, "name should be called") // Test Prepare - ui := new(testUi) - bClient.Prepare(ui) + bClient.Prepare() assert.True(b.prepareCalled, "prepare should be called") // Test Run cache := new(testCache) - ui = new(testUi) + ui := new(testUi) _, err = bClient.Run(ui, cache) assert.True(b.runCalled, "run should be called") assert.Nil(err, "should not error")