uniter

package
v0.0.0-...-ac56535 Latest Latest
Warning

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

Go to latest
Published: Apr 26, 2024 License: AGPL-3.0 Imports: 29 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 Action

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

Action represents a single instance of an Action call, by name and params.

func NewAction

func NewAction(id, name string, params map[string]interface{}, parallel bool, executionGroup string) *Action

NewAction makes a new Action with specified id, name and params.

func (*Action) ExecutionGroup

func (a *Action) ExecutionGroup() string

ExecutionGroup is the group of actions which cannot execute in parallel with each other.

func (*Action) ID

func (a *Action) ID() string

ID retrieves the ID of the Action.

func (*Action) Name

func (a *Action) Name() string

Name retrieves the name of the Action.

func (*Action) Parallel

func (a *Action) Parallel() bool

Parallel returns true if the action can run without needed to acquire the machine lock.

func (*Action) Params

func (a *Action) Params() map[string]interface{}

Params retrieves the params map of the Action.

type Application

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

Application represents the state of an application.

func (*Application) CharmModifiedVersion

func (s *Application) CharmModifiedVersion() (int, error)

CharmModifiedVersion increments every time the charm, or any part of it, is changed in some way.

func (*Application) CharmURL

func (s *Application) CharmURL() (string, bool, error)

CharmURL returns the application'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.Application.CharmURL() by returning an error instead as well, because it needs to make an API call.

func (*Application) Life

func (s *Application) Life() life.Value

Life returns the application's current life state.

func (*Application) Name

func (s *Application) Name() string

Name returns the application name.

func (*Application) Refresh

func (s *Application) Refresh() error

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

func (*Application) SetStatus

func (s *Application) SetStatus(unitName string, appStatus status.Status, info string, data map[string]interface{}) error

SetStatus sets the status of the application if the passed unitName, corresponding to the calling unit, is of the leader.

func (*Application) Status

func (s *Application) Status(unitName string) (params.ApplicationStatusResult, error)

Status returns the status of the application if the passed unitName, corresponding to the calling unit, is of the leader.

func (*Application) String

func (s *Application) String() string

String returns the application as a string.

func (*Application) Tag

func (s *Application) Tag() names.ApplicationTag

Tag returns the application's tag.

func (*Application) Watch

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

Watch returns a watcher for observing changes to an application.

func (*Application) WatchLeadershipSettings

func (s *Application) WatchLeadershipSettings() (watcher.NotifyWatcher, error)

WatchLeadershipSettings returns a watcher which can be used to wait for leadership settings changes to be made for the application.

type Charm

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

Charm represents the state of a charm in the model.

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) LXDProfileRequired

func (c *Charm) LXDProfileRequired() (bool, error)

LXDProfileRequired returns true if this charm requires an lxd profile to be applied.

func (*Charm) URL

func (c *Charm) URL() string

URL returns the URL that identifies the charm.

type CommitHookParamsBuilder

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

CommitHookParamsBuilder is a helper type for populating the set of parameters used to perform a CommitHookChanges API call.

func NewCommitHookParamsBuilder

func NewCommitHookParamsBuilder(unitTag names.UnitTag) *CommitHookParamsBuilder

NewCommitHookParamsBuilder returns a new builder for assembling the parameters for a CommitHookChanges API call.

func (*CommitHookParamsBuilder) AddSecretCreates

func (b *CommitHookParamsBuilder) AddSecretCreates(creates []SecretCreateArg)

AddSecretCreates records requests to create secrets.

func (*CommitHookParamsBuilder) AddSecretDeletes

func (b *CommitHookParamsBuilder) AddSecretDeletes(deletes []SecretDeleteArg)

AddSecretDeletes records requests to delete secrets.

func (*CommitHookParamsBuilder) AddSecretGrants

func (b *CommitHookParamsBuilder) AddSecretGrants(grants []SecretGrantRevokeArgs)

AddSecretGrants records requests to grant secret access.

func (*CommitHookParamsBuilder) AddSecretRevokes

