Fix service logs API to be able to specify stream

Before this change, doing service logs was just tossing the stream
selectors and always using the default (both streams). This change adds
a check for which streams the user wants and only includes those.

Fixes #31306

Signed-off-by: Drew Erny <drew.erny@docker.com>
Upstream-commit: f63c62ce70d6ed4706dbde43feb22c6004c32061
Component: engine
This commit is contained in:
Drew Erny
2017-02-23 15:09:09 -08:00
parent 90c65de535
commit 1d2d461e40

View File

@ -277,12 +277,22 @@ func (c *Cluster) ServiceLogs(ctx context.Context, input string, config *backend
return err
}
// set the streams we'll use
stdStreams := []swarmapi.LogStream{}
if config.ContainerLogsOptions.ShowStdout {
stdStreams = append(stdStreams, swarmapi.LogStreamStdout)
}
if config.ContainerLogsOptions.ShowStderr {
stdStreams = append(stdStreams, swarmapi.LogStreamStderr)
}
stream, err := state.logsClient.SubscribeLogs(ctx, &swarmapi.SubscribeLogsRequest{
Selector: &swarmapi.LogSelector{
ServiceIDs: []string{service.ID},
},
Options: &swarmapi.LogSubscriptionOptions{
Follow: config.Follow,
Follow: config.Follow,
Streams: stdStreams,
},
})
if err != nil {