mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-12 08:04:25 +08:00
refactored all grpc to be uniform
This commit is contained in:
parent
545f45d86d
commit
d18b6d5ee2
6 changed files with 72 additions and 58 deletions
|
@ -4,7 +4,6 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"strings"
|
|
||||||
|
|
||||||
nodepb "github.com/gravitl/netmaker/grpc"
|
nodepb "github.com/gravitl/netmaker/grpc"
|
||||||
"github.com/gravitl/netmaker/logger"
|
"github.com/gravitl/netmaker/logger"
|
||||||
|
@ -22,16 +21,14 @@ type NodeServiceServer struct {
|
||||||
func (s *NodeServiceServer) ReadNode(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) {
|
func (s *NodeServiceServer) ReadNode(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) {
|
||||||
// convert string id (from proto) to mongoDB ObjectId
|
// convert string id (from proto) to mongoDB ObjectId
|
||||||
var err error
|
var err error
|
||||||
var node models.Node
|
var reqNode models.Node
|
||||||
var macAndNetwork = make([]string, 2)
|
err = json.Unmarshal([]byte(req.Data), &reqNode)
|
||||||
if strings.Contains(req.Data, "###") {
|
if err != nil {
|
||||||
macAndNetwork = strings.Split(req.Data, "###")
|
return nil, err
|
||||||
if len(macAndNetwork) != 2 {
|
|
||||||
return nil, errors.New("could not read node, invalid node id given")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
node, err = logic.GetNodeByIDorMacAddress(req.Data, macAndNetwork[0], macAndNetwork[1])
|
var node models.Node
|
||||||
|
node, err = logic.GetNodeByIDorMacAddress(reqNode.ID, reqNode.MacAddress, reqNode.Network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -138,16 +135,17 @@ func (s *NodeServiceServer) UpdateNode(ctx context.Context, req *nodepb.Object)
|
||||||
|
|
||||||
// NodeServiceServer.DeleteNode - deletes a node and responds over gRPC
|
// NodeServiceServer.DeleteNode - deletes a node and responds over gRPC
|
||||||
func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) {
|
func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) {
|
||||||
nodeID := req.GetData()
|
|
||||||
var nodeInfo = make([]string, 2)
|
var reqNode models.Node
|
||||||
if strings.Contains(nodeID, "###") {
|
if err := json.Unmarshal([]byte(req.GetData()), &reqNode); err != nil {
|
||||||
nodeInfo = strings.Split(nodeID, "###")
|
return nil, err
|
||||||
if len(nodeInfo) != 2 {
|
}
|
||||||
return nil, errors.New("node not found")
|
|
||||||
}
|
node, err := logic.GetNodeByIDorMacAddress(reqNode.ID, reqNode.MacAddress, reqNode.Network)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var node, err = logic.GetNodeByIDorMacAddress(nodeID, nodeInfo[0], nodeInfo[1])
|
|
||||||
err = logic.DeleteNodeByID(&node, true)
|
err = logic.DeleteNodeByID(&node, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -161,16 +159,13 @@ func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.Object)
|
||||||
|
|
||||||
// NodeServiceServer.GetPeers - fetches peers over gRPC
|
// NodeServiceServer.GetPeers - fetches peers over gRPC
|
||||||
func (s *NodeServiceServer) GetPeers(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) {
|
func (s *NodeServiceServer) GetPeers(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) {
|
||||||
nodeID := req.GetData()
|
|
||||||
var nodeInfo = make([]string, 2)
|
var reqNode models.Node
|
||||||
if strings.Contains(nodeID, "###") {
|
if err := json.Unmarshal([]byte(req.GetData()), &reqNode); err != nil {
|
||||||
nodeInfo = strings.Split(nodeID, "###")
|
return nil, err
|
||||||
if len(nodeInfo) != 2 {
|
|
||||||
return nil, errors.New("could not fetch peers, invalid node id")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
node, err := logic.GetNodeByIDorMacAddress(nodeID, nodeInfo[0], nodeInfo[1])
|
node, err := logic.GetNodeByIDorMacAddress(reqNode.ID, reqNode.MacAddress, reqNode.Network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -200,20 +195,12 @@ func (s *NodeServiceServer) GetExtPeers(ctx context.Context, req *nodepb.Object)
|
||||||
// Initiate a NodeItem type to write decoded data to
|
// Initiate a NodeItem type to write decoded data to
|
||||||
//data := &models.PeersResponse{}
|
//data := &models.PeersResponse{}
|
||||||
// collection.Find returns a cursor for our (empty) query
|
// collection.Find returns a cursor for our (empty) query
|
||||||
macAndNetwork := strings.Split(req.Data, "###")
|
var reqNode models.Node
|
||||||
if len(macAndNetwork) != 2 {
|
if err := json.Unmarshal([]byte(req.GetData()), &reqNode); err != nil {
|
||||||
return nil, errors.New("did not receive valid node id when fetching ext peers")
|
return nil, err
|
||||||
}
|
|
||||||
nodeID := req.GetData()
|
|
||||||
var nodeInfo = make([]string, 2)
|
|
||||||
if strings.Contains(nodeID, "###") {
|
|
||||||
nodeInfo = strings.Split(nodeID, "###")
|
|
||||||
if len(nodeInfo) != 2 {
|
|
||||||
return nil, errors.New("could not fetch peers, invalid node id")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
node, err := logic.GetNodeByIDorMacAddress(nodeID, nodeInfo[0], nodeInfo[1])
|
node, err := logic.GetNodeByIDorMacAddress(reqNode.ID, reqNode.MacAddress, reqNode.Network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,7 +71,7 @@ func AutoLogin(client nodepb.NodeServiceClient, network string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
tokenstring := []byte(res.Data)
|
tokenstring := []byte(res.Data)
|
||||||
err = os.WriteFile(home+"nettoken-"+network, tokenstring, 0644)
|
err = os.WriteFile(home+"nettoken-"+network, tokenstring, 0644) // TODO: Proper permissions?
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,9 +186,15 @@ func Pull(network string, manual bool) (*models.Node, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data, err := json.Marshal(&node)
|
||||||
|
if err != nil {
|
||||||
|
ncutils.PrintLog("Failed to parse node config: "+err.Error(), 1)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
req := &nodepb.Object{
|
req := &nodepb.Object{
|
||||||
Data: node.MacAddress + "###" + node.Network,
|
Data: string(data),
|
||||||
Type: nodepb.STRING_TYPE,
|
Type: nodepb.NODE_TYPE,
|
||||||
}
|
}
|
||||||
|
|
||||||
readres, err := wcclient.ReadNode(ctx, req, grpc.Header(&header))
|
readres, err := wcclient.ReadNode(ctx, req, grpc.Header(&header))
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package functions
|
package functions
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
@ -165,18 +166,21 @@ func LeaveNetwork(network string) error {
|
||||||
log.Printf("Failed to authenticate: %v", err)
|
log.Printf("Failed to authenticate: %v", err)
|
||||||
} else { // handle client side
|
} else { // handle client side
|
||||||
var header metadata.MD
|
var header metadata.MD
|
||||||
_, err = wcclient.DeleteNode(
|
nodeData, err := json.Marshal(&node)
|
||||||
ctx,
|
if err == nil {
|
||||||
&nodepb.Object{
|
_, err = wcclient.DeleteNode(
|
||||||
Data: node.ID,
|
ctx,
|
||||||
Type: nodepb.STRING_TYPE,
|
&nodepb.Object{
|
||||||
},
|
Data: string(nodeData),
|
||||||
grpc.Header(&header),
|
Type: nodepb.NODE_TYPE,
|
||||||
)
|
},
|
||||||
if err != nil {
|
grpc.Header(&header),
|
||||||
ncutils.PrintLog("encountered error deleting node: "+err.Error(), 1)
|
)
|
||||||
} else {
|
if err != nil {
|
||||||
ncutils.PrintLog("removed machine from "+node.Network+" network on remote server", 1)
|
ncutils.PrintLog("encountered error deleting node: "+err.Error(), 1)
|
||||||
|
} else {
|
||||||
|
ncutils.PrintLog("removed machine from "+node.Network+" network on remote server", 1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,9 +98,14 @@ func getPeers(network string) ([]Peer, error) {
|
||||||
// Instantiate the BlogServiceClient with our client connection to the server
|
// Instantiate the BlogServiceClient with our client connection to the server
|
||||||
wcclient = nodepb.NewNodeServiceClient(conn)
|
wcclient = nodepb.NewNodeServiceClient(conn)
|
||||||
|
|
||||||
|
nodeData, err := json.Marshal(&nodecfg)
|
||||||
|
if err != nil {
|
||||||
|
return []Peer{}, fmt.Errorf("could not parse config node on network %s : %w", network, err)
|
||||||
|
}
|
||||||
|
|
||||||
req := &nodepb.Object{
|
req := &nodepb.Object{
|
||||||
Data: nodecfg.MacAddress + "###" + nodecfg.Network,
|
Data: string(nodeData),
|
||||||
Type: nodepb.STRING_TYPE,
|
Type: nodepb.NODE_TYPE,
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, err := auth.SetJWT(wcclient, network)
|
ctx, err := auth.SetJWT(wcclient, network)
|
||||||
|
|
|
@ -101,9 +101,15 @@ func GetPeers(macaddress string, network string, server string, dualstack bool,
|
||||||
// Instantiate the BlogServiceClient with our client connection to the server
|
// Instantiate the BlogServiceClient with our client connection to the server
|
||||||
wcclient = nodepb.NewNodeServiceClient(conn)
|
wcclient = nodepb.NewNodeServiceClient(conn)
|
||||||
|
|
||||||
|
nodeData, err := json.Marshal(&nodecfg)
|
||||||
|
if err != nil {
|
||||||
|
ncutils.PrintLog("could not parse node data from config during peer fetch for network "+network, 1)
|
||||||
|
return peers, hasGateway, gateways, err
|
||||||
|
}
|
||||||
|
|
||||||
req := &nodepb.Object{
|
req := &nodepb.Object{
|
||||||
Data: macaddress + "###" + network,
|
Data: string(nodeData),
|
||||||
Type: nodepb.STRING_TYPE,
|
Type: nodepb.NODE_TYPE,
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, err := auth.SetJWT(wcclient, network)
|
ctx, err := auth.SetJWT(wcclient, network)
|
||||||
|
@ -274,9 +280,15 @@ func GetExtPeers(macaddress string, network string, server string, dualstack boo
|
||||||
// Instantiate the BlogServiceClient with our client connection to the server
|
// Instantiate the BlogServiceClient with our client connection to the server
|
||||||
wcclient = nodepb.NewNodeServiceClient(conn)
|
wcclient = nodepb.NewNodeServiceClient(conn)
|
||||||
|
|
||||||
|
nodeData, err := json.Marshal(&nodecfg)
|
||||||
|
if err != nil {
|
||||||
|
ncutils.PrintLog("could not parse node data from config during peer fetch for network "+network, 1)
|
||||||
|
return peers, err
|
||||||
|
}
|
||||||
|
|
||||||
req := &nodepb.Object{
|
req := &nodepb.Object{
|
||||||
Data: macaddress + "###" + network,
|
Data: string(nodeData),
|
||||||
Type: nodepb.STRING_TYPE,
|
Type: nodepb.NODE_TYPE,
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, err := auth.SetJWT(wcclient, network)
|
ctx, err := auth.SetJWT(wcclient, network)
|
||||||
|
|
Loading…
Add table
Reference in a new issue