...

Package dbus

import "github.com/coreos/go-systemd/v22/dbus"
Overview
Index

Overview ▾

Integration with the systemd D-Bus API. See http://www.freedesktop.org/wiki/Software/systemd/dbus/

Index ▾

func PathBusEscape(path string) string
type Conn
    func New() (*Conn, error)
    func NewConnection(dialBus func() (*dbus.Conn, error)) (*Conn, error)
    func NewSystemConnection() (*Conn, error)
    func NewSystemConnectionContext(ctx context.Context) (*Conn, error)
    func NewSystemdConnection() (*Conn, error)
    func NewSystemdConnectionContext(ctx context.Context) (*Conn, error)
    func NewUserConnection() (*Conn, error)
    func NewUserConnectionContext(ctx context.Context) (*Conn, error)
    func NewWithContext(ctx context.Context) (*Conn, error)
    func (c *Conn) Close()
    func (c *Conn) Connected() bool
    func (c *Conn) DisableUnitFiles(files []string, runtime bool) ([]DisableUnitFileChange, error)
    func (c *Conn) DisableUnitFilesContext(ctx context.Context, files []string, runtime bool) ([]DisableUnitFileChange, error)
    func (c *Conn) EnableUnitFiles(files []string, runtime bool, force bool) (bool, []EnableUnitFileChange, error)
    func (c *Conn) EnableUnitFilesContext(ctx context.Context, files []string, runtime bool, force bool) (bool, []EnableUnitFileChange, error)
    func (c *Conn) FreezeUnit(ctx context.Context, unit string) error
    func (c *Conn) GetAllProperties(unit string) (map[string]interface{}, error)
    func (c *Conn) GetAllPropertiesContext(ctx context.Context, unit string) (map[string]interface{}, error)
    func (c *Conn) GetManagerProperty(prop string) (string, error)
    func (c *Conn) GetServiceProperty(service string, propertyName string) (*Property, error)
    func (c *Conn) GetServicePropertyContext(ctx context.Context, service string, propertyName string) (*Property, error)
    func (c *Conn) GetUnitByPID(ctx context.Context, pid uint32) (dbus.ObjectPath, error)
    func (c *Conn) GetUnitNameByPID(ctx context.Context, pid uint32) (string, error)
    func (c *Conn) GetUnitPathProperties(path dbus.ObjectPath) (map[string]interface{}, error)
    func (c *Conn) GetUnitPathPropertiesContext(ctx context.Context, path dbus.ObjectPath) (map[string]interface{}, error)
    func (c *Conn) GetUnitProperties(unit string) (map[string]interface{}, error)
    func (c *Conn) GetUnitPropertiesContext(ctx context.Context, unit string) (map[string]interface{}, error)
    func (c *Conn) GetUnitProperty(unit string, propertyName string) (*Property, error)
    func (c *Conn) GetUnitPropertyContext(ctx context.Context, unit string, propertyName string) (*Property, error)
    func (c *Conn) GetUnitTypeProperties(unit string, unitType string) (map[string]interface{}, error)
    func (c *Conn) GetUnitTypePropertiesContext(ctx context.Context, unit string, unitType string) (map[string]interface{}, error)
    func (c *Conn) GetUnitTypeProperty(unit string, unitType string, propertyName string) (*Property, error)
    func (c *Conn) GetUnitTypePropertyContext(ctx context.Context, unit string, unitType string, propertyName string) (*Property, error)
    func (c *Conn) KillUnit(name string, signal int32)
    func (c *Conn) KillUnitContext(ctx context.Context, name string, signal int32)
    func (c *Conn) KillUnitWithTarget(ctx context.Context, name string, target Who, signal int32) error
    func (c *Conn) LinkUnitFiles(files []string, runtime bool, force bool) ([]LinkUnitFileChange, error)
    func (c *Conn) LinkUnitFilesContext(ctx context.Context, files []string, runtime bool, force bool) ([]LinkUnitFileChange, error)
    func (c *Conn) ListJobs() ([]JobStatus, error)
    func (c *Conn) ListJobsContext(ctx context.Context) ([]JobStatus, error)
    func (c *Conn) ListUnitFiles() ([]UnitFile, error)
    func (c *Conn) ListUnitFilesByPatterns(states []string, patterns []string) ([]UnitFile, error)
    func (c *Conn) ListUnitFilesByPatternsContext(ctx context.Context, states []string, patterns []string) ([]UnitFile, error)
    func (c *Conn) ListUnitFilesContext(ctx context.Context) ([]UnitFile, error)
    func (c *Conn) ListUnits() ([]UnitStatus, error)
    func (c *Conn) ListUnitsByNames(units []string) ([]UnitStatus, error)
    func (c *Conn) ListUnitsByNamesContext(ctx context.Context, units []string) ([]UnitStatus, error)
    func (c *Conn) ListUnitsByPatterns(states []string, patterns []string) ([]UnitStatus, error)
    func (c *Conn) ListUnitsByPatternsContext(ctx context.Context, states []string, patterns []string) ([]UnitStatus, error)
    func (c *Conn) ListUnitsContext(ctx context.Context) ([]UnitStatus, error)
    func (c *Conn) ListUnitsFiltered(states []string) ([]UnitStatus, error)
    func (c *Conn) ListUnitsFilteredContext(ctx context.Context, states []string) ([]UnitStatus, error)
    func (c *Conn) MaskUnitFiles(files []string, runtime bool, force bool) ([]MaskUnitFileChange, error)
    func (c *Conn) MaskUnitFilesContext(ctx context.Context, files []string, runtime bool, force bool) ([]MaskUnitFileChange, error)
    func (conn *Conn) NewSubscriptionSet() *SubscriptionSet
    func (c *Conn) Reload() error
    func (c *Conn) ReloadContext(ctx context.Context) error
    func (c *Conn) ReloadOrRestartUnit(name string, mode string, ch chan<- string) (int, error)
    func (c *Conn) ReloadOrRestartUnitContext(ctx context.Context, name string, mode string, ch chan<- string) (int, error)
    func (c *Conn) ReloadOrTryRestartUnit(name string, mode string, ch chan<- string) (int, error)
    func (c *Conn) ReloadOrTryRestartUnitContext(ctx context.Context, name string, mode string, ch chan<- string) (int, error)
    func (c *Conn) ReloadUnit(name string, mode string, ch chan<- string) (int, error)
    func (c *Conn) ReloadUnitContext(ctx context.Context, name string, mode string, ch chan<- string) (int, error)
    func (c *Conn) ResetFailedUnit(name string) error
    func (c *Conn) ResetFailedUnitContext(ctx context.Context, name string) error
    func (c *Conn) RestartUnit(name string, mode string, ch chan<- string) (int, error)
    func (c *Conn) RestartUnitContext(ctx context.Context, name string, mode string, ch chan<- string) (int, error)
    func (c *Conn) SetPropertiesSubscriber(updateCh chan<- *PropertiesUpdate, errCh chan<- error)
    func (c *Conn) SetSubStateSubscriber(updateCh chan<- *SubStateUpdate, errCh chan<- error)
    func (c *Conn) SetUnitProperties(name string, runtime bool, properties ...Property) error
    func (c *Conn) SetUnitPropertiesContext(ctx context.Context, name string, runtime bool, properties ...Property) error
    func (c *Conn) StartTransientUnit(name string, mode string, properties []Property, ch chan<- string) (int, error)
    func (c *Conn) StartTransientUnitContext(ctx context.Context, name string, mode string, properties []Property, ch chan<- string) (int, error)
    func (c *Conn) StartUnit(name string, mode string, ch chan<- string) (int, error)
    func (c *Conn) StartUnitContext(ctx context.Context, name string, mode string, ch chan<- string) (int, error)
    func (c *Conn) StopUnit(name string, mode string, ch chan<- string) (int, error)
    func (c *Conn) StopUnitContext(ctx context.Context, name string, mode string, ch chan<- string) (int, error)
    func (c *Conn) Subscribe() error
    func (c *Conn) SubscribeUnits(interval time.Duration) (<-chan map[string]*UnitStatus, <-chan error)
    func (c *Conn) SubscribeUnitsCustom(interval time.Duration, buffer int, isChanged func(*UnitStatus, *UnitStatus) bool, filterUnit func(string) bool) (<-chan map[string]*UnitStatus, <-chan error)
    func (c *Conn) SystemState() (*Property, error)
    func (c *Conn) SystemStateContext(ctx context.Context) (*Property, error)
    func (c *Conn) ThawUnit(ctx context.Context, unit string) error
    func (c *Conn) TryRestartUnit(name string, mode string, ch chan<- string) (int, error)
    func (c *Conn) TryRestartUnitContext(ctx context.Context, name string, mode string, ch chan<- string) (int, error)
    func (c *Conn) UnmaskUnitFiles(files []string, runtime bool) ([]UnmaskUnitFileChange, error)
    func (c *Conn) UnmaskUnitFilesContext(ctx context.Context, files []string, runtime bool) ([]UnmaskUnitFileChange, error)
    func (c *Conn) Unsubscribe() error
