Documentation

Index

Constants

View Source
const RestartDelay = 3 * time.Second

    RestartDelay holds the length of time that a worker will wait between exiting and restarting.

    Variables

    View Source
    var (
    	ErrRestartAgent    = errors.New("agent should be restarted")
    	ErrTerminateAgent  = errors.New("agent should be terminated")
    	ErrRebootMachine   = errors.New("machine needs to reboot")
    	ErrShutdownMachine = errors.New("machine needs to shutdown")
    )

      These errors are returned by various specific workers in the hope that they will have some specific effect on the top-level agent running that worker.

      It should be clear that they don't belong here, and certainly shouldn't be used as they are today: e.g. a uniter has *no fricking idea* whether its host agent should shut down. A uniter can return ErrUnitDead, and its host might need to respond to that, perhaps by returning an error specific to *its* host; depending on these values punching right through N layers (but only when we want them to!) is kinda terrible.

      View Source
      var ErrKilled = errors.New("worker killed")

        ErrKilled can be returned by the PeriodicWorkerCall to signify that the function has returned as a result of a Stop() or Kill() signal and that the function was able to stop cleanly

        Functions

        func NewNoOpWorker

        func NewNoOpWorker() worker.Worker

        func NewPeriodicWorker

        func NewPeriodicWorker(call PeriodicWorkerCall, period time.Duration, timerFunc NewTimerFunc, options ...PeriodicWorkerOption) worker.Worker

          NewPeriodicWorker returns a worker that runs the given function continually sleeping for sleepDuration in between each call, until Kill() is called The stopCh argument will be closed when the worker is killed. The error returned by the doWork function will be returned by the worker's Wait function.

          func NewSimpleWorker

          func NewSimpleWorker(doWork func(stopCh <-chan struct{}) error) worker.Worker

            NewSimpleWorker returns a worker that runs the given function. The stopCh argument will be closed when the worker is killed. The error returned by the doWork function will be returned by the worker's Wait function.

            Types

            type FinishedWorker

            type FinishedWorker struct{}

              FinishedWorker is a worker that stops immediately with no error when started by a Runner, which then removes it from the list of workers without restarting it. Simply return FinishedWorker{} where you need to avoid starting a worker at all.

              func (FinishedWorker) Kill

              func (w FinishedWorker) Kill()

                Kill implements Worker.Kill() and does nothing.

                func (FinishedWorker) Wait

                func (w FinishedWorker) Wait() error

                  Wait implements Worker.Wait() and immediately returns no error.

                  type NewTimerFunc

                  type NewTimerFunc func(time.Duration) PeriodicTimer

                    NewTimerFunc is a constructor used to obtain the instance of PeriodicTimer periodicWorker uses on its loop. TODO(fwereade): 2016-03-17 lp:1558657

                    type PeriodicTimer

                    type PeriodicTimer interface {
                    	// Reset changes the timer to expire after duration d.
                    	// It returns true if the timer had been active, false
                    	// if the timer had expired or been stopped.
                    	Reset(time.Duration) bool
                    	// CountDown returns the channel used to signal expiration of
                    	// the timer duration. The channel is called C in the base
                    	// implementation of timer but the name is confusing.
                    	CountDown() <-chan time.Time
                    }

                      PeriodicTimer is an interface for the timer that periodicworker will use to handle the calls.

                      func NewTimer

                      func NewTimer(d time.Duration) PeriodicTimer

                        NewTimer is the default implementation of NewTimerFunc.

                        type PeriodicWorkerCall

                        type PeriodicWorkerCall func(stop <-chan struct{}) error

                          PeriodicWorkerCall represents the callable to be passed to the periodic worker to be run every elapsed period.

                          type PeriodicWorkerOption

                          type PeriodicWorkerOption func(w *periodicWorker)

                            PeriodicWorkerOption is an optional parameter of the NewPeriodicWorker function and can be used to set optional parameters of the new periodic worker.

                            func Jitter

                            func Jitter(amount float64) PeriodicWorkerOption

                              Jitter will introduce a jitter in the worker's period by the specified amount (as percents - i.e. between 0 and 1).

                              type Runner

                              type Runner interface {
                              	worker.Worker
                              	StartWorker(id string, startFunc func() (worker.Worker, error)) error
                              	StopWorker(id string) error
                              }

                                Runner is implemented by instances capable of starting and stopping workers.

                                type Timer

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

                                  Timer implements PeriodicTimer.

                                  func (*Timer) CountDown

                                  func (t *Timer) CountDown() <-chan time.Time

                                    CountDown implements PeriodicTimer.

                                    func (*Timer) Reset

                                    func (t *Timer) Reset(d time.Duration) bool

                                      Reset implements PeriodicTimer.

                                      Directories

                                      Path Synopsis
                                      mocks
                                      Package mocks is a generated GoMock package.
                                      Package mocks is a generated GoMock package.
                                      mocks
                                      Package mocks is a generated GoMock package.
                                      Package mocks is a generated GoMock package.
                                      mocks
                                      Package mocks is a generated GoMock package.
                                      Package mocks is a generated GoMock package.
                                      mocks
                                      Package mocks is a generated GoMock package.
                                      Package mocks is a generated GoMock package.
                                      Package diskmanager defines a worker that periodically lists block devices on the machine it runs on.
                                      Package diskmanager defines a worker that periodically lists block devices on the machine it runs on.
                                      Package fortress implements a convenient metaphor for an RWLock.
                                      Package fortress implements a convenient metaphor for an RWLock.
                                      package gate provides a mechanism by which independent workers can wait for one another to finish a task, without introducing explicit dependencies between those workers.
                                      package gate provides a mechanism by which independent workers can wait for one another to finish a task, without introducing explicit dependencies between those workers.
                                      mocks
                                      Package mocks is a generated GoMock package.
                                      Package mocks is a generated GoMock package.
                                      mocks
                                      Package mocks is a generated GoMock package.
                                      Package mocks is a generated GoMock package.
                                      Package introspection defines the worker that can report internal agent state through the use of a machine local socket.
                                      Package introspection defines the worker that can report internal agent state through the use of a machine local socket.
                                      pprof
                                      Package pprof is a fork of net/http/pprof modified to communicate over a unix socket.
                                      Package pprof is a fork of net/http/pprof modified to communicate over a unix socket.
                                      logsendertest
                                      Package logsendertest provides testing utilities related to the logsender package.
                                      Package logsendertest provides testing utilities related to the logsender package.
                                      Package meterstatus provides a worker that executes the meter-status-changed hook periodically.
                                      Package meterstatus provides a worker that executes the meter-status-changed hook periodically.
                                      mocks
                                      Package mocks is a generated GoMock package.
                                      Package mocks is a generated GoMock package.
                                      metrics
                                      collect
                                      Package collect provides a worker that executes the collect-metrics hook periodically, as long as the workload has been started (between start and stop hooks).
                                      Package collect provides a worker that executes the collect-metrics hook periodically, as long as the workload has been started (between start and stop hooks).
                                      sender
                                      Package sender contains the implementation of the metric sender manifold.
                                      Package sender contains the implementation of the metric sender manifold.
                                      spool
                                      Package spool contains the implementation of a worker that extracts the spool directory path from the agent config and enables other workers to write and read metrics to and from a the spool directory using a writer and a reader.
                                      Package spool contains the implementation of a worker that extracts the spool directory path from the agent config and enables other workers to write and read metrics to and from a the spool directory using a writer and a reader.
                                      Package mocks is a generated GoMock package.
                                      Package mocks is a generated GoMock package.
                                      Package multiwatcher provides watchers that watch the entire model.
                                      Package multiwatcher provides watchers that watch the entire model.
                                      mocks
                                      Package mocks is a generated GoMock package.
                                      Package mocks is a generated GoMock package.
                                      Package storageprovisioner provides a worker that manages the provisioning and deprovisioning of storage volumes and filesystems, and attaching them to and detaching them from machines.
                                      Package storageprovisioner provides a worker that manages the provisioning and deprovisioning of storage volumes and filesystems, and attaching them to and detaching them from machines.
                                      hook
                                      Package hook provides types that define the hooks known to the Uniter
                                      Package hook provides types that define the hooks known to the Uniter
                                      operation/mocks
                                      Package mocks is a generated GoMock package.
                                      Package mocks is a generated GoMock package.
                                      relation
                                      relation implements persistent local storage of a unit's relation state, and translation of relation changes into hooks that need to be run.
                                      relation implements persistent local storage of a unit's relation state, and translation of relation changes into hooks that need to be run.
                                      relation/mocks
                                      Package mocks is a generated GoMock package.
                                      Package mocks is a generated GoMock package.
                                      runner/context
                                      Package context contains the ContextFactory and Context definitions.
                                      Package context contains the ContextFactory and Context definitions.
                                      runner/context/mocks
                                      Package mocks is a generated GoMock package.
                                      Package mocks is a generated GoMock package.
                                      runner/jujuc
                                      The worker/uniter/runner/jujuc package implements the server side of the jujuc proxy tool, which forwards command invocations to the unit agent process so that they can be executed against specific state.
                                      The worker/uniter/runner/jujuc package implements the server side of the jujuc proxy tool, which forwards command invocations to the unit agent process so that they can be executed against specific state.
                                      runner/jujuc/mocks
                                      Package mocks is a generated GoMock package.
                                      Package mocks is a generated GoMock package.
                                      storage
                                      Package storage contains the storage subsystem for the uniter, responding to changes in storage attachments (lifecycle, volume/filesystem details) by queuing hooks and managing the storage attachments' lifecycle.
                                      Package storage contains the storage subsystem for the uniter, responding to changes in storage attachments (lifecycle, volume/filesystem details) by queuing hooks and managing the storage attachments' lifecycle.
                                      mocks
                                      Package mocks is a generated GoMock package.
                                      Package mocks is a generated GoMock package.
                                      mocks
                                      Package mocks is a generated GoMock package.
                                      Package mocks is a generated GoMock package.