package state
import "github.com/moby/swarmkit/v2/manager/state"
Index ¶
- func Matcher(specifiers ...api.Event) events.MatcherFunc
- func NodeCheckState(n1, n2 *api.Node) bool
- func TaskCheckStateGreaterThan(t1, t2 *api.Task) bool
- func Watch(queue *watch.Queue, specifiers ...api.Event) (eventq chan events.Event, cancel func())
- type Change
- type EventCommit
- type Proposer
Functions ¶
func Matcher ¶
Matcher returns an events.Matcher that Matches the specifiers with OR logic.
func NodeCheckState ¶
NodeCheckState is a NodeCheckFunc for matching node state.
func TaskCheckStateGreaterThan ¶
TaskCheckStateGreaterThan is a TaskCheckFunc for checking task state.
func Watch ¶
Watch takes a variable number of events to match against. The subscriber will receive events that match any of the arguments passed to Watch.
Examples:
// subscribe to all events
Watch(q)
// subscribe to all UpdateTask events
Watch(q, EventUpdateTask{})
// subscribe to all task-related events
Watch(q, EventUpdateTask{}, EventCreateTask{}, EventDeleteTask{})
// subscribe to UpdateTask for node 123
Watch(q, EventUpdateTask{
Task: &api.Task{NodeID: 123},
Checks: []TaskCheckFunc{TaskCheckNodeID},
})
// subscribe to UpdateTask for node 123, as well as CreateTask
// for node 123 that also has ServiceID set to "abc"
Watch(q, EventUpdateTask{
Task: &api.Task{NodeID: 123},
Checks: []TaskCheckFunc{TaskCheckNodeID}},
EventCreateTask{
Task: &api.Task{NodeID: 123, ServiceID: "abc"},
Checks: []TaskCheckFunc{TaskCheckNodeID, func(t1, t2 *api.Task) bool {
return t1.ServiceID == t2.ServiceID
},
},
})
Types ¶
type Change ¶
type Change struct {
StoreActions []api.StoreAction
Version api.Version
}
A Change includes a version number and a set of store actions from a particular log entry.
type EventCommit ¶
EventCommit delineates a transaction boundary.
func (EventCommit) Matches ¶
func (e EventCommit) Matches(watchEvent events.Event) bool
Matches returns true if this event is a commit event.
type Proposer ¶
type Proposer interface {
// ProposeValue adds storeAction to the distributed log. If this
// completes successfully, ProposeValue calls cb to commit the
// proposed changes. The callback is necessary for the Proposer to make
// sure that the changes are committed before it interacts further
// with the store.
ProposeValue(ctx context.Context, storeAction []api.StoreAction, cb func()) error
// GetVersion returns the monotonic index of the most recent item in
// the distributed log.
GetVersion() *api.Version
// ChangesBetween returns the changes starting after "from", up to and
// including "to". If these changes are not available because the log
// has been compacted, an error will be returned.
ChangesBetween(from, to api.Version) ([]Change, error)
}
A Proposer can propose actions to a cluster.
Source Files ¶
Directories ¶
| Path | Synopsis |
|---|---|
| manager/state/raft | |
| manager/state/raft/membership | |
| manager/state/raft/storage | |
| manager/state/raft/testutils | |
| manager/state/raft/transport | Package transport provides grpc transport layer for raft. |
| manager/state/store | Package store provides interfaces to work with swarm cluster state. |
| manager/state/testutils |
- Version
- v2.1.1 (latest)
- Published
- Oct 7, 2025
- Platform
- linux/amd64
- Imports
- 4 packages
- Last checked
- 4 months ago –
Tools for package owners.