type DisableUnitFileChange
type EnableUnitFileChange
type JobStatus
type LinkUnitFileChange
type MaskUnitFileChange
type PropertiesUpdate
type Property
    func PropAfter(units ...string) Property
    func PropBefore(units ...string) Property
    func PropBindsTo(units ...string) Property
    func PropBoundBy(units ...string) Property
    func PropConflictedBy(units ...string) Property
    func PropConflicts(units ...string) Property
    func PropDescription(desc string) Property
    func PropExecStart(command []string, uncleanIsFailure bool) Property
    func PropOnFailure(units ...string) Property
    func PropPids(pids ...uint32) Property
    func PropPropagatesReloadTo(units ...string) Property
    func PropRemainAfterExit(b bool) Property
    func PropRequiredBy(units ...string) Property
    func PropRequiredByOverridable(units ...string) Property
    func PropRequires(units ...string) Property
    func PropRequiresMountsFor(units ...string) Property
    func PropRequiresOverridable(units ...string) Property
    func PropRequisite(units ...string) Property
    func PropRequisiteOverridable(units ...string) Property
    func PropSlice(slice string) Property
    func PropTriggeredBy(units ...string) Property
    func PropTriggers(units ...string) Property
    func PropType(t string) Property
    func PropWantedBy(units ...string) Property
    func PropWants(units ...string) Property
type PropertyCollection
type SubStateUpdate
type SubscriptionSet
    func (s SubscriptionSet) Add(value string)
    func (s SubscriptionSet) Contains(value string) (exists bool)
    func (s SubscriptionSet) Length() int
    func (s SubscriptionSet) Remove(value string)
    func (s *SubscriptionSet) Subscribe() (<-chan map[string]*UnitStatus, <-chan error)
    func (s SubscriptionSet) Values() (values []string)
