Selaa lähdekoodia

Unify usage funcs in logic pkg

gabrielseibel1 2 vuotta sitten
vanhempi
commit
28afc91f7e
5 muutettua tiedostoa jossa 69 lisäystä ja 102 poistoa
  1. 1 34
      controllers/server.go
  2. 38 0
      logic/server.go
  3. 27 0
      models/usage.go
  4. 3 28
      pro/types.go
  5. 0 40
      pro/util.go

+ 1 - 34
controllers/server.go

@@ -26,45 +26,12 @@ func serverHandlers(r *mux.Router) {
 }
 
 func getUsage(w http.ResponseWriter, r *http.Request) {
-	type usage struct {
-		Hosts     int `json:"hosts"`
-		Clients   int `json:"clients"`
-		Networks  int `json:"networks"`
-		Users     int `json:"users"`
-		Ingresses int `json:"ingresses"`
-		Egresses  int `json:"egresses"`
-	}
-	var serverUsage usage
-	hosts, err := logic.GetAllHosts()
-	if err == nil {
-		serverUsage.Hosts = len(hosts)
-	}
-	clients, err := logic.GetAllExtClients()
-	if err == nil {
-		serverUsage.Clients = len(clients)
-	}
-	users, err := logic.GetUsers()
-	if err == nil {
-		serverUsage.Users = len(users)
-	}
-	networks, err := logic.GetNetworks()
-	if err == nil {
-		serverUsage.Networks = len(networks)
-	}
-	ingresses, err := logic.GetAllIngresses()
-	if err == nil {
-		serverUsage.Ingresses = len(ingresses)
-	}
-	egresses, err := logic.GetAllEgresses()
-	if err == nil {
-		serverUsage.Egresses = len(egresses)
-	}
+	serverUsage := logic.GetCurrentServerUsage()
 	w.Header().Set("Content-Type", "application/json")
 	json.NewEncoder(w).Encode(models.SuccessResponse{
 		Code:     http.StatusOK,
 		Response: serverUsage,
 	})
-
 }
 
 // swagger:route GET /api/server/status server getStatus

+ 38 - 0
logic/server.go

@@ -31,3 +31,41 @@ func EnterpriseCheck() {
 		check()
 	}
 }
+
+func GetCurrentServerUsage() (usage models.Usage) {
+	usage.SetDefaults()
+	hosts, hErr := GetAllHosts()
+	if hErr == nil {
+		usage.Hosts = len(hosts)
+	}
+	clients, cErr := GetAllExtClients()
+	if cErr == nil {
+		usage.Clients = len(clients)
+	}
+	users, err := GetUsers()
+	if err == nil {
+		usage.Users = len(users)
+	}
+	networks, err := GetNetworks()
+	if err == nil {
+		usage.Networks = len(networks)
+	}
+	// TODO this part bellow can be optimized to get nodes just once
+	ingresses, err := GetAllIngresses()
+	if err == nil {
+		usage.Ingresses = len(ingresses)
+	}
+	egresses, err := GetAllEgresses()
+	if err == nil {
+		usage.Egresses = len(egresses)
+	}
+	relays, err := GetRelays()
+	if err == nil {
+		usage.Relays = len(relays)
+	}
+	gateways, err := GetInternetGateways()
+	if err == nil {
+		usage.InternetGateways = len(gateways)
+	}
+	return
+}

+ 27 - 0
models/usage.go

@@ -0,0 +1,27 @@
+package models
+
+// 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"`
+	Relays           int `json:"relays"`
+	InternetGateways int `json:"internet_gateways"`
+}
+
+// Usage.SetDefaults - sets the default values for usage
+func (l *Usage) SetDefaults() {
+	l.Clients = 0
+	l.Servers = 1
+	l.Hosts = 0
+	l.Users = 1
+	l.Networks = 0
+	l.Ingresses = 0
+	l.Egresses = 0
+	l.Relays = 0
+	l.InternetGateways = 0
+}

+ 3 - 28
pro/types.go

@@ -5,6 +5,7 @@ package pro
 
 import (
 	"fmt"
+	"github.com/gravitl/netmaker/models"
 )
 
 // constants for accounts api hosts
@@ -48,34 +49,8 @@ type ValidatedLicense struct {
 
 // LicenseSecret - the encrypted struct for sending user-id
 type LicenseSecret struct {
-	AssociatedID string `json:"associated_id" binding:"required"` // UUID for user foreign key to User table
-	Usage        Usage  `json:"limits" binding:"required"`
-}
-
-// 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"`
-	Relays           int `json:"relays"`
-	InternetGateways int `json:"internet_gateways"`
-}
-
-// Usage.SetDefaults - sets the default values for usage
-func (l *Usage) SetDefaults() {
-	l.Clients = 0
-	l.Servers = 1
-	l.Hosts = 0
-	l.Users = 1
-	l.Networks = 0
-	l.Ingresses = 0
-	l.Egresses = 0
-	l.Relays = 0
-	l.InternetGateways = 0
+	AssociatedID string       `json:"associated_id" binding:"required"` // UUID for user foreign key to User table
+	Usage        models.Usage `json:"limits" binding:"required"`
 }
 
 // ValidateLicenseRequest - used for request to validate license endpoint

+ 0 - 40
pro/util.go

@@ -5,8 +5,6 @@ package pro
 
 import (
 	"encoding/base64"
-
-	"github.com/gravitl/netmaker/logic"
 )
 
 // base64encode - base64 encode helper function
@@ -25,41 +23,3 @@ func base64decode(input string) []byte {
 
 	return bytes
 }
-
-func getCurrentServerUsage() (limits Usage) {
-	limits.SetDefaults()
-	hosts, hErr := logic.GetAllHosts()
-	if hErr == nil {
-		limits.Hosts = len(hosts)
-	}
-	clients, cErr := logic.GetAllExtClients()
-	if cErr == nil {
-		limits.Clients = len(clients)
-	}
-	users, err := logic.GetUsers()
-	if err == nil {
-		limits.Users = len(users)
-	}
-	networks, err := logic.GetNetworks()
-	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)
-	}
-	egresses, err := logic.GetAllEgresses()
-	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
-}