| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package logic
- import (
- "context"
- "github.com/gravitl/netmaker/db"
- "github.com/gravitl/netmaker/models"
- "github.com/gravitl/netmaker/schema"
- )
- func GetCurrentServerUsage() (limits models.Usage) {
- limits.SetDefaults()
- hosts, hErr := GetAllHostsWithStatus(models.OnlineSt)
- if hErr == nil {
- limits.Hosts = len(hosts)
- }
- clients, cErr := GetAllExtClientsWithStatus(models.OnlineSt)
- if cErr == nil {
- limits.Clients = len(clients)
- }
- users, err := GetUsers()
- if err == nil {
- limits.Users = len(users)
- }
- networks, err := GetNetworks()
- if err == nil {
- limits.Networks = len(networks)
- }
- limits.Egresses, _ = (&schema.Egress{}).Count(db.WithContext(context.TODO()))
- nodes, _ := GetAllNodes()
- for _, client := range clients {
- nodes = append(nodes, client.ConvertToStaticNode())
- }
- limits.NetworkUsage = make(map[string]models.NetworkUsage)
- for _, network := range networks {
- limits.NetworkUsage[network.NetID] = models.NetworkUsage{}
- }
- for _, node := range nodes {
- netUsage, ok := limits.NetworkUsage[node.Network]
- if !ok {
- // if network doesn't exist, this node is probably awaiting cleanup.
- // so ignore.
- continue
- }
- netUsage.Nodes++
- if node.IsStatic {
- netUsage.Clients++
- }
- if node.IsIngressGateway {
- limits.Ingresses++
- netUsage.Ingresses++
- }
- if node.EgressDetails.IsEgressGateway {
- netUsage.Egresses++
- }
- if node.IsRelay {
- limits.Relays++
- netUsage.Relays++
- }
- if node.IsInternetGateway {
- limits.InternetGateways++
- netUsage.InternetGateways++
- }
- if node.IsFailOver {
- limits.FailOvers++
- netUsage.FailOvers++
- }
- limits.NetworkUsage[node.Network] = netUsage
- }
- return
- }
|