m/node: extract network.Status to node.NetStatus

This is done to avoid nasty dependency loops involving clusternet and
the network service. The clusternet service can currently not be
included by anything also talking to the network service which will be
needed by future network work.

To make this work we pull out the critical network.Status into
node.NetStatus which itself imports nothing and is thus safe to import
everywhere.

Change-Id: I8935de02926b6e06b5211f90c0c7f9abd8699c6d
Reviewed-on: https://review.monogon.dev/c/monogon/+/4495
Tested-by: Jenkins CI
Reviewed-by: Jan Schär <jan@monogon.tech>
diff --git a/metropolis/node/core/tconsole/BUILD.bazel b/metropolis/node/core/tconsole/BUILD.bazel
index c551760..f7b4ede 100644
--- a/metropolis/node/core/tconsole/BUILD.bazel
+++ b/metropolis/node/core/tconsole/BUILD.bazel
@@ -16,7 +16,7 @@
     importpath = "source.monogon.dev/metropolis/node/core/tconsole",
     visibility = ["//visibility:public"],
     deps = [
-        "//metropolis/node/core/network",
+        "//metropolis/node",
         "//metropolis/node/core/productinfo",
         "//metropolis/node/core/roleserve",
         "//metropolis/proto/common",
diff --git a/metropolis/node/core/tconsole/standalone/BUILD.bazel b/metropolis/node/core/tconsole/standalone/BUILD.bazel
index e9ed29a..df9564d 100644
--- a/metropolis/node/core/tconsole/standalone/BUILD.bazel
+++ b/metropolis/node/core/tconsole/standalone/BUILD.bazel
@@ -12,7 +12,7 @@
         "source.monogon.dev/metropolis/node/core/productinfo.path": "$(rlocationpath //metropolis/node:product_info )",
     },
     deps = [
-        "//metropolis/node/core/network",
+        "//metropolis/node",
         "//metropolis/node/core/roleserve",
         "//metropolis/node/core/tconsole",
         "//metropolis/proto/common",
diff --git a/metropolis/node/core/tconsole/standalone/main.go b/metropolis/node/core/tconsole/standalone/main.go
index eaf2c47..e1b23d2 100644
--- a/metropolis/node/core/tconsole/standalone/main.go
+++ b/metropolis/node/core/tconsole/standalone/main.go
@@ -18,7 +18,7 @@
 	"os/signal"
 	"time"
 
-	"source.monogon.dev/metropolis/node/core/network"
+	"source.monogon.dev/metropolis/node"
 	"source.monogon.dev/metropolis/node/core/roleserve"
 	"source.monogon.dev/metropolis/node/core/tconsole"
 	cpb "source.monogon.dev/metropolis/proto/common"
@@ -28,7 +28,7 @@
 )
 
 func main() {
-	var netV memory.Value[*network.Status]
+	var netV memory.Value[*node.NetStatus]
 	var rolesV memory.Value[*cpb.NodeRoles]
 	var curV memory.Value[*roleserve.CuratorConnection]
 
@@ -77,7 +77,7 @@
 				if err := delay(ctx, time.Millisecond*1000); err != nil {
 					return err
 				}
-				netV.Set(&network.Status{
+				netV.Set(&node.NetStatus{
 					ExternalAddress: net.ParseIP(fmt.Sprintf("203.0.113.%d", mrand.Intn(256))),
 				})
 			}
diff --git a/metropolis/node/core/tconsole/tconsole.go b/metropolis/node/core/tconsole/tconsole.go
index eeb4536..315dca9 100644
--- a/metropolis/node/core/tconsole/tconsole.go
+++ b/metropolis/node/core/tconsole/tconsole.go
@@ -13,7 +13,7 @@
 
 	"github.com/gdamore/tcell/v2"
 
-	"source.monogon.dev/metropolis/node/core/network"
+	"source.monogon.dev/metropolis/node"
 	"source.monogon.dev/metropolis/node/core/roleserve"
 	cpb "source.monogon.dev/metropolis/proto/common"
 	"source.monogon.dev/osbase/event"
@@ -24,7 +24,7 @@
 type Config struct {
 	Terminal    Terminal
 	LogTree     *logtree.LogTree
-	Network     event.Value[*network.Status]
+	Network     event.Value[*node.NetStatus]
 	Roles       event.Value[*cpb.NodeRoles]
 	CuratorConn event.Value[*roleserve.CuratorConnection]
 }
@@ -130,7 +130,7 @@
 	go c.screen.ChannelEvents(evC, evQuitC)
 
 	// Pipe event values into channels.
-	netAddrC := make(chan *network.Status)
+	netAddrC := make(chan *node.NetStatus)
 	rolesC := make(chan *cpb.NodeRoles)
 	curatorConnC := make(chan *roleserve.CuratorConnection)
 	if err := supervisor.Run(ctx, "netpipe", event.Pipe(c.config.Network, netAddrC)); err != nil {