diff --git a/controllers/common.go b/controllers/common.go index 7e85ce35..dac93fc0 100644 --- a/controllers/common.go +++ b/controllers/common.go @@ -20,7 +20,11 @@ func GetPeersList(networkName string) ([]models.Node, error) { var peers []models.Node collection, err := database.FetchRecords(database.NODES_TABLE_NAME) if err != nil { + if database.IsEmptyRecord(err) { + return peers, nil + } log.Println(err) + return nil, err } udppeers, errN := database.GetPeers(networkName) if errN != nil { diff --git a/controllers/nodeGrpcController.go b/controllers/nodeGrpcController.go index 4228952f..789cf8b7 100644 --- a/controllers/nodeGrpcController.go +++ b/controllers/nodeGrpcController.go @@ -5,6 +5,7 @@ import ( "encoding/json" "errors" "log" + "strings" "github.com/gravitl/netmaker/functions" nodepb "github.com/gravitl/netmaker/grpc" @@ -130,21 +131,23 @@ func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.Object) } func (s *NodeServiceServer) GetPeers(ctx context.Context, req *nodepb.Object) (*nodepb.Object, error) { - var node models.Node - if err := json.Unmarshal([]byte(req.GetData()), &node); err != nil { - return nil, err - } + macAndNetwork := strings.Split(req.Data, "###") + if len(macAndNetwork) == 2 { + peers, err := GetPeersList(macAndNetwork[1]) + if err != nil { + return nil, err + } - peers, err := GetPeersList(node.Network) - if err != nil { - return nil, err + peersData, err := json.Marshal(&peers) + return &nodepb.Object{ + Data: string(peersData), + Type: nodepb.NODE_TYPE, + }, err } - - peersData, err := json.Marshal(&peers) return &nodepb.Object{ - Data: string(peersData), + Data: "", Type: nodepb.NODE_TYPE, - }, nil + }, errors.New("could not fetch peers, invalid node id") } /** diff --git a/database/statics.go b/database/statics.go index ed26e3c0..17151272 100644 --- a/database/statics.go +++ b/database/statics.go @@ -19,7 +19,7 @@ func SetPeers(newPeers map[string]string, networkName string) bool { } func GetPeers(networkName string) (map[string]string, error) { record, err := FetchRecord(PEERS_TABLE_NAME, networkName) - if err != nil { + if err != nil && !IsEmptyRecord(err) { return nil, err } currentDataMap := make(map[string]string)