2
0

util.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. //go:build ee
  2. // +build ee
  3. package pro
  4. import (
  5. "context"
  6. "encoding/base64"
  7. "github.com/gravitl/netmaker/db"
  8. "github.com/gravitl/netmaker/models"
  9. "github.com/gravitl/netmaker/schema"
  10. "github.com/gravitl/netmaker/logic"
  11. )
  12. // base64encode - base64 encode helper function
  13. func base64encode(input []byte) string {
  14. return base64.StdEncoding.EncodeToString(input)
  15. }
  16. // base64decode - base64 decode helper function
  17. func base64decode(input string) []byte {
  18. bytes, err := base64.StdEncoding.DecodeString(input)
  19. if err != nil {
  20. return nil
  21. }
  22. return bytes
  23. }
  24. func getCurrentServerUsage() (limits Usage) {
  25. limits.SetDefaults()
  26. hosts, hErr := logic.GetAllHostsWithStatus(models.OnlineSt)
  27. if hErr == nil {
  28. limits.Hosts = len(hosts)
  29. }
  30. clients, cErr := logic.GetAllExtClientsWithStatus(models.OnlineSt)
  31. if cErr == nil {
  32. limits.Clients = len(clients)
  33. }
  34. users, err := logic.GetUsers()
  35. if err == nil {
  36. limits.Users = len(users)
  37. }
  38. networks, err := logic.GetNetworks()
  39. if err == nil {
  40. limits.Networks = len(networks)
  41. }
  42. // TODO this part bellow can be optimized to get nodes just once
  43. ingresses, err := logic.GetAllIngresses()
  44. if err == nil {
  45. limits.Ingresses = len(ingresses)
  46. }
  47. limits.Egresses, _ = (&schema.Egress{}).Count(db.WithContext(context.TODO()))
  48. relays, err := logic.GetRelays()
  49. if err == nil {
  50. limits.Relays = len(relays)
  51. }
  52. gateways, err := logic.GetInternetGateways()
  53. if err == nil {
  54. limits.InternetGateways = len(gateways)
  55. }
  56. failovers, err := logic.GetAllFailOvers()
  57. if err == nil {
  58. limits.FailOvers = len(failovers)
  59. }
  60. return
  61. }