m/n/core/curator: return denormalized node id in GetNodes

This is mostly useful when using filters to get just one node, eg.
`node.id = "metropolis-1234567890"`.

Change-Id: I154508751b0e610742374b65915c07b64a7f7b71
Reviewed-on: https://review.monogon.dev/c/monogon/+/1426
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/node/core/curator/impl_leader_management.go b/metropolis/node/core/curator/impl_leader_management.go
index 69c1445..a46c9e3 100644
--- a/metropolis/node/core/curator/impl_leader_management.go
+++ b/metropolis/node/core/curator/impl_leader_management.go
@@ -217,6 +217,7 @@
 
 		entry := apb.Node{
 			Pubkey:             node.pubkey,
+			Id:                 identity.NodeID(node.pubkey),
 			State:              node.state,
 			Status:             node.status,
 			Roles:              roles,
diff --git a/metropolis/proto/api/management.proto b/metropolis/proto/api/management.proto
index 0df1d69..a5fd47d 100644
--- a/metropolis/proto/api/management.proto
+++ b/metropolis/proto/api/management.proto
@@ -114,6 +114,8 @@
     // Raw Ed25519 public key of this node, which can be used to generate
     // the node's ID. This is always set.
     bytes pubkey = 1;
+    // Node ID calculated from pubkey, ie. 'metropolis-123456'.
+    string id = 7;
     // State of the node from the point of view of the cluster. This is
     // always set.
     metropolis.proto.common.NodeState state = 2;