type UnitFile
type UnitStatus
type UnmaskUnitFileChange
type Who

Package files

dbus.go methods.go properties.go set.go subscription.go subscription_set.go

func PathBusEscape

func PathBusEscape(path string) string

PathBusEscape sanitizes a constituent string of a dbus ObjectPath using the rules that systemd uses for serializing special characters.

type Conn

Conn is a connection to systemd's dbus endpoint.

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

func New

func New() (*Conn, error)

Deprecated: use NewWithContext instead.

func NewConnection

func NewConnection(dialBus func() (*dbus.Conn, error)) (*Conn, error)

NewConnection establishes a connection to a bus using a caller-supplied function. This allows connecting to remote buses through a user-supplied mechanism. The supplied function may be called multiple times, and should return independent connections. The returned connection must be fully initialised: the org.freedesktop.DBus.Hello call must have succeeded, and any authentication should be handled by the function.

func NewSystemConnection

func NewSystemConnection() (*Conn, error)

Deprecated: use NewSystemConnectionContext instead.

func NewSystemConnectionContext

func NewSystemConnectionContext(ctx context.Context) (*Conn, error)

NewSystemConnectionContext establishes a connection to the system bus and authenticates. Callers should call Close() when done with the connection.

func NewSystemdConnection

func NewSystemdConnection() (*Conn, error)

Deprecated: use NewSystemdConnectionContext instead.

func NewSystemdConnectionContext

func NewSystemdConnectionContext(ctx context.Context) (*Conn, error)

NewSystemdConnectionContext establishes a private, direct connection to systemd. This can be used for communicating with systemd without a dbus daemon. Callers should call Close() when done with the connection.

func NewUserConnection

func NewUserConnection() (*Conn, error)

Deprecated: use NewUserConnectionContext instead.

func NewUserConnectionContext

func NewUserConnectionContext(ctx context.Context) (*Conn, error)

NewUserConnectionContext establishes a connection to the session bus and authenticates. This can be used to connect to systemd user instances. Callers should call Close() when done with the connection.

func NewWithContext

func NewWithContext(ctx context.Context) (*Conn, error)

NewWithContext establishes a connection to any available bus and authenticates. Callers should call Close() when done with the connection.

func (*Conn) Close

func (c *Conn) Close()

Close closes an established connection.

func (*Conn) Connected

func (c *Conn) Connected() bool

Connected returns whether conn is connected

func (*Conn) DisableUnitFiles

func (c *Conn) DisableUnitFiles(files []string, runtime bool) ([]DisableUnitFileChange, error)

Deprecated: use DisableUnitFilesContext instead.

func (*Conn) DisableUnitFilesContext

func (c *Conn) DisableUnitFilesContext(ctx context.Context, files []string, runtime bool) ([]DisableUnitFileChange, error)

DisableUnitFilesContext may be used to disable one or more units in the system (by removing symlinks to them from /etc or /run).

It takes a list of unit files to disable (either just file names or full absolute paths if the unit files are residing outside the usual unit search paths), and one boolean: whether the unit was enabled for runtime only (true, /run), or persistently (false, /etc).

This call returns an array with the changes made. The changes list consists of structures with three strings: the type of the change (one of symlink or unlink), the file name of the symlink and the destination of the symlink.

func (*Conn) EnableUnitFiles

func (c *Conn) EnableUnitFiles(files []string, runtime bool, force bool) (bool, []EnableUnitFileChange, error)

Deprecated: use EnableUnitFilesContext instead.

func (*Conn) EnableUnitFilesContext

func (c *Conn) EnableUnitFilesContext(ctx context.Context, files []string, runtime bool, force bool) (bool, []EnableUnitFileChange, error)

EnableUnitFilesContext may be used to enable one or more units in the system (by creating symlinks to them in /etc or /run).

It takes a list of unit files to enable (either just file names or full absolute paths if the unit files are residing outside the usual unit search paths), and two booleans: the first controls whether the unit shall be enabled for runtime only (true, /run), or persistently (false, /etc). The second one controls whether symlinks pointing to other units shall be replaced if necessary.

This call returns one boolean and an array with the changes made. The boolean signals whether the unit files contained any enablement information (i.e. an [Install]) section. The changes list consists of structures with three strings: the type of the change (one of symlink or unlink), the file name of the symlink and the destination of the symlink.

func (*Conn) FreezeUnit

func (c *Conn) FreezeUnit(ctx context.Context, unit string) error

Freeze the cgroup associated with the unit. Note that FreezeUnit and ThawUnit are only supported on systems running with cgroup v2.

func (*Conn) GetAllProperties

func (c *Conn) GetAllProperties(unit string) (map[string]interface{}, error)

Deprecated: use GetAllPropertiesContext instead.

func (*Conn) GetAllPropertiesContext

func (c *Conn) GetAllPropertiesContext(ctx context.Context, unit string) (map[string]interface{}, error)

GetAllPropertiesContext takes the (unescaped) unit name and returns all of its dbus object properties.

func (*Conn) GetManagerProperty

func (c *Conn) GetManagerProperty(prop string) (string, error)

GetManagerProperty returns the value of a property on the org.freedesktop.systemd1.Manager interface. The value is returned in its string representation, as defined at https://developer.gnome.org/glib/unstable/gvariant-text.html.

