mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-07 05:34:38 +08:00
Unify usage funcs in logic pkg
This commit is contained in:
parent
520607fd4e
commit
28afc91f7e
5 changed files with 69 additions and 102 deletions
|
@ -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
|
||||
|
|
|
@ -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
models/usage.go
Normal file
27
models/usage.go
Normal file
|
@ -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
|
||||
}
|
31
pro/types.go
31
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
|
||||
|
|
40
pro/util.go
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
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue