From 520607fd4ec633f8d8fbb48c6376029b0f122cf6 Mon Sep 17 00:00:00 2001 From: gabrielseibel1 Date: Fri, 15 Sep 2023 13:24:09 -0300 Subject: [PATCH] Send relays and internet gws count to amb --- logic/gateway.go | 39 +++++++++++++++++++++++++++++++++++++-- pro/types.go | 18 +++++++++++------- pro/util.go | 9 +++++++++ 3 files changed, 57 insertions(+), 9 deletions(-) diff --git a/logic/gateway.go b/logic/gateway.go index 2f723469..2e436a03 100644 --- a/logic/gateway.go +++ b/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 { diff --git a/pro/types.go b/pro/types.go index 97be7194..3e4ef08d 100644 --- a/pro/types.go +++ b/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 diff --git a/pro/util.go b/pro/util.go index f48418b1..d7490c8f 100644 --- a/pro/util.go +++ b/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 }