From 28732629a9bbee52f7764e5f79ee4aae89b2068a Mon Sep 17 00:00:00 2001 From: Omar Abdulaziz Date: Mon, 26 May 2025 14:16:25 +0300 Subject: [PATCH 1/4] wip:apireceiver --- cmds/modules/api-receiver/main.go | 81 +++++++++++++++++++ cmds/zos/main.go | 2 + etc/zinit/api-receiver.yaml | 3 + go.mod | 22 +++-- go.sum | 34 +++----- qemu/overlay.normal/bin/api-receiver | 1 + .../etc/zinit/api-receiver.yaml | 1 + 7 files changed, 117 insertions(+), 27 deletions(-) create mode 100644 cmds/modules/api-receiver/main.go create mode 100644 etc/zinit/api-receiver.yaml create mode 120000 qemu/overlay.normal/bin/api-receiver create mode 120000 qemu/overlay.normal/etc/zinit/api-receiver.yaml diff --git a/cmds/modules/api-receiver/main.go b/cmds/modules/api-receiver/main.go new file mode 100644 index 000000000..8f92cf947 --- /dev/null +++ b/cmds/modules/api-receiver/main.go @@ -0,0 +1,81 @@ +package apireceiver + +import ( + "context" + "crypto/ed25519" + "fmt" + + "github.com/containernetworking/plugins/pkg/ns" + "github.com/pkg/errors" + substrate "github.com/threefoldtech/tfchain/clients/tfchain-client-go" + "github.com/threefoldtech/tfgrid-sdk-go/messenger" + "github.com/threefoldtech/zosbase/pkg/api" + "github.com/threefoldtech/zosbase/pkg/handlers" + "github.com/threefoldtech/zosbase/pkg/network/namespace" + "github.com/threefoldtech/zosbase/pkg/stubs" + "github.com/urfave/cli/v2" + + "github.com/threefoldtech/zbus" +) + +// Module is entry point for module +var Module cli.Command = cli.Command{ + Name: "api-receiver", + Usage: "handles mycelium messages", + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "broker", + Usage: "connection string to the message `BROKER`", + Value: "unix:///var/run/redis.sock", + }, + }, + Action: action, +} + +func action(cli *cli.Context) error { + var broker string = cli.String("broker") + client, err := zbus.NewRedisClient(broker) + if err != nil { + return errors.Wrap(err, "failed to connect to zbus broker") + } + + a, err := api.NewAPI(client, broker, "full") + if err != nil { + return errors.Wrap(err, "failed to create api") + } + + idStub := stubs.NewIdentityManagerStub(client) + sk := ed25519.PrivateKey(idStub.PrivateKey(cli.Context)) + id, err := substrate.NewIdentityFromEd25519Key(sk) + if err != nil { + return err + } + + man := substrate.NewManager("chain") + + msg, err := messenger.NewMessenger( + "", + 60, + man, + messenger.WithIdentity(id), + // messenger.WithAutoUpdateTwin(true), + ) + if err != nil { + return fmt.Errorf("failed to create substrate manager: %w", err) + } + defer msg.Close() + + server := messenger.NewJSONRPCServer(msg) + + hdrs := handlers.NewRpcHandler(a) + handlers.RegisterHandlers(server, hdrs) + + netns, err := namespace.GetByName("ndmz") + if err != nil { + return fmt.Errorf("failed to get network namespace %s: %w", "ndmz", err) + } + defer netns.Close() + return netns.Do(func(_ ns.NetNS) error { + return server.Start(context.Background()) + }) +} diff --git a/cmds/zos/main.go b/cmds/zos/main.go index 744c20d01..7d8e17207 100644 --- a/cmds/zos/main.go +++ b/cmds/zos/main.go @@ -7,6 +7,7 @@ import ( "github.com/rs/zerolog" "github.com/rs/zerolog/log" + apireceiver "github.com/threefoldtech/zos/cmds/modules/api-receiver" apigateway "github.com/threefoldtech/zos/cmds/modules/api_gateway" "github.com/threefoldtech/zos/cmds/modules/contd" "github.com/threefoldtech/zos/cmds/modules/flistd" @@ -58,6 +59,7 @@ func main() { &qsfsd.Module, &powerd.Module, &apigateway.Module, + &apireceiver.Module, }, Before: func(c *cli.Context) error { if c.Bool("debug") { diff --git a/etc/zinit/api-receiver.yaml b/etc/zinit/api-receiver.yaml new file mode 100644 index 000000000..a7c85ccdc --- /dev/null +++ b/etc/zinit/api-receiver.yaml @@ -0,0 +1,3 @@ +exec: api-receiver --broker unix:///var/run/redis.sock +after: + - networkd diff --git a/go.mod b/go.mod index cab5b2a77..df7109656 100644 --- a/go.mod +++ b/go.mod @@ -13,8 +13,9 @@ require ( github.com/go-redis/redis v6.15.9+incompatible github.com/joncrlsn/dque v0.0.0-20200702023911-3e80e3146ce5 github.com/pkg/errors v0.9.1 - github.com/rs/zerolog v1.33.0 + github.com/rs/zerolog v1.34.0 github.com/threefoldtech/tfchain/clients/tfchain-client-go v0.0.0-20241127100051-77e684bcb1b2 + github.com/threefoldtech/tfgrid-sdk-go/messenger v0.0.0-00010101000000-000000000000 github.com/threefoldtech/tfgrid-sdk-go/rmb-sdk-go v0.16.1-0.20241229121208-76ac3fea5e67 github.com/threefoldtech/zbus v1.0.1 github.com/threefoldtech/zosbase v0.1.9 @@ -39,7 +40,7 @@ require ( github.com/containerd/ttrpc v1.1.0 // indirect github.com/containerd/typeurl v1.0.2 // indirect github.com/containernetworking/cni v0.8.1 // indirect - github.com/containernetworking/plugins v0.9.1 // indirect + github.com/containernetworking/plugins v0.9.1 github.com/dave/jennifer v1.3.0 // indirect github.com/deckarep/golang-set v1.8.0 // indirect github.com/decred/base58 v1.0.5 // indirect @@ -80,7 +81,7 @@ require ( go.opencensus.io v0.24.0 // indirect golang.org/x/crypto v0.33.0 // indirect golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/text v0.23.0 // indirect golang.zx2c4.com/wireguard/wgctrl v0.0.0-20200609130330-bd2cb7843e1b // indirect ) @@ -132,6 +133,7 @@ require ( github.com/safchain/ethtool v0.0.0-20201023143004-874930cb3ce0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/stretchr/objx v0.5.2 // indirect + github.com/threefoldtech/tfgrid-sdk-go/myc-msg-sdk v0.0.0 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/ulikunitz/xz v0.5.8 // indirect @@ -143,13 +145,13 @@ require ( go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.uber.org/atomic v1.9.0 // indirect golang.org/x/net v0.35.0 // indirect - golang.org/x/sync v0.11.0 // indirect + golang.org/x/sync v0.12.0 // indirect golang.zx2c4.com/wireguard v0.0.20200320 // indirect - gonum.org/v1/gonum v0.15.0 // indirect + gonum.org/v1/gonum v0.16.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4 // indirect google.golang.org/grpc v1.70.0 // indirect - google.golang.org/protobuf v1.36.4 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/djherbis/times.v1 v1.2.0 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect @@ -165,3 +167,11 @@ require ( ) replace github.com/docker/distribution v2.7.1+incompatible => github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible + +replace github.com/threefoldtech/zosbase => /home/omar/github.com/threefoldtech/zosbase + +replace github.com/threefoldtech/tfchain/clients/tfchain-client-go => /home/omar/github.com/threefoldtech/tfchain/clients/tfchain-client-go + +replace github.com/threefoldtech/tfgrid-sdk-go/messenger => /home/omar/github.com/threefoldtech/tfgrid-sdk-go/messenger + +replace github.com/threefoldtech/tfgrid-sdk-go/rmb-sdk-go => /home/omar/github.com/threefoldtech/tfgrid-sdk-go/rmb-sdk-go diff --git a/go.sum b/go.sum index e79ef1f81..48129c6fe 100644 --- a/go.sum +++ b/go.sum @@ -494,10 +494,10 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7 github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= github.com/rs/zerolog v1.14.3/go.mod h1:3WXPzbXEEliJ+a6UFE4vhIxV8qR1EML6ngzP9ug4eYg= -github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= -github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= +github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -544,14 +544,8 @@ github.com/stripe/safesql v0.2.0/go.mod h1:q7b2n0JmzM1mVGfcYpanfVb2j23cXZeWFxcIL github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/threefoldtech/0-fs v1.3.1-0.20240424140157-b488dfedcc56 h1:uWd8JfE8N3IM6Zw/LMr0+sRJl+G0YgqQmNDP8xXR0vw= github.com/threefoldtech/0-fs v1.3.1-0.20240424140157-b488dfedcc56/go.mod h1:lZjR32SiNo3dP70inVFxaLMyZjmKX1ucS+5O31dbPNM= -github.com/threefoldtech/tfchain/clients/tfchain-client-go v0.0.0-20241127100051-77e684bcb1b2 h1:VW2J36F8g/kJn4IkY0JiRFmb1gFcdjiOyltfJLJ0mYU= -github.com/threefoldtech/tfchain/clients/tfchain-client-go v0.0.0-20241127100051-77e684bcb1b2/go.mod h1:cOL5YgHUmDG5SAXrsZxFjUECRQQuAqOoqvXhZG5sEUw= -github.com/threefoldtech/tfgrid-sdk-go/rmb-sdk-go v0.16.1-0.20241229121208-76ac3fea5e67 h1:Ii9TmXPBC1GYxRirReSygRZvEGXfAsQRaIipMEzGik0= -github.com/threefoldtech/tfgrid-sdk-go/rmb-sdk-go v0.16.1-0.20241229121208-76ac3fea5e67/go.mod h1:93SROfr+QjgaJ5/jIWtIpLkhaD8Pv8WbdfwvwMNG2p4= github.com/threefoldtech/zbus v1.0.1 h1:3KaEpyOiDYAw+lrAyoQUGIvY9BcjVRXlQ1beBRqhRNk= github.com/threefoldtech/zbus v1.0.1/go.mod h1:E/v/xEvG/l6z/Oj0aDkuSUXFm/1RVJkhKBwDTAIdsHo= -github.com/threefoldtech/zosbase v0.1.9 h1:S0rB8sET5Afn/GIilU1DPLPf6uzC5sf0Ogs60FkQixY= -github.com/threefoldtech/zosbase v0.1.9/go.mod h1:PzZ9jW1lYFgA0/F4vStP/6CIhQsCdD7DTrum3AYiAWA= github.com/tinylib/msgp v1.1.5 h1:2gXmtWueD2HefZHQe1QOy9HVzmFrLOVvsXwXBQ0ayy0= github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= @@ -642,8 +636,6 @@ golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5 golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -654,8 +646,8 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= +golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -699,8 +691,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= -golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -771,8 +763,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7-0.20210503195748-5c7c50ebbd4f/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -804,8 +796,8 @@ golang.zx2c4.com/wireguard v0.0.20200320/go.mod h1:lDian4Sw4poJ04SgHh35nzMVwGSYl golang.zx2c4.com/wireguard/wgctrl v0.0.0-20200609130330-bd2cb7843e1b h1:l4mBVCYinjzZuR5DtxHuBD6wyd4348TGiavJ5vLrhEc= golang.zx2c4.com/wireguard/wgctrl v0.0.0-20200609130330-bd2cb7843e1b/go.mod h1:UdS9frhv65KTfwxME1xE8+rHYoFpbm36gOud1GhBe9c= golang.zx2c4.com/wireguard/windows v0.3.14/go.mod h1:3P4IEAsb+BjlKZmpUXgy74c0iX9AVwwr3WcVJ8nPgME= -gonum.org/v1/gonum v0.15.0 h1:2lYxjRbTYyxkJxlhC+LvJIx3SsANPdRybu1tGj9/OrQ= -gonum.org/v1/gonum v0.15.0/go.mod h1:xzZVBJBtS+Mz4q0Yl2LJTk+OxOg4jiXZ7qBoM0uISGo= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -844,8 +836,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= -google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/qemu/overlay.normal/bin/api-receiver b/qemu/overlay.normal/bin/api-receiver new file mode 120000 index 000000000..25eae5c70 --- /dev/null +++ b/qemu/overlay.normal/bin/api-receiver @@ -0,0 +1 @@ +../../../bin/zos \ No newline at end of file diff --git a/qemu/overlay.normal/etc/zinit/api-receiver.yaml b/qemu/overlay.normal/etc/zinit/api-receiver.yaml new file mode 120000 index 000000000..b4b42f593 --- /dev/null +++ b/qemu/overlay.normal/etc/zinit/api-receiver.yaml @@ -0,0 +1 @@ +../../../../etc/zinit/api-receiver.yaml \ No newline at end of file From 20fb0c63e4181eeddc30d6c0621519348641ade7 Mon Sep 17 00:00:00 2001 From: Omar Abdulaziz Date: Fri, 30 May 2025 23:23:25 +0300 Subject: [PATCH 2/4] starting api-receiver in ndmz namespace --- cmds/modules/api-receiver/main.go | 25 +++++++++++++------------ etc/zinit/api-receiver.yaml | 2 +- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/cmds/modules/api-receiver/main.go b/cmds/modules/api-receiver/main.go index 8f92cf947..b1a68ac33 100644 --- a/cmds/modules/api-receiver/main.go +++ b/cmds/modules/api-receiver/main.go @@ -1,17 +1,15 @@ package apireceiver import ( - "context" "crypto/ed25519" "fmt" - "github.com/containernetworking/plugins/pkg/ns" "github.com/pkg/errors" substrate "github.com/threefoldtech/tfchain/clients/tfchain-client-go" "github.com/threefoldtech/tfgrid-sdk-go/messenger" "github.com/threefoldtech/zosbase/pkg/api" + "github.com/threefoldtech/zosbase/pkg/environment" "github.com/threefoldtech/zosbase/pkg/handlers" - "github.com/threefoldtech/zosbase/pkg/network/namespace" "github.com/threefoldtech/zosbase/pkg/stubs" "github.com/urfave/cli/v2" @@ -51,14 +49,18 @@ func action(cli *cli.Context) error { return err } - man := substrate.NewManager("chain") + man, err := environment.GetSubstrate() + if err != nil { + return fmt.Errorf("failed to get substrate manager: %w", err) + } + ctx := cli.Context msg, err := messenger.NewMessenger( "", 60, man, messenger.WithIdentity(id), - // messenger.WithAutoUpdateTwin(true), + messenger.WithAutoUpdateTwin(false), ) if err != nil { return fmt.Errorf("failed to create substrate manager: %w", err) @@ -70,12 +72,11 @@ func action(cli *cli.Context) error { hdrs := handlers.NewRpcHandler(a) handlers.RegisterHandlers(server, hdrs) - netns, err := namespace.GetByName("ndmz") - if err != nil { - return fmt.Errorf("failed to get network namespace %s: %w", "ndmz", err) + if err := server.Start(ctx); err != nil { + return fmt.Errorf("failed to start server: %w", err) } - defer netns.Close() - return netns.Do(func(_ ns.NetNS) error { - return server.Start(context.Background()) - }) + + // block forever + <-ctx.Done() + return nil } diff --git a/etc/zinit/api-receiver.yaml b/etc/zinit/api-receiver.yaml index a7c85ccdc..68fd18c34 100644 --- a/etc/zinit/api-receiver.yaml +++ b/etc/zinit/api-receiver.yaml @@ -1,3 +1,3 @@ -exec: api-receiver --broker unix:///var/run/redis.sock +exec: ip netns exec ndmz api-receiver --broker unix:///var/run/redis.sock after: - networkd From 419dd62b6e2f13010ab96bba399957f474b73d97 Mon Sep 17 00:00:00 2001 From: Omar Abdulaziz Date: Mon, 2 Jun 2025 18:39:35 +0300 Subject: [PATCH 3/4] update messenger in api-receiver --- cmds/modules/api-receiver/main.go | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/cmds/modules/api-receiver/main.go b/cmds/modules/api-receiver/main.go index b1a68ac33..b15b63d75 100644 --- a/cmds/modules/api-receiver/main.go +++ b/cmds/modules/api-receiver/main.go @@ -8,8 +8,8 @@ import ( substrate "github.com/threefoldtech/tfchain/clients/tfchain-client-go" "github.com/threefoldtech/tfgrid-sdk-go/messenger" "github.com/threefoldtech/zosbase/pkg/api" + "github.com/threefoldtech/zosbase/pkg/api/jsonrpc" "github.com/threefoldtech/zosbase/pkg/environment" - "github.com/threefoldtech/zosbase/pkg/handlers" "github.com/threefoldtech/zosbase/pkg/stubs" "github.com/urfave/cli/v2" @@ -53,24 +53,23 @@ func action(cli *cli.Context) error { if err != nil { return fmt.Errorf("failed to get substrate manager: %w", err) } - ctx := cli.Context - msg, err := messenger.NewMessenger( - "", - 60, - man, + + msgr, err := messenger.NewMessenger( + messenger.WithEnableTwinIdentity(false), + messenger.WithSubstrateManager(man), messenger.WithIdentity(id), - messenger.WithAutoUpdateTwin(false), ) + if err != nil { return fmt.Errorf("failed to create substrate manager: %w", err) } - defer msg.Close() + defer msgr.Close() - server := messenger.NewJSONRPCServer(msg) + server := messenger.NewJSONRPCServer(msgr) - hdrs := handlers.NewRpcHandler(a) - handlers.RegisterHandlers(server, hdrs) + hdrs := jsonrpc.NewRpcHandler(a) + jsonrpc.RegisterHandlers(server, hdrs) if err := server.Start(ctx); err != nil { return fmt.Errorf("failed to start server: %w", err) From b985f47a2446c598587cac910d5f4146479c50fe Mon Sep 17 00:00:00 2001 From: Omar Abdulaziz Date: Tue, 3 Jun 2025 16:43:32 +0300 Subject: [PATCH 4/4] rename the receiver module --- cmds/modules/{api-receiver => myceliumrx}/main.go | 4 ++-- cmds/zos/main.go | 4 ++-- etc/zinit/api-receiver.yaml | 3 --- etc/zinit/myceliumrx.yaml | 3 +++ go.mod | 8 -------- qemu/overlay.normal/bin/{api-receiver => myceliumrx} | 0 qemu/overlay.normal/etc/zinit/api-receiver.yaml | 1 - qemu/overlay.normal/etc/zinit/myceliumrx.yaml | 1 + 8 files changed, 8 insertions(+), 16 deletions(-) rename cmds/modules/{api-receiver => myceliumrx}/main.go (97%) delete mode 100644 etc/zinit/api-receiver.yaml create mode 100644 etc/zinit/myceliumrx.yaml rename qemu/overlay.normal/bin/{api-receiver => myceliumrx} (100%) delete mode 120000 qemu/overlay.normal/etc/zinit/api-receiver.yaml create mode 120000 qemu/overlay.normal/etc/zinit/myceliumrx.yaml diff --git a/cmds/modules/api-receiver/main.go b/cmds/modules/myceliumrx/main.go similarity index 97% rename from cmds/modules/api-receiver/main.go rename to cmds/modules/myceliumrx/main.go index b15b63d75..b261da437 100644 --- a/cmds/modules/api-receiver/main.go +++ b/cmds/modules/myceliumrx/main.go @@ -1,4 +1,4 @@ -package apireceiver +package myceliumrx import ( "crypto/ed25519" @@ -18,7 +18,7 @@ import ( // Module is entry point for module var Module cli.Command = cli.Command{ - Name: "api-receiver", + Name: "myceliumrx", Usage: "handles mycelium messages", Flags: []cli.Flag{ &cli.StringFlag{ diff --git a/cmds/zos/main.go b/cmds/zos/main.go index 7d8e17207..008133451 100644 --- a/cmds/zos/main.go +++ b/cmds/zos/main.go @@ -7,11 +7,11 @@ import ( "github.com/rs/zerolog" "github.com/rs/zerolog/log" - apireceiver "github.com/threefoldtech/zos/cmds/modules/api-receiver" apigateway "github.com/threefoldtech/zos/cmds/modules/api_gateway" "github.com/threefoldtech/zos/cmds/modules/contd" "github.com/threefoldtech/zos/cmds/modules/flistd" "github.com/threefoldtech/zos/cmds/modules/gateway" + "github.com/threefoldtech/zos/cmds/modules/myceliumrx" "github.com/threefoldtech/zos/cmds/modules/networkd" "github.com/threefoldtech/zos/cmds/modules/noded" "github.com/threefoldtech/zos/cmds/modules/powerd" @@ -59,7 +59,7 @@ func main() { &qsfsd.Module, &powerd.Module, &apigateway.Module, - &apireceiver.Module, + &myceliumrx.Module, }, Before: func(c *cli.Context) error { if c.Bool("debug") { diff --git a/etc/zinit/api-receiver.yaml b/etc/zinit/api-receiver.yaml deleted file mode 100644 index 68fd18c34..000000000 --- a/etc/zinit/api-receiver.yaml +++ /dev/null @@ -1,3 +0,0 @@ -exec: ip netns exec ndmz api-receiver --broker unix:///var/run/redis.sock -after: - - networkd diff --git a/etc/zinit/myceliumrx.yaml b/etc/zinit/myceliumrx.yaml new file mode 100644 index 000000000..49860afc8 --- /dev/null +++ b/etc/zinit/myceliumrx.yaml @@ -0,0 +1,3 @@ +exec: ip netns exec ndmz myceliumrx --broker unix:///var/run/redis.sock +after: + - networkd diff --git a/go.mod b/go.mod index df7109656..c318e0f33 100644 --- a/go.mod +++ b/go.mod @@ -167,11 +167,3 @@ require ( ) replace github.com/docker/distribution v2.7.1+incompatible => github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible - -replace github.com/threefoldtech/zosbase => /home/omar/github.com/threefoldtech/zosbase - -replace github.com/threefoldtech/tfchain/clients/tfchain-client-go => /home/omar/github.com/threefoldtech/tfchain/clients/tfchain-client-go - -replace github.com/threefoldtech/tfgrid-sdk-go/messenger => /home/omar/github.com/threefoldtech/tfgrid-sdk-go/messenger - -replace github.com/threefoldtech/tfgrid-sdk-go/rmb-sdk-go => /home/omar/github.com/threefoldtech/tfgrid-sdk-go/rmb-sdk-go diff --git a/qemu/overlay.normal/bin/api-receiver b/qemu/overlay.normal/bin/myceliumrx similarity index 100% rename from qemu/overlay.normal/bin/api-receiver rename to qemu/overlay.normal/bin/myceliumrx diff --git a/qemu/overlay.normal/etc/zinit/api-receiver.yaml b/qemu/overlay.normal/etc/zinit/api-receiver.yaml deleted file mode 120000 index b4b42f593..000000000 --- a/qemu/overlay.normal/etc/zinit/api-receiver.yaml +++ /dev/null @@ -1 +0,0 @@ -../../../../etc/zinit/api-receiver.yaml \ No newline at end of file diff --git a/qemu/overlay.normal/etc/zinit/myceliumrx.yaml b/qemu/overlay.normal/etc/zinit/myceliumrx.yaml new file mode 120000 index 000000000..e2b2bb23b --- /dev/null +++ b/qemu/overlay.normal/etc/zinit/myceliumrx.yaml @@ -0,0 +1 @@ +../../../../etc/zinit/myceliumrx.yaml \ No newline at end of file