juju: github.com/juju/juju/worker/remoterelations Index | Files

package remoterelations

import "github.com/juju/juju/worker/remoterelations"

Index

Package Files

manifold.go relationunitsworker.go remoteapplicationworker.go remoterelations.go remoterelationsworker.go shim.go

func Manifold Uses

func Manifold(config ManifoldConfig) dependency.Manifold

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

func NewWorker Uses

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

type Config Uses

type Config struct {
    ModelUUID                string
    RelationsFacade          RemoteRelationsFacade
    NewRemoteModelFacadeFunc newRemoteRelationsFacadeFunc
    Clock                    clock.Clock
    Logger                   Logger
}

Config defines the operation of a Worker.

func (Config) Validate Uses

func (config Config) Validate() error

Validate returns an error if config cannot drive a Worker.

type Logger Uses

type Logger interface {
    Debugf(string, ...interface{})
    Infof(string, ...interface{})
    Warningf(string, ...interface{})
    Errorf(string, ...interface{})
}

Logger represents the methods used by the worker to log details.

type ManifoldConfig Uses

type ManifoldConfig struct {
    AgentName     string
    APICallerName string

    NewControllerConnection  apicaller.NewExternalControllerConnectionFunc
    NewRemoteRelationsFacade func(base.APICaller) (RemoteRelationsFacade, error)
    NewWorker                func(Config) (worker.Worker, error)
    Logger                   Logger
}

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

func (ManifoldConfig) Validate Uses

func (config ManifoldConfig) Validate() error

Validate is called by start to check for bad configuration.

type RemoteModelRelationsFacade Uses

type RemoteModelRelationsFacade interface {
    // RegisterRemoteRelations sets up the remote model to participate
    // in the specified relations.
    RegisterRemoteRelations(relations ...params.RegisterRemoteRelationArg) ([]params.RegisterRemoteRelationResult, error)

    // PublishRelationChange publishes relation changes to the
    // model hosting the remote application involved in the relation.
    PublishRelationChange(params.RemoteRelationChangeEvent) error

    // WatchRelationUnits returns a watcher that notifies of changes to the
    // units in the remote model for the relation with the given remote token.
    WatchRelationUnits(arg params.RemoteEntityArg) (watcher.RelationUnitsWatcher, error)

    // RelationUnitSettings returns the relation unit settings for the given relation units in the remote model.
    RelationUnitSettings([]params.RemoteRelationUnit) ([]params.SettingsResult, error)

    // WatchRelationSuspendedStatus starts a RelationStatusWatcher for watching the
    // relations of each specified application in the remote model.
    WatchRelationSuspendedStatus(arg params.RemoteEntityArg) (watcher.RelationStatusWatcher, error)

    // WatchOfferStatus starts an OfferStatusWatcher for watching the status
    // of the specified offer in the remote model.
    WatchOfferStatus(arg params.OfferArg) (watcher.OfferStatusWatcher, error)
}

RemoteModelRelationsFacade instances publish local relation changes to the model hosting the remote application involved in the relation, and also watches for remote relation changes which are then pushed to the local model.

func NewRemoteModelRelationsFacade Uses

func NewRemoteModelRelationsFacade(apiCaller base.APICallCloser) (RemoteModelRelationsFacade, error)

type RemoteModelRelationsFacadeCloser Uses

type RemoteModelRelationsFacadeCloser interface {
    io.Closer
    RemoteModelRelationsFacade
}

RemoteModelRelationsFacadeCloser implements RemoteModelRelationsFacade and add a Close() method.

type RemoteRelationsFacade Uses

type RemoteRelationsFacade interface {
    // ImportRemoteEntity adds an entity to the remote entities collection
    // with the specified opaque token.
    ImportRemoteEntity(entity names.Tag, token string) error

    // SaveMacaroon saves the macaroon for the entity.
    SaveMacaroon(entity names.Tag, mac *macaroon.Macaroon) error

    // ExportEntities allocates unique, remote entity IDs for the
    // given entities in the local model.
    ExportEntities([]names.Tag) ([]params.TokenResult, error)

    // GetToken returns the token associated with the entity with the given tag.
    GetToken(names.Tag) (string, error)

    // RelationUnitSettings returns the relation unit settings for the
    // given relation units in the local model.
    RelationUnitSettings([]params.RelationUnit) ([]params.SettingsResult, error)

    // Relations returns information about the relations
    // with the specified keys in the local model.
    Relations(keys []string) ([]params.RemoteRelationResult, error)

    // RemoteApplications returns the current state of the remote applications with
    // the specified names in the local model.
    RemoteApplications(names []string) ([]params.RemoteApplicationResult, error)

    // WatchLocalRelationUnits returns a watcher that notifies of changes to the
    // local units in the relation with the given key.
    WatchLocalRelationUnits(relationKey string) (watcher.RelationUnitsWatcher, error)

    // WatchRemoteApplications watches for addition, removal and lifecycle
    // changes to remote applications known to the local model.
    WatchRemoteApplications() (watcher.StringsWatcher, error)

    // WatchRemoteApplicationRelations starts a StringsWatcher for watching the relations of
    // each specified application in the local model, and returns the watcher IDs
    // and initial values, or an error if the application's relations could not be
    // watched.
    WatchRemoteApplicationRelations(application string) (watcher.StringsWatcher, error)

    // ConsumeRemoteRelationChange consumes a change to settings originating
    // from the remote/offering side of a relation.
    ConsumeRemoteRelationChange(change params.RemoteRelationChangeEvent) error

    // ControllerAPIInfoForModel returns the controller api info for a model.
    ControllerAPIInfoForModel(modelUUID string) (*api.Info, error)

    // SetRemoteApplicationStatus sets the status for the specified remote application.
    SetRemoteApplicationStatus(applicationName string, status status.Status, message string) error
}

RemoteRelationsFacade exposes remote relation functionality to a worker.

func NewRemoteRelationsFacade Uses

func NewRemoteRelationsFacade(apiCaller base.APICaller) (RemoteRelationsFacade, error)

type Worker Uses

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

Worker manages relations and associated settings where one end of the relation is a remote application.

func New Uses

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

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

func (*Worker) Kill Uses

func (w *Worker) Kill()

Kill is defined on worker.Worker.

func (*Worker) Wait Uses

func (w *Worker) Wait() error

Wait is defined on worker.Worker.

Package remoterelations imports 21 packages (graph) and is imported by 7 packages. Updated 2019-10-21. Refresh now. Tools for package owners.