Help us shape the future of Go! Take the 2026 Go Developer Survey

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