Documentation ¶
Overview ¶
Package storage contains the storage subsystem for the uniter, responding to changes in storage attachments (lifecycle, volume/filesystem details) by queuing hooks and managing the storage attachments' lifecycle.
Index ¶
- func NewResolver(logger Logger, storage *Attachments, modelType model.ModelType) resolver.Resolver
- func NewStateOps(rw UnitStateReadWriter) *stateOps
- type Attachments
- func (a *Attachments) CommitHook(hi hook.Info) error
- func (a *Attachments) Empty() bool
- func (a *Attachments) Pending() int
- func (a *Attachments) SetDying() error
- func (a *Attachments) Storage(tag names.StorageTag) (jujuc.ContextStorageAttachment, error)
- func (a *Attachments) StorageTags() ([]names.StorageTag, error)
- func (a *Attachments) ValidateHook(hi hook.Info) error
- type Logger
- type State
- type StorageAccessor
- type StorageResolverOperations
- type UnitStateReadWriter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewResolver ¶
NewResolver returns a new storage resolver.
func NewStateOps ¶
func NewStateOps(rw UnitStateReadWriter) *stateOps
NewStateOps returns a new StateOps.
Types ¶
type Attachments ¶
type Attachments struct {
// contains filtered or unexported fields
}
Attachments generates storage hooks in response to changes to storage attachments, and provides access to information about storage attachments to hooks.
func NewAttachments ¶
func NewAttachments( st StorageAccessor, tag names.UnitTag, rw UnitStateReadWriter, abort <-chan struct{}, ) (*Attachments, error)
NewAttachments returns a new Attachments.
func (*Attachments) CommitHook ¶
func (a *Attachments) CommitHook(hi hook.Info) error
CommitHook persists the State change encoded in the supplied storage hook, or returns an error if the hook is invalid given current State.
func (*Attachments) Empty ¶
func (a *Attachments) Empty() bool
Empty reports whether or not there are any active storage attachments.
func (*Attachments) Pending ¶
func (a *Attachments) Pending() int
Pending reports the number of storage attachments whose hooks have yet to be run and committed.
func (*Attachments) SetDying ¶
func (a *Attachments) SetDying() error
SetDying ensures that any unprovisioned storage attachments are removed from State.
func (*Attachments) Storage ¶
func (a *Attachments) Storage(tag names.StorageTag) (jujuc.ContextStorageAttachment, error)
Storage returns the ContextStorage with the supplied tag if it was found, and whether it was found.
func (*Attachments) StorageTags ¶
func (a *Attachments) StorageTags() ([]names.StorageTag, error)
StorageTags returns the names.StorageTags for the active storage attachments.
func (*Attachments) ValidateHook ¶
func (a *Attachments) ValidateHook(hi hook.Info) error
ValidateHook validates the hook against the current State.
type State ¶
type State struct {
// contains filtered or unexported fields
}
State describes the State of storage attachments.
func (*State) ValidateHook ¶
ValidateHook returns an error if the supplied hook.Info does not represent a valid change to the storage State. Hooks must always be validated against the current State before they are run, to ensure that the system meets its guarantees about hook execution order.
type StorageAccessor ¶
type StorageAccessor interface { // StorageAttachment returns details of the storage attachment // with the specified unit and storage tags. StorageAttachment(names.StorageTag, names.UnitTag) (params.StorageAttachment, error) // UnitStorageAttachments returns details of all of the storage // attachments for the unit with the specified tag. UnitStorageAttachments(names.UnitTag) ([]params.StorageAttachmentId, error) // DestroyUnitStorageAttachments ensures that all storage // attachments for the specified unit will be removed at // some point in the future. DestroyUnitStorageAttachments(names.UnitTag) error // RemoveStorageAttachment removes that the storage attachment // with the specified unit and storage tags. This method is only // expected to succeed if the storage attachment is Dying. RemoveStorageAttachment(names.StorageTag, names.UnitTag) error }
StorageAccessor is an interface for accessing information about storage attachments.
type StorageResolverOperations ¶
type StorageResolverOperations interface { NewUpdateStorage(tags []names.StorageTag) (operation.Operation, error) NewRunHook(hookInfo hook.Info) (operation.Operation, error) }
StorageResolverOperations instances know how to make operations required by the resolver.
type UnitStateReadWriter ¶
type UnitStateReadWriter interface { State() (params.UnitStateResult, error) SetState(unitState params.SetUnitStateArg) error }
UnitStateReadWriter encapsulates the methods from a state.Unit required to set and get unit state.