From 2ff8684fd4b906382dfa36a5982ba81b9a25de93 Mon Sep 17 00:00:00 2001 From: Abhishek Kondur Date: Thu, 5 Jan 2023 09:42:41 +0530 Subject: [PATCH] keep node level peers for now --- controllers/node.go | 12 ++++++++++-- models/api_node.go | 2 +- models/node.go | 41 +++++++++++++++++++++-------------------- 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/controllers/node.go b/controllers/node.go index d5c7c699..8f159ffc 100644 --- a/controllers/node.go +++ b/controllers/node.go @@ -637,14 +637,22 @@ func createNode(w http.ResponseWriter, r *http.Request) { return } } - peerUpdate, err := logic.GetPeerUpdateForHost(&data.Host) + hostPeerUpdate, err := logic.GetPeerUpdateForHost(&data.Host) + if err != nil && !database.IsEmptyRecord(err) { + logger.Log(0, r.Header.Get("user"), + fmt.Sprintf("error fetching wg peers config for host [ %s ]: %v", data.Host.ID.String(), err)) + logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal")) + return + } + peerUpdate, err := logic.GetPeerUpdate(&data.Node, &data.Host) if err != nil && !database.IsEmptyRecord(err) { logger.Log(0, r.Header.Get("user"), fmt.Sprintf("error fetching wg peers config for node [ %s ]: %v", data.Node.ID.String(), err)) logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal")) return } - data.Host.Peers = peerUpdate.Peers + data.Host.Peers = hostPeerUpdate.Peers + data.Node.Peers = peerUpdate.Peers response := models.NodeJoinResponse{ Node: data.Node, ServerConfig: server, diff --git a/models/api_node.go b/models/api_node.go index 9a78b8a9..88816ab8 100644 --- a/models/api_node.go +++ b/models/api_node.go @@ -59,7 +59,7 @@ func (a *ApiNode) ConvertToServerNode(currentNode *Node) *Node { convertedNode.IsRelay = a.IsRelay convertedNode.IsRelayed = a.IsRelayed convertedNode.PendingDelete = a.PendingDelete - //convertedNode.Peers = currentNode.Peers + convertedNode.Peers = currentNode.Peers convertedNode.Failover = a.Failover convertedNode.IsEgressGateway = a.IsEgressGateway convertedNode.IsIngressGateway = a.IsIngressGateway diff --git a/models/node.go b/models/node.go index 24870a4b..8de356e2 100644 --- a/models/node.go +++ b/models/node.go @@ -56,26 +56,27 @@ type Iface struct { // CommonNode - represents a commonn node data elements shared by netmaker and netclient type CommonNode struct { - ID uuid.UUID `json:"id" yaml:"id"` - HostID uuid.UUID `json:"hostid" yaml:"hostid"` - Name string `json:"name" yaml:"name"` - Network string `json:"network" yaml:"network"` - NetworkRange net.IPNet `json:"networkrange" yaml:"networkrange"` - NetworkRange6 net.IPNet `json:"networkrange6" yaml:"networkrange6"` - InternetGateway *net.UDPAddr `json:"internetgateway" yaml:"internetgateway"` - Server string `json:"server" yaml:"server"` - Connected bool `json:"connected" yaml:"connected"` - Address net.IPNet `json:"address" yaml:"address"` - Address6 net.IPNet `json:"address6" yaml:"address6"` - PostUp string `json:"postup" yaml:"postup"` - PostDown string `json:"postdown" yaml:"postdown"` - Action string `json:"action" yaml:"action"` - LocalAddress net.IPNet `json:"localaddress" yaml:"localaddress"` - IsLocal bool `json:"islocal" yaml:"islocal"` - IsEgressGateway bool `json:"isegressgateway" yaml:"isegressgateway"` - IsIngressGateway bool `json:"isingressgateway" yaml:"isingressgateway"` - DNSOn bool `json:"dnson" yaml:"dnson"` - PersistentKeepalive time.Duration `json:"persistentkeepalive" yaml:"persistentkeepalive"` + ID uuid.UUID `json:"id" yaml:"id"` + HostID uuid.UUID `json:"hostid" yaml:"hostid"` + Name string `json:"name" yaml:"name"` + Network string `json:"network" yaml:"network"` + NetworkRange net.IPNet `json:"networkrange" yaml:"networkrange"` + NetworkRange6 net.IPNet `json:"networkrange6" yaml:"networkrange6"` + InternetGateway *net.UDPAddr `json:"internetgateway" yaml:"internetgateway"` + Server string `json:"server" yaml:"server"` + Connected bool `json:"connected" yaml:"connected"` + Address net.IPNet `json:"address" yaml:"address"` + Address6 net.IPNet `json:"address6" yaml:"address6"` + PostUp string `json:"postup" yaml:"postup"` + PostDown string `json:"postdown" yaml:"postdown"` + Action string `json:"action" yaml:"action"` + LocalAddress net.IPNet `json:"localaddress" yaml:"localaddress"` + IsLocal bool `json:"islocal" yaml:"islocal"` + IsEgressGateway bool `json:"isegressgateway" yaml:"isegressgateway"` + IsIngressGateway bool `json:"isingressgateway" yaml:"isingressgateway"` + DNSOn bool `json:"dnson" yaml:"dnson"` + PersistentKeepalive time.Duration `json:"persistentkeepalive" yaml:"persistentkeepalive"` + Peers []wgtypes.PeerConfig `json:"peers" yaml:"peers"` } // Node - a model of a network node