juju: github.com/juju/juju/state/cloudimagemetadata Index | Files

package cloudimagemetadata

import "github.com/juju/juju/state/cloudimagemetadata"

Index

Package Files

image.go interface.go

func MongoIndexes Uses

func MongoIndexes() []mgo.Index

MongoIndexes returns the indexes to apply to the clouldimagemetadata collection. We return an index that expires records containing a created-at field after 5 minutes.

type DataStore Uses

type DataStore interface {

    // RunTransaction runs desired transactions against this data source..
    RunTransaction(jujutxn.TransactionSource) error

    // GetCollection retrieves desired collection from this data source.
    GetCollection(name string) (collection mongo.Collection, closer func())
}

DataStore exposes data store operations for use by the cloud image metadata package.

type Metadata Uses

type Metadata struct {
    MetadataAttributes

    // Priority is an importance factor for image metadata.
    // Higher number means higher priority.
    // This will allow to sort metadata by importance.
    Priority int

    // ImageId contains image identifier.
    ImageId string

    // DateCreated contains the time and date the image was created. This
    // is populated when the Metadata is saved.
    DateCreated int64
}

Metadata describes a cloud image metadata.

type MetadataAttributes Uses

type MetadataAttributes struct {
    // Stream contains reference to a particular stream,
    // for e.g. "daily" or "released"
    Stream string

    // Region is the name of cloud region associated with the image.
    Region string

    // Version is OS version, for e.g. "12.04".
    Version string

    // Series is OS series, for e.g. "trusty".
    Series string

    // Arch is the architecture for this cloud image, for e.g. "amd64"
    Arch string

    // VirtType contains virtualisation type of the cloud image, for e.g. "pv", "hvm". "kvm".
    VirtType string

    // RootStorageType contains type of root storage, for e.g. "ebs", "instance".
    RootStorageType string

    // RootStorageSize contains size of root storage in gigabytes (GB).
    RootStorageSize *uint64

    // Source describes where this image is coming from: is it public? custom?
    Source string
}

MetadataAttributes contains cloud image metadata attributes.

type MetadataFilter Uses

type MetadataFilter struct {
    // Region stores metadata region.
    Region string `json:"region,omitempty"`

    // Series stores all desired series.
    Series []string `json:"series,omitempty"`

    // Arches stores all desired architectures.
    Arches []string `json:"arches,omitempty"`

    // Stream can be "" or "released" for the default "released" stream,
    // or "daily" for daily images, or any other stream that the available
    // simplestreams metadata supports.
    Stream string `json:"stream,omitempty"`

    // VirtType stores virtualisation type.
    VirtType string `json:"virt_type,omitempty"`

    // RootStorageType stores storage type.
    RootStorageType string `json:"root-storage-type,omitempty"`
}

MetadataFilter contains all metadata attributes that alow to find a particular cloud image metadata. Since size and source are not discriminating attributes for cloud image metadata, they are not included in search criteria.

type Storage Uses

type Storage interface {
    // SaveMetadata adds cloud images metadata into state if it's new or
    // updates metadata if it already exists. The records will expire
    // after a set time.
    SaveMetadata([]Metadata) error

    // SaveMetadataNoExpiry adds cloud images metadata into state if it's new or
    // updates metadata if it already exists. The records will not expire.
    SaveMetadataNoExpiry([]Metadata) error

    // DeleteMetadata deletes cloud image metadata from state.
    DeleteMetadata(imageId string) error

    // FindMetadata returns all Metadata that match specified
    // criteria or a "not found" error if none match.
    // Empty criteria will return all cloud image metadata.
    // Returned result is grouped by source type and ordered by date created.
    FindMetadata(criteria MetadataFilter) (map[string][]Metadata, error)

    // SupportedArchitectures returns collection of unique architectures
    // that stored metadata contains.
    SupportedArchitectures(criteria MetadataFilter) ([]string, error)

    // AllCloudImageMetadata returns all the cloud image metadata in the
    // model.
    AllCloudImageMetadata() ([]Metadata, error)
}

Storage provides methods for storing and retrieving cloud image metadata.

func NewStorage Uses

func NewStorage(collectionName string, store DataStore) Storage

NewStorage constructs a new Storage that stores image metadata in the provided data store.

Package cloudimagemetadata imports 11 packages (graph) and is imported by 99 packages. Updated 2018-05-29. Refresh now. Tools for package owners.