Initial commit
This commit is contained in:
51
internal/podman/services/podman_service.go
Normal file
51
internal/podman/services/podman_service.go
Normal file
@ -0,0 +1,51 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"git.cesium.pw/niku/virteen/internal/podman/models"
|
||||
"git.cesium.pw/niku/virteen/internal/podman/repositories"
|
||||
"github.com/containers/podman/v4/pkg/domain/entities"
|
||||
)
|
||||
|
||||
type PodmanContainerService struct {
|
||||
podman *repositories.PodmanRepository
|
||||
}
|
||||
|
||||
func (pcs *PodmanContainerService) List() ([]entities.ListContainer, error) {
|
||||
return pcs.podman.ListContainers()
|
||||
}
|
||||
|
||||
func (pcs *PodmanContainerService) Create(blueprint models.ContainerBlueprint) error {
|
||||
return pcs.podman.CreateContainer(blueprint)
|
||||
}
|
||||
|
||||
func (pcs *PodmanContainerService) Delete(name string) error {
|
||||
return pcs.podman.DeleteContainer(name)
|
||||
}
|
||||
|
||||
func (pcs *PodmanContainerService) UpdateStatus(name, status string) error {
|
||||
var state models.ContainerStatus
|
||||
if status == "started" {
|
||||
state = models.StartContainer
|
||||
} else if status == "stopped" {
|
||||
state = models.StopContainer
|
||||
} else if status == "restarting" {
|
||||
state = models.RestartContainer
|
||||
} else {
|
||||
return fmt.Errorf("invalid state, should be started, stopped or restarting")
|
||||
}
|
||||
|
||||
return pcs.podman.UpdateContainerStatus(name, state)
|
||||
}
|
||||
|
||||
func NewPodmanContainerService() (*PodmanContainerService, error) {
|
||||
podmanRepo, err := repositories.NewPodmanRepository()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &PodmanContainerService{
|
||||
podman: podmanRepo,
|
||||
}, nil
|
||||
}
|
Reference in New Issue
Block a user