func (*Conn) GetServiceProperty

func (c *Conn) GetServiceProperty(service string, propertyName string) (*Property, error)

Deprecated: use GetServicePropertyContext instead.

func (*Conn) GetServicePropertyContext

func (c *Conn) GetServicePropertyContext(ctx context.Context, service string, propertyName string) (*Property, error)

GetServiceProperty returns property for given service name and property name.

func (*Conn) GetUnitByPID

func (c *Conn) GetUnitByPID(ctx context.Context, pid uint32) (dbus.ObjectPath, error)

GetUnitByPID returns the unit object path of the unit a process ID belongs to. It takes a UNIX PID and returns the object path. The PID must refer to an existing system process

func (*Conn) GetUnitNameByPID

func (c *Conn) GetUnitNameByPID(ctx context.Context, pid uint32) (string, error)

GetUnitNameByPID returns the name of the unit a process ID belongs to. It takes a UNIX PID and returns the object path. The PID must refer to an existing system process

func (*Conn) GetUnitPathProperties

func (c *Conn) GetUnitPathProperties(path dbus.ObjectPath) (map[string]interface{}, error)

Deprecated: use GetUnitPathPropertiesContext instead.

func (*Conn) GetUnitPathPropertiesContext

func (c *Conn) GetUnitPathPropertiesContext(ctx context.Context, path dbus.ObjectPath) (map[string]interface{}, error)

GetUnitPathPropertiesContext takes the (escaped) unit path and returns all of its dbus object properties.

func (*Conn) GetUnitProperties

func (c *Conn) GetUnitProperties(unit string) (map[string]interface{}, error)

Deprecated: use GetUnitPropertiesContext instead.

func (*Conn) GetUnitPropertiesContext

func (c *Conn) GetUnitPropertiesContext(ctx context.Context, unit string) (map[string]interface{}, error)

GetUnitPropertiesContext takes the (unescaped) unit name and returns all of its dbus object properties.

func (*Conn) GetUnitProperty

func (c *Conn) GetUnitProperty(unit string, propertyName string) (*Property, error)

Deprecated: use GetUnitPropertyContext instead.

func (*Conn) GetUnitPropertyContext

func (c *Conn) GetUnitPropertyContext(ctx context.Context, unit string, propertyName string) (*Property, error)

GetUnitPropertyContext takes an (unescaped) unit name, and a property name, and returns the property value.

func (*Conn) GetUnitTypeProperties

func (c *Conn) GetUnitTypeProperties(unit string, unitType string) (map[string]interface{}, error)

Deprecated: use GetUnitTypePropertiesContext instead.

func (*Conn) GetUnitTypePropertiesContext

func (c *Conn) GetUnitTypePropertiesContext(ctx context.Context, unit string, unitType string) (map[string]interface{}, error)

GetUnitTypePropertiesContext returns the extra properties for a unit, specific to the unit type. Valid values for unitType: Service, Socket, Target, Device, Mount, Automount, Snapshot, Timer, Swap, Path, Slice, Scope. Returns "dbus.Error: Unknown interface" error if the unitType is not the correct type of the unit.

func (*Conn) GetUnitTypeProperty

func (c *Conn) GetUnitTypeProperty(unit string, unitType string, propertyName string) (*Property, error)

Deprecated: use GetUnitTypePropertyContext instead.

func (*Conn) GetUnitTypePropertyContext

func (c *Conn) GetUnitTypePropertyContext(ctx context.Context, unit string, unitType string, propertyName string) (*Property, error)

GetUnitTypePropertyContext takes a property name, a unit name, and a unit type, and returns a property value. For valid values of unitType, see GetUnitTypePropertiesContext.

func (*Conn) KillUnit

func (c *Conn) KillUnit(name string, signal int32)

Deprecated: use KillUnitContext instead.

func (*Conn) KillUnitContext

func (c *Conn) KillUnitContext(ctx context.Context, name string, signal int32)

KillUnitContext takes the unit name and a UNIX signal number to send. All of the unit's processes are killed.

func (*Conn) KillUnitWithTarget

func (c *Conn) KillUnitWithTarget(ctx context.Context, name string, target Who, signal int32) error

KillUnitWithTarget is like KillUnitContext, but allows you to specify which process in the unit to send the signal to.

func (*Conn) LinkUnitFiles

func (c *Conn) LinkUnitFiles(files []string, runtime bool, force bool) ([]LinkUnitFileChange, error)

Deprecated: use LinkUnitFilesContext instead.

func (*Conn) LinkUnitFilesContext

func (c *Conn) LinkUnitFilesContext(ctx context.Context, files []string, runtime bool, force bool) ([]LinkUnitFileChange, error)

LinkUnitFilesContext links unit files (that are located outside of the usual unit search paths) into the unit search path.

It takes a list of absolute paths to unit files to link and two booleans.

The first boolean controls whether the unit shall be enabled for runtime only (true, /run), or persistently (false, /etc).

The second controls whether symlinks pointing to other units shall be replaced if necessary.

This call returns a list of the changes made. The list consists of structures with three strings: the type of the change (one of symlink or unlink), the file name of the symlink and the destination of the symlink.

func (*Conn) ListJobs

func (c *Conn) ListJobs() ([]JobStatus, error)

Deprecated: use ListJobsContext instead.

func (*Conn) ListJobsContext

func (c *Conn) ListJobsContext(ctx context.Context) ([]JobStatus, error)

ListJobsContext returns an array with all currently queued jobs.

func (*Conn) ListUnitFiles

func (c *Conn) ListUnitFiles() ([]UnitFile, error)

Deprecated: use ListUnitFilesContext instead.

func (*Conn) ListUnitFilesByPatterns

func (c *Conn) ListUnitFilesByPatterns(states []string, patterns []string) ([]UnitFile, error)

Deprecated: use ListUnitFilesByPatternsContext instead.

func (*Conn) ListUnitFilesByPatternsContext

func (c *Conn) ListUnitFilesByPatternsContext(ctx context.Context, states []string, patterns []string) ([]UnitFile, error)

ListUnitFilesByPatternsContext returns an array of all available units on disk matched the patterns.

func (*Conn) ListUnitFilesContext

func (c *Conn) ListUnitFilesContext(ctx context.Context) ([]UnitFile, error)

ListUnitFiles returns an array of all available units on disk.

func (*Conn) ListUnits

func (c *Conn) ListUnits() ([]UnitStatus, error)

Deprecated: use ListUnitsContext instead.

func (*Conn) ListUnitsByNames

func (c *Conn) ListUnitsByNames(units []string) ([]UnitStatus, error)

Deprecated: use ListUnitsByNamesContext instead.

func (*Conn) ListUnitsByNamesContext

func (c *Conn) ListUnitsByNamesContext(ctx context.Context, units []string) ([]UnitStatus, error)

ListUnitsByNamesContext returns an array with units. It takes a list of units' names and returns an UnitStatus array. Comparing to ListUnitsByPatternsContext method, this method returns statuses even for inactive or non-existing units. Input array should contain exact unit names, but not patterns.

Requires systemd v230 or higher.

func (*Conn) ListUnitsByPatterns

func (c *Conn) ListUnitsByPatterns(states []string, patterns []string) ([]UnitStatus, error)

Deprecated: use ListUnitsByPatternsContext instead.

func (*Conn) ListUnitsByPatternsContext

func (c *Conn) ListUnitsByPatternsContext(ctx context.Context, states []string, patterns []string) ([]UnitStatus, error)

ListUnitsByPatternsContext returns an array with units. It takes a list of units' statuses and names to filter. Note that units may be known by multiple names at the same time, and hence there might be more unit names loaded than actual units behind them.

func (*Conn) ListUnitsContext

func (c *Conn) ListUnitsContext(ctx context.Context) ([]UnitStatus, error)

ListUnitsContext returns an array with all currently loaded units. Note that units may be known by multiple names at the same time, and hence there might be more unit names loaded than actual units behind them. Also note that a unit is only loaded if it is active and/or enabled. Units that are both disabled and inactive will thus not be returned.

func (*Conn) ListUnitsFiltered

func (c *Conn) ListUnitsFiltered(states []string) ([]UnitStatus, error)

Deprecated: use ListUnitsFilteredContext instead.

func (*Conn) ListUnitsFilteredContext

func (c *Conn) ListUnitsFilteredContext(ctx context.Context, states []string) ([]UnitStatus, error)

ListUnitsFilteredContext returns an array with units filtered by state. It takes a list of units' statuses to filter.

func (*Conn) MaskUnitFiles

func (c *Conn) MaskUnitFiles(files []string, runtime bool, force bool) ([]MaskUnitFileChange, error)

Deprecated: use MaskUnitFilesContext instead.

func (*Conn) MaskUnitFilesContext

func (c *Conn) MaskUnitFilesContext(ctx context.Context, files []string, runtime bool, force bool) ([]MaskUnitFileChange, error)

MaskUnitFilesContext masks one or more units in the system.

The files argument contains a list of units to mask (either just file names or full absolute paths if the unit files are residing outside the usual unit search paths).

The runtime argument is used to specify whether the unit was enabled for runtime only (true, /run/systemd/..), or persistently (false, /etc/systemd/..).

func (*Conn) NewSubscriptionSet

func (conn *Conn) NewSubscriptionSet() *SubscriptionSet

NewSubscriptionSet returns a new subscription set.

func (*Conn) Reload

func (c *Conn) Reload() error

Deprecated: use ReloadContext instead.

func (*Conn) ReloadContext

func (c *Conn) ReloadContext(ctx context.Context) error

ReloadContext instructs systemd to scan for and reload unit files. This is an equivalent to systemctl daemon-reload.

func (*Conn) ReloadOrRestartUnit

func (c *Conn) ReloadOrRestartUnit(name string, mode string, ch chan<- string) (int, error)

Deprecated: use ReloadOrRestartUnitContext instead.

func (*Conn) ReloadOrRestartUnitContext

func (c *Conn) ReloadOrRestartUnitContext(ctx context.Context, name string, mode string, ch chan<- string) (int, error)

ReloadOrRestartUnitContext attempts a reload if the unit supports it and use a restart otherwise.

func (*Conn) ReloadOrTryRestartUnit

func (c *Conn) ReloadOrTryRestartUnit(name string, mode string, ch chan<- string) (int, error)

Deprecated: use ReloadOrTryRestartUnitContext instead.

func (*Conn) ReloadOrTryRestartUnitContext

func (c *Conn) ReloadOrTryRestartUnitContext(ctx context.Context, name string, mode string, ch chan<- string) (int, error)

