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

package cloudimagemetadata

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


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 {

    // 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.
    // Non custom records will expire after a set time.
    SaveMetadata([]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). Updated 2020-08-06. Refresh now. Tools for package owners.