model

package
v0.0.0-...-6cf1bc9 Latest Latest
Warning

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

Go to latest
Published: Oct 13, 2016 License: AGPL-3.0 Imports: 37 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrRemoved = errors.New("model removed")

ErrRemoved may be returned by some worker started from Manifolds to indicate that the model under management no longer exists.

Functions

func IgnoreErrRemoved

func IgnoreErrRemoved(err error) error

IgnoreErrRemoved returns nil if passed an error caused by ErrRemoved, and otherwise returns the original error.

func IsFatal

func IsFatal(err error) bool

IsFatal will probably be helpful when configuring a dependency.Engine to run the result of Manifolds.

func LifeFilter

func LifeFilter(err error) error

LifeFilter is used with the lifeflag manifolds -- which do not depend on runFlag -- to return appropriate errors for consumption by the enclosing dependency.Engine (and/or its IsFatal check).

func Manifolds

func Manifolds(config ManifoldsConfig) dependency.Manifolds

Manifolds returns a set of interdependent dependency manifolds that will run together to administer a model, as configured.

func WorstError

func WorstError(err, _ error) error

WorstError will probably be helpful when configuring a dependency.Engine to run the result of Manifolds.

func WrapAgent

func WrapAgent(a agent.Agent, controllerUUID, modelUUID string) (agent.Agent, error)

WrapAgent wraps an agent.Agent (expected to be a machine agent, fwiw) such that its references the supplied model rather than the controller model; its config is immutable; and it doesn't use OldPassword.

It's a strong sign that the agent package needs some work...

Types

type ManifoldsConfig

type ManifoldsConfig struct {

	// Agent identifies, and exposes configuration for, the controller
	// machine running these manifolds and the model the manifolds
	// should administer.
	//
	// You should almost certainly set this value to one created by
	// model.WrapAgent.
	Agent coreagent.Agent

	// AgentConfigChanged will be set whenever the agent's api config
	// is updated
	AgentConfigChanged *voyeur.Value

	// Clock supplies timing services to any manifolds that need them.
	// Only a few workers have been converted to use them fo far.
	Clock clock.Clock

	// InstPollerAggregationDelay is the delay before sending a batch of
	// requests in the instancpoller.Worker's aggregate loop.
	InstPollerAggregationDelay time.Duration

	// RunFlagDuration defines for how long this controller will ask
	// for model administration rights; most of the workers controlled
	// by this agent will only be started when the run flag is known
	// to be held.
	RunFlagDuration time.Duration

	// CharmRevisionUpdateInterval determines how often the charm-
	// revision worker will check for new revisions of known charms.
	CharmRevisionUpdateInterval time.Duration

	// StatusHistoryPruner* values control status-history pruning
	// behaviour.
	StatusHistoryPrunerMaxHistoryTime time.Duration
	StatusHistoryPrunerMaxHistoryMB   uint
	StatusHistoryPrunerInterval       time.Duration

	// SpacesImportedGate will be unlocked when spaces are known to
	// have been imported.
	SpacesImportedGate gate.Lock

	// NewEnvironFunc is a function opens a provider "environment"
	// (typically environs.New).
	NewEnvironFunc environs.NewEnvironFunc

	// NewMigrationMaster is called to create a new migrationmaster
	// worker.
	NewMigrationMaster func(migrationmaster.Config) (worker.Worker, error)
}

ManifoldsConfig holds the dependencies and configuration options for a model agent: that is, for the set of interdependent workers that observe and manipulate a single model.

Jump to

Keyboard shortcuts

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