m/proto: Add RunningCurator to status, report in status pusher

This data allows more dynamic reporting of a node's Curator status, and
notably allows reporting which port it's running on.

We weren't planning on supporting running on non-standard ports, and we
probably still don't, but it's actually super useful to have this
ability in (future) tests.

We use the opportunity to refactor the roleserver's statuspush worker,
and to add a test for it.

Change-Id: I53322e6c8d268186ede085d4a05b646acb422a6b
Reviewed-on: https://review.monogon.dev/c/monogon/+/793
Reviewed-by: Mateusz Zalega <mateusz@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/proto/common/common.proto b/metropolis/proto/common/common.proto
index 46bd08f..15dc9e3 100644
--- a/metropolis/proto/common/common.proto
+++ b/metropolis/proto/common/common.proto
@@ -132,6 +132,13 @@
     // listening for gRPC, and role-specific services like etcd and
     // Kubernetes).
     string external_address = 1;
+    // running_curator contains information about the curator service running
+    // on this node, or is nil if the service is not running.
+    message RunningCurator {
+        // port is the TCP port on which the curator is listening.
+        int32 port = 1;
+    }
+    RunningCurator running_curator = 3;
     // timestamp is an epoch number associated with the last status update.
     // It's set with a nanosecond granularity.
     int64 timestamp = 2;