metropolis: replace version stamp with product info
This removes the stamped metropolis version library and the associated
stampgo infrastructure, and replaces it with the product info file.
The info is now stored in a separate file in the rootfs, instead of
embedded in the core binary. This has the benefit that the core binary
no longer needs to be relinked when stamping info changes.
The version logging in core/main, and the tconsole are updated to show
some of the additional info from the product info.
Change-Id: Ic5ed0e3598e8da71b96748e8d7abfedff41acd3f
Reviewed-on: https://review.monogon.dev/c/monogon/+/4207
Tested-by: Jenkins CI
Reviewed-by: Tim Windelschmidt <tim@monogon.tech>
diff --git a/metropolis/node/core/roleserve/BUILD.bazel b/metropolis/node/core/roleserve/BUILD.bazel
index 1fb4719..37ec6d1 100644
--- a/metropolis/node/core/roleserve/BUILD.bazel
+++ b/metropolis/node/core/roleserve/BUILD.bazel
@@ -30,6 +30,7 @@
"//metropolis/node/core/mgmt",
"//metropolis/node/core/network",
"//metropolis/node/core/network/hostsfile",
+ "//metropolis/node/core/productinfo",
"//metropolis/node/core/rpc",
"//metropolis/node/core/rpc/resolver",
"//metropolis/node/core/update",
@@ -38,7 +39,6 @@
"//metropolis/node/kubernetes/pki",
"//metropolis/proto/api",
"//metropolis/proto/common",
- "//metropolis/version",
"//osbase/event",
"//osbase/event/memory",
"//osbase/logtree",
@@ -55,17 +55,23 @@
go_test(
name = "roleserve_test",
srcs = ["worker_statuspush_test.go"],
+ data = [
+ "//metropolis/node:product_info",
+ ],
embed = [":roleserve"],
# TODO: https://github.com/monogon-dev/monogon/issues/250
flaky = True,
+ x_defs = {
+ "source.monogon.dev/metropolis/node/core/productinfo.path": "$(rlocationpath //metropolis/node:product_info )",
+ },
deps = [
"//metropolis/node",
"//metropolis/node/core/consensus",
"//metropolis/node/core/curator",
"//metropolis/node/core/curator/proto/api",
+ "//metropolis/node/core/productinfo",
"//metropolis/proto/common",
"//metropolis/test/util",
- "//metropolis/version",
"//osbase/supervisor",
"@com_github_cenkalti_backoff_v4//:backoff",
"@com_github_google_go_cmp//cmp",
diff --git a/metropolis/node/core/roleserve/worker_statuspush.go b/metropolis/node/core/roleserve/worker_statuspush.go
index 0557b4c..62355bc 100644
--- a/metropolis/node/core/roleserve/worker_statuspush.go
+++ b/metropolis/node/core/roleserve/worker_statuspush.go
@@ -14,7 +14,7 @@
common "source.monogon.dev/metropolis/node"
"source.monogon.dev/metropolis/node/core/network"
- "source.monogon.dev/metropolis/version"
+ "source.monogon.dev/metropolis/node/core/productinfo"
"source.monogon.dev/osbase/event"
"source.monogon.dev/osbase/event/memory"
"source.monogon.dev/osbase/supervisor"
@@ -64,7 +64,7 @@
// workerStatusPushChannels.
func workerStatusPushLoop(ctx context.Context, chans *workerStatusPushChannels) error {
status := cpb.NodeStatus{
- Version: version.Version,
+ Version: productinfo.Get().Version,
BootId: getBootID(ctx),
}
diff --git a/metropolis/node/core/roleserve/worker_statuspush_test.go b/metropolis/node/core/roleserve/worker_statuspush_test.go
index 78c5f9c..40764f2 100644
--- a/metropolis/node/core/roleserve/worker_statuspush_test.go
+++ b/metropolis/node/core/roleserve/worker_statuspush_test.go
@@ -21,8 +21,8 @@
common "source.monogon.dev/metropolis/node"
"source.monogon.dev/metropolis/node/core/consensus"
"source.monogon.dev/metropolis/node/core/curator"
+ "source.monogon.dev/metropolis/node/core/productinfo"
"source.monogon.dev/metropolis/test/util"
- mversion "source.monogon.dev/metropolis/version"
"source.monogon.dev/osbase/supervisor"
ipb "source.monogon.dev/metropolis/node/core/curator/proto/api"
@@ -86,6 +86,9 @@
getBootID = func(ctx context.Context) []byte {
return []byte{1, 2, 3}
}
+
+ productInfo := productinfo.Get()
+
chans := workerStatusPushChannels{
address: make(chan string),
localControlPlane: make(chan *localControlPlane),
@@ -135,7 +138,7 @@
cur.expectReports(t, []*ipb.UpdateNodeStatusRequest{
{NodeId: nodeID, Status: &cpb.NodeStatus{
ExternalAddress: "192.0.2.10",
- Version: mversion.Version,
+ Version: productInfo.Version,
BootId: []byte{1, 2, 3},
}},
})
@@ -146,12 +149,12 @@
cur.expectReports(t, []*ipb.UpdateNodeStatusRequest{
{NodeId: nodeID, Status: &cpb.NodeStatus{
ExternalAddress: "192.0.2.10",
- Version: mversion.Version,
+ Version: productInfo.Version,
BootId: []byte{1, 2, 3},
}},
{NodeId: nodeID, Status: &cpb.NodeStatus{
ExternalAddress: "192.0.2.11",
- Version: mversion.Version,
+ Version: productInfo.Version,
BootId: []byte{1, 2, 3},
}},
})
@@ -168,12 +171,12 @@
cur.expectReports(t, []*ipb.UpdateNodeStatusRequest{
{NodeId: nodeID, Status: &cpb.NodeStatus{
ExternalAddress: "192.0.2.10",
- Version: mversion.Version,
+ Version: productInfo.Version,
BootId: []byte{1, 2, 3},
}},
{NodeId: nodeID, Status: &cpb.NodeStatus{
ExternalAddress: "192.0.2.11",
- Version: mversion.Version,
+ Version: productInfo.Version,
BootId: []byte{1, 2, 3},
}},
{NodeId: nodeID, Status: &cpb.NodeStatus{
@@ -181,12 +184,12 @@
RunningCurator: &cpb.NodeStatus_RunningCurator{
Port: int32(common.CuratorServicePort),
},
- Version: mversion.Version,
+ Version: productInfo.Version,
BootId: []byte{1, 2, 3},
}},
{NodeId: nodeID, Status: &cpb.NodeStatus{
ExternalAddress: "192.0.2.11",
- Version: mversion.Version,
+ Version: productInfo.Version,
BootId: []byte{1, 2, 3},
}},
})