912746b016
Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
69 lines
2.9 KiB
Go
69 lines
2.9 KiB
Go
package storage
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/docker/containerd/snapshot"
|
|
)
|
|
|
|
// MetaStore is used to store metadata related to a snapshot driver. The
|
|
// MetaStore is intended to store metadata related to name, state and
|
|
// parentage. Using the MetaStore is not required to implement a snapshot
|
|
// driver but can be used to handle the persistence and transactional
|
|
// complexities of a driver implementation.
|
|
type MetaStore interface {
|
|
// TransactionContext creates a new transaction context.
|
|
TransactionContext(ctx context.Context, writable bool) (context.Context, Transactor, error)
|
|
|
|
// Stat returns the snapshot stat Info directly from
|
|
// the metadata.
|
|
Stat(ctx context.Context, key string) (snapshot.Info, error)
|
|
|
|
// Walk iterates through all metadata for the stored
|
|
// snapshots and calls the provided function for each.
|
|
Walk(ctx context.Context, fn func(context.Context, snapshot.Info) error) error
|
|
|
|
// CreateActive creates a new active snapshot transaction referenced by
|
|
// the provided key. The new active snapshot will have the provided
|
|
// parent. If the readonly option is given, the active snapshot will be
|
|
// marked as readonly and can only be removed, and not committed. The
|
|
// provided context must contain a writable transaction.
|
|
CreateActive(ctx context.Context, key, parent string, readonly bool) (Active, error)
|
|
|
|
// GetActive returns the metadata for the active snapshot transaction
|
|
// referenced by the given key.
|
|
GetActive(ctx context.Context, key string) (Active, error)
|
|
|
|
// Remove removes a snapshot from the metastore. The provided context
|
|
// must contain a writable transaction. The string identifier for the
|
|
// snapshot is returned as well as the kind.
|
|
Remove(ctx context.Context, key string) (string, snapshot.Kind, error)
|
|
|
|
// Commit renames the active snapshot transaction referenced by `key`
|
|
// as a committed snapshot referenced by `Name`. The resulting snapshot
|
|
// will be committed and readonly. The `key` reference will no longer
|
|
// be available for lookup or removal. The returned string identifier
|
|
// for the committed snapshot is the same identifier of the original
|
|
// active snapshot.
|
|
Commit(ctx context.Context, key, name string) (string, error)
|
|
}
|
|
|
|
// Transactor is used to finalize an active transaction.
|
|
type Transactor interface {
|
|
// Commit commits any changes made during the transaction.
|
|
Commit() error
|
|
|
|
// Rollback rolls back any changes made during the transaction.
|
|
Rollback() error
|
|
}
|
|
|
|
// Active hold the metadata for an active snapshot transaction. The ParentIDs
|
|
// hold the snapshot identifiers for the committed snapshots this active is
|
|
// based on. The ParentIDs are ordered from the lowest base to highest, meaning
|
|
// they should be applied in order from the first index to the last index. The
|
|
// last index should always be considered the active snapshots immediate parent.
|
|
type Active struct {
|
|
ID string
|
|
ParentIDs []string
|
|
Readonly bool
|
|
}
|