cas

package
v0.4.1 Latest Latest
Warning

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

Go to latest
Published: Mar 9, 2015 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Overview

Package cas implements a content-addressable-store on disk. It leverages the `diskv` package to store items in a simple key-value blob store: https://github.com/peterbourgon/diskv

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func WriteACIInfo added in v0.4.0

func WriteACIInfo(tx *sql.Tx, aciinfo *ACIInfo) error

WriteACIInfo adds or updates the provided aciinfo.

func WriteRemote added in v0.4.0

func WriteRemote(tx *sql.Tx, remote *Remote) error

WriteRemote adds or updates the provided Remote.

Types

type ACIInfo added in v0.4.0

type ACIInfo struct {
	// BlobKey is the key in the blob/imageManifest store of the related
	// ACI file and is the db primary key.
	BlobKey string
	// AppName is the app name provided by the ACI.
	AppName string
	// ImportTime is the time this ACI was imported in the store.
	ImportTime time.Time
	// Latest defines if the ACI was imported using the latest pattern (no
	// version label was provided on ACI discovery)
	Latest bool
}

ACIInfo is used to store information about an ACI.

func GetACIInfosWithAppName added in v0.4.0

func GetACIInfosWithAppName(tx *sql.Tx, appname string) ([]*ACIInfo, bool, error)

GetAciInfosWithAppName returns all the ACIInfos for a given appname. found will be false if no aciinfo exists.

func GetACIInfosWithKeyPrefix added in v0.4.0

func GetACIInfosWithKeyPrefix(tx *sql.Tx, prefix string) ([]*ACIInfo, error)

GetAciInfosWithKeyPrefix returns all the ACIInfos with a blobkey starting with the given prefix.

func NewACIInfo added in v0.4.0

func NewACIInfo(blobKey string, latest bool, t time.Time) *ACIInfo

type DB added in v0.4.0

type DB struct {
	// contains filtered or unexported fields
}

func NewDB added in v0.4.0

func NewDB(dbdir string) (*DB, error)

func (*DB) Begin added in v0.4.0

func (db *DB) Begin() (*sql.Tx, error)

func (*DB) Close added in v0.4.0

func (db *DB) Close() error

func (*DB) Do added in v0.4.0

func (db *DB) Do(fns ...txfunc) error

Do Opens the db, executes DoTx and then Closes the DB

func (*DB) DoTx added in v0.4.0

func (db *DB) DoTx(fns ...txfunc) error

DoTx executes the provided txfuncs inside a unique transaction. If one of the functions returns an error the whole transaction is rolled back.

func (*DB) Open added in v0.4.0

func (db *DB) Open() error

type Remote

type Remote struct {
	ACIURL string
	SigURL string
	ETag   string
	// The key in the blob store under which the ACI has been saved.
	BlobKey string
}

func GetRemote added in v0.4.0

func GetRemote(tx *sql.Tx, aciURL string) (remote *Remote, found bool, err error)

GetRemote tries to retrieve a remote with the given aciURL. found will be false if remote doesn't exist.

func NewRemote

func NewRemote(aciurl, sigurl string) *Remote

func (Remote) Download

func (r Remote) Download(ds Store, ks *keystore.Keystore) (*openpgp.Entity, *os.File, error)

Download downloads and verifies the remote ACI. If Keystore is nil signature verification will be skipped. Download returns the signer, an *os.File representing the ACI, and an error if any. err will be nil if the ACI downloads successfully and the ACI is verified.

func (Remote) Store added in v0.2.0

func (r Remote) Store(ds Store, aci io.Reader) (*Remote, error)

TODO: add locking Store stores the ACI represented by r in the target data store.

type Store

type Store struct {
	// contains filtered or unexported fields
}

Store encapsulates a content-addressable-storage for storing ACIs on disk.

func NewStore

func NewStore(base string) (*Store, error)

func (Store) Dump

func (ds Store) Dump(hex bool)

func (Store) GetImageManifest added in v0.4.0

func (ds Store) GetImageManifest(key string) (*schema.ImageManifest, error)

Get the ImageManifest with the specified key.

func (Store) GetRemote added in v0.4.0

func (ds Store) GetRemote(aciURL string) (*Remote, bool, error)

GetRemote tries to retrieve a remote with the given ACIURL. found will be false if remote doesn't exist.

func (Store) HashToKey added in v0.4.0

func (ds Store) HashToKey(h hash.Hash) string

HashToKey takes a hash.Hash (which currently _MUST_ represent a full SHA512), calculates its sum, and returns a string which should be used as the key to store the data matching the hash.

func (Store) ReadStream

func (ds Store) ReadStream(key string) (io.ReadCloser, error)

func (Store) ResolveKey added in v0.2.0

func (ds Store) ResolveKey(key string) (string, error)

ResolveKey resolves a partial key (of format `sha512-0c45e8c0ab2`) to a full key by considering the key a prefix and using the store for resolution. If the key is longer than the full key length, it is first truncated.

func (Store) WriteACI

func (ds Store) WriteACI(r io.Reader) (string, error)

WriteACI takes an ACI encapsulated in an io.Reader, decompresses it if necessary, and then stores it in the store under a key based on the image ID (i.e. the hash of the uncompressed ACI)

func (Store) WriteRemote added in v0.4.0

func (ds Store) WriteRemote(remote *Remote) error

WriteRemote adds or updates the provided Remote.

func (Store) WriteStream

func (ds Store) WriteStream(key string, r io.Reader) error

Jump to

Keyboard shortcuts

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