38 lines
763 B
Go
38 lines
763 B
Go
package docker
|
|
|
|
import "github.com/docker/docker/api/types"
|
|
|
|
type ContainerStats struct {
|
|
Running int `json:"running"`
|
|
Stopped int `json:"stopped"`
|
|
Healthy int `json:"healthy"`
|
|
Unhealthy int `json:"unhealthy"`
|
|
Total int `json:"total"`
|
|
}
|
|
|
|
func CalculateContainerStats(containers []types.Container) ContainerStats {
|
|
var running, stopped, healthy, unhealthy int
|
|
for _, container := range containers {
|
|
switch container.State {
|
|
case "running":
|
|
running++
|
|
case "healthy":
|
|
running++
|
|
healthy++
|
|
case "unhealthy":
|
|
running++
|
|
unhealthy++
|
|
case "exited", "stopped":
|
|
stopped++
|
|
}
|
|
}
|
|
|
|
return ContainerStats{
|
|
Running: running,
|
|
Stopped: stopped,
|
|
Healthy: healthy,
|
|
Unhealthy: unhealthy,
|
|
Total: len(containers),
|
|
}
|
|
}
|