uniter

package
v0.0.0-...-732aecd Latest Latest
Warning

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

Go to latest
Published: Jun 10, 2014 License: AGPL-3.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNoCharmURLSet = errors.New("unit has no charm url set")

Functions

This section is empty.

Types

type Charm

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

Charm represents the state of a charm in the environment.

func (*Charm) ArchiveSha256

func (c *Charm) ArchiveSha256() (string, error)

ArchiveSha256 returns the SHA256 digest of the charm archive (bundle) bytes.

NOTE: This differs from state.Charm.BundleSha256() by returning an error as well, because it needs to make an API call. It's also renamed to avoid confusion with juju deployment bundles.

TODO(dimitern): 2013-09-06 bug 1221834 Cache the result after getting it once for the same charm URL, because it's immutable.

func (*Charm) ArchiveURL

func (c *Charm) ArchiveURL() (*url.URL, utils.SSLHostnameVerification, error)

ArchiveURL returns the url to the charm archive (bundle) in the provider storage, and DisableSSLHostnameVerification flag.

NOTE: This differs from state.Charm.BundleURL() by returning an error as well, because it needs to make an API call. It's also renamed to avoid confusion with juju deployment bundles.

TODO(dimitern): 2013-09-06 bug 1221834 Cache the result after getting it once for the same charm URL, because it's immutable.

func (*Charm) String

func (c *Charm) String() string

String returns the charm URL as a string.

func (*Charm) URL

func (c *Charm) URL() *charm.URL

URL returns the URL that identifies the charm.

type Endpoint

type Endpoint struct {
	charm.Relation
}

Endpoint represents one endpoint of a relation. It is just a wrapper around charm.Relation. No API calls to the server-side are needed to support the interface needed by the uniter worker.

type Environment

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

Environment represents the state of an environment.

func (Environment) Name

func (e Environment) Name() string

Name returns the human friendly name of the environment.

func (Environment) UUID

func (e Environment) UUID() string

UUID returns the universally unique identifier of the environment.

type Relation

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

Relation represents a relation between one or two service endpoints.

func (*Relation) Endpoint

func (r *Relation) Endpoint() (*Endpoint, error)

Endpoint returns the endpoint of the relation for the service the uniter's managed unit belongs to.

func (*Relation) Id

func (r *Relation) Id() int

Id returns the integer internal relation key. This is exposed because the unit agent needs to expose a value derived from this (as JUJU_RELATION_ID) to allow relation hooks to differentiate between relations with different services.

func (*Relation) Life

func (r *Relation) Life() params.Life

Life returns the relation's current life state.

func (*Relation) Refresh

func (r *Relation) Refresh() error

Refresh refreshes the contents of the relation from the underlying state. It returns an error that satisfies errors.IsNotFound if the relation has been removed.

func (*Relation) String

func (r *Relation) String() string

String returns the relation as a string.

func (*Relation) Unit

func (r *Relation) Unit(u *Unit) (*RelationUnit, error)

Unit returns a RelationUnit for the supplied unit.

type RelationUnit

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

RelationUnit holds information about a single unit in a relation, and allows clients to conveniently access unit-specific functionality.

func (*RelationUnit) Endpoint

func (ru *RelationUnit) Endpoint() Endpoint

Endpoint returns the relation endpoint that defines the unit's participation in the relation.

func (*RelationUnit) EnterScope

func (ru *RelationUnit) EnterScope() error

EnterScope ensures that the unit has entered its scope in the relation. When the unit has already entered its relation scope, EnterScope will report success but make no changes to state.

Otherwise, assuming both the relation and the unit are alive, it will enter scope.

If the unit is a principal and the relation has container scope, EnterScope will also create the required subordinate unit, if it does not already exist; this is because there's no point having a principal in scope if there is no corresponding subordinate to join it.

Once a unit has entered a scope, it stays in scope without further intervention; the relation will not be able to become Dead until all units have departed its scopes.

NOTE: Unlike state.RelatioUnit.EnterScope(), this method does not take settings, because uniter only uses this to supply the unit's private address, but this is not done at the server-side by the API.

func (*RelationUnit) LeaveScope

func (ru *RelationUnit) LeaveScope() error

LeaveScope signals that the unit has left its scope in the relation. After the unit has left its relation scope, it is no longer a member of the relation; if the relation is dying when its last member unit leaves, it is removed immediately. It is not an error to leave a scope that the unit is not, or never was, a member of.

func (*RelationUnit) PrivateAddress

func (ru *RelationUnit) PrivateAddress() (string, error)

PrivateAddress returns the private address of the unit and whether it is valid.

NOTE: This differs from state.RelationUnit.PrivateAddress() by returning an error instead of a bool, because it needs to make an API call.

func (*RelationUnit) ReadSettings

