packer: Build.Cancel
This commit is contained in:
parent
0ba80c88e8
commit
30a061a855
|
@ -8,6 +8,7 @@ type Build interface {
|
||||||
Name() string
|
Name() string
|
||||||
Prepare(Ui) error
|
Prepare(Ui) error
|
||||||
Run(Ui) Artifact
|
Run(Ui) Artifact
|
||||||
|
Cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
// A build struct represents a single build job, the result of which should
|
// A build struct represents a single build job, the result of which should
|
||||||
|
@ -87,3 +88,7 @@ func (b *coreBuild) Run(ui Ui) Artifact {
|
||||||
hook := &DispatchHook{hooks}
|
hook := &DispatchHook{hooks}
|
||||||
return b.builder.Run(ui, hook)
|
return b.builder.Run(ui, hook)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Cancels the build if it is running.
|
||||||
|
func (b *coreBuild) Cancel() {
|
||||||
|
}
|
||||||
|
|
|
@ -68,6 +68,12 @@ func (b *build) Run(ui packer.Ui) packer.Artifact {
|
||||||
return Artifact(client)
|
return Artifact(client)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *build) Cancel() {
|
||||||
|
if err := b.client.Call("Build.Cancel", new(interface{}), new(interface{})); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (b *BuildServer) Name(args *interface{}, reply *string) error {
|
func (b *BuildServer) Name(args *interface{}, reply *string) error {
|
||||||
*reply = b.build.Name()
|
*reply = b.build.Name()
|
||||||
return nil
|
return nil
|
||||||
|
@ -98,3 +104,8 @@ func (b *BuildServer) Run(args *BuildRunArgs, reply *string) error {
|
||||||
*reply = serveSingleConn(server)
|
*reply = serveSingleConn(server)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *BuildServer) Cancel(args *interface{}, reply *interface{}) error {
|
||||||
|
b.build.Cancel()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ type testBuild struct {
|
||||||
prepareUi packer.Ui
|
prepareUi packer.Ui
|
||||||
runCalled bool
|
runCalled bool
|
||||||
runUi packer.Ui
|
runUi packer.Ui
|
||||||
|
cancelCalled bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *testBuild) Name() string {
|
func (b *testBuild) Name() string {
|
||||||
|
@ -34,6 +35,10 @@ func (b *testBuild) Run(ui packer.Ui) packer.Artifact {
|
||||||
return testBuildArtifact
|
return testBuildArtifact
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *testBuild) Cancel() {
|
||||||
|
b.cancelCalled = true
|
||||||
|
}
|
||||||
|
|
||||||
func TestBuildRPC(t *testing.T) {
|
func TestBuildRPC(t *testing.T) {
|
||||||
assert := asserts.NewTestingAsserts(t, true)
|
assert := asserts.NewTestingAsserts(t, true)
|
||||||
|
|
||||||
|
@ -70,6 +75,10 @@ func TestBuildRPC(t *testing.T) {
|
||||||
assert.True(ui.sayCalled, "say should be called")
|
assert.True(ui.sayCalled, "say should be called")
|
||||||
assert.Equal(ui.sayMessage, "format", "message should be correct")
|
assert.Equal(ui.sayMessage, "format", "message should be correct")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test Cancel
|
||||||
|
bClient.Cancel()
|
||||||
|
assert.True(b.cancelCalled, "cancel should be called")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestBuild_ImplementsBuild(t *testing.T) {
|
func TestBuild_ImplementsBuild(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue