Переглянути джерело

Send relays and internet gws count to amb

gabrielseibel1 2 роки тому
батько
коміт
520607fd4e
3 змінених файлів з 57 додано та 9 видалено
  1. 37 2
      logic/gateway.go
  2. 11 7
      pro/types.go
  3. 9 0
      pro/util.go

+ 37 - 2
logic/gateway.go

@@ -11,7 +11,42 @@ import (
 	"github.com/gravitl/netmaker/servercfg"
 )
 
-// GetAllIngresses - gets all the hosts that are ingresses
+// GetRelays - gets all the nodes that are relays
+func GetRelays() ([]models.Node, error) {
+	nodes, err := GetAllNodes()
+	if err != nil {
+		return nil, err
+	}
+	relays := make([]models.Node, 0)
+	for _, node := range nodes {
+		if node.IsRelay {
+			relays = append(relays, node)
+		}
+	}
+	return relays, nil
+}
+
+// GetInternetGateways - gets all the nodes that are internet gateways
+func GetInternetGateways() ([]models.Node, error) {
+	nodes, err := GetAllNodes()
+	if err != nil {
+		return nil, err
+	}
+	igs := make([]models.Node, 0)
+	for _, node := range nodes {
+		if !node.IsEgressGateway {
+			continue
+		}
+		for _, ran := range node.EgressGatewayRanges {
+			if ran == "0.0.0.0/0" {
+				igs = append(igs, node)
+			}
+		}
+	}
+	return igs, nil
+}
+
+// GetAllIngresses - gets all the nodes that are ingresses
 func GetAllIngresses() ([]models.Node, error) {
 	nodes, err := GetAllNodes()
 	if err != nil {
@@ -26,7 +61,7 @@ func GetAllIngresses() ([]models.Node, error) {
 	return ingresses, nil
 }
 
-// GetAllEgresses - gets all the hosts that are egresses
+// GetAllEgresses - gets all the nodes that are egresses
 func GetAllEgresses() ([]models.Node, error) {
 	nodes, err := GetAllNodes()
 	if err != nil {

+ 11 - 7
pro/types.go

@@ -54,13 +54,15 @@ type LicenseSecret struct {
 
 // Usage - struct for license usage
 type Usage struct {
-	Servers   int `json:"servers"`
-	Users     int `json:"users"`
-	Hosts     int `json:"hosts"`
-	Clients   int `json:"clients"`
-	Networks  int `json:"networks"`
-	Ingresses int `json:"ingresses"`
-	Egresses  int `json:"egresses"`
+	Servers          int `json:"servers"`
+	Users            int `json:"users"`
+	Hosts            int `json:"hosts"`
+	Clients          int `json:"clients"`
+	Networks         int `json:"networks"`
+	Ingresses        int `json:"ingresses"`
+	Egresses         int `json:"egresses"`
+	Relays           int `json:"relays"`
+	InternetGateways int `json:"internet_gateways"`
 }
 
 // Usage.SetDefaults - sets the default values for usage
@@ -72,6 +74,8 @@ func (l *Usage) SetDefaults() {
 	l.Networks = 0
 	l.Ingresses = 0
 	l.Egresses = 0
+	l.Relays = 0
+	l.InternetGateways = 0
 }
 
 // ValidateLicenseRequest - used for request to validate license endpoint

+ 9 - 0
pro/util.go

@@ -44,6 +44,7 @@ func getCurrentServerUsage() (limits Usage) {
 	if err == nil {
 		limits.Networks = len(networks)
 	}
+	// TODO this part bellow can be optimized to get nodes just once
 	ingresses, err := logic.GetAllIngresses()
 	if err == nil {
 		limits.Ingresses = len(ingresses)
@@ -52,5 +53,13 @@ func getCurrentServerUsage() (limits Usage) {
 	if err == nil {
 		limits.Egresses = len(egresses)
 	}
+	relays, err := logic.GetRelays()
+	if err == nil {
+		limits.Relays = len(relays)
+	}
+	gateways, err := logic.GetInternetGateways()
+	if err == nil {
+		limits.InternetGateways = len(gateways)
+	}
 	return
 }