unit

package
v0.17.0 Latest Latest
Warning

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

Go to latest
Published: Jun 3, 2025 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

Package unit provides quadlet unit types and generation 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, dependencyGraph *dependency.ServiceDependencyGraph, projectName string) error

ApplyDependencyRelationships applies dependencies to a quadlet unit based on the dependency graph.

func GenerateQuadletUnit

func GenerateQuadletUnit(unit QuadletUnit) string

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

Types

type BaseUnit added in v0.9.0

type BaseUnit struct {
	*systemd.BaseUnit
	Name     string
	UnitType string
}

BaseUnit provides common fields and methods for all unit types.

type Build added in v0.9.0

type Build struct {
	BaseUnit                              // Embed the base struct
	ImageTag            []string          // Specifies the name which is assigned to the resulting image
	File                string            // Path to Containerfile/Dockerfile
	SetWorkingDirectory string            // Sets the working directory for the build context
	Label               []string          // Add metadata to the resulting image
	Annotation          []string          // Add OCI annotations to the resulting image
	Env                 map[string]string // Environment variables for the build process
	Secret              []string          // Pass secret information for build
	Network             []string          // Set network mode for RUN instructions
	Pull                string            // Pull policy for base images (always, missing, never, newer)
	Volume              []string          // Mount volumes for build process
	Target              string            // Set the target build stage to build
	PodmanArgs          []string          // Additional arguments to pass to podman build
}

Build represents the configuration for a build unit.

func NewBuild added in v0.9.0

func NewBuild(name string) *Build

NewBuild creates a new Build with the given name.

func (*Build) FromComposeBuild added in v0.9.0

func (b *Build) FromComposeBuild(buildConfig types.BuildConfig, service types.ServiceConfig, projectName string) *Build

FromComposeBuild converts a Docker Compose build configuration to a Podman Quadlet build configuration.

type Container added in v0.3.0

type Container struct {
	BaseUnit    // Embed the base struct
	Image       string
	Label       []string
	PublishPort []string
	Environment map[string]string
	// Environment file paths (will be sorted for deterministic output)
	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
	// PodmanArgs contains direct podman run arguments for features not supported by Quadlet
	PodmanArgs []string
	// Health check settings
	HealthCmd           []string
	HealthInterval      string
	HealthTimeout       string
	HealthRetries       int
	HealthStartPeriod   string
	HealthStartInterval string

	// Resource constraints
	Memory            string
	MemoryReservation string
	MemorySwap        string
	CPUShares         int64
	CPUQuota          int64
	CPUPeriod         int64
	PidsLimit         int64

	// Advanced container configuration
	Ulimit []string
	Sysctl map[string]string

	Tmpfs  []string
	UserNS string

	// Logging and monitoring configuration
	LogDriver string
	LogOpt    map[string]string

	RestartPolicy string
	// contains filtered or unexported fields
}

Container represents the configuration for a container unit.

func CreateInitContainerUnit added in v0.17.0

func CreateInitContainerUnit(initContainer InitContainer, initName string, parentContainer *Container) *Container

CreateInitContainerUnit creates a Container unit for an init container. It inherits volumes, networks, environment, and secrets from the parent container.

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, project *types.Project) *Container

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

type InitContainer added in v0.17.0

type InitContainer struct {
	Image   string   `yaml:"image"`
	Command []string `yaml:"command,omitempty"`
}

InitContainer represents a container that should run before the main container starts.

func ParseInitContainers added in v0.17.0

func ParseInitContainers(service types.ServiceConfig) ([]InitContainer, error)

ParseInitContainers parses the x-quad-ops-init extension from a Docker Compose service.

type Network added in v0.3.0

type Network struct {
	BaseUnit          // Embed the base 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"`
}

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.

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"`
	Build     Build         `yaml:"build,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() systemd.Unit

GetSystemdUnit returns the appropriate systemd.Unit implementation for this QuadletUnit.

type Secret added in v0.3.0

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

Secret represents a container secret definition.

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 Volume added in v0.3.0

type Volume struct {
	BaseUnit                      // Embed the base 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"`
}

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.

Jump to

Keyboard shortcuts

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