func updateContainers()

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
}