communicator/ssh: use SetExited
This commit is contained in:
parent
1400645d69
commit
1812efe3b5
|
@ -79,15 +79,15 @@ func (c *comm) Start(cmd *packer.RemoteCmd) (err error) {
|
|||
go func() {
|
||||
defer session.Close()
|
||||
err := session.Wait()
|
||||
cmd.ExitStatus = 0
|
||||
exitStatus := 0
|
||||
if err != nil {
|
||||
exitErr, ok := err.(*ssh.ExitError)
|
||||
if ok {
|
||||
cmd.ExitStatus = exitErr.ExitStatus()
|
||||
exitStatus = exitErr.ExitStatus()
|
||||
}
|
||||
}
|
||||
|
||||
cmd.Exited = true
|
||||
cmd.SetExited(exitStatus)
|
||||
}()
|
||||
|
||||
return
|
||||
|
|
|
@ -34,7 +34,7 @@ type RemoteCmd struct {
|
|||
ExitStatus int
|
||||
|
||||
// Internal locks and such used for safely setting some shared variables
|
||||
l sync.Mutex
|
||||
l sync.Mutex
|
||||
exitCond *sync.Cond
|
||||
}
|
||||
|
||||
|
|
|
@ -8,7 +8,6 @@ import (
|
|||
"log"
|
||||
"net"
|
||||
"net/rpc"
|
||||
"time"
|
||||
)
|
||||
|
||||
// An implementation of packer.Communicator where the communicator is actually
|
||||
|
@ -203,10 +202,7 @@ func (c *CommunicatorServer) Start(args *CommunicatorStartArgs, reply *interface
|
|||
defer conn.Close()
|
||||
}
|
||||
|
||||
for !cmd.Exited {
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
}
|
||||
|
||||
cmd.Wait()
|
||||
responseWriter.Encode(&CommandFinished{cmd.ExitStatus})
|
||||
}()
|
||||
|
||||
|
|
|
@ -96,8 +96,7 @@ func TestCommunicatorRPC(t *testing.T) {
|
|||
assert.Equal(data, "infoo\n", "should be correct stdin")
|
||||
|
||||
// Test that we can get the exit status properly
|
||||
c.startCmd.ExitStatus = 42
|
||||
c.startCmd.Exited = true
|
||||
c.startCmd.SetExited(42)
|
||||
|
||||
for i := 0; i < 5; i++ {
|
||||
if cmd.Exited {
|
||||
|
|
Loading…
Reference in New Issue