cloudimagemetadata

package
v0.0.0-...-8ff1004 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 15, 2019 License: AGPL-3.0 Imports: 11 Imported by: 0

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

func NewStorage(collectionName string, store DataStore) Storage

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL