metropolis/node: add version to status
This implements submitting the Node's version to its' Status report to
the control plane.
This version is then displayed to the user in metroctl.
Change-Id: I70eadb9a7001b6e50931245e8a6274da2fbdc5bc
Reviewed-on: https://review.monogon.dev/c/monogon/+/2334
Tested-by: Jenkins CI
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/node/core/roleserve/BUILD.bazel b/metropolis/node/core/roleserve/BUILD.bazel
index dd224d5..afad843 100644
--- a/metropolis/node/core/roleserve/BUILD.bazel
+++ b/metropolis/node/core/roleserve/BUILD.bazel
@@ -42,6 +42,7 @@
"//metropolis/pkg/pki",
"//metropolis/pkg/supervisor",
"//metropolis/proto/common",
+ "//metropolis/version",
"@org_golang_google_grpc//:go_default_library",
"@org_golang_google_protobuf//encoding/prototext",
"@org_golang_google_protobuf//proto",
@@ -62,6 +63,7 @@
"//metropolis/pkg/supervisor",
"//metropolis/proto/common",
"//metropolis/test/util",
+ "//metropolis/version",
"@com_github_cenkalti_backoff_v4//:backoff",
"@com_github_google_go_cmp//cmp",
"@org_golang_google_grpc//:go_default_library",
diff --git a/metropolis/node/core/roleserve/worker_statuspush.go b/metropolis/node/core/roleserve/worker_statuspush.go
index c27605f..e2a5cb9 100644
--- a/metropolis/node/core/roleserve/worker_statuspush.go
+++ b/metropolis/node/core/roleserve/worker_statuspush.go
@@ -11,6 +11,7 @@
"source.monogon.dev/metropolis/pkg/event"
"source.monogon.dev/metropolis/pkg/event/memory"
"source.monogon.dev/metropolis/pkg/supervisor"
+ "source.monogon.dev/metropolis/version"
ipb "source.monogon.dev/metropolis/node/core/curator/proto/api"
cpb "source.monogon.dev/metropolis/proto/common"
@@ -41,7 +42,9 @@
// workerStatusPushLoop runs the main loop acting on data received from
// workerStatusPushChannels.
func workerStatusPushLoop(ctx context.Context, chans *workerStatusPushChannels) error {
- status := cpb.NodeStatus{}
+ status := cpb.NodeStatus{
+ Version: version.Version,
+ }
var cur ipb.CuratorClient
var nodeID string
diff --git a/metropolis/node/core/roleserve/worker_statuspush_test.go b/metropolis/node/core/roleserve/worker_statuspush_test.go
index a237360..d1a8d2d 100644
--- a/metropolis/node/core/roleserve/worker_statuspush_test.go
+++ b/metropolis/node/core/roleserve/worker_statuspush_test.go
@@ -20,6 +20,7 @@
"source.monogon.dev/metropolis/node/core/curator"
"source.monogon.dev/metropolis/pkg/supervisor"
"source.monogon.dev/metropolis/test/util"
+ mversion "source.monogon.dev/metropolis/version"
ipb "source.monogon.dev/metropolis/node/core/curator/proto/api"
cpb "source.monogon.dev/metropolis/proto/common"
@@ -113,6 +114,7 @@
cur.expectReports(t, []*ipb.UpdateNodeStatusRequest{
{NodeId: nodeID, Status: &cpb.NodeStatus{
ExternalAddress: "192.0.2.10",
+ Version: mversion.Version,
}},
})
@@ -122,9 +124,11 @@
cur.expectReports(t, []*ipb.UpdateNodeStatusRequest{
{NodeId: nodeID, Status: &cpb.NodeStatus{
ExternalAddress: "192.0.2.10",
+ Version: mversion.Version,
}},
{NodeId: nodeID, Status: &cpb.NodeStatus{
ExternalAddress: "192.0.2.11",
+ Version: mversion.Version,
}},
})
@@ -140,18 +144,22 @@
cur.expectReports(t, []*ipb.UpdateNodeStatusRequest{
{NodeId: nodeID, Status: &cpb.NodeStatus{
ExternalAddress: "192.0.2.10",
+ Version: mversion.Version,
}},
{NodeId: nodeID, Status: &cpb.NodeStatus{
ExternalAddress: "192.0.2.11",
+ Version: mversion.Version,
}},
{NodeId: nodeID, Status: &cpb.NodeStatus{
ExternalAddress: "192.0.2.11",
RunningCurator: &cpb.NodeStatus_RunningCurator{
Port: int32(common.CuratorServicePort),
},
+ Version: mversion.Version,
}},
{NodeId: nodeID, Status: &cpb.NodeStatus{
ExternalAddress: "192.0.2.11",
+ Version: mversion.Version,
}},
})
}