legacy

package
v4.0.16+incompatible Latest Latest
Warning

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

Go to latest
Published: Mar 23, 2020 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package legacy stores previous, unsupported versions of the backend and is used for migrations

Index

Constants

View Source
const (
	Forever         time.Duration = 0
	MaxLockDuration time.Duration = time.Minute
)

Forever means that object TTL will not expire unless deleted

Variables

This section is empty.

Functions

func AnyTTL

func AnyTTL(clock clockwork.Clock, times ...time.Time) time.Duration

AnyTTL returns TTL if any of the suplied times pass expiry time otherwise returns forever

func Import

func Import(ctx context.Context, importer Importer, newExporter NewExporterFunc) error

Import imports backend data into importer unless importer has already imported data. If Importer has no imported data yet, exporter will not be initialized. This function can be called many times on the same importer. Importer will be closed if import has failed.

func TTL

func TTL(clock clockwork.Clock, t time.Time) time.Duration

TTL converts time to TTL from current time supplied by provider, if t is zero, returns forever

func ValidateLockTTL

func ValidateLockTTL(ttl time.Duration) error

ValidateLockTTL helper allows all backends to validate lock TTL parameter

Types

type Backend

type Backend interface {
	// GetKeys returns a list of keys for a given path
	GetKeys(bucket []string) ([]string, error)
	// GetItems returns a list of items (key value pairs) for a bucket.
	GetItems(bucket []string, opts ...OpOption) ([]Item, error)
	// CreateVal creates value with a given TTL and key in the bucket
	// if the value already exists, it must return trace.AlreadyExistsError
	CreateVal(bucket []string, key string, val []byte, ttl time.Duration) error
	// UpsertVal updates or inserts value with a given TTL into a bucket
	// ForeverTTL for no TTL
	UpsertVal(bucket []string, key string, val []byte, ttl time.Duration) error
	// UpsertItems updates or inserts all passed in backend.Items (with a TTL)
	// into the given bucket.
	UpsertItems(bucket []string, items []Item) error
	// GetVal return a value for a given key in the bucket
	GetVal(path []string, key string) ([]byte, error)
	// CompareAndSwapVal compares and swaps values in atomic operation,
	// succeeds if prevVal matches the value stored in the database,
	// requires prevVal as a non-empty value. Returns trace.CompareFailed
	// in case if value did not match.
	CompareAndSwapVal(bucket []string, key string, val []byte, prevVal []byte, ttl time.Duration) error
	// DeleteKey deletes a key in a bucket
	DeleteKey(bucket []string, key string) error
	// DeleteBucket deletes the bucket by a given path
	DeleteBucket(path []string, bkt string) error
	// AcquireLock grabs a lock that will be released automatically in TTL
	AcquireLock(token string, ttl time.Duration) error
	// ReleaseLock forces lock release before TTL
	ReleaseLock(token string) error
	// Close releases the resources taken up by this backend
	Close() error
	// Clock returns clock used by this backend
	Clock() clockwork.Clock
}

Backend implements abstraction over local or remote storage backend

Storage is modeled after BoltDB:

  • bucket is a slice []string{"a", "b"}
  • buckets contain key value pairs

type Config

type Config struct {
	// Type can be "bolt" or "etcd" or "dynamodb"
	Type string `yaml:"type,omitempty"`

	// Params is a generic key/value property bag which allows arbitrary
	// falues to be passed to backend
	Params Params `yaml:",inline"`
}

Config is used for 'storage' config section. It's a combination of values for various backends: 'boltdb', 'etcd', 'filesystem' and 'dynamodb'

type Exporter

type Exporter interface {
	// Export exports all items from the backend in new backend Items
	Export() ([]backend.Item, error)
	// Close closes importer
	Close() error
}

type Importer

type Importer interface {
	// Import imports elements, makes sure elements are imported only once
	// returns trace.AlreadyExists if elements have been imported
	Import(ctx context.Context, items []backend.Item) error
	// Imported returns true if backend already imported data from another backend
	Imported(ctx context.Context) (bool, error)
	// Close closes importer
	Close() error
}

Importer specifies methods for importing data from legacy backends

type Item

type Item struct {
	// FullPath is set to full path
	FullPath string
	// Key is an item key.
	Key string
	// Value is an item value.
	Value []byte
	// TTL is the expire time for the item.
	TTL time.Duration
}

Item is a pair of key and value.

type Items

type Items []Item

func (Items) Len

func (it Items) Len() int

Len is part of sort.Interface.

func (Items) Less

func (it Items) Less(i, j int) bool

Less is part of sort.Interface.

func (Items) Swap

func (it Items) Swap(i, j int)

Swap is part of sort.Interface.

type NameFunc

type NameFunc func() string

NameFunc type defines a function type which every backend must implement to return its name

type NewExporterFunc

type NewExporterFunc func() (Exporter, error)

NewExporterFunc returns new exporter

type NewFunc

type NewFunc func(Params) (Backend, error)

NewFunc type defines a function type which every backend must implement to instantiate itself

type OpConfig

type OpConfig struct {
	// Recursive triggers recursive get
	Recursive bool
	// KeysOnly fetches only keys
	KeysOnly bool
}

OpConfig contains operation config

func CollectOptions

func CollectOptions(opts []OpOption) (*OpConfig, error)

CollectOptions collects all options from functional arg and returns config

type OpOption

type OpOption func(*OpConfig) error

OpOption is operation functional argument

func WithRecursive

func WithRecursive() OpOption

WithRecursive sets get operation to be recursive

type Params

type Params map[string]interface{}

backend.Params type defines a flexible unified back-end configuration API. It is just a map of key/value pairs which gets populated by `storage` section in Teleport YAML config.

func (Params) GetString

func (p Params) GetString(key string) string

GetString returns a string value stored in Params map, or an empty string if nothing is found

Directories

Path Synopsis
Package boltbk implements BoltDB backed backend for standalone instances This is a legacy backend which only exists for backward compatibility purposes Production Teleport clusters should be using either etcd or DynamoDB backends.
Package boltbk implements BoltDB backed backend for standalone instances This is a legacy backend which only exists for backward compatibility purposes Production Teleport clusters should be using either etcd or DynamoDB backends.
dir package implements backend.Backend interface using the filesystem.
dir package implements backend.Backend interface using the filesystem.
Package test contains a backend acceptance test suite that is backend implementation independent each backend will use the suite to test itself
Package test contains a backend acceptance test suite that is backend implementation independent each backend will use the suite to test itself

Jump to

Keyboard shortcuts

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