ReloadOrTryRestartUnitContext attempts a reload if the unit supports it, and use a "Try" flavored restart otherwise.

func (*Conn) ReloadUnit

func (c *Conn) ReloadUnit(name string, mode string, ch chan<- string) (int, error)

Deprecated: use ReloadUnitContext instead.

func (*Conn) ReloadUnitContext

func (c *Conn) ReloadUnitContext(ctx context.Context, name string, mode string, ch chan<- string) (int, error)

ReloadUnitContext reloads a unit. Reloading is done only if the unit is already running, and fails otherwise.

func (*Conn) ResetFailedUnit

func (c *Conn) ResetFailedUnit(name string) error

Deprecated: use ResetFailedUnitContext instead.

func (*Conn) ResetFailedUnitContext

func (c *Conn) ResetFailedUnitContext(ctx context.Context, name string) error

ResetFailedUnitContext resets the "failed" state of a specific unit.

func (*Conn) RestartUnit

func (c *Conn) RestartUnit(name string, mode string, ch chan<- string) (int, error)

Deprecated: use RestartUnitContext instead.

func (*Conn) RestartUnitContext

func (c *Conn) RestartUnitContext(ctx context.Context, name string, mode string, ch chan<- string) (int, error)

RestartUnitContext restarts a service. If a service is restarted that isn't running it will be started.

func (*Conn) SetPropertiesSubscriber

func (c *Conn) SetPropertiesSubscriber(updateCh chan<- *PropertiesUpdate, errCh chan<- error)

SetPropertiesSubscriber writes to updateCh when any unit's properties change. Every property change reported by systemd will be sent; that is, no transitions will be "missed" (as they might be with SetSubStateSubscriber). However, state changes will only be written to the channel with non-blocking writes. If updateCh is full, it attempts to write an error to errCh; if errCh is full, the error passes silently.

func (*Conn) SetSubStateSubscriber

func (c *Conn) SetSubStateSubscriber(updateCh chan<- *SubStateUpdate, errCh chan<- error)

SetSubStateSubscriber writes to updateCh when any unit's substate changes. Although this writes to updateCh on every state change, the reported state may be more recent than the change that generated it (due to an unavoidable race in the systemd dbus interface). That is, this method provides a good way to keep a current view of all units' states, but is not guaranteed to show every state transition they go through. Furthermore, state changes will only be written to the channel with non-blocking writes. If updateCh is full, it attempts to write an error to errCh; if errCh is full, the error passes silently.

func (*Conn) SetUnitProperties

func (c *Conn) SetUnitProperties(name string, runtime bool, properties ...Property) error

Deprecated: use SetUnitPropertiesContext instead.

func (*Conn) SetUnitPropertiesContext

func (c *Conn) SetUnitPropertiesContext(ctx context.Context, name string, runtime bool, properties ...Property) error

SetUnitPropertiesContext may be used to modify certain unit properties at runtime. Not all properties may be changed at runtime, but many resource management settings (primarily those in systemd.cgroup(5)) may. The changes are applied instantly, and stored on disk for future boots, unless runtime is true, in which case the settings only apply until the next reboot. name is the name of the unit to modify. properties are the settings to set, encoded as an array of property name and value pairs.

func (*Conn) StartTransientUnit

func (c *Conn) StartTransientUnit(name string, mode string, properties []Property, ch chan<- string) (int, error)

Deprecated: use StartTransientUnitContext instead.

func (*Conn) StartTransientUnitContext

func (c *Conn) StartTransientUnitContext(ctx context.Context, name string, mode string, properties []Property, ch chan<- string) (int, error)

StartTransientUnitContext may be used to create and start a transient unit, which will be released as soon as it is not running or referenced anymore or the system is rebooted. name is the unit name including suffix, and must be unique. mode is the same as in StartUnitContext, properties contains properties of the unit.

func (*Conn) StartUnit

func (c *Conn) StartUnit(name string, mode string, ch chan<- string) (int, error)

Deprecated: use StartUnitContext instead.

func (*Conn) StartUnitContext

func (c *Conn) StartUnitContext(ctx context.Context, name string, mode string, ch chan<- string) (int, error)

StartUnitContext enqueues a start job and depending jobs, if any (unless otherwise specified by the mode string).

Takes the unit to activate, plus a mode string. The mode needs to be one of replace, fail, isolate, ignore-dependencies, ignore-requirements. If "replace" the call will start the unit and its dependencies, possibly replacing already queued jobs that conflict with this. If "fail" the call will start the unit and its dependencies, but will fail if this would change an already queued job. If "isolate" the call will start the unit in question and terminate all units that aren't dependencies of it. If "ignore-dependencies" it will start a unit but ignore all its dependencies. If "ignore-requirements" it will start a unit but only ignore the requirement dependencies. It is not recommended to make use of the latter two options.

If the provided channel is non-nil, a result string will be sent to it upon job completion: one of done, canceled, timeout, failed, dependency, skipped. done indicates successful execution of a job. canceled indicates that a job has been canceled before it finished execution. timeout indicates that the job timeout was reached. failed indicates that the job failed. dependency indicates that a job this job has been depending on failed and the job hence has been removed too. skipped indicates that a job was skipped because it didn't apply to the units current state.

If no error occurs, the ID of the underlying systemd job will be returned. There does exist the possibility for no error to be returned, but for the returned job ID to be 0. In this case, the actual underlying ID is not 0 and this datapoint should not be considered authoritative.

