diff options
author | Valentin Rothberg <rothberg@redhat.com> | 2020-09-23 13:32:58 +0200 |
---|---|---|
committer | Valentin Rothberg <rothberg@redhat.com> | 2020-09-23 15:39:25 +0200 |
commit | 376ba349bfadc47a938084ccb3c2d112c92f09ca (patch) | |
tree | fa8acd364392a28b0f0cddc361b83806b4da4458 /pkg/domain/entities | |
parent | 5cedd830f7275e8dc3382502908b846bfa57a3b8 (diff) | |
download | podman-376ba349bfadc47a938084ccb3c2d112c92f09ca.tar.gz podman-376ba349bfadc47a938084ccb3c2d112c92f09ca.tar.bz2 podman-376ba349bfadc47a938084ccb3c2d112c92f09ca.zip |
stats refactor
Refactor the entities' stats API to simplify using it and reduce the
risk of running into concurrency issues at the call sites. Further
simplify the stats code by de-spaghetti-ing the logic and reducing
duplicate code.
`ContainerStats` now returns a data channel and an error. If the error
is nil, callers can read from the channel.
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
Diffstat (limited to 'pkg/domain/entities')
-rw-r--r-- | pkg/domain/entities/containers.go | 7 | ||||
-rw-r--r-- | pkg/domain/entities/engine_container.go | 2 |
2 files changed, 7 insertions, 2 deletions
diff --git a/pkg/domain/entities/containers.go b/pkg/domain/entities/containers.go index 16997cdd1..b6f86785f 100644 --- a/pkg/domain/entities/containers.go +++ b/pkg/domain/entities/containers.go @@ -416,5 +416,10 @@ type ContainerStatsOptions struct { Latest bool NoReset bool NoStream bool - StatChan chan []*define.ContainerStats +} + +// ContainerStatsReport is used for streaming container stats. +type ContainerStatsReport struct { + Error error + Stats []define.ContainerStats } diff --git a/pkg/domain/entities/engine_container.go b/pkg/domain/entities/engine_container.go index 6c85c9267..f105dc333 100644 --- a/pkg/domain/entities/engine_container.go +++ b/pkg/domain/entities/engine_container.go @@ -38,7 +38,7 @@ type ContainerEngine interface { ContainerRun(ctx context.Context, opts ContainerRunOptions) (*ContainerRunReport, error) ContainerRunlabel(ctx context.Context, label string, image string, args []string, opts ContainerRunlabelOptions) error ContainerStart(ctx context.Context, namesOrIds []string, options ContainerStartOptions) ([]*ContainerStartReport, error) - ContainerStats(ctx context.Context, namesOrIds []string, options ContainerStatsOptions) error + ContainerStats(ctx context.Context, namesOrIds []string, options ContainerStatsOptions) (chan ContainerStatsReport, error) ContainerStop(ctx context.Context, namesOrIds []string, options StopOptions) ([]*StopReport, error) ContainerTop(ctx context.Context, options TopOptions) (*StringSliceReport, error) ContainerUnmount(ctx context.Context, nameOrIDs []string, options ContainerUnmountOptions) ([]*ContainerUnmountReport, error) |