49 lines
936 B
Go
49 lines
936 B
Go
package pods
|
|
|
|
import (
|
|
"log"
|
|
"time"
|
|
|
|
"github.com/containers/podman/v4/pkg/bindings/volumes"
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
// GarbageCollector is a goroutine that cleans up old Containers
|
|
func GarbageCollector() error {
|
|
if viper.GetBool("timeout_on_restart") {
|
|
timeoutExistingContainers()
|
|
}
|
|
for {
|
|
err := Cleanup()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
time.Sleep(time.Minute * 10)
|
|
}
|
|
}
|
|
|
|
func timeoutExistingContainers() {
|
|
var oldContainers []string
|
|
|
|
for _, container := range containerList() {
|
|
oldContainers = append(oldContainers, container.ID)
|
|
}
|
|
OldContainers = append(OldContainers, oldContainers...)
|
|
log.Println("old Containers: ", oldContainers)
|
|
|
|
}
|
|
|
|
func pruneVolumes() error {
|
|
|
|
results, err := volumes.Prune(Socket, nil)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
resultLen := len(results)
|
|
for i, result := range results {
|
|
log.Printf("[%d/%d] %s %d MB", i, resultLen, result.Id, result.Size/1024/1024)
|
|
}
|
|
return nil
|
|
|
|
}
|