func (b *CommitHookParamsBuilder) AddSecretRevokes(revokes []SecretGrantRevokeArgs)

AddSecretRevokes records requests to revoke secret access.

func (*CommitHookParamsBuilder) AddSecretUpdates

func (b *CommitHookParamsBuilder) AddSecretUpdates(updates []SecretUpsertArg)

AddSecretUpdates records requests to update secrets.

func (*CommitHookParamsBuilder) AddStorage

func (b *CommitHookParamsBuilder) AddStorage(constraints map[string][]params.StorageConstraints)

AddStorage records a request for adding storage.

func (*CommitHookParamsBuilder) AddTrackLatest

func (b *CommitHookParamsBuilder) AddTrackLatest(trackLatest []string)

AddTrackLatest records the URIs for which the latest revision should be tracked.

func (*CommitHookParamsBuilder) Build

Build assembles the recorded change requests into a CommitHookChangesArgs instance that can be passed as an argument to the CommitHookChanges API call.

func (*CommitHookParamsBuilder) ClosePortRange

func (b *CommitHookParamsBuilder) ClosePortRange(endpoint string, portRange network.PortRange)

ClosePortRange records a request to close a particular port range.

func (*CommitHookParamsBuilder) OpenPortRange

func (b *CommitHookParamsBuilder) OpenPortRange(endpoint string, portRange network.PortRange)

OpenPortRange records a request to open a particular port range.

func (*CommitHookParamsBuilder) SetPodSpec

func (b *CommitHookParamsBuilder) SetPodSpec(appTag names.ApplicationTag, spec *string)

SetPodSpec records a request to update the PodSpec for an application.

func (*CommitHookParamsBuilder) SetRawK8sSpec

func (b *CommitHookParamsBuilder) SetRawK8sSpec(appTag names.ApplicationTag, spec *string)

SetRawK8sSpec records a request to update the PodSpec for an application.

func (*CommitHookParamsBuilder) UpdateCharmState

func (b *CommitHookParamsBuilder) UpdateCharmState(state map[string]string)

UpdateCharmState records a request to update the server-persisted charm state.

func (*CommitHookParamsBuilder) UpdateNetworkInfo

func (b *CommitHookParamsBuilder) UpdateNetworkInfo()

UpdateNetworkInfo records a request to update the network information settings for each joined relation.

func (*CommitHookParamsBuilder) UpdateRelationUnitSettings

func (b *CommitHookParamsBuilder) UpdateRelationUnitSettings(relName string, unitSettings, appSettings params.Settings)

UpdateRelationUnitSettings records a request to update the unit/application settings for a relation.

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 FacadeCallFn

type FacadeCallFn func(request string, params, response interface{}) error

type FacadeCaller

type FacadeCaller interface {
	// FacadeCall makes an API request.
	FacadeCall(request string, args, response interface{}) error
}

FacadeCaller exposes the raw API caller functionality needed here.

type LeadershipSettingsAccessor

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

LeadershipSettingsAccessor provides a type that can make RPC calls to a service which can read, write, and watch leadership settings.

func NewLeadershipSettingsAccessor

func NewLeadershipSettingsAccessor(
	caller FacadeCallFn,
	newWatcher NewNotifyWatcherFn,
) *LeadershipSettingsAccessor

NewLeadershipSettingsAccessor returns a new LeadershipSettingsAccessor.

func (*LeadershipSettingsAccessor) Merge

func (lsa *LeadershipSettingsAccessor) Merge(appId, unitId string, settings map[string]string) error

Merge merges the provided settings into the leadership settings for the given application and unit. Only leaders of a given application may perform this operation.

func (*LeadershipSettingsAccessor) Read

func (lsa *LeadershipSettingsAccessor) Read(appId string) (map[string]string, error)

Read retrieves the leadership settings for the given application ID. Anyone may perform this operation.

func (*LeadershipSettingsAccessor) WatchLeadershipSettings

func (lsa *LeadershipSettingsAccessor) WatchLeadershipSettings(appId string) (watcher.NotifyWatcher, error)

WatchLeadershipSettings returns a watcher which can be used to wait for leadership settings changes to be made for a given application ID.

