mirror of
https://github.com/kemko/nomad.git
synced 2026-01-04 01:15:43 +03:00
nodeevents -> events
This commit is contained in:
15
api/nodes.go
15
api/nodes.go
@@ -113,25 +113,22 @@ type Node struct {
|
||||
Status string
|
||||
StatusDescription string
|
||||
StatusUpdatedAt int64
|
||||
NodeEvents []*NodeEvent
|
||||
Events []*NodeEvent
|
||||
CreateIndex uint64
|
||||
ModifyIndex uint64
|
||||
}
|
||||
|
||||
// Subsystem denotes the subsystem where a node event took place.
|
||||
type Subsystem string
|
||||
|
||||
const (
|
||||
Drain Subsystem = "Drain"
|
||||
Driver Subsystem = "Driver"
|
||||
Heartbeat Subsystem = "Heartbeat"
|
||||
Cluster Subsystem = "Cluster"
|
||||
NodeEventSubsystemDrain = "Drain"
|
||||
NodeEventSubsystemDriver = "Driver"
|
||||
NodeEventSubsystemHeartbeat = "Heartbeat"
|
||||
NodeEventSubsystemCluster = "Cluster"
|
||||
)
|
||||
|
||||
// NodeEvent is a single unit representing a node’s state change
|
||||
type NodeEvent struct {
|
||||
Message string
|
||||
Subsystem Subsystem
|
||||
Subsystem string
|
||||
Details map[string]string
|
||||
Timestamp int64
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@ func TestNodes_Info(t *testing.T) {
|
||||
t.Fatalf("start time: %v, status updated: %v", startTime, result.StatusUpdatedAt)
|
||||
}
|
||||
|
||||
if len(result.NodeEvents) < 1 {
|
||||
if len(result.Events) < 1 {
|
||||
t.Fatalf("Expected at minimum the node register event to be populated: %+v", result)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -396,10 +396,10 @@ func TestHTTP_NodeQuery(t *testing.T) {
|
||||
if n.ID != node.ID {
|
||||
t.Fatalf("bad: %#v", n)
|
||||
}
|
||||
if len(n.NodeEvents) < 1 {
|
||||
if len(n.Events) < 1 {
|
||||
t.Fatalf("Expected node registration event to be populated: %#v", n)
|
||||
}
|
||||
if n.NodeEvents[0].Message != "Node Registered" {
|
||||
if n.Events[0].Message != "Node Registered" {
|
||||
t.Fatalf("Expected node registration event to be first node event: %#v", n)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -390,7 +390,7 @@ func (c *NodeStatusCommand) formatNode(client *api.Client, node *api.Node) int {
|
||||
|
||||
func (c *NodeStatusCommand) outputNodeStatusEvents(node *api.Node) {
|
||||
c.Ui.Output(c.Colorize().Color("\n[bold]Node Events "))
|
||||
c.outputNodeEvent(node.NodeEvents)
|
||||
c.outputNodeEvent(node.Events)
|
||||
}
|
||||
|
||||
func (c *NodeStatusCommand) outputNodeEvent(events []*api.NodeEvent) {
|
||||
|
||||
@@ -111,9 +111,9 @@ func TestFSM_UpsertNodeEvents(t *testing.T) {
|
||||
out, err := state.NodeByID(ws, node.ID)
|
||||
require.Nil(err)
|
||||
|
||||
require.Equal(2, len(out.NodeEvents))
|
||||
require.Equal(2, len(out.Events))
|
||||
|
||||
first := out.NodeEvents[1]
|
||||
first := out.Events[1]
|
||||
require.Equal(uint64(1), first.CreateIndex)
|
||||
require.Equal("Heartbeating failed", first.Message)
|
||||
}
|
||||
|
||||
@@ -114,7 +114,7 @@ func TestClientEndpoint_EmitEvents(t *testing.T) {
|
||||
ws := memdb.NewWatchSet()
|
||||
out, err := state.NodeByID(ws, node.ID)
|
||||
require.Nil(err)
|
||||
require.False(len(out.NodeEvents) < 2)
|
||||
require.False(len(out.Events) < 2)
|
||||
}
|
||||
|
||||
func TestClientEndpoint_Register_SecretMismatch(t *testing.T) {
|
||||
@@ -986,16 +986,16 @@ func TestClientEndpoint_GetNode(t *testing.T) {
|
||||
// Update the status updated at value
|
||||
node.StatusUpdatedAt = resp2.Node.StatusUpdatedAt
|
||||
node.SecretID = ""
|
||||
node.NodeEvents = resp2.Node.NodeEvents
|
||||
node.Events = resp2.Node.Events
|
||||
if !reflect.DeepEqual(node, resp2.Node) {
|
||||
t.Fatalf("bad: %#v \n %#v", node, resp2.Node)
|
||||
}
|
||||
|
||||
// assert that the node register event was set correctly
|
||||
if len(resp2.Node.NodeEvents) != 1 {
|
||||
if len(resp2.Node.Events) != 1 {
|
||||
t.Fatalf("Did not set node events: %#v", resp2.Node)
|
||||
}
|
||||
if resp2.Node.NodeEvents[0].Message != "Node Registered" {
|
||||
if resp2.Node.Events[0].Message != "Node Registered" {
|
||||
t.Fatalf("Did not set node register event correctly: %#v", resp2.Node)
|
||||
}
|
||||
|
||||
|
||||
@@ -528,7 +528,7 @@ func (s *StateStore) UpsertNode(index uint64, node *structs.Node) error {
|
||||
node.Drain = exist.Drain // Retain the drain mode
|
||||
|
||||
// retain node events that have already been set on the node
|
||||
node.NodeEvents = exist.NodeEvents
|
||||
node.Events = exist.Events
|
||||
} else {
|
||||
// Because this is the first time the node is being registered, we should
|
||||
// also create a node registration event
|
||||
@@ -537,7 +537,7 @@ func (s *StateStore) UpsertNode(index uint64, node *structs.Node) error {
|
||||
Subsystem: "Cluster",
|
||||
Timestamp: node.StatusUpdatedAt,
|
||||
}
|
||||
node.NodeEvents = []*structs.NodeEvent{nodeEvent}
|
||||
node.Events = []*structs.NodeEvent{nodeEvent}
|
||||
node.CreateIndex = index
|
||||
node.ModifyIndex = index
|
||||
}
|
||||
@@ -686,13 +686,13 @@ func (s *StateStore) upsertNodeEvents(index uint64, nodeID string, events []*str
|
||||
for _, e := range events {
|
||||
e.CreateIndex = index
|
||||
e.ModifyIndex = index
|
||||
copyNode.NodeEvents = append(copyNode.NodeEvents, e)
|
||||
copyNode.Events = append(copyNode.Events, e)
|
||||
}
|
||||
|
||||
// Keep node events pruned to not exceed the max allowed
|
||||
if l := len(copyNode.NodeEvents); l > structs.MaxRetainedNodeEvents {
|
||||
if l := len(copyNode.Events); l > structs.MaxRetainedNodeEvents {
|
||||
delta := l - structs.MaxRetainedNodeEvents
|
||||
copyNode.NodeEvents = copyNode.NodeEvents[delta:]
|
||||
copyNode.Events = copyNode.Events[delta:]
|
||||
}
|
||||
|
||||
// Insert the node
|
||||
|
||||
@@ -758,9 +758,9 @@ func TestStateStore_AddSingleNodeEvent(t *testing.T) {
|
||||
err := state.UpsertNode(1000, node)
|
||||
require.Nil(err)
|
||||
|
||||
require.Equal(1, len(node.NodeEvents))
|
||||
require.Equal(structs.Subsystem("Cluster"), node.NodeEvents[0].Subsystem)
|
||||
require.Equal("Node Registered", node.NodeEvents[0].Message)
|
||||
require.Equal(1, len(node.Events))
|
||||
require.Equal(structs.NodeEventSubsystemCluster, node.Events[0].Subsystem)
|
||||
require.Equal("Node Registered", node.Events[0].Message)
|
||||
|
||||
// Create a watchset so we can test that AddNodeEvent fires the watch
|
||||
ws := memdb.NewWatchSet()
|
||||
@@ -784,8 +784,8 @@ func TestStateStore_AddSingleNodeEvent(t *testing.T) {
|
||||
out, err := state.NodeByID(ws, node.ID)
|
||||
require.Nil(err)
|
||||
|
||||
require.Equal(2, len(out.NodeEvents))
|
||||
require.Equal(nodeEvent, out.NodeEvents[1])
|
||||
require.Equal(2, len(out.Events))
|
||||
require.Equal(nodeEvent, out.Events[1])
|
||||
}
|
||||
|
||||
// To prevent stale node events from accumulating, we limit the number of
|
||||
@@ -800,9 +800,9 @@ func TestStateStore_NodeEvents_RetentionWindow(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
require.Equal(1, len(node.NodeEvents))
|
||||
require.Equal(structs.Subsystem("Cluster"), node.NodeEvents[0].Subsystem)
|
||||
require.Equal("Node Registered", node.NodeEvents[0].Message)
|
||||
require.Equal(1, len(node.Events))
|
||||
require.Equal(structs.NodeEventSubsystemCluster, node.Events[0].Subsystem)
|
||||
require.Equal("Node Registered", node.Events[0].Message)
|
||||
|
||||
var out *structs.Node
|
||||
for i := 1; i <= 20; i++ {
|
||||
@@ -832,9 +832,9 @@ func TestStateStore_NodeEvents_RetentionWindow(t *testing.T) {
|
||||
out, err = state.NodeByID(ws, node.ID)
|
||||
require.Nil(err)
|
||||
|
||||
require.Equal(10, len(out.NodeEvents))
|
||||
require.Equal(uint64(11), out.NodeEvents[0].CreateIndex)
|
||||
require.Equal(uint64(20), out.NodeEvents[len(out.NodeEvents)-1].CreateIndex)
|
||||
require.Equal(10, len(out.Events))
|
||||
require.Equal(uint64(11), out.Events[0].CreateIndex)
|
||||
require.Equal(uint64(20), out.Events[len(out.Events)-1].CreateIndex)
|
||||
}
|
||||
|
||||
func TestStateStore_Nodes(t *testing.T) {
|
||||
|
||||
@@ -1072,21 +1072,17 @@ type EmitNodeEventsResponse struct {
|
||||
WriteMeta
|
||||
}
|
||||
|
||||
// TODO needs to be a more specific name
|
||||
// Subsystem denotes the subsystem where a node event took place.
|
||||
type Subsystem string
|
||||
|
||||
const (
|
||||
Drain Subsystem = "Drain"
|
||||
Driver Subsystem = "Driver"
|
||||
Heartbeat Subsystem = "Heartbeat"
|
||||
Cluster Subsystem = "Cluster"
|
||||
NodeEventSubsystemDrain = "Drain"
|
||||
NodeEventSubsystemDriver = "Driver"
|
||||
NodeEventSubsystemHeartbeat = "Heartbeat"
|
||||
NodeEventSubsystemCluster = "Cluster"
|
||||
)
|
||||
|
||||
// NodeEvent is a single unit representing a node’s state change
|
||||
type NodeEvent struct {
|
||||
Message string
|
||||
Subsystem Subsystem
|
||||
Subsystem string
|
||||
Details map[string]string
|
||||
Timestamp int64
|
||||
CreateIndex uint64
|
||||
@@ -1099,7 +1095,7 @@ func (ne *NodeEvent) String() string {
|
||||
details = append(details, fmt.Sprintf("%s: %s", k, v))
|
||||
}
|
||||
|
||||
return fmt.Sprintf("Message: %s, Subsystem: %s, Details: %s, Timestamp: %d", ne.Message, string(ne.Subsystem), strings.Join(details, ","), ne.Timestamp)
|
||||
return fmt.Sprintf("Message: %s, Subsystem: %s, Details: %s, Timestamp: %d", ne.Message, ne.Subsystem, strings.Join(details, ","), ne.Timestamp)
|
||||
}
|
||||
|
||||
func (ne *NodeEvent) Copy() *NodeEvent {
|
||||
@@ -1212,9 +1208,9 @@ type Node struct {
|
||||
// updated
|
||||
StatusUpdatedAt int64
|
||||
|
||||
// NodeEvents is the most recent set of events generated for the node,
|
||||
// Events is the most recent set of events generated for the node,
|
||||
// retaining only MaxRetainedNodeEvents number at a time
|
||||
NodeEvents []*NodeEvent
|
||||
Events []*NodeEvent
|
||||
|
||||
// Raft Indexes
|
||||
CreateIndex uint64
|
||||
@@ -1237,7 +1233,7 @@ func (n *Node) Copy() *Node {
|
||||
nn.Reserved = nn.Reserved.Copy()
|
||||
nn.Links = helper.CopyMapStringString(nn.Links)
|
||||
nn.Meta = helper.CopyMapStringString(nn.Meta)
|
||||
nn.NodeEvents = copyNodeEvents(n.NodeEvents)
|
||||
nn.Events = copyNodeEvents(n.Events)
|
||||
return nn
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user