Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func MongoIndexes ¶
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.
Types ¶
type DataStore ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
NewStorage constructs a new Storage that stores image metadata in the provided data store.