mirror of
				https://github.com/gravitl/netmaker.git
				synced 2025-10-28 07:00:14 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			55 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package models
 | |
| 
 | |
| import (
 | |
| 	"time"
 | |
| 
 | |
| 	proxy_models "github.com/gravitl/netclient/nmproxy/models"
 | |
| )
 | |
| 
 | |
| // Metrics - metrics struct
 | |
| type Metrics struct {
 | |
| 	Network       string                         `json:"network" bson:"network" yaml:"network"`
 | |
| 	NodeID        string                         `json:"node_id" bson:"node_id" yaml:"node_id"`
 | |
| 	NodeName      string                         `json:"node_name" bson:"node_name" yaml:"node_name"`
 | |
| 	IsServer      string                         `json:"isserver" bson:"isserver" yaml:"isserver" validate:"checkyesorno"`
 | |
| 	Connectivity  map[string]Metric              `json:"connectivity" bson:"connectivity" yaml:"connectivity"`
 | |
| 	FailoverPeers map[string]string              `json:"needsfailover" bson:"needsfailover" yaml:"needsfailover"`
 | |
| 	ProxyMetrics  map[string]proxy_models.Metric `json:"proxy_metrics" bson:"proxy_metrics" yaml:"proxy_metrics"`
 | |
| }
 | |
| 
 | |
| // Metric - holds a metric for data between nodes
 | |
| type Metric struct {
 | |
| 	NodeName      string        `json:"node_name" bson:"node_name" yaml:"node_name"`
 | |
| 	IsServer      string        `json:"isserver" bson:"isserver" yaml:"isserver" validate:"checkyesorno"`
 | |
| 	Uptime        int64         `json:"uptime" bson:"uptime" yaml:"uptime"`
 | |
| 	TotalTime     int64         `json:"totaltime" bson:"totaltime" yaml:"totaltime"`
 | |
| 	Latency       int64         `json:"latency" bson:"latency" yaml:"latency"`
 | |
| 	TotalReceived int64         `json:"totalreceived" bson:"totalreceived" yaml:"totalreceived"`
 | |
| 	TotalSent     int64         `json:"totalsent" bson:"totalsent" yaml:"totalsent"`
 | |
| 	ActualUptime  time.Duration `json:"actualuptime" bson:"actualuptime" yaml:"actualuptime"`
 | |
| 	PercentUp     float64       `json:"percentup" bson:"percentup" yaml:"percentup"`
 | |
| 	Connected     bool          `json:"connected" bson:"connected" yaml:"connected"`
 | |
| }
 | |
| 
 | |
| // IDandAddr - struct to hold ID and primary Address
 | |
| type IDandAddr struct {
 | |
| 	ID       string `json:"id" bson:"id" yaml:"id"`
 | |
| 	Address  string `json:"address" bson:"address" yaml:"address"`
 | |
| 	Name     string `json:"name" bson:"name" yaml:"name"`
 | |
| 	IsServer string `json:"isserver" bson:"isserver" yaml:"isserver" validate:"checkyesorno"`
 | |
| 	Network  string `json:"network" bson:"network" yaml:"network" validate:"network"`
 | |
| }
 | |
| 
 | |
| // PeerMap - peer map for ids and addresses in metrics
 | |
| type PeerMap map[string]IDandAddr
 | |
| 
 | |
| // HostPeerMap - host peer map for ids and addresses
 | |
| type HostPeerMap map[string]map[string]IDandAddr
 | |
| 
 | |
| // MetricsMap - map for holding multiple metrics in memory
 | |
| type MetricsMap map[string]Metrics
 | |
| 
 | |
| // NetworkMetrics - metrics model for all nodes in a network
 | |
| type NetworkMetrics struct {
 | |
| 	Nodes MetricsMap `json:"nodes" bson:"nodes" yaml:"nodes"`
 | |
| }
 |