From d03919f256de75cd5f1c159ca91ee9309615a21b Mon Sep 17 00:00:00 2001 From: wangjian Date: Wed, 10 Dec 2025 10:13:26 +0800 Subject: [PATCH] add etcd server embedded server stop func and url interface --- graffiti/etcd/server/server.go | 41 ++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/graffiti/etcd/server/server.go b/graffiti/etcd/server/server.go index 95e030c..460956f 100644 --- a/graffiti/etcd/server/server.go +++ b/graffiti/etcd/server/server.go @@ -4,6 +4,8 @@ import ( "context" "errors" "fmt" + "net" + "net/url" "time" "gitee.com/openeuler/PilotGo-plugin-topology/graffiti/service" @@ -148,3 +150,42 @@ func (se *EmbeddedServer) Start() error { return nil } + +// Stop the embedded server +func (se *EmbeddedServer) Stop() error { + se.etcd.Close() + return nil +} + +// Generate all publishable URLs for a given HTTP port. +func interfaceURLs(port int) (types.URLs, error) { + allAddrs, err := net.InterfaceAddrs() + if err != nil { + return []url.URL{}, err + } + + var allURLs types.URLs + for _, a := range allAddrs { + ip, ok := a.(*net.IPNet) + if !ok || (!ip.IP.IsGlobalUnicast() && !ip.IP.IsLoopback()) { + continue + } + + tcp := net.TCPAddr{ + IP: ip.IP, + Port: port, + } + + u := url.URL{ + Scheme: "http", + Host: tcp.String(), + } + allURLs = append(allURLs, u) + } + + if len(allAddrs) == 0 { + return []url.URL{}, fmt.Errorf("no publishable addresses") + } + + return allURLs, nil +} -- Gitee