From 76b1a10b853871a17257d41db4c3a1725478fb65 Mon Sep 17 00:00:00 2001
From: kaiyou <dev@kaiyou.fr>
Date: Sat, 30 Sep 2023 21:02:45 +0200
Subject: [PATCH] Switch to refactored dolly

---
 cmd/hepto/hepto.go | 44 ++++++++++++++++++++++++++++----------------
 go.mod             |  2 +-
 go.sum             |  2 ++
 3 files changed, 31 insertions(+), 17 deletions(-)

diff --git a/cmd/hepto/hepto.go b/cmd/hepto/hepto.go
index b134e6b..dae826f 100644
--- a/cmd/hepto/hepto.go
+++ b/cmd/hepto/hepto.go
@@ -87,12 +87,30 @@ var Hepto = &cobra.Command{
 		if err != nil {
 			return err
 		}
-		mounts := []*dolly.MountVolume{dolly.NewVolume(dataPath, config.Cluster.DataDir)}
+		self, err := os.Executable()
+		if err != nil {
+			return err
+		}
+		// Containerize self
+		c := dolly.NewForking()
+		c.Add(
+			&dolly.Pid{},
+			&dolly.Net{DNS: config.DNS},
+			&dolly.Certs{},
+		)
+		c.AddAll(dolly.NewEmptyRoot(config.Node.Name))
+		c.AddAll(dolly.DefaultVolumes())
+		c.Add(dolly.NewBind(dataPath, config.Cluster.DataDir))
+		c.Add(dolly.NewBind(self, self))
+		c.AddAll(dolly.NewDevicesOrPanic(
+			"/dev/null", "/dev/zero", "/dev/random", "/dev/urandom",
+			"/dev/kmsg", "/dev/full", "/dev/tty", "/dev/ptmx",
+		))
 		for src, dst := range config.Mounts {
-			mounts = append(mounts, dolly.NewVolume(src, dst))
+			c.Add(dolly.NewBind(src, dst))
 		}
-		iface := dolly.NetIface{
-			Name:   "eth0",
+		iface := &dolly.Iface{
+			Slave:  "eth0",
 			Master: config.Iface,
 		}
 		if len(config.Address.IP) > 0 {
@@ -101,22 +119,16 @@ var Hepto = &cobra.Command{
 		if len(config.Gateway) > 0 {
 			iface.Routes[&net.IPNet{}] = config.Gateway
 		}
-		container := dolly.NewForking(
-			dolly.NewEmptyMount(config.Node.Name, append(
-				dolly.DefaultVolumes(),
-				mounts...,
-			)...),
-			&dolly.NetConfig{
-				Ifaces: []dolly.NetIface{iface},
-			},
-			&dolly.Forward{
+		c.Add(iface)
+		if config.Node.Role == "master" || config.Node.Role == "full" {
+			c.Add(&dolly.Forward{
 				HostBind:      net.ParseIP("::1"),
 				HostPort:      config.Cluster.LoopbackPort,
 				ContainerIP:   net.ParseIP("::1"),
 				ContainerPort: 6443,
-			},
-		)
-		return container.Run(hepto)
+			})
+		}
+		return c.Run(hepto)
 	},
 }
 
diff --git a/go.mod b/go.mod
index 3656398..dc3edb4 100644
--- a/go.mod
+++ b/go.mod
@@ -63,7 +63,7 @@ require (
 	github.com/spf13/viper v1.16.0
 	github.com/vishvananda/netlink v1.2.1-beta.2
 	go.acides.org/daeman v0.3.4
-	go.acides.org/dolly v0.2.0
+	go.acides.org/dolly v0.3.1
 	go.acides.org/pekahi v0.2.1
 	go.acides.org/sml v0.2.2
 	go.etcd.io/etcd/server/v3 v3.5.9
diff --git a/go.sum b/go.sum
index ff7b118..1977cdd 100644
--- a/go.sum
+++ b/go.sum
@@ -1166,6 +1166,8 @@ go.acides.org/daeman v0.3.4 h1:gjKq95TpP2+IMUkW/u1do4J43Y6KhTOPwOg6BBCBT74=
 go.acides.org/daeman v0.3.4/go.mod h1:fOZ4YudsVjbUan8WYTs0ED6JfpZ7Z6mlN4Lnn1qW5nk=
 go.acides.org/dolly v0.2.0 h1:MLUh+1IuqnOkM1KcJ/5tOS7uOSL6wfADDO23yHduwJI=
 go.acides.org/dolly v0.2.0/go.mod h1:eO56y+YmSx2h0/Zy7+p2zxNeJVl4iIWMM/vsRFMaIDM=
+go.acides.org/dolly v0.3.1 h1:FvG5z90mEIToXK+zgb/R/ucQOuW+agsXQVFdpTkhogY=
+go.acides.org/dolly v0.3.1/go.mod h1:eO56y+YmSx2h0/Zy7+p2zxNeJVl4iIWMM/vsRFMaIDM=
 go.acides.org/pekahi v0.2.1 h1:ysmC14q+hnYXcuB1Ew2XoWDZsgR1jbut89ACRLwi43I=
 go.acides.org/pekahi v0.2.1/go.mod h1:AxgN7Ss6dCRHoNOVWMymkmDafWYdDV7ce6jPl5bqyRc=
 go.acides.org/sml v0.2.2 h1:swwqh/MoYO/7AifuIefhfw2XeVEyXU46Uz+VtDWiDNE=
-- 
GitLab