package pods import ( "context" "log" "time" "github.com/containers/podman/v4/pkg/bindings" "github.com/containers/podman/v4/pkg/bindings/containers" "github.com/containers/podman/v4/pkg/bindings/images" "github.com/containers/podman/v4/pkg/domain/entities" "github.com/spf13/viper" ) var Socket context.Context func socketConnection() context.Context { uri := "unix:///run/podman/podman.sock" conn, err := bindings.NewConnection(context.Background(), uri) if err != nil { log.Fatal(err) } return conn } func TestPodman() { _ = socketConnection() } func ConnectSocket() { Socket = socketConnection() } func PullImage() error { log.Println("Downloading Container image ", viper.GetString("image")) image := viper.GetString("image") conn := Socket _, err := images.Pull(conn, image, nil) if err != nil { log.Println(err) return err } return nil } // Cleanup deletes Containers older than the specified maximum Age (Equal to session cookie maximum age) func Cleanup() error { log.Println("Starting cleanup function") containerList := containerList() for _, container := range containerList { now := time.Now() maxAge := time.Second * time.Duration(viper.GetInt("maxAge")) containerAge := now.Sub(container.Created) if containerAge > maxAge { err := containers.Kill(Socket, container.ID, nil) if err != nil { log.Println(err) return err } _, err = containers.Remove(Socket, container.ID, nil) if err != nil { log.Println(err) return err } } } return nil } func containerList() []entities.ListContainer { containerList, err := containers.List(Socket, nil) if err != nil { log.Println("Could not get Containers", err) } return containerList }