func (ru *RelationUnit) ReadSettings(uname string) (params.RelationSettings, error)

ReadSettings returns a map holding the settings of the unit with the supplied name within this relation. An error will be returned if the relation no longer exists, or if the unit's service is not part of the relation, or the settings are invalid; but mere non-existence of the unit is not grounds for an error, because the unit settings are guaranteed to persist for the lifetime of the relation, regardless of the lifetime of the unit.

func (*RelationUnit) Relation

func (ru *RelationUnit) Relation() *Relation

Relation returns the relation associated with the unit.

func (*RelationUnit) Settings

func (ru *RelationUnit) Settings() (*Settings, error)

Settings returns a Settings which allows access to the unit's settings within the relation.

func (*RelationUnit) Watch

Watch returns a watcher that notifies of changes to counterpart units in the relation.

type Service

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

Service represents the state of a service.

func (*Service) CharmURL

func (s *Service) CharmURL() (*charm.URL, bool, error)

CharmURL returns the service's charm URL, and whether units should upgrade to the charm with that URL even if they are in an error state (force flag).

NOTE: This differs from state.Service.CharmURL() by returning an error instead as well, because it needs to make an API call.

func (*Service) GetOwnerTag

func (s *Service) GetOwnerTag() (string, error)

TODO(dimitern) bug #1270795 2014-01-20 Add a doc comment here.

func (*Service) Life

func (s *Service) Life() params.Life

Life returns the service's current life state.

func (*Service) Name

func (s *Service) Name() string

Name returns the service name.

func (*Service) Refresh

func (s *Service) Refresh() error

Refresh refreshes the contents of the Service from the underlying state.

func (*Service) String

func (s *Service) String() string

String returns the service as a string.

func (*Service) Watch

func (s *Service) Watch() (watcher.NotifyWatcher, error)

Watch returns a watcher for observing changes to a service.

func (*Service) WatchRelations

func (s *Service) WatchRelations() (watcher.StringsWatcher, error)

WatchRelations returns a StringsWatcher that notifies of changes to the lifecycles of relations involving s.

type Settings

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

Settings manages changes to unit settings in a relation.

func (*Settings) Delete

func (s *Settings) Delete(key string)

Delete removes key.

func (*Settings) Map

func (s *Settings) Map() params.RelationSettings

Map returns all keys and values of the node.

TODO(dimitern): This differes from state.Settings.Map() - it does not return map[string]interface{}, but since all values are expected to be strings anyway, we need to fix the uniter code accordingly when migrating to the API.

func (*Settings) Set

func (s *Settings) Set(key, value string)

Set sets key to value.

TODO(dimitern): value must be a string. Change the code that uses this accordingly.

func (*Settings) Write

func (s *Settings) Write() error

Write writes changes made to s back onto its node. Keys set to empty values will be deleted, others will be updated to the new value.

TODO(dimitern): 2013-09-06 bug 1221798 Once the machine addressability changes lands, we may need to revise the logic here to take into account that the "private-address" setting for a unit can be changed outside of the uniter's control. So we may need to send diffs of what has changed to make sure we update the address (and other settings) correctly, without overwritting.

type State

type State struct {
	*common.EnvironWatcher
	*common.APIAddresser
	// contains filtered or unexported fields
}

State provides access to the Uniter API facade.

func NewState

func NewState(caller base.Caller, authTag string) *State

NewState creates a new client-side Uniter facade.

func (*State) Charm

func (st *State) Charm(curl *charm.URL) (*Charm, error)

Charm returns the charm with the given URL.

func (*State) Environment

func (st *State) Environment() (*Environment, error)

Environment returns the environment entity.

func (*State) ProviderType

func (st *State) ProviderType() (string, error)

ProviderType returns a provider type used by the current juju environment.

TODO(dimitern): We might be able to drop this, once we have machine addresses implemented fully. See also LP bug 1221798.

func (*State) Relation

func (st *State) Relation(tag string) (*Relation, error)

Relation returns the existing relation with the given tag.

func (*State) RelationById

func (st *State) RelationById(id int) (*Relation, error)

RelationById returns the existing relation with the given id.

func (*State) Service

func (st *State) Service(tag string) (*Service, error)

Service returns a service state by tag.

func (*State) Unit

func (st *State) Unit(tag string) (*Unit, error)

Unit provides access to methods of a state.Unit through the facade.

type Unit

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

Unit represents a juju unit as seen by a uniter worker.

func (*Unit) CharmURL

func (u *Unit) CharmURL() (*charm.URL, error)

CharmURL returns the charm URL this unit is currently using.

NOTE: This differs from state.Unit.CharmURL() by returning an error instead of a bool, because it needs to make an API call.

func (*Unit) ClearResolved