type NewNotifyWatcherFn

type NewNotifyWatcherFn func(params.NotifyWatchResult) watcher.NotifyWatcher

type PayloadFacadeClient

type PayloadFacadeClient struct {
	FacadeCaller
}

PayloadFacadeClient provides methods for interacting with Juju's internal RPC API, relative to payloads.

func NewPayloadFacadeClient

func NewPayloadFacadeClient(caller base.APICaller) *PayloadFacadeClient

NewPayloadFacadeClient builds a new payload API client.

func (PayloadFacadeClient) List

func (c PayloadFacadeClient) List(fullIDs ...string) ([]payloads.Result, error)

List calls the List API server method.

func (PayloadFacadeClient) LookUp

func (c PayloadFacadeClient) LookUp(fullIDs ...string) ([]payloads.Result, error)

LookUp calls the LookUp API server method.

func (PayloadFacadeClient) SetStatus

func (c PayloadFacadeClient) SetStatus(status string, fullIDs ...string) ([]payloads.Result, error)

SetStatus calls the SetStatus API server method.

func (PayloadFacadeClient) Track

func (c PayloadFacadeClient) Track(payloads ...payloads.Payload) ([]payloads.Result, error)

Track calls the Track API server method.

func (PayloadFacadeClient) Untrack

func (c PayloadFacadeClient) Untrack(fullIDs ...string) ([]payloads.Result, error)

Untrack calls the Untrack API server method.

type Relation

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

Relation represents a relation between one or two application endpoints.

func (*Relation) Endpoint

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

Endpoint returns the endpoint of the relation for the application 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 applications.

func (*Relation) Life

func (r *Relation) Life() life.Value

Life returns the relation's current life state.

func (*Relation) OtherApplication

func (r *Relation) OtherApplication() string

OtherApplication returns the name of the application on the other end of the relation (from this unit's perspective).

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) SetStatus

func (r *Relation) SetStatus(status relation.Status) error

SetStatus updates the status of the relation.

func (*Relation) String

func (r *Relation) String() string

String returns the relation as a string.

func (*Relation) Suspended

func (r *Relation) Suspended() bool

Suspended returns the relation's current suspended status.

func (*Relation) Tag

func (r *Relation) Tag() names.RelationTag

Tag returns the relation tag.

func (*Relation) Unit

func (r *Relation) Unit(uTag names.UnitTag) (*RelationUnit, error)

Unit returns a RelationUnit for the supplied unitTag.

func (*Relation) UpdateSuspended

func (r *Relation) UpdateSuspended(suspended bool)

UpdateSuspended updates the in memory value of the relation's suspended attribute.

type RelationStatus

type RelationStatus struct {
	// Tag is the relation tag.
	Tag names.RelationTag

	// Suspended is true if the relation is suspended.
	Suspended bool

	// InScope is true if the relation unit is in scope.
	InScope bool
}

RelationStatus holds information about a relation's scope and status.

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) ApplicationSettings

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

ApplicationSettings returns a Settings which allows access to this unit's application settings within the relation. This can only be used from the leader unit. Calling it from a non-Leader generates a NotLeader error.

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) ReadSettings

