Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client interface {
// Create creates the object specified in the KVPair, which must not
// already exist. On success, returns a KVPair for the object with
// revision information filled-in.
Create(object *model.KVPair) (*model.KVPair, error)
// Update modifies the existing object specified in the KVPair.
// On success, returns a KVPair for the object with revision
// information filled-in. If the input KVPair has revision
// information then the update only succeeds if the revision is still
// current.
Update(object *model.KVPair) (*model.KVPair, error)
// Apply updates or creates the object specified in the KVPair.
// On success, returns a KVPair for the object with revision
// information filled-in. If the input KVPair has revision
// information then the update only succeeds if the revision is still
// current.
Apply(object *model.KVPair) (*model.KVPair, error)
// Delete removes the object specified by the KVPair. If the KVPair
// contains revision information, the delete only succeeds if the
// revision is still current.
//
// Some keys are hierarchical, and Delete is a recursive operation.
//
// Any objects that were implicitly added by a Create operation should
// also be removed when deleting the objects that implicitly created it.
// For example, deleting the last WorkloadEndpoint in a Workload will
// also remove the Workload.
Delete(object *model.KVPair) error
// Get returns the object identified by the given key as a KVPair with
// revision information.
Get(key model.Key) (*model.KVPair, error)
// List returns a slice of KVPairs matching the input list options.
// list should be passed one of the model.<Type>ListOptions structs.
// Non-zero fields in the struct are used as filters.
List(list model.ListInterface) ([]*model.KVPair, error)
// Syncer creates an object that generates a series of KVPair updates,
// which paint an eventually-consistent picture of the full state of
// the datastore and then generates subsequent KVPair updates for
// changes to the datastore.
Syncer(callbacks SyncerCallbacks) Syncer
}
Client is the interface to the backend datastore. It makes heavy use of the KVPair struct, which contains a key and (optional) value drawn from the backend/model package along with opaque revision information that the datastore uses to enforce consistency.
type SyncStatus ¶
type SyncStatus uint8
SyncStatus represents the overall state of the datastore. When the status changes, the Syncer calls OnStatusUpdated() on its callback.
const ( // WaitForDatastore means the Syncer is waiting to connect to the datastore. // (Or, it is waiting for the data in the datastore to be ready to use.) WaitForDatastore SyncStatus = iota // ResyncInProgress means the Syncer is resyncing with the datastore. // During the first resync, the Syncer sends updates for all keys that // exist in the datastore as well as any updates that occur // concurrently. ResyncInProgress // InSync means the Syncer has now sent all the existing keys in the // datastore and the user of hte API has the full picture. InSync )
func (SyncStatus) String ¶
func (s SyncStatus) String() string
type Syncer ¶
type Syncer interface {
// Starts the Syncer. May start a background goroutine.
Start()
}
type SyncerCallbacks ¶
type SyncerCallbacks interface {
// OnStatusUpdated is called when the status of the sync status of the
// datastore changes.
OnStatusUpdated(status SyncStatus)
// OnUpdates is called when the Syncer has one or more updates to report.
// Updates consist of typed key-value pairs. The keys are drawn from the
// backend.model package. The values are either nil, to indicate a
// deletion (or failure to parse a value), or a pointer to a value of
// the associated value type.
//
// When a recursive delete is made, deleting many leaf keys, the Syncer
// generates deletion updates for all the leaf keys.
OnUpdates(updates []Update)
}
type SyncerParseFailCallbacks ¶
SyncerParseFailCallbacks is an optional interface that can be implemented by a Syncer callback. Datastores that support it can report a failure to parse a particular key or value.
type Update ¶
type Update struct {
model.KVPair
UpdateType UpdateType
}
Update from the Syncer. A KV pair plus extra metadata.
type UpdateType ¶
type UpdateType uint8
const ( UpdateTypeKVUnknown UpdateType = iota UpdateTypeKVNew UpdateTypeKVUpdated UpdateTypeKVDeleted )