service

package
v0.0.0-...-298751d Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2024 License: AGPL-3.0 Imports: 17 Imported by: 77

Documentation

Index

Constants

View Source
const (
	InitSystemSystemd = "systemd"
)

Variables

View Source
var ListServices = func() ([]string, error) {
	services, err := systemd.ListServices()
	return services, errors.Annotatef(err, "failed to list systemd services")
}

ListServices lists all installed services on the running system

View Source
var NewService = func(name string, conf common.Conf) (Service, error) {
	if name == "" {
		return nil, errors.New("missing name")
	}
	return systemd.NewServiceWithDefaults(name, conf)
}

NewService returns a new Service based on the provided info.

Functions

func AgentConf

func AgentConf(info AgentInfo, renderer shell.Renderer) common.Conf

AgentConf returns the data that defines an init service config for the identified agent.

func ContainerAgentConf

func ContainerAgentConf(info AgentInfo, renderer shell.Renderer, containerType string) common.Conf

ContainerAgentConf returns the data that defines an init service config for the identified agent running in a container.

func FindAgents

func FindAgents(dataDir string) (string, []string, []string, error)

FindAgents finds all the agents available on the machine.

func InstallAndStart

func InstallAndStart(svc ServiceActions) error

InstallAndStart installs the provided service and tries starting it. The first few Start failures are ignored.

func ListServicesScript

func ListServicesScript() string

ListServicesScript returns the commands that should be run to get a list of service names on a host.

func Restart

func Restart(name string) error

Restart restarts the named service.

func ShutdownAfterConf

func ShutdownAfterConf(serviceName string) (common.Conf, error)

ShutdownAfterConf builds a service conf that will cause the host to shut down after the named service stops.

Types

type AgentInfo

type AgentInfo struct {

	// ID is the string that identifies the agent uniquely within
	// a juju environment.
	ID string

	// Kind is the kind of agent.
	Kind AgentKind

	// DataDir is the path to the agent's data dir.
	DataDir string

	// LogDir is the path to the agent's log dir.
	LogDir string
	// contains filtered or unexported fields
}

AgentInfo holds commonly used information about a juju agent.

func NewAgentInfo

func NewAgentInfo(kind AgentKind, id, dataDir, logDir string) AgentInfo

NewAgentInfo composes a new AgentInfo for the given essentials.

func NewMachineAgentInfo

func NewMachineAgentInfo(id, dataDir, logDir string) AgentInfo

NewMachineAgentInfo returns a new AgentInfo for a machine agent.

func NewUnitAgentInfo

func NewUnitAgentInfo(id, dataDir, logDir string) AgentInfo

NewUnitAgentInfo returns a new AgentInfo for a unit agent.

func (AgentInfo) ToolsDir

func (ai AgentInfo) ToolsDir(renderer shell.Renderer) string

ToolsDir returns the path to the agent's tools dir.

type AgentKind

type AgentKind string

AgentKind identifies the kind of agent.

const (
	AgentKindMachine AgentKind = "machine"
	AgentKindUnit    AgentKind = "unit"
)

These are the agent kinds in juju.

type RestartableService

type RestartableService interface {
	// Restart restarts the service.
	Restart() error
}

RestartableService is a service that directly supports restarting.

type Service

type Service interface {
	ServiceActions

	// Name returns the service's name.
	Name() string

	// Conf returns the service's conf data.
	Conf() common.Conf

	// Running returns a boolean value that denotes
	// whether or not the service is running.
	Running() (bool, error)

	// Exists returns whether the service configuration exists in the
	// init directory with the same content that this Service would have
	// if installed.
	Exists() (bool, error)

	// Installed will return a boolean value that denotes
	// whether or not the service is installed.
	Installed() (bool, error)

	// InstallCommands returns the list of commands to run on a
	// (remote) host to install the service.
	InstallCommands() ([]string, error)

	// StartCommands returns the list of commands to run on a
	// (remote) host to start the service.
	StartCommands() ([]string, error)

	// WriteService writes the service conf data. If the service is
	// running, WriteService adds links to allow for manual and automatic
	// starting of the service.
	WriteService() error
}

Service represents a service in the init system running on a host.

func NewServiceReference

func NewServiceReference(name string) (Service, error)

NewServiceReference returns a reference to an existing Service and can be used to start/stop the service.

type ServiceActions

type ServiceActions interface {
	// Start will try to start the service.
	Start() error

	// Stop will try to stop the service.
	Stop() error

	// Install installs a service.
	Install() error

	// Remove will remove the service.
	Remove() error
}

ServiceActions represents the actions that may be requested for an init system service.

type SystemdServiceManager

type SystemdServiceManager interface {
	// FindAgents finds all the agents available in the machine.
	FindAgents(dataDir string) (string, []string, []string, error)

	// WriteSystemdAgent creates systemd files and create symlinks for the
	// machine passed in the standard filepath.
	WriteSystemdAgent(
		machineAgent string, dataDir, symLinkSystemdMultiUserDir string,
	) error

	//CreateAgentConf creates the configfile for specified agent running on a
	// host with specified series.
	CreateAgentConf(agentName string, dataDir string) (common.Conf, error)

	// WriteServiceFile writes the service file for machine agent in the
	// /etc/systemd/system path.
	WriteServiceFile() error
}

func NewServiceManager

func NewServiceManager(
	isRunning func() bool,
	newService func(string, common.Conf) (Service, error),
) SystemdServiceManager

NewServiceManager allows creation of a new SystemdServiceManager from custom dependencies.

func NewServiceManagerWithDefaults

func NewServiceManagerWithDefaults() SystemdServiceManager

NewServiceManagerWithDefaults returns a SystemdServiceManager created with sensible defaults.

Directories

Path Synopsis
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
pebble
plan
Package plan defines the various types to work with the Pebble plan and layers.
Package plan defines the various types to work with the Pebble plan and layers.
Package snap manages installing and running snaps.
Package snap manages installing and running snaps.

Jump to

Keyboard shortcuts

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