Package snap is a minimal service.Service implementation, derived from the on service/upstart package.



View Source
const (
	// Command is a path to the snap binary, or to one that can be detected by os.Exec
	Command = "snap"


This section is empty.


func IsRunning

func IsRunning() (bool, error)

IsRunning indicates whether Snap is currently running on the system. When the snap command (normally installed to /usr/bin/snap) cannot be detected, IsRunning returns (false, nil). Other errors result in (false, err).

func ListCommand

func ListCommand() string

ListCommand returns a command that will be interpreted by a shell to produce a list of currently-installed services that are managed by snap.

func ListServices

func ListServices() ([]string, error)

ListServices returns a list of services that are being managed by snap.

func SetSnapConfig

func SetSnapConfig(snap string, key string, value string) error

SetSnapConfig sets a snap's key to value.


type App

type App struct {
	Name               string
	ConfinementPolicy  string
	Channel            string
	BackgroundServices []BackgroundService
	Prerequisites      []App

App is a wrapper around a single snap

func NewApp

func NewApp(name string) App

func (*App) StartCommands

func (a *App) StartCommands(executable string) []string

StartCommands returns a list if shell commands that should be executed (in order) to start App and its background services. executeable is a path to the snap executable. If the app has prerequisite applications defined, then take care to call StartCommands on those apps also.

func (*App) Validate

func (a *App) Validate() error

type BackgroundService

type BackgroundService struct {
	// name is the name of the service, without the snap name.
	// For example , for the`juju-db.daemon` service, use the name `daemon`.
	Name string

	// enableAtStartup determines whether services provided
	// by the snap should be started with the `--enable` flag
	EnableAtStartup bool

BackgroundService represents the a service that snaps define. For example, the multipass snap includes the libvirt-bin and multipassd background services.

func (*BackgroundService) Validate

func (backgroundService *BackgroundService) Validate() error

Validate checks that the construction parameters of backgroundService are valid. Successful validation returns nil.

type Service

type Service struct {

	// contains filtered or unexported fields


Service is a type for services that are being managed by snapd as snaps.

func NewService

func NewService(mainSnap string, serviceName string, conf common.Conf, snapPath string, Channel string, ConfinementPolicy string, backgroundServices []BackgroundService, prerequisites []App) (Service, error)

NewService returns a new Service defined by `conf`, with the name `serviceName`. The Service abstracts service(s) provided by a snap.

`serviceName` defaults to `snapName`. These two parameters are distinct to allow for a file path to provided as a `mainSnap`, implying that a local snap will be installed by snapd.

If no BackgroundServices are provided, Service will wrap all of the snap's background services.

func NewServiceFromName

func NewServiceFromName(name string, conf common.Conf) (Service, error)

NewServiceFromName returns a service that manages all of a snap's services as if they were a single service. NewServiceFromName uses the name parameter to fetch and install a snap with a matching name, then uses default policies for the installation. To install a snap with --classic confinement, or via --edge, --candidate or --beta, then create the Service via another method.

func (Service) Conf

func (s Service) Conf() common.Conf

Conf returns the service's configuration.

Conf is part of the service.Service interface.

func (Service) Exists

func (s Service) Exists() (bool, error)

Exists is not implemented for snaps.

Exists is part of the service.Service interface.

func (Service) Install

func (s Service) Install() error

Install installs the snap and its background services.

Install is part of the service.Service interface.

func (Service) InstallCommands

func (s Service) InstallCommands() ([]string, error)

InstallCommands returns a slice of shell commands that is executed independently, in serial, by a shell. When the final command returns with a 0 exit code, the installation will be deemed to have been successful.

InstallCommands is part of the service.Service interface

func (Service) Installed

func (s Service) Installed() (bool, error)

Installed returns true if the service has been successfully installed.

Installed is part of the service.Service interface.

func (Service) Name

func (s Service) Name() string

Name returns the service's name. It should match snap's naming conventions, e.g. <snap> for all services provided by <snap> and `<snap>.<app>` for a specific service under the snap's control.For example, the `juju-db` snap provides a `daemon` service. Its name is `juju-db.daemon`.

Name is part of the service.Service interface

func (Service) Remove

func (s Service) Remove() error

Remove uninstalls a service, . Returns nil when the underlying call to `snap remove <service-name>` exits with error code 0.

Remove is part of the service.ServiceActions interface.

func (*Service) Restart

func (s *Service) Restart() error

Restart restarts the service, or starts if it's not currently running.

Restart is part of the service.RestartableService interface

func (Service) Running

func (s Service) Running() (bool, error)

Running returns (true, nil) when snap indicates that service is currently active.

func (Service) Start

func (s Service) Start() error

Start starts the service, returning nil when successful. If the service is already running, Start does not restart it.

Start is part of the service.ServiceActions interface

func (Service) StartCommands

func (s Service) StartCommands() ([]string, error)

StartCommands returns a slice of strings. that are shell commands to be executed by a shell which start the service.

func (Service) Stop

func (s Service) Stop() error

Stop stops a running service. Returns nil when the underlying call to `snap stop <service-name>` exits with error code 0.

Stop is part of the service.ServiceActions interface.

func (Service) Validate

func (s Service) Validate() error

Validate validates that snap.Service has been correctly configured. Validate returns nil when successful and an error when successful.

Source Files