diff --git a/controllers/node_grpc.go b/controllers/node_grpc.go index 1343ae0e..c5ce418a 100644 --- a/controllers/node_grpc.go +++ b/controllers/node_grpc.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "errors" - "strings" nodepb "github.com/gravitl/netmaker/grpc" "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) { // convert string id (from proto) to mongoDB ObjectId var err error - var node models.Node - var macAndNetwork = make([]string, 2) - if strings.Contains(req.Data, "###") { - macAndNetwork = strings.Split(req.Data, "###") - if len(macAndNetwork) != 2 { - return nil, errors.New("could not read node, invalid node id given") - } + var reqNode models.Node + err = json.Unmarshal([]byte(req.Data), &reqNode) + if err != nil { + return nil, err } - 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 { 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 func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) { - nodeID := req.GetData() - var nodeInfo = make([]string, 2) - if strings.Contains(nodeID, "###") { - nodeInfo = strings.Split(nodeID, "###") - if len(nodeInfo) != 2 { - return nil, errors.New("node not found") - } + + var reqNode models.Node + if err := json.Unmarshal([]byte(req.GetData()), &reqNode); err != nil { + return nil, err + } + + 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) if err != nil { return nil, err @@ -161,16 +159,13 @@ func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.Object) // NodeServiceServer.GetPeers - fetches peers over gRPC func (s *NodeServiceServer) GetPeers(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) { - 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") - } + + var reqNode models.Node + if err := json.Unmarshal([]byte(req.GetData()), &reqNode); err != nil { + return nil, err } - node, err := logic.GetNodeByIDorMacAddress(nodeID, nodeInfo[0], nodeInfo[1]) + node, err := logic.GetNodeByIDorMacAddress(reqNode.ID, reqNode.MacAddress, reqNode.Network) if err != nil { 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 //data := &models.PeersResponse{} // collection.Find returns a cursor for our (empty) query - macAndNetwork := strings.Split(req.Data, "###") - if len(macAndNetwork) != 2 { - return nil, errors.New("did not receive valid node id when fetching ext peers") - } - 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") - } + var reqNode models.Node + if err := json.Unmarshal([]byte(req.GetData()), &reqNode); err != nil { + return nil, err } - node, err := logic.GetNodeByIDorMacAddress(nodeID, nodeInfo[0], nodeInfo[1]) + node, err := logic.GetNodeByIDorMacAddress(reqNode.ID, reqNode.MacAddress, reqNode.Network) if err != nil { return nil, err }