func doCycle()

in cleanup.go [436:488]


func doCycle(client DockerClient, lowFreeSpace, freeSpace, lowFreeFiles, freeFiles uint64) error {
	err := updateImages(client)
	if err != nil {
		logrus.Warningln("Failed to update images:", err)
		return err
	}

	err = updateContainers(client)
	if err != nil {
		logrus.Warningln("Failed to update caches:", err)
		return err
	}

	diskSpace, err := client.DiskSpace(opts.MonitorPath)
	if err != nil {
		logrus.Warningln("Failed to verify disk space:", err)
		return err
	}
	if diskSpace.BytesFree >= lowFreeSpace && diskSpace.FilesFree >= lowFreeFiles {
		if diskSpace.BytesFree >= lowFreeSpace {
			logrus.Debugln("Nothing to free. Current free disk space", humanize.Bytes(diskSpace.BytesFree),
				"is above the lower bound", humanize.Bytes(lowFreeSpace))
		}
		if diskSpace.FilesFree >= lowFreeFiles {
			logrus.Debugln("Nothing to free. Current free files count", diskSpace.FilesFree,
				"is above the lower bound", lowFreeFiles)
		}
		return nil
	}

	if diskSpace.BytesFree < lowFreeSpace {
		logrus.Warningln("Freeing disk space. The disk space is below the lower bound:", humanize.Bytes(diskSpace.BytesFree),
			"trying to free up to:", humanize.Bytes(freeSpace))
	}
	if diskSpace.FilesFree < lowFreeSpace {
		logrus.Warningln("Freeing files count. The free file count is below the lower bound:", diskSpace.FilesFree,
			"trying to free up to:", freeFiles)
	}

	freeSpaceErr := doFreeSpace(client, freeSpace, freeFiles)
	if freeSpaceErr != nil {
		logrus.Warningln("Failed to free disk space:", freeSpaceErr)
	}

	currentDiskSpace, err := client.DiskSpace(opts.MonitorPath)
	if err == nil {
		logrus.Infoln("Freed",
			"bytes:", humanize.Bytes(currentDiskSpace.BytesFree-diskSpace.BytesFree),
			"files:", currentDiskSpace.FilesFree-diskSpace.FilesFree)
	}

	return freeSpaceErr
}