Documentation ¶
Index ¶
Constants ¶
const (
// DefaultCacheSize is used if no cache size is specified for NewCache
DefaultCacheSize = 32 * 1024
)
Variables ¶
var BuiltinBackends = map[string]Factory{ "inmem": func(map[string]string) (Backend, error) { return NewInmem(), nil }, "consul": newConsulBackend, "file": newFileBackend, }
BuiltinBackends is the list of built-in physical backends that can be used with NewBackend.
Functions ¶
This section is empty.
Types ¶
type Backend ¶
type Backend interface { // Put is used to insert or update an entry Put(entry *Entry) error // Get is used to fetch an entry Get(key string) (*Entry, error) // Delete is used to permanently delete an entry Delete(key string) error // List is used ot list all the keys under a given // prefix, up to the next prefix. List(prefix string) ([]string, error) }
Backend is the interface required for a physical backend. A physical backend is used to durably store data outside of Vault. As such, it is completely untrusted, and is only accessed via a security barrier. The backends must represent keys in a hierarchical manner. All methods are expected to be thread safe.
type Cache ¶
type Cache struct {
// contains filtered or unexported fields
}
Cache is used to wrap an underlying physical backend and provide an LRU cache layer on top. Most of the reads done by Vault are for policy objects so there is a large read reduction by using a simple write-through cache.
type ConsulBackend ¶
type ConsulBackend struct {
// contains filtered or unexported fields
}
ConsulBackend is a physical backend that stores data at specific prefix within Consul. It is used for most production situations as it allows Vault to run on multiple machines in a highly-available manner.
func (*ConsulBackend) Delete ¶
func (c *ConsulBackend) Delete(key string) error
Delete is used to permanently delete an entry
func (*ConsulBackend) Get ¶
func (c *ConsulBackend) Get(key string) (*Entry, error)
Get is used to fetch an entry
func (*ConsulBackend) List ¶
func (c *ConsulBackend) List(prefix string) ([]string, error)
List is used ot list all the keys under a given prefix, up to the next prefix.
func (*ConsulBackend) LockWith ¶
func (c *ConsulBackend) LockWith(key, value string) (Lock, error)
Lock is used for mutual exclusion based on the given key.
func (*ConsulBackend) Put ¶
func (c *ConsulBackend) Put(entry *Entry) error
Put is used to insert or update an entry
type ConsulLock ¶
type ConsulLock struct {
// contains filtered or unexported fields
}
ConsulLock is used to provide the Lock interface backed by Consul
func (*ConsulLock) Lock ¶
func (c *ConsulLock) Lock(stopCh <-chan struct{}) (<-chan struct{}, error)
func (*ConsulLock) Unlock ¶
func (c *ConsulLock) Unlock() error
type FileBackend ¶
type FileBackend struct { Path string // contains filtered or unexported fields }
FileBackend is a physical backend that stores data on disk at a given file path. It can be used for durable single server situations, or to develop locally where durability is not critical.
WARNING: the file backend implementation is currently extremely unsafe and non-performant. It is meant mostly for local testing and development. It can be improved in the future.
func (*FileBackend) Delete ¶
func (b *FileBackend) Delete(k string) error
func (*FileBackend) Put ¶
func (b *FileBackend) Put(entry *Entry) error
type HABackend ¶
type HABackend interface { // LockWith is used for mutual exclusion based on the given key. LockWith(key, value string) (Lock, error) }
HABackend is an extentions to the standard physical backend to support high-availability. Vault only expects to use mutual exclusion to allow multiple instances to act as a hot standby for a leader that services all requests.
type InmemBackend ¶
type InmemBackend struct {
// contains filtered or unexported fields
}
InmemBackend is an in-memory only physical backend. It is useful for testing and development situations where the data is not expected to be durable.
func (*InmemBackend) Delete ¶
func (i *InmemBackend) Delete(key string) error
Delete is used to permanently delete an entry
func (*InmemBackend) Get ¶
func (i *InmemBackend) Get(key string) (*Entry, error)
Get is used to fetch an entry
func (*InmemBackend) List ¶
func (i *InmemBackend) List(prefix string) ([]string, error)
List is used ot list all the keys under a given prefix, up to the next prefix.
func (*InmemBackend) Put ¶
func (i *InmemBackend) Put(entry *Entry) error
Put is used to insert or update an entry
type InmemHABackend ¶
type InmemHABackend struct { InmemBackend // contains filtered or unexported fields }
func NewInmemHA ¶
func NewInmemHA() *InmemHABackend
NewInmemHA constructs a new in-memory HA backend. This is only for testing.
type InmemLock ¶
type InmemLock struct {
// contains filtered or unexported fields
}
InmemLock is an in-memory Lock implementation for the HABackend
type Lock ¶
type Lock interface { // Lock is used to acquire the given lock // The stopCh is optional and if closed should interrupt the lock // acquisition attempt. The return struct should be closed when // leadership is lost. Lock(stopCh <-chan struct{}) (<-chan struct{}, error) // Unlock is used to release the lock Unlock() error // Returns the value of the lock and if it is held Value() (bool, string, error) }