diff --git a/consul/state/catalog.go b/consul/state/catalog.go index c0212c05a2..e9280e9792 100644 --- a/consul/state/catalog.go +++ b/consul/state/catalog.go @@ -725,11 +725,12 @@ func (s *StateStore) NodeServices(ws memdb.WatchSet, nodeNameOrID string) (uint6 } node := n.(*structs.Node) + nodeName := node.Node // Read all of the services - services, err := tx.Get("services", "node", nodeNameOrID) + services, err := tx.Get("services", "node", nodeName) if err != nil { - return 0, nil, fmt.Errorf("failed querying services for node %q: %s", nodeNameOrID, err) + return 0, nil, fmt.Errorf("failed querying services for node %q: %s", nodeName, err) } ws.Add(services.WatchCh()) diff --git a/consul/state/catalog_test.go b/consul/state/catalog_test.go index e142b09383..b8979c4ee7 100644 --- a/consul/state/catalog_test.go +++ b/consul/state/catalog_test.go @@ -204,6 +204,8 @@ func TestStateStore_EnsureRegistration_Restore(t *testing.T) { Node: "node1", Address: "1.2.3.4", } + nodeID := string(req.ID) + nodeName := string(req.Node) restore := s.Restore() if err := restore.Registration(1, req); err != nil { t.Fatalf("err: %s", err) @@ -211,17 +213,26 @@ func TestStateStore_EnsureRegistration_Restore(t *testing.T) { restore.Commit() // Retrieve the node and verify its contents. - verifyNode := func() { - _, out, err := s.GetNode("node1") + verifyNode := func(nodeLookup string) { + _, out, err := s.GetNode(nodeLookup) if err != nil { t.Fatalf("err: %s", err) } - if out.Node != "node1" || out.Address != "1.2.3.4" || + if out == nil { + _, out, err = s.GetNodeID(types.NodeID(nodeLookup)) + if err != nil { + t.Fatalf("err: %s", err) + } + } + + if out == nil || out.Address != "1.2.3.4" || + !(out.Node == nodeLookup || string(out.ID) == nodeLookup) || out.CreateIndex != 1 || out.ModifyIndex != 1 { t.Fatalf("bad node returned: %#v", out) } } - verifyNode() + verifyNode(nodeID) + verifyNode(nodeName) // Add in a service definition. req.Service = &structs.NodeService{ @@ -237,8 +248,8 @@ func TestStateStore_EnsureRegistration_Restore(t *testing.T) { restore.Commit() // Verify that the service got registered. - verifyService := func() { - idx, out, err := s.NodeServices(nil, "node1") + verifyService := func(nodeLookup string) { + idx, out, err := s.NodeServices(nil, nodeLookup) if err != nil { t.Fatalf("err: %s", err) } @@ -258,7 +269,7 @@ func TestStateStore_EnsureRegistration_Restore(t *testing.T) { // Add in a top-level check. req.Check = &structs.HealthCheck{ - Node: "node1", + Node: nodeName, CheckID: "check1", Name: "check", } @@ -270,7 +281,7 @@ func TestStateStore_EnsureRegistration_Restore(t *testing.T) { // Verify that the check got registered. verifyCheck := func() { - idx, out, err := s.NodeChecks(nil, "node1") + idx, out, err := s.NodeChecks(nil, nodeName) if err != nil { t.Fatalf("err: %s", err) } @@ -281,19 +292,21 @@ func TestStateStore_EnsureRegistration_Restore(t *testing.T) { t.Fatalf("bad: %#v", out) } c := out[0] - if c.Node != "node1" || c.CheckID != "check1" || c.Name != "check" || + if c.Node != nodeName || c.CheckID != "check1" || c.Name != "check" || c.CreateIndex != 3 || c.ModifyIndex != 3 { t.Fatalf("bad check returned: %#v", c) } } - verifyNode() - verifyService() + verifyNode(nodeID) + verifyNode(nodeName) + verifyService(nodeID) + verifyService(nodeName) verifyCheck() // Add in another check via the slice. req.Checks = structs.HealthChecks{ &structs.HealthCheck{ - Node: "node1", + Node: nodeName, CheckID: "check2", Name: "check", }, @@ -305,10 +318,12 @@ func TestStateStore_EnsureRegistration_Restore(t *testing.T) { restore.Commit() // Verify that the additional check got registered. - verifyNode() - verifyService() + verifyNode(nodeID) + verifyNode(nodeName) + verifyService(nodeID) + verifyService(nodeName) func() { - idx, out, err := s.NodeChecks(nil, "node1") + idx, out, err := s.NodeChecks(nil, nodeName) if err != nil { t.Fatalf("err: %s", err) } @@ -319,13 +334,13 @@ func TestStateStore_EnsureRegistration_Restore(t *testing.T) { t.Fatalf("bad: %#v", out) } c1 := out[0] - if c1.Node != "node1" || c1.CheckID != "check1" || c1.Name != "check" || + if c1.Node != nodeName || c1.CheckID != "check1" || c1.Name != "check" || c1.CreateIndex != 3 || c1.ModifyIndex != 4 { t.Fatalf("bad check returned: %#v", c1) } c2 := out[1] - if c2.Node != "node1" || c2.CheckID != "check2" || c2.Name != "check" || + if c2.Node != nodeName || c2.CheckID != "check2" || c2.Name != "check" || c2.CreateIndex != 4 || c2.ModifyIndex != 4 { t.Fatalf("bad check returned: %#v", c2) }