Emit server status events

This commit is contained in:
Dane Everitt
2019-04-21 12:02:28 -07:00
parent bed30d9229
commit 8795e7d739
4 changed files with 70 additions and 39 deletions

View File

@@ -120,6 +120,7 @@ func (d *DockerEnvironment) Start() error {
// No reason to try starting a container that is already running.
if c.State.Running {
d.Server.Emit(StatusEvent, ProcessRunningState)
if !d.attached {
return d.Attach()
}
@@ -129,7 +130,9 @@ func (d *DockerEnvironment) Start() error {
opts := types.ContainerStartOptions{}
d.Server.Emit(StatusEvent, ProcessStartingState)
if err := d.Client.ContainerStart(context.Background(), d.Server.Uuid, opts); err != nil {
d.Server.Emit(StatusEvent, ProcessOfflineState)
return err
}
@@ -142,6 +145,7 @@ func (d *DockerEnvironment) Start() error {
func (d *DockerEnvironment) Stop() error {
t := time.Second * 10
d.Server.Emit(StatusEvent, ProcessStoppingState)
return d.Client.ContainerStop(context.Background(), d.Server.Uuid, &t)
}
@@ -158,6 +162,7 @@ func (d *DockerEnvironment) Terminate(signal os.Signal) error {
return nil
}
d.Server.Emit(StatusEvent, ProcessStoppingState)
return d.Client.ContainerKill(ctx, d.Server.Uuid, signal.String())
}
@@ -193,6 +198,7 @@ func (d *DockerEnvironment) Attach() error {
go func() {
defer d.stream.Close()
defer func() {
d.Server.Emit(StatusEvent, ProcessOfflineState)
d.attached = false
}()
@@ -232,7 +238,7 @@ func (d *DockerEnvironment) FollowConsoleOutput() error {
}
if err := s.Err(); err != nil {
zap.S().Errorw("error in scanner", zap.Error(err))
zap.S().Warnw("error processing scanner line in console output", zap.String("server", d.Server.Uuid), zap.Error(err))
}
}(reader)