in cleanup.go [323:361]
func updateContainers(client DockerClient) error {
// traverse all running containers
containers, err := client.ListContainers(docker.ListContainersOptions{
All: true,
})
if err != nil {
return err
}
newCaches := make(map[string]CacheInfo)
// detect caches
for _, container := range containers {
if !isCacheContainer(container.Names...) {
continue
}
cacheInfo := CacheInfo{
APIContainers: container,
}
if cacheUsed, ok := cachesUsed[container.ID]; ok {
cacheInfo.ObjectTTL = cacheUsed.ObjectTTL
} else {
logrus.Infoln("Detected a new cache", container.ID, container.Names)
cacheInfo.mark(opts.DefaultTTL)
}
newCaches[container.ID] = cacheInfo
}
cachesUsed = newCaches
// traverse all other containers to mark images and caches as used
for _, container := range containers {
if isCacheContainer(container.Names...) {
continue
}
handleDockerContainerID(client, container.ID)
}
return nil
}