unit

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 22, 2025 License: MIT Imports: 17 Imported by: 0

Documentation

Overview

Package unit provides quadlet unit generation and management functionality

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ApplyDependencyRelationships added in v0.4.0

func ApplyDependencyRelationships(unit *QuadletUnit, serviceName string, dependencies map[string]*ServiceDependency, projectName string)

ApplyDependencyRelationships applies both regular dependencies (After/Requires) and reverse dependencies (PartOf) to a quadlet unit based on the dependency tree.

func BuildServiceDependencyTree added in v0.4.0

func BuildServiceDependencyTree(project *types.Project) map[string]*ServiceDependency

BuildServiceDependencyTree builds a bidirectional dependency tree for all services in a project.

func GenerateQuadletUnit

func GenerateQuadletUnit(unit QuadletUnit, verbose bool) string

GenerateQuadletUnit generates a quadlet unit file content from a unit configuration.

func GetUnitStatus

func GetUnitStatus(unitName string, unitType string) (string, error)

GetUnitStatus - Legacy function for backward compatibility.

func ProcessComposeProjects added in v0.4.0

func ProcessComposeProjects(projects []*types.Project, force bool) error

ProcessComposeProjects processes Docker Compose projects and converts them to Podman systemd units.

func ReloadSystemd

func ReloadSystemd() error

ReloadSystemd reloads the systemd configuration.

func RestartChangedUnits added in v0.4.0

func RestartChangedUnits(changedUnits []QuadletUnit, projectDependencyTrees map[string]map[string]*ServiceDependency) error

RestartChangedUnits restarts all changed units in dependency-aware order.

func RestartUnit

func RestartUnit(unitName string, unitType string) error

RestartUnit - Legacy function for backward compatibility.

func ShowUnit

func ShowUnit(unitName string, unitType string) error

ShowUnit - Legacy function for backward compatibility.

func StartUnit

func StartUnit(unitName string, unitType string) error

StartUnit - Legacy function for backward compatibility.

func StartUnitDependencyAware added in v0.4.0

func StartUnitDependencyAware(unitName string, unitType string, dependencyTree map[string]*ServiceDependency) error

StartUnitDependencyAware starts or restarts a unit while being dependency-aware.

func StopUnit

func StopUnit(unitName string, unitType string) error

StopUnit - Legacy function for backward compatibility.

Types

type BaseSystemdUnit added in v0.3.0

type BaseSystemdUnit struct {
	Name string
	Type string
}

BaseSystemdUnit provides common implementation for all systemd units.

func (*BaseSystemdUnit) GetServiceName added in v0.3.0

func (u *BaseSystemdUnit) GetServiceName() string

GetServiceName returns the full systemd service name based on unit type.

func (*BaseSystemdUnit) GetStatus added in v0.3.0

func (u *BaseSystemdUnit) GetStatus() (string, error)

GetStatus returns the current status of the unit.

func (*BaseSystemdUnit) GetUnitName added in v0.3.0

func (u *BaseSystemdUnit) GetUnitName() string

GetUnitName returns the name of the unit.

func (*BaseSystemdUnit) GetUnitType added in v0.3.0

func (u *BaseSystemdUnit) GetUnitType() string

GetUnitType returns the type of the unit.

func (*BaseSystemdUnit) Restart added in v0.3.0

func (u *BaseSystemdUnit) Restart() error

Restart restarts the unit.

func (*BaseSystemdUnit) Show added in v0.3.0

func (u *BaseSystemdUnit) Show() error

Show displays the unit configuration and status.

func (*BaseSystemdUnit) Start added in v0.3.0

func (u *BaseSystemdUnit) Start() error

Start starts the unit.

func (*BaseSystemdUnit) Stop added in v0.3.0

func (u *BaseSystemdUnit) Stop() error

Stop stops the unit.

type Change added in v0.4.0

type Change struct {
	Name string
	Type string
	Hash []byte
}

Change tracks changes to a unit.

type Container added in v0.3.0

type Container struct {
	Image           string
	Label           []string
	PublishPort     []string
	Environment     map[string]string
	EnvironmentFile []string
	Volume          []string
	Network         []string
	NetworkAlias    []string
	Exec            []string
	Entrypoint      []string
	User            string
	Group           string
	WorkingDir      string
	RunInit         *bool
	// Privileged removed - not supported by podman-systemd
	ReadOnly bool
	// SecurityLabel removed - not supported by podman-systemd
	// Use SecurityLabelType, SecurityLabelLevel, etc. instead
	HostName      string
	ContainerName string
	Secrets       []Secret

	// Systemd unit properties
	Name     string
	UnitType string
}

Container represents the configuration for a container unit.

func NewContainer added in v0.3.0

func NewContainer(name string) *Container

NewContainer creates a new Container with the given name.

func (*Container) FromComposeService added in v0.4.0

func (c *Container) FromComposeService(service types.ServiceConfig, projectName string) *Container