If an error does occur, it will be returned to the user alongside a job ID of 0.

func (*Conn) StopUnit

func (c *Conn) StopUnit(name string, mode string, ch chan<- string) (int, error)

Deprecated: use StopUnitContext instead.

func (*Conn) StopUnitContext

func (c *Conn) StopUnitContext(ctx context.Context, name string, mode string, ch chan<- string) (int, error)

StopUnitContext is similar to StartUnitContext, but stops the specified unit rather than starting it.

func (*Conn) Subscribe

func (c *Conn) Subscribe() error

Subscribe sets up this connection to subscribe to all systemd dbus events. This is required before calling SubscribeUnits. When the connection closes systemd will automatically stop sending signals so there is no need to explicitly call Unsubscribe().

func (*Conn) SubscribeUnits

func (c *Conn) SubscribeUnits(interval time.Duration) (<-chan map[string]*UnitStatus, <-chan error)

SubscribeUnits returns two unbuffered channels which will receive all changed units every interval. Deleted units are sent as nil.

func (*Conn) SubscribeUnitsCustom

func (c *Conn) SubscribeUnitsCustom(interval time.Duration, buffer int, isChanged func(*UnitStatus, *UnitStatus) bool, filterUnit func(string) bool) (<-chan map[string]*UnitStatus, <-chan error)

SubscribeUnitsCustom is like SubscribeUnits but lets you specify the buffer size of the channels, the comparison function for detecting changes and a filter function for cutting down on the noise that your channel receives.

func (*Conn) SystemState

func (c *Conn) SystemState() (*Property, error)

Deprecated: use SystemStateContext instead.

func (*Conn) SystemStateContext

func (c *Conn) SystemStateContext(ctx context.Context) (*Property, error)

SystemStateContext returns the systemd state. Equivalent to systemctl is-system-running.

func (*Conn) ThawUnit

func (c *Conn) ThawUnit(ctx context.Context, unit string) error

Unfreeze the cgroup associated with the unit.

func (*Conn) TryRestartUnit

func (c *Conn) TryRestartUnit(name string, mode string, ch chan<- string) (int, error)

Deprecated: use TryRestartUnitContext instead.

func (*Conn) TryRestartUnitContext

func (c *Conn) TryRestartUnitContext(ctx context.Context, name string, mode string, ch chan<- string) (int, error)

TryRestartUnitContext is like RestartUnitContext, except that a service that isn't running is not affected by the restart.

func (*Conn) UnmaskUnitFiles

func (c *Conn) UnmaskUnitFiles(files []string, runtime bool) ([]UnmaskUnitFileChange, error)

Deprecated: use UnmaskUnitFilesContext instead.

func (*Conn) UnmaskUnitFilesContext

func (c *Conn) UnmaskUnitFilesContext(ctx context.Context, files []string, runtime bool) ([]UnmaskUnitFileChange, error)

UnmaskUnitFilesContext unmasks one or more units in the system.

It takes the list of unit files to mask (either just file names or full absolute paths if the unit files are residing outside the usual unit search paths), and a boolean runtime flag to specify whether the unit was enabled for runtime only (true, /run/systemd/..), or persistently (false, /etc/systemd/..).

func (*Conn) Unsubscribe

func (c *Conn) Unsubscribe() error

Unsubscribe this connection from systemd dbus events.

type DisableUnitFileChange

type DisableUnitFileChange struct {
    Type        string // Type of the change (one of symlink or unlink)
    Filename    string // File name of the symlink
    Destination string // Destination of the symlink
}

type EnableUnitFileChange

type EnableUnitFileChange struct {
    Type        string // Type of the change (one of symlink or unlink)
    Filename    string // File name of the symlink
    Destination string // Destination of the symlink
}

type JobStatus

JobStatus holds a currently queued job definition.

type JobStatus struct {
    Id       uint32          // The numeric job id
    Unit     string          // The primary unit name for this job
    JobType  string          // The job type as string
    Status   string          // The job state as string
    JobPath  dbus.ObjectPath // The job object path
    UnitPath dbus.ObjectPath // The unit object path
}

type LinkUnitFileChange

type LinkUnitFileChange EnableUnitFileChange

type MaskUnitFileChange

type MaskUnitFileChange struct {
    Type        string // Type of the change (one of symlink or unlink)
    Filename    string // File name of the symlink
    Destination string // Destination of the symlink
}

type PropertiesUpdate

PropertiesUpdate holds a map of a unit's changed properties

type PropertiesUpdate struct {
    UnitName string
    Changed  map[string]dbus.Variant
}

type Property

type Property struct {
    Name  string
    Value dbus.Variant
}

func PropAfter

func PropAfter(units ...string) Property

PropAfter sets the After unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#After=

func PropBefore

func PropBefore(units ...string) Property

PropBefore sets the Before unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#Before=

func PropBindsTo

func PropBindsTo(units ...string) Property

PropBindsTo sets the BindsTo unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#BindsTo=

func PropBoundBy

func PropBoundBy(units ...string) Property

PropBoundBy sets the BoundBy unit property. See http://www.freedesktop.org/software/systemd/main/systemd.unit.html#BoundBy=

func PropConflictedBy

func PropConflictedBy(units ...string) Property

PropConflictedBy sets the ConflictedBy unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#ConflictedBy=

func PropConflicts

func PropConflicts(units ...string) Property

PropConflicts sets the Conflicts unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#Conflicts=

