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 ¶
- func FileInfoFromHeader(hdr *tar.Header) *fileInfo
- func NewHashWriter(w io.Writer) specaci.ArchiveWriter
- func WriteACIInfo(tx *sql.Tx, aciinfo *ACIInfo) error
- func WriteRemote(tx *sql.Tx, remote *Remote) error
- type ACIInfo
- type DB
- type Remote
- type Store
- func (ds Store) CheckTreeStore(key string) error
- func (ds Store) Dump(hex bool)
- func (ds Store) GetACI(name types.ACName, labels types.Labels) (string, error)
- func (ds Store) GetImageManifest(key string) (*schema.ImageManifest, error)
- func (ds Store) GetRemote(aciURL string) (*Remote, bool, error)
- func (ds Store) GetTreeStorePath(key string) string
- func (ds Store) GetTreeStoreRootFS(key string) string
- func (ds Store) HashToKey(h hash.Hash) string
- func (ds Store) ReadStream(key string) (io.ReadCloser, error)
- func (ds Store) RenderTreeStore(key string, rebuild bool) error
- func (ds Store) ResolveKey(key string) (string, error)
- func (ds Store) WriteACI(r io.Reader, latest bool) (string, error)
- func (ds Store) WriteRemote(remote *Remote) error
- type TreeStore
- func (ts *TreeStore) Check(key string) error
- func (ts *TreeStore) GetPath(key string) string
- func (ts *TreeStore) GetRootFS(key string) string
- func (ts *TreeStore) Hash(key string) (string, error)
- func (ts *TreeStore) IsRendered(key string) (bool, error)
- func (ts *TreeStore) Remove(key string) error
- func (ts *TreeStore) Write(key string, ds *Store) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FileInfoFromHeader ¶ added in v0.5.1
func NewHashWriter ¶ added in v0.5.1
func NewHashWriter(w io.Writer) specaci.ArchiveWriter
func WriteACIInfo ¶ added in v0.4.0
WriteACIInfo adds or updates the provided aciinfo.
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
GetAciInfosWithAppName returns all the ACIInfos for a given appname. found will be false if no aciinfo exists.
func GetACIInfosWithKeyPrefix ¶ added in v0.4.0
GetAciInfosWithKeyPrefix returns all the ACIInfos with a blobkey starting with the given prefix.
type DB ¶ added in v0.4.0
type DB struct {
// contains filtered or unexported fields
}
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 }
type Store ¶
type Store struct {
// contains filtered or unexported fields
}
Store encapsulates a content-addressable-storage for storing ACIs on disk.
func (Store) CheckTreeStore ¶ added in v0.5.1
CheckTreeStore verifies the treestore consistency for the specified key.
func (Store) GetACI ¶ added in v0.4.2
GetACI retrieves the ACI that best matches the provided app name and labels. The returned value is the blob store key of the retrieved ACI. If there are multiple matching ACIs choose the latest one (defined as the last one imported in the store). If no version label is requested, ACIs marked as latest in the ACIInfo are preferred.
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
GetRemote tries to retrieve a remote with the given ACIURL. found will be false if remote doesn't exist.
func (Store) GetTreeStorePath ¶ added in v0.5.1
GetTreeStorePath returns the absolute path of the treestore for the specified key. It doesn't ensure that the path exists and is fully rendered. This should be done calling IsRendered()
func (Store) GetTreeStoreRootFS ¶ added in v0.5.1
GetTreeStoreRootFS returns the absolute path of the rootfs in the treestore for specified key. It doesn't ensure that the rootfs exists and is fully rendered. This should be done calling IsRendered()
func (Store) HashToKey ¶ added in v0.4.0
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) RenderTreeStore ¶ added in v0.5.1
RenderTreeStore renders a treestore for the given image key if it's not already fully rendered. Users of treestore should call ds.RenderTreeStore before using it to ensure that the treestore is completely rendered.
func (Store) ResolveKey ¶ added in v0.2.0
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 ¶
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) latest defines if the aci has to be marked as the latest. For example an ACI discovered without asking for a specific version (latest pattern).
func (Store) WriteRemote ¶ added in v0.4.0
WriteRemote adds or updates the provided Remote.
type TreeStore ¶ added in v0.5.1
type TreeStore struct {
// contains filtered or unexported fields
}
TreeStore represents a store of rendered ACIs The image's key becomes the name of the directory containing the rendered aci.
func (*TreeStore) Check ¶ added in v0.5.1
Check calculates the actual rendered ACI's hash and verifies that it matches the saved value.
func (*TreeStore) GetPath ¶ added in v0.5.1
GetPath returns the absolute path of the treestore for the specified key. It doesn't ensure that the path exists and is fully rendered. This should be done calling IsRendered()
func (*TreeStore) GetRootFS ¶ added in v0.5.1
GetRootFS returns the absolute path of the rootfs for the specified key. It doesn't ensure that the rootfs exists and is fully rendered. This should be done calling IsRendered()
func (*TreeStore) Hash ¶ added in v0.5.1
TreeStore calculates an hash of the rendered ACI. It uses the same functions used to create a tar but instead of writing the full archive is just computes the sha512 sum of the file infos and contents.
func (*TreeStore) IsRendered ¶ added in v0.5.1
IsRendered checks if the tree store is fully rendered