FromComposeService converts a Docker Compose service to a Podman Quadlet container configuration.

func (*Container) GetServiceName added in v0.3.0

func (c *Container) GetServiceName() string

GetServiceName returns the full systemd service name.

func (*Container) GetStatus added in v0.3.0

func (c *Container) GetStatus() (string, error)

GetStatus returns the current status of the unit.

func (*Container) GetUnitName added in v0.3.0

func (c *Container) GetUnitName() string

GetUnitName returns the name of the unit.

func (*Container) GetUnitType added in v0.3.0

func (c *Container) GetUnitType() string

GetUnitType returns the type of the unit.

func (*Container) Restart added in v0.3.0

func (c *Container) Restart() error

Restart restarts the unit.

func (*Container) Show added in v0.3.0

func (c *Container) Show() error

Show displays the unit configuration and status.

func (*Container) Start added in v0.3.0

func (c *Container) Start() error

Start starts the unit.

func (*Container) Stop added in v0.3.0

func (c *Container) Stop() error

Stop stops the unit.

type Network added in v0.3.0

type Network struct {
	Label    []string `yaml:"label"`
	Driver   string   `yaml:"driver"`
	Gateway  string   `yaml:"gateway"`
	IPRange  string   `yaml:"ip_range"`
	Subnet   string   `yaml:"subnet"`
	IPv6     bool     `yaml:"ipv6"`
	Internal bool     `yaml:"internal"`
	// DNSEnabled removed - not supported by podman-systemd
	Options     []string `yaml:"options"`
	NetworkName string   `yaml:"network_name"`

	// Systemd unit properties
	Name     string
	UnitType string
}

Network represents the configuration for a network in a Quadlet unit.

func NewNetwork added in v0.3.0

func NewNetwork(name string) *Network

NewNetwork creates a new Network with the given name.

func (*Network) FromComposeNetwork added in v0.4.0

func (n *Network) FromComposeNetwork(name string, network types.NetworkConfig) *Network

FromComposeNetwork creates a Network from a Docker Compose network configuration.

func (*Network) GetServiceName added in v0.3.0

func (n *Network) GetServiceName() string

GetServiceName returns the full systemd service name.

func (*Network) GetStatus added in v0.3.0

func (n *Network) GetStatus() (string, error)

GetStatus returns the current status of the unit.

func (*Network) GetUnitName added in v0.3.0

func (n *Network) GetUnitName() string

GetUnitName returns the name of the unit.

func (*Network) GetUnitType added in v0.3.0

func (n *Network) GetUnitType() string

GetUnitType returns the type of the unit.

func (*Network) Restart added in v0.3.0

func (n *Network) Restart() error

Restart restarts the unit.

func (*Network) Show added in v0.3.0

func (n *Network) Show() error

Show displays the unit configuration and status.

func (*Network) Start added in v0.3.0

func (n *Network) Start() error

Start starts the unit.

func (*Network) Stop added in v0.3.0

func (n *Network) Stop() error

Stop stops the unit.

type QuadletUnit

type QuadletUnit struct {
	Name      string        `yaml:"name"`
	Type      string        `yaml:"type"`
	Systemd   SystemdConfig `yaml:"systemd"`
	Container Container     `yaml:"container,omitempty"`
	Volume    Volume        `yaml:"volume,omitempty"`
	Network   Network       `yaml:"network,omitempty"`
}

QuadletUnit represents the configuration for a Quadlet unit, which can include systemd, container, volume, network, pod, Kubernetes, image, and build settings.

func (*QuadletUnit) GetSystemdUnit added in v0.3.0

func (u *QuadletUnit) GetSystemdUnit() SystemdUnit

GetSystemdUnit returns the appropriate SystemdUnit implementation for this QuadletUnit.

type Repository

type Repository interface {
	FindAll() ([]Unit, error)
	FindByUnitType(unitType string) ([]Unit, error)
	FindByID(id int64) (Unit, error)
	Create(unit *Unit) (int64, error)
	Delete(id int64) error
}

Repository defines the interface for unit data access operations.

func NewUnitRepository

func NewUnitRepository(db *sql.DB) Repository

NewUnitRepository creates a new SQL-based unit repository.

type SQLRepository added in v0.3.0

type SQLRepository struct {
	// contains filtered or unexported fields
}

SQLRepository implements UnitRepository interface with SQL database.

func (*SQLRepository) Create added in v0.3.0

func (r *SQLRepository) Create(unit *Unit) (int64, error)

Create inserts or updates a unit in the database.

func (*SQLRepository) Delete added in v0.3.0

func (r *SQLRepository) Delete(id int64) error

Delete removes a unit from the database.

func (*SQLRepository) FindAll added in v0.3.0

func (r *SQLRepository) FindAll() ([]Unit, error)

FindAll retrieves all units from the database.

func (*SQLRepository) FindByID added in v0.3.0

