// SetupSignals sets up signal handling to gracefully terminate the underlying
// Docker container and update state when receiving a TERM, INT or QUIT signal.
-func (runner *ContainerRunner) SetupSignals() error {
+func (runner *ContainerRunner) SetupSignals() {
runner.SigChan = make(chan os.Signal, 1)
signal.Notify(runner.SigChan, syscall.SIGTERM)
signal.Notify(runner.SigChan, syscall.SIGINT)
}
}
}(runner.SigChan)
-
- return nil
}
// LoadImage determines the docker image id from the container record and
closeerr := runner.Stdout.Close()
if closeerr != nil {
- runner.CrunchLog.Printf("While closing stdout logs: %v", readerr)
+ runner.CrunchLog.Printf("While closing stdout logs: %v", closeerr)
}
closeerr = runner.Stderr.Close()
if closeerr != nil {
- runner.CrunchLog.Printf("While closing stderr logs: %v", readerr)
+ runner.CrunchLog.Printf("While closing stderr logs: %v", closeerr)
}
runner.loggingDone <- true
containerReader, err = runner.Docker.AttachContainer(runner.ContainerID,
&dockerclient.AttachOptions{Stream: true, Stdout: true, Stderr: true})
if err != nil {
- return fmt.Errorf("While attaching container logs: %v", err)
+ return fmt.Errorf("While attaching container stdout/stderr streams: %v", err)
}
runner.loggingDone = make(chan bool)
hostConfig := &dockerclient.HostConfig{Binds: runner.Binds,
LogConfig: dockerclient.LogConfig{Type: "none"}}
- runner.AttachStreams()
+ err = runner.AttachStreams()
if err != nil {
- return fmt.Errorf("While attaching streams: %v", err)
return err
}
if hosterr != nil {
runner.CrunchLog.Printf("Error getting hostname '%v'", hosterr)
} else {
- runner.CrunchLog.Printf("Executing on host '%s'", runner.ContainerRecord.UUID, hostname)
+ runner.CrunchLog.Printf("Executing on host '%s'", hostname)
}
var runerr, waiterr error
if runerr != nil {
err = runerr
} else if waiterr != nil {
- err = runerr
+ err = waiterr
} else if logerr != nil {
err = logerr
} else if updateerr != nil {
}
// (1) setup signal handling
- err = runner.SetupSignals()
- if err != nil {
- return fmt.Errorf("While setting up signal handling: %v", err)
- }
+ runner.SetupSignals()
// (2) check for and/or load image
err = runner.LoadImage()
api = &ArvTestClient{ContainerRecord: rec}
cr = NewContainerRunner(api, &KeepTestClient{}, docker, "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
+ am := &ArvMountCmdLine{}
+ cr.RunArvMount = am.ArvMountTest
err = cr.Run()
c.Check(err, IsNil)
api := &ArvTestClient{ContainerRecord: rec}
cr := NewContainerRunner(api, &KeepTestClient{}, docker, "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
+ am := &ArvMountCmdLine{}
+ cr.RunArvMount = am.ArvMountTest
go func() {
for cr.ContainerID == "" {