func PropDescription

func PropDescription(desc string) Property

PropDescription sets the Description unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit#Description=

func PropExecStart

func PropExecStart(command []string, uncleanIsFailure bool) Property

PropExecStart sets the ExecStart service property. The first argument is a slice with the binary path to execute followed by the arguments to pass to the executed command. See http://www.freedesktop.org/software/systemd/man/systemd.service.html#ExecStart=

func PropOnFailure

func PropOnFailure(units ...string) Property

PropOnFailure sets the OnFailure unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#OnFailure=

func PropPids

func PropPids(pids ...uint32) Property

PropPids sets the PIDs field of scope units used in the initial construction of the scope only and specifies the initial PIDs to add to the scope object. See https://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/#properties

func PropPropagatesReloadTo

func PropPropagatesReloadTo(units ...string) Property

PropPropagatesReloadTo sets the PropagatesReloadTo unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#PropagatesReloadTo=

func PropRemainAfterExit

func PropRemainAfterExit(b bool) Property

PropRemainAfterExit sets the RemainAfterExit service property. See http://www.freedesktop.org/software/systemd/man/systemd.service.html#RemainAfterExit=

func PropRequiredBy

func PropRequiredBy(units ...string) Property

PropRequiredBy sets the RequiredBy unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#RequiredBy=

func PropRequiredByOverridable

func PropRequiredByOverridable(units ...string) Property

PropRequiredByOverridable sets the RequiredByOverridable unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#RequiredByOverridable=

func PropRequires

func PropRequires(units ...string) Property

PropRequires sets the Requires unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#Requires=

func PropRequiresMountsFor

func PropRequiresMountsFor(units ...string) Property

PropRequiresMountsFor sets the RequiresMountsFor unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#RequiresMountsFor=

func PropRequiresOverridable

func PropRequiresOverridable(units ...string) Property

PropRequiresOverridable sets the RequiresOverridable unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#RequiresOverridable=

func PropRequisite

func PropRequisite(units ...string) Property

PropRequisite sets the Requisite unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#Requisite=

func PropRequisiteOverridable

func PropRequisiteOverridable(units ...string) Property

PropRequisiteOverridable sets the RequisiteOverridable unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#RequisiteOverridable=

func PropSlice

func PropSlice(slice string) Property

PropSlice sets the Slice unit property. See http://www.freedesktop.org/software/systemd/man/systemd.resource-control.html#Slice=

func PropTriggeredBy

func PropTriggeredBy(units ...string) Property

PropTriggeredBy sets the TriggeredBy unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#TriggeredBy=

func PropTriggers

func PropTriggers(units ...string) Property

PropTriggers sets the Triggers unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#Triggers=

func PropType

func PropType(t string) Property

PropType sets the Type service property. See http://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=

func PropWantedBy

func PropWantedBy(units ...string) Property

PropWantedBy sets the WantedBy unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#WantedBy=

func PropWants

func PropWants(units ...string) Property

PropWants sets the Wants unit property. See http://www.freedesktop.org/software/systemd/man/systemd.unit.html#Wants=

type PropertyCollection

type PropertyCollection struct {
    Name       string
    Properties []Property
}

type SubStateUpdate

type SubStateUpdate struct {
    UnitName string
    SubState string
}

type SubscriptionSet

SubscriptionSet returns a subscription set which is like conn.Subscribe but can filter to only return events for a set of units.

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

func (SubscriptionSet) Add

func (s SubscriptionSet) Add(value string)

func (SubscriptionSet) Contains

func (s SubscriptionSet) Contains(value string) (exists bool)

func (SubscriptionSet) Length

func (s SubscriptionSet) Length() int

func (SubscriptionSet) Remove

func (s SubscriptionSet) Remove(value string)

func (*SubscriptionSet) Subscribe

func (s *SubscriptionSet) Subscribe() (<-chan map[string]*UnitStatus, <-chan error)

Subscribe starts listening for dbus events for all of the units in the set. Returns channels identical to conn.SubscribeUnits.

func (SubscriptionSet) Values

func (s SubscriptionSet) Values() (values []string)

type UnitFile

type UnitFile struct {
    Path string
    Type string
}

type UnitStatus

type UnitStatus struct {
    Name        string          // The primary unit name as string
    Description string          // The human readable description string
    LoadState   string          // The load state (i.e. whether the unit file has been loaded successfully)
    ActiveState string          // The active state (i.e. whether the unit is currently started or not)
    SubState    string          // The sub state (a more fine-grained version of the active state that is specific to the unit type, which the active state is not)
    Followed    string          // A unit that is being followed in its state by this unit, if there is any, otherwise the empty string.
    Path        dbus.ObjectPath // The unit object path
    JobId       uint32          // If there is a job queued for the job unit the numeric job id, 0 otherwise
    JobType     string          // The job type as string
    JobPath     dbus.ObjectPath // The job object path
}

type UnmaskUnitFileChange

type UnmaskUnitFileChange struct {
    Type        string // Type of the change (one of symlink or unlink)
    Filename    string // File name of the symlink
    Destination string // Destination of the symlink
}

type Who

Who can be used to specify which process to kill in the unit via the KillUnitWithTarget API

type Who string
const (
    // All sends the signal to all processes in the unit
    All Who = "all"
    // Main sends the signal to the main process of the unit
    Main Who = "main"
    // Control sends the signal to the control process of the unit
    Control Who = "control"
)