extpeers.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package logic
  2. import (
  3. "encoding/json"
  4. "github.com/gravitl/netmaker/database"
  5. "github.com/gravitl/netmaker/models"
  6. )
  7. // GetExtPeersList - gets the ext peers lists
  8. func GetExtPeersList(macaddress string, networkName string) ([]models.ExtPeersResponse, error) {
  9. var peers []models.ExtPeersResponse
  10. records, err := database.FetchRecords(database.EXT_CLIENT_TABLE_NAME)
  11. if err != nil {
  12. return peers, err
  13. }
  14. for _, value := range records {
  15. var peer models.ExtPeersResponse
  16. var extClient models.ExtClient
  17. err = json.Unmarshal([]byte(value), &peer)
  18. if err != nil {
  19. Log("failed to unmarshal peer when getting ext peer list", 2)
  20. continue
  21. }
  22. err = json.Unmarshal([]byte(value), &extClient)
  23. if err != nil {
  24. Log("failed to unmarshal ext client", 2)
  25. continue
  26. }
  27. if extClient.Network == networkName && extClient.IngressGatewayID == macaddress {
  28. peers = append(peers, peer)
  29. }
  30. }
  31. return peers, err
  32. }
  33. // ExtClient.GetEgressRangesOnNetwork - returns the egress ranges on network of ext client
  34. func GetEgressRangesOnNetwork(client *models.ExtClient) ([]string, error) {
  35. var result []string
  36. nodesData, err := database.FetchRecords(database.NODES_TABLE_NAME)
  37. if err != nil {
  38. return []string{}, err
  39. }
  40. for _, nodeData := range nodesData {
  41. var currentNode models.Node
  42. if err = json.Unmarshal([]byte(nodeData), &currentNode); err != nil {
  43. continue
  44. }
  45. if currentNode.Network != client.Network {
  46. continue
  47. }
  48. if currentNode.IsEgressGateway == "yes" { // add the egress gateway range(s) to the result
  49. if len(currentNode.EgressGatewayRanges) > 0 {
  50. result = append(result, currentNode.EgressGatewayRanges...)
  51. }
  52. }
  53. }
  54. return result, nil
  55. }