Send relays and internet gws count to amb

This commit is contained in:
gabrielseibel1 2023-09-15 13:24:09 -03:00
parent ad551a0e6a
commit 520607fd4e
3 changed files with 57 additions and 9 deletions

View file

@ -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 {

View file

@ -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

View file

@ -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
}