This section is empty.


View Source
var (
	// ErrInactive is returned when the migration is no longer active
	// (probably aborted). In this case the migrationmaster should be
	// restarted so that it can wait for the next migration attempt.
	ErrInactive = errors.New("migration is no longer active")

	// ErrMigrated is returned when the model has migrated to another
	// server. The migrationmaster should not be restarted again in
	// this case.
	ErrMigrated = errors.New("model has migrated")


func Manifold

func Manifold(config ManifoldConfig) dependency.Manifold

    Manifold packages a Worker for use in a dependency.Engine.

    func NewWorker

    func NewWorker(config Config) (worker.Worker, error)


    type Config

    type Config struct {
    	ModelUUID       string
    	Facade          Facade
    	Guard           fortress.Guard
    	APIOpen         func(*api.Info, api.DialOpts) (api.Connection, error)
    	UploadBinaries  func(migration.UploadBinariesConfig) error
    	CharmDownloader migration.CharmDownloader
    	ToolsDownloader migration.ToolsDownloader
    	Clock           clock.Clock

      Config defines the operation of a Worker.

      func (Config) Validate

      func (config Config) Validate() error

        Validate returns an error if config cannot drive a Worker.

        type Facade

        type Facade interface {
        	// Watch returns a watcher which reports when a migration is
        	// active for the model associated with the API connection.
        	Watch() (watcher.NotifyWatcher, error)
        	// MigrationStatus returns the details and progress of the latest
        	// model migration.
        	MigrationStatus() (coremigration.MigrationStatus, error)
        	// SetPhase updates the phase of the currently active model
        	// migration.
        	SetPhase(coremigration.Phase) error
        	// SetStatusMessage sets a human readable message regarding the
        	// progress of a migration.
        	SetStatusMessage(string) error
        	// Prechecks performs pre-migration checks on the model and
        	// (source) controller.
        	Prechecks() error
        	// ModelInfo return basic information about the model to migrated.
        	ModelInfo() (coremigration.ModelInfo, error)
        	// Export returns a serialized representation of the model
        	// associated with the API connection.
        	Export() (coremigration.SerializedModel, error)
        	// Reap removes all documents of the model associated with the API
        	// connection.
        	Reap() error
        	// WatchMinionReports returns a watcher which reports when a migration
        	// minion has made a report for the current migration phase.
        	WatchMinionReports() (watcher.NotifyWatcher, error)
        	// MinionReports returns details of the reports made by migration
        	// minions to the controller for the current migration phase.
        	MinionReports() (coremigration.MinionReports, error)

          Facade exposes controller functionality to a Worker.

          func NewFacade

          func NewFacade(apiCaller base.APICaller) (Facade, error)

          type ManifoldConfig

          type ManifoldConfig struct {
          	AgentName     string
          	APICallerName string
          	FortressName  string
          	Clock     clock.Clock
          	NewFacade func(base.APICaller) (Facade, error)
          	NewWorker func(Config) (worker.Worker, error)

            ManifoldConfig defines the names of the manifolds on which a Worker manifold will depend.

            func (ManifoldConfig) Validate

            func (config ManifoldConfig) Validate() error

              Validate is called by start to check for bad configuration.

              type Worker

              type Worker struct {
              	// contains filtered or unexported fields

                Worker waits until a migration is active and its configured Fortress is locked down, and then orchestrates a model migration.

                func New

                func New(config Config) (*Worker, error)

                  New returns a Worker backed by config, or an error.

                  func (*Worker) Kill

                  func (w *Worker) Kill()

                    Kill implements worker.Worker.

                    func (*Worker) Wait

                    func (w *Worker) Wait() error

                      Wait implements worker.Worker.