func (r *SQLRepository) FindByID(id int64) (Unit, error)

FindByID retrieves a single unit by ID.

func (*SQLRepository) FindByUnitType added in v0.3.0

func (r *SQLRepository) FindByUnitType(unitType string) ([]Unit, error)

FindByUnitType retrieves units filtered by type.

type Secret added in v0.3.0

type Secret struct {
	Source string
	Target string
	UID    string
	GID    string
	Mode   string
}

Secret represents a container secret definition.

type ServiceDependency added in v0.4.0

type ServiceDependency struct {
	// Dependencies is the list of services this service depends on
	Dependencies map[string]struct{}
	// DependentServices is the list of services that depend on this service
	DependentServices map[string]struct{}
}

ServiceDependency represents the dependencies of a service in both directions.

type SystemdConfig

type SystemdConfig struct {
	Description        string   `yaml:"description"`
	After              []string `yaml:"after"`
	Before             []string `yaml:"before"`
	Requires           []string `yaml:"requires"`
	Wants              []string `yaml:"wants"`
	Conflicts          []string `yaml:"conflicts"`
	PartOf             []string `yaml:"part_of"`              // Services that this unit is part of
	PropagatesReloadTo []string `yaml:"propagates_reload_to"` // Services that should be reloaded when this unit is reloaded
	RestartPolicy      string   `yaml:"restart_policy"`
	TimeoutStartSec    int      `yaml:"timeout_start_sec"`
	Type               string   `yaml:"type"`
	RemainAfterExit    bool     `yaml:"remain_after_exit"`
	WantedBy           []string `yaml:"wanted_by"`
}

SystemdConfig represents the configuration for a systemd unit. It includes settings such as the unit description, dependencies, restart policy, and other systemd-specific options.

type SystemdUnit added in v0.3.0

type SystemdUnit interface {
	// GetServiceName returns the full systemd service name
	GetServiceName() string

	// GetUnitType returns the type of the unit (container, volume, network, etc.)
	GetUnitType() string

	// GetUnitName returns the name of the unit
	GetUnitName() string

	// GetStatus returns the current status of the unit
	GetStatus() (string, error)

	// Start starts the unit
	Start() error

	// Stop stops the unit
	Stop() error

	// Restart restarts the unit
	Restart() error

	// Show displays the unit configuration and status
	Show() error
}

SystemdUnit defines the interface for managing systemd units.

type Unit

type Unit struct {
	ID            int64     `db:"id"`
	Name          string    `db:"name"`
	Type          string    `db:"type"`
	CleanupPolicy string    `db:"cleanup_policy"`
	SHA1Hash      []byte    `db:"sha1_hash"`
	CreatedAt     time.Time `db:"created_at"` // Set by database, but not updated on every change
}

Unit represents a record in the units table.

type Volume added in v0.3.0

type Volume struct {
	ContainersConfModule []string `yaml:"containers_conf_module"`
	Copy                 bool     `yaml:"copy"`
	Device               string   `yaml:"device"`
	Driver               string   `yaml:"driver"`
	GlobalArgs           []string `yaml:"global_args"`
	Group                string   `yaml:"group"`
	Image                string   `yaml:"image"`
	Label                []string `yaml:"label"`
	Options              []string `yaml:"options"`
	PodmanArgs           []string `yaml:"podman_args"`
	Type                 string   `yaml:"type"`
	User                 string   `yaml:"user"`
	VolumeName           string   `yaml:"volume_name"`

	// Systemd unit properties
	Name     string
	UnitType string
}

Volume represents the configuration for a volume in a Quadlet unit.

func NewVolume added in v0.3.0

func NewVolume(name string) *Volume

NewVolume creates a new Volume with the given name.

func (*Volume) FromComposeVolume added in v0.4.0

func (v *Volume) FromComposeVolume(name string, volume types.VolumeConfig) *Volume

FromComposeVolume creates a Volume from a Docker Compose volume configuration.

func (*Volume) GetServiceName added in v0.3.0

func (v *Volume) GetServiceName() string

GetServiceName returns the full systemd service name.

func (*Volume) GetStatus added in v0.3.0

func (v *Volume) GetStatus() (string, error)

GetStatus returns the current status of the unit.

func (*Volume) GetUnitName added in v0.3.0

func (v *Volume) GetUnitName() string

GetUnitName returns the name of the unit.

func (*Volume) GetUnitType added in v0.3.0

func (v *Volume) GetUnitType() string

GetUnitType returns the type of the unit.

func (*Volume) Restart added in v0.3.0

func (v *Volume) Restart() error

Restart restarts the unit.

func (*Volume) Show added in v0.3.0

func (v *Volume) Show() error

Show displays the unit configuration and status.

func (*Volume) Start added in v0.3.0

func (v *Volume) Start() error

Start starts the unit.

func (*Volume) Stop added in v0.3.0

func (v *Volume) Stop() error

Stop stops the unit.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL