juju: github.com/juju/juju/worker/uniter/storage Index | Files

package storage

import "github.com/juju/juju/worker/uniter/storage"

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.


Package Files

attachments.go context.go resolver.go state.go

func NewResolver Uses

func NewResolver(storage *Attachments, modelType model.ModelType) resolver.Resolver

NewResolver returns a new storage resolver.

type Attachments Uses

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 Uses

func NewAttachments(
    st StorageAccessor,
    tag names.UnitTag,
    storageStateDir string,
    abort <-chan struct{},
) (*Attachments, error)

NewAttachments returns a new Attachments.

func (*Attachments) CommitHook Uses

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 Uses

func (a *Attachments) Empty() bool

Empty reports whether or not there are any active storage attachments.

func (*Attachments) Pending Uses

func (a *Attachments) Pending() int

Pending reports the number of storage attachments whose hooks have yet to be run and committed.

func (*Attachments) SetDying Uses

func (a *Attachments) SetDying() error

SetDying ensures that any unprovisioned storage attachments are removed from state.

func (*Attachments) Storage Uses

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 Uses

func (a *Attachments) StorageTags() ([]names.StorageTag, error)

StorageTags returns the names.StorageTags for the active storage attachments.

func (*Attachments) ValidateHook Uses

func (a *Attachments) ValidateHook(hi hook.Info) error

ValidateHook validates the hook against the current state.

type StorageAccessor Uses

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 Uses

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.

Package storage imports 18 packages (graph) and is imported by 37 packages. Updated 2020-02-20. Refresh now. Tools for package owners.