m/p/api: UpdateNodeRoles: identify by node IDs

This adds the possibility of identifying nodes through their node IDs
on top of their public keys.

Change-Id: I4028832773acb11faf306144fece923e6c51d20d
Reviewed-on: https://review.monogon.dev/c/monogon/+/849
Tested-by: Jenkins CI
Reviewed-by: Sergiusz Bazanski <serge@monogon.tech>
diff --git a/metropolis/proto/api/management.proto b/metropolis/proto/api/management.proto
index d481339..396df83 100644
--- a/metropolis/proto/api/management.proto
+++ b/metropolis/proto/api/management.proto
@@ -158,9 +158,15 @@
 // role fields are optional, and no change will result if they're either unset
 // or if their value matches existing state.
 message UpdateNodeRolesRequest {
-  // pubkey is the Ed25519 public key of this node, which can be used to
-  // generate the node's ID. This is always set.
-  bytes pubkey = 1;
+  // node uniquely identifies the node subject to this request.
+  oneof node {
+    // pubkey is the Ed25519 public key of this node, which can be used to
+    // generate the node's ID.
+    bytes pubkey = 1;
+    // id is the human-readable identifier of the node, based on its public
+    // key.
+    string id = 4;
+  }
 
   // kubernetesWorker adjusts the appropriate role when set. Nodes performing
   // this role must also be consensus members.