func (ru *RelationUnit) ReadSettings(name string) (params.Settings, 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 application 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.

type ResourcesFacadeClient

type ResourcesFacadeClient struct {
	FacadeCaller
	apihttp.HTTPDoer
	// contains filtered or unexported fields
}

ResourcesFacadeClient is an API client for the resources portion of the uniter facade.

func NewResourcesFacadeClient

func NewResourcesFacadeClient(caller base.APICaller, unitTag names.UnitTag) (*ResourcesFacadeClient, error)

NewResourcesFacadeClient creates a new API client for the resources portion of the uniter facade.

func (*ResourcesFacadeClient) GetResource

func (c *ResourcesFacadeClient) GetResource(resourceName string) (resources.Resource, io.ReadCloser, error)

GetResource opens the resource (metadata/blob), if it exists, via the HTTP API and returns it. If it does not exist or hasn't been uploaded yet then errors.NotFound is returned.

type SecretCreateArg

type SecretCreateArg struct {
	SecretUpsertArg
	OwnerTag names.Tag
}

SecretCreateArg holds parameters for creating a secret.

type SecretDeleteArg

type SecretDeleteArg struct {
	URI      *secrets.URI
	Revision *int
}

SecretDeleteArg holds parameters for deleting a secret.

type SecretGrantRevokeArgs

type SecretGrantRevokeArgs struct {
	URI             *secrets.URI
	ApplicationName *string
	UnitName        *string
	RelationKey     *string
	Role            secrets.SecretRole
}

SecretGrantRevokeArgs holds parameters for updating a secret's access.

func (SecretGrantRevokeArgs) Equal

Equal returns true if the two SecretGrantRevokeArgs are equal.

func (SecretGrantRevokeArgs) ToParams

ToParams converts a SecretGrantRevokeArgs to a params.GrantRevokeSecretArg.

type SecretUpdateArg

type SecretUpdateArg struct {
	SecretUpsertArg
	CurrentRevision int
}

SecretUpdateArg holds parameters for updating a secret.

type SecretUpsertArg

type SecretUpsertArg struct {
	URI          *secrets.URI
	RotatePolicy *secrets.RotatePolicy
	ExpireTime   *time.Time
	Description  *string
	Label        *string
	Value        secrets.SecretValue
	ValueRef     *secrets.ValueRef
}

SecretUpsertArg holds parameters for creating or updating a secret.

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) FinalResult

func (s *Settings) FinalResult() params.Settings

FinalResult returns a params.Settings with the final updates applied. This includes entries that were deleted.

func (*Settings) IsDirty

func (s *Settings) IsDirty() bool

func (*Settings) Map

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

Map returns all keys and values of the node.

func (*Settings) Set

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

Set sets key to value.

type State

type State struct {
	*common.ModelWatcher
	*common.APIAddresser
	*common.UpgradeSeriesAPI
	*common.UnitStateAPI
	*StorageAccessor

	LeadershipSettings *LeadershipSettingsAccessor
	// contains filtered or unexported fields
}

State provides access to the Uniter API facade.

func NewFromConnection

func NewFromConnection(c api.Connection) (*State, error)

NewFromConnection returns a version of the Connection that provides functionality required by the uniter worker if possible else a non-nil error.

func NewState

func NewState(
	caller base.APICaller,
	authTag names.UnitTag,
) *State

NewState creates a new client-side Uniter facade.

func (*State) Action

func (st *State) Action(tag names.ActionTag) (*Action, error)

Action returns the Action with the given tag.

func (*State) ActionBegin

func (st *State) ActionBegin(tag names.ActionTag) error

ActionBegin marks an action as running.

func (*State) ActionFinish

func (st *State) ActionFinish(tag names.ActionTag, status string, results map[string]interface{}, message string) error

ActionFinish captures the structured output of an action.

func (*State) ActionStatus

func (st *State) ActionStatus(tag names.ActionTag) (string, error)

ActionStatus provides the status of a single action.

func (*State) Application

func (st *State) Application(tag names.ApplicationTag) (*Application, error)

Application returns an application state by tag.

func (*State) BestAPIVersion

func (st *State) BestAPIVersion() int

BestAPIVersion returns the API version that we were able to determine is supported by both the client and the API Server.

func (*State) Charm

func (st *State) Charm(curl string) (*Charm, error)

Charm returns the charm with the given URL.

func (*State) CloudAPIVersion

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

CloudAPIVersion returns the API version of the cloud, if known.

func (*State) CloudSpec

func (st *State) CloudSpec() (*params.CloudSpec, error)

CloudSpec returns the cloud spec for the model that calling unit or application resides in. If the application has not been authorised to access its cloud spec, then an authorisation error will be returned.

func (*State) Facade

func (st *State) Facade() base.FacadeCaller

Facade returns the current facade.

func (*State) GetPodSpec

func (st *State) GetPodSpec(appName string) (string, error)

GetPodSpec gets the pod spec of the specified application.

func (*State) GetRawK8sSpec

func (st *State) GetRawK8sSpec(appName string) (string, error)

GetRawK8sSpec gets the raw k8s spec of the specified application.

func (*State) GoalState

func (st *State) GoalState() (application.GoalState, error)

GoalState returns a GoalState struct with the charm's peers and related units information.

func (*State) Model

func (st *State) Model() (*model.Model, error)

Model returns the model entity.

func (*State) OpenedMachinePortRangesByEndpoint

func (st *State) OpenedMachinePortRangesByEndpoint(machineTag names.MachineTag) (map[names.UnitTag]network.GroupedPortRanges, error)

OpenedMachinePortRangesByEndpoint returns all port ranges currently open on the given machine, grouped by unit tag and application endpoint.

func (*State) OpenedPortRangesByEndpoint

func (st *State) OpenedPortRangesByEndpoint() (map[names.UnitTag]network.GroupedPortRanges, error)

OpenedPortRangesByEndpoint returns all port ranges currently opened grouped by unit tag and application endpoint.

func (*State) ProviderType

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

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

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(relationTag names.RelationTag) (*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) SLALevel

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

SLALevel returns the SLA level set on the model.

func (*State) SetUnitWorkloadVersion

func (st *State) SetUnitWorkloadVersion(tag names.UnitTag, version string) error

SetUnitWorkloadVersion sets the specified unit's workload version to the provided value.

func (*State) Unit

func (st *State) Unit(tag names.UnitTag) (*Unit, error)

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

func (*State) UnitWorkloadVersion

func (st *State) UnitWorkloadVersion(tag names.UnitTag) (string, error)

UnitWorkloadVersion returns the version of the workload reported by the specified unit.

func (*State) WatchRelationUnits

func (st *State) WatchRelationUnits(
	relationTag names.RelationTag,
	unitTag names.UnitTag,
) (watcher.RelationUnitsWatcher, error)

WatchRelationUnits returns a watcher that notifies of changes to the counterpart units in the relation for the given unit.

type StorageAccessor

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

func NewStorageAccessor

func NewStorageAccessor(facade base.FacadeCaller) *StorageAccessor

NewStorageAccessor creates a StorageAccessor on the specified facade, and uses this name when calling through the caller.

func (*StorageAccessor) DestroyUnitStorageAttachments

func (sa *StorageAccessor) DestroyUnitStorageAttachments(unitTag names.UnitTag) error

DestroyUnitStorageAttachments ensures that the specified unit's storage attachments will be removed at some point in the future.

func (*StorageAccessor) RemoveStorageAttachment

func (sa *StorageAccessor) RemoveStorageAttachment(storageTag names.StorageTag, unitTag names.UnitTag) error

RemoveStorageAttachment removes the storage attachment with the specified unit and storage tags from state. This method is only expected to succeed if the storage attachment is Dead.

func (*StorageAccessor) StorageAttachment

func (sa *StorageAccessor) StorageAttachment(storageTag names.StorageTag, unitTag names.UnitTag) (params.StorageAttachment, error)

StorageAttachment returns the storage attachment with the specified unit and storage tags.

func (*StorageAccessor) StorageAttachmentLife

func (sa *StorageAccessor) StorageAttachmentLife(ids []params.StorageAttachmentId) ([]params.LifeResult, error)

StorageAttachmentLife returns the lifecycle state of the storage attachments with the specified IDs.

func (*StorageAccessor) UnitStorageAttachments

func (sa *StorageAccessor) UnitStorageAttachments(unitTag names.UnitTag) ([]params.StorageAttachmentId, error)

UnitStorageAttachments returns the IDs of a unit's storage attachments.

func (*StorageAccessor) WatchStorageAttachment

func (sa *StorageAccessor) WatchStorageAttachment(storageTag names.StorageTag, unitTag names.UnitTag) (watcher.NotifyWatcher, error)

WatchStorageAttachments starts a watcher for changes to the info of the storage attachment with the specified unit and storage tags.

func (*StorageAccessor) WatchUnitStorageAttachments

func (sa *StorageAccessor) WatchUnitStorageAttachments(unitTag names.UnitTag) (watcher.StringsWatcher, error)

WatchUnitStorageAttachments starts a watcher for changes to storage attachments related to the unit. The watcher will return the IDs of the corresponding storage instances.

type Unit

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

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

func (*Unit) AddMetricBatches

func (u *Unit) AddMetricBatches(batches []params.MetricBatch) (map[string]error, error)

AddMetricBatches makes an api call to the uniter requesting it to store metrics batches in state.

func (*Unit) AddMetrics

func (u *Unit) AddMetrics(metrics []params.Metric) error

AddMetrics adds the metrics for the unit.

func (*Unit) Application

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

Application returns the unit's application.

func (*Unit) ApplicationName

func (u *Unit) ApplicationName() string

ApplicationName returns the application name.

func (*Unit) ApplicationTag

func (u *Unit) ApplicationTag() names.ApplicationTag

ApplicationTag returns the application tag.

func (*Unit) AssignedMachine

func (u *Unit) AssignedMachine() (names.MachineTag, error)

AssignedMachine returns the unit's assigned machine tag or an error satisfying params.IsCodeNotAssigned when the unit has no assigned machine..

func (*Unit) AvailabilityZone

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

AvailabilityZone returns the availability zone of the unit.

func (*Unit) CanApplyLXDProfile

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

CanApplyLXDProfile returns true if an lxd profile can be applied to this unit, e.g. this is an lxd machine or container and not maunal

func (*Unit) CharmURL

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

CharmURL returns the charm URL this unit is currently using.

func (*Unit) ClearResolved

func (u *Unit) ClearResolved() error

ClearResolved removes any resolved setting on the unit.

func (*Unit) CommitHookChanges

func (u *Unit) CommitHookChanges(req params.CommitHookChangesArgs) error

CommitHookChanges batches together all required API calls for applying a set of changes after a hook successfully completes and executes them in a single transaction.

func (*Unit) ConfigSettings

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

ConfigSettings returns the complete set of application 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) LXDProfileName

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

LXDProfileName returns the name of the lxd profile applied to the unit's machine for the current charm version.

func (*Unit) Life

func (u *Unit) Life() life.Value

Life returns the unit's lifecycle value.

func (*Unit) LogActionMessage

func (u *Unit) LogActionMessage(tag names.ActionTag, message string) error

LogActionMessage logs a progress message for the specified action.

func (*Unit) MeterStatus

func (u *Unit) MeterStatus() (statusCode, statusInfo string, rErr error)

MeterStatus returns the meter status of the unit.

func (*Unit) Name

func (u *Unit) Name() string

Name returns the name of the unit.

func (*Unit) NetworkInfo

func (u *Unit) NetworkInfo(bindings []string, relationId *int) (map[string]params.NetworkInfoResult, error)

NetworkInfo returns network interfaces/addresses for specified bindings.

func (*Unit) PrincipalName

func (u *Unit) PrincipalName() (string, bool, error)

PrincipalName returns the principal unit name and true for subordinates. For principal units the function returns "" and false.

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

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) ProviderID

func (u *Unit) ProviderID() string

ProviderID returns the provider Id of the unit.

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) RelationsStatus

func (u *Unit) RelationsStatus() ([]RelationStatus, error)

RelationsStatus returns the tags of the relations the unit has joined and entered scope, or the relation is suspended.

func (*Unit) RequestReboot

func (u *Unit) RequestReboot() error

RequestReboot sets the reboot flag for its machine agent

func (*Unit) Resolved

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

Resolved returns the unit's resolved mode value.

func (*Unit) SetAgentStatus

func (u *Unit) SetAgentStatus(agentStatus status.Status, info string, data map[string]interface{}) error

SetAgentStatus sets the status of the unit agent.

func (*Unit) SetCharmURL

func (u *Unit) SetCharmURL(curl string) 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) SetState

func (u *Unit) SetState(unitState params.SetUnitStateArg) error

SetState sets the state persisted by the charm running in this unit and the state internal to the uniter for this unit.

func (*Unit) SetUnitStatus

func (u *Unit) SetUnitStatus(unitStatus status.Status, info string, data map[string]interface{}) error

SetUnitStatus sets the status of the unit.

func (*Unit) SetUpgradeSeriesStatus

func (u *Unit) SetUpgradeSeriesStatus(status model.UpgradeSeriesStatus, reason string) error

SetUpgradeSeriesStatus sets the upgrade series status of the unit in the remote state

func (*Unit) State

func (u *Unit) State() (params.UnitStateResult, error)

State returns the state persisted by the charm running in this unit and the state internal to the uniter for this unit.

func (*Unit) String

func (u *Unit) String() string

String returns the unit as a string.

func (*Unit) Tag

func (u *Unit) Tag() names.UnitTag

Tag returns the unit's tag.

func (*Unit) UnitStatus

func (u *Unit) UnitStatus() (params.StatusResult, error)

UnitStatus gets the status details of the unit.

func (*Unit) UpgradeSeriesStatus

func (u *Unit) UpgradeSeriesStatus() (model.UpgradeSeriesStatus, string, error)

UpgradeSeriesStatus returns the upgrade series status of a unit from remote state

func (*Unit) Watch

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

Watch returns a watcher for observing changes to the unit.

func (*Unit) WatchActionNotifications

func (u *Unit) WatchActionNotifications() (watcher.StringsWatcher, error)

WatchActionNotifications returns a StringsWatcher for observing the ids of Actions added to the Unit. The initial event will contain the ids of any Actions pending at the time the Watcher is made.

func (*Unit) WatchAddressesHash

func (u *Unit) WatchAddressesHash() (watcher.StringsWatcher, error)

WatchAddressesHash returns a watcher for observing changes to the hash of the unit's addresses. For IAAS models, the unit must be assigned to a machine before this method is called, and the returned watcher will be valid only while the unit's assigned machine is not changed. For CAAS models, the watcher observes changes to the address of the pod associated with the unit.

func (*Unit) WatchConfigSettingsHash

func (u *Unit) WatchConfigSettingsHash() (watcher.StringsWatcher, error)

WatchConfigSettingsHash returns a watcher for observing changes to the unit's charm configuration settings (with a hash of the settings content so we can determine whether it has changed since it was last seen by the uniter). 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.

func (*Unit) WatchInstanceData

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

WatchInstanceData returns a watcher for observing changes to the instanceData of the unit's machine. Primarily used for watching LXDProfile changes.

func (*Unit) WatchMeterStatus

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

WatchMeterStatus returns a watcher for observing changes to the unit's meter status.

func (*Unit) WatchRelations

func (u *Unit) WatchRelations() (watcher.StringsWatcher, error)

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

func (*Unit) WatchStorage

func (u *Unit) WatchStorage() (watcher.StringsWatcher, error)

WatchStorage returns a watcher for observing changes to the unit's storage attachments.

func (*Unit) WatchTrustConfigSettingsHash

func (u *Unit) WatchTrustConfigSettingsHash() (watcher.StringsWatcher, error)

WatchTrustConfigSettingsHash returns a watcher for observing changes to the unit's application configuration settings (with a hash of the settings content so we can determine whether it has changed since it was last seen by the uniter).

func (*Unit) WatchUpgradeSeriesNotifications

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

WatchUpgradeSeriesNotifications returns a NotifyWatcher for observing the state of a series upgrade.

type UnitHTTPClient

type UnitHTTPClient interface {
	apihttp.HTTPDoer

	// Unit Returns the name of the unit for this client.
	Unit() string
}

UnitHTTPClient exposes the raw API HTTP caller functionality needed here.

func NewUnitHTTPClient

func NewUnitHTTPClient(ctx context.Context, client apihttp.HTTPDoer, unitName string) UnitHTTPClient

NewUnitHTTPClient wraps an HTTP client (a la httprequest.Client) with unit information. This allows rewriting of the URL to match the relevant unit.

Jump to

Keyboard shortcuts

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