func (u *Unit) ClearResolved() error

ClearResolved removes any resolved setting on the unit.

func (*Unit) ClosePort

func (u *Unit) ClosePort(protocol string, number int) error

ClosePort sets the policy of the port with protocol and number to be closed.

TODO: We should really be opening and closing ports on machines, rather than units.

func (*Unit) ConfigSettings

func (u *Unit) ConfigSettings() (charm.Settings, error)

ConfigSettings returns the complete set of service charm config settings available to the unit. Unset values will be replaced with the default value for the associated option, and may thus be nil when no default is specified.

func (*Unit) Destroy

func (u *Unit) Destroy() error

Destroy, when called on a Alive unit, advances its lifecycle as far as possible; it otherwise has no effect. In most situations, the unit's life is just set to Dying; but if a principal unit that is not assigned to a provisioned machine is Destroyed, it will be removed from state directly.

func (*Unit) DestroyAllSubordinates

func (u *Unit) DestroyAllSubordinates() error

DestroyAllSubordinates destroys all subordinates of the unit.

func (*Unit) EnsureDead

func (u *Unit) EnsureDead() error

EnsureDead sets the unit lifecycle to Dead if it is Alive or Dying. It does nothing otherwise.

func (*Unit) HasSubordinates

func (u *Unit) HasSubordinates() (bool, error)

HasSubordinates returns the tags of any subordinate units.

func (*Unit) IsPrincipal

func (u *Unit) IsPrincipal() (bool, error)

IsPrincipal returns whether the unit is deployed in its own container, and can therefore have subordinate services deployed alongside it.

NOTE: This differs from state.Unit.IsPrincipal() by returning an error as well, because it needs to make an API call.

func (*Unit) JoinedRelations

func (u *Unit) JoinedRelations() ([]string, error)

JoinedRelations returns the tags of the relations the unit has joined.

func (*Unit) Life

func (u *Unit) Life() params.Life

Life returns the unit's lifecycle value.

func (*Unit) Name

func (u *Unit) Name() string

Name returns the name of the unit.

func (*Unit) OpenPort

func (u *Unit) OpenPort(protocol string, number int) error

OpenPort sets the policy of the port with protocol and number to be opened.

TODO: We should really be opening and closing ports on machines, rather than units.

func (*Unit) PrivateAddress

func (u *Unit) PrivateAddress() (string, error)

PrivateAddress returns the private address of the unit and whether it is valid.

NOTE: This differs from state.Unit.PrivateAddress() by returning an error instead of a bool, because it needs to make an API call.

TODO(dimitern): We might be able to drop this, once we have machine addresses implemented fully. See also LP bug 1221798.

func (*Unit) PublicAddress

func (u *Unit) PublicAddress() (string, error)

PublicAddress returns the public address of the unit and whether it is valid.

NOTE: This differs from state.Unit.PublicAddres() by returning an error instead of a bool, because it needs to make an API call.

TODO(dimitern): We might be able to drop this, once we have machine addresses implemented fully. See also LP bug 1221798.

func (*Unit) Refresh

func (u *Unit) Refresh() error

Refresh updates the cached local copy of the unit's data.

func (*Unit) Resolved

func (u *Unit) Resolved() (params.ResolvedMode, error)

Resolved returns the resolved mode for the unit.

NOTE: This differs from state.Unit.Resolved() by returning an error as well, because it needs to make an API call

func (*Unit) Service

func (u *Unit) Service() (*Service, error)

Service returns the service.

func (*Unit) ServiceName

func (u *Unit) ServiceName() string

ServiceName returns the service name.

func (*Unit) ServiceTag

func (u *Unit) ServiceTag() string

ServiceTag returns the service tag.

func (*Unit) SetCharmURL

func (u *Unit) SetCharmURL(curl *charm.URL) error

SetCharmURL marks the unit as currently using the supplied charm URL. An error will be returned if the unit is dead, or the charm URL not known.

func (*Unit) SetStatus

func (u *Unit) SetStatus(status params.Status, info string, data params.StatusData) error

SetStatus sets the status of the unit.

func (*Unit) String

func (u *Unit) String() string

String returns the unit as a string.

func (*Unit) Tag

func (u *Unit) Tag() string

Tag returns the unit's tag.

func (*Unit) Watch

func (u *Unit) Watch() (watcher.NotifyWatcher, error)

Watch returns a watcher for observing changes to the unit.

func (*Unit) WatchConfigSettings

func (u *Unit) WatchConfigSettings() (watcher.NotifyWatcher, error)

WatchConfigSettings returns a watcher for observing changes to the unit's service configuration settings. The unit must have a charm URL set before this method is called, and the returned watcher will be valid only while the unit's charm URL is not changed.

Jump to

Keyboard shortcuts

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