mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-05 08:47:35 +08:00
added logs
This commit is contained in:
@@ -403,6 +403,11 @@ func createNode(w http.ResponseWriter, r *http.Request) {
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
if err = runServerPeerUpdate(); err != nil {
|
||||
logger.Log(1, "internal error when approving node:", node.ID)
|
||||
}
|
||||
|
||||
logger.Log(1, r.Header.Get("user"), "created new node", node.Name, "on network", node.Network)
|
||||
w.WriteHeader(http.StatusOK)
|
||||
json.NewEncoder(w).Encode(node)
|
||||
@@ -413,11 +418,15 @@ func createNode(w http.ResponseWriter, r *http.Request) {
|
||||
func uncordonNode(w http.ResponseWriter, r *http.Request) {
|
||||
var params = mux.Vars(r)
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
node, err := logic.UncordonNode(params["nodeid"])
|
||||
var nodeid = params["nodeid"]
|
||||
node, err := logic.UncordonNode(nodeid)
|
||||
if err != nil {
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
if err = runServerPeerUpdate(); err != nil {
|
||||
logger.Log(1, "internal error when approving node:", nodeid)
|
||||
}
|
||||
logger.Log(1, r.Header.Get("user"), "uncordoned node", node.Name)
|
||||
w.WriteHeader(http.StatusOK)
|
||||
json.NewEncoder(w).Encode("SUCCESS")
|
||||
@@ -439,6 +448,9 @@ func createEgressGateway(w http.ResponseWriter, r *http.Request) {
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
if err = runServerPeerUpdate(); err != nil {
|
||||
logger.Log(1, "internal error when setting peers after creating egress on node:", gateway.NodeID)
|
||||
}
|
||||
logger.Log(1, r.Header.Get("user"), "created egress gateway on node", gateway.NodeID, "on network", gateway.NetID)
|
||||
w.WriteHeader(http.StatusOK)
|
||||
json.NewEncoder(w).Encode(node)
|
||||
@@ -454,6 +466,9 @@ func deleteEgressGateway(w http.ResponseWriter, r *http.Request) {
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
if err = runServerPeerUpdate(); err != nil {
|
||||
logger.Log(1, "internal error when setting peers after removing egress on node:", nodeid)
|
||||
}
|
||||
logger.Log(1, r.Header.Get("user"), "deleted egress gateway", nodeid, "on network", netid)
|
||||
w.WriteHeader(http.StatusOK)
|
||||
json.NewEncoder(w).Encode(node)
|
||||
@@ -471,6 +486,7 @@ func createIngressGateway(w http.ResponseWriter, r *http.Request) {
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
logger.Log(1, r.Header.Get("user"), "created ingress gateway on node", nodeid, "on network", netid)
|
||||
w.WriteHeader(http.StatusOK)
|
||||
json.NewEncoder(w).Encode(node)
|
||||
@@ -485,6 +501,7 @@ func deleteIngressGateway(w http.ResponseWriter, r *http.Request) {
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
logger.Log(1, r.Header.Get("user"), "deleted ingress gateway", nodeid)
|
||||
w.WriteHeader(http.StatusOK)
|
||||
json.NewEncoder(w).Encode(node)
|
||||
@@ -529,6 +546,8 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
|
||||
newNode.PostUp = node.PostUp
|
||||
}
|
||||
|
||||
var shouldPeersUpdate = logic.ShouldPeersUpdate(&node, &newNode)
|
||||
|
||||
err = logic.UpdateNode(&node, &newNode)
|
||||
if err != nil {
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
@@ -545,6 +564,8 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
|
||||
if servercfg.IsDNSMode() { // TODO check when this should be updated..
|
||||
err = logic.SetDNS()
|
||||
}
|
||||
|
||||
err = runServerUpdateIfNeeded(shouldPeersUpdate, &newNode)
|
||||
if err != nil {
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
return
|
||||
@@ -572,6 +593,12 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
err = runServerPeerUpdate()
|
||||
if err != nil {
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
logger.Log(1, r.Header.Get("user"), "Deleted node", nodeid, "from network", params["network"])
|
||||
returnSuccessResponse(w, r, nodeid+" deleted.")
|
||||
}
|
||||
|
@@ -86,6 +86,11 @@ func (s *NodeServiceServer) CreateNode(ctx context.Context, req *nodepb.Object)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = runServerPeerUpdate()
|
||||
if err != nil {
|
||||
logger.Log(1, "internal error when setting peers after node,", node.ID, "was created (gRPC)")
|
||||
}
|
||||
|
||||
return response, nil
|
||||
}
|
||||
|
||||
@@ -106,6 +111,7 @@ func (s *NodeServiceServer) UpdateNode(ctx context.Context, req *nodepb.Object)
|
||||
newnode.PostDown = node.PostDown
|
||||
newnode.PostUp = node.PostUp
|
||||
}
|
||||
var shouldPeersUpdate = logic.ShouldPeersUpdate(&node, &newnode)
|
||||
|
||||
err = logic.UpdateNode(&node, &newnode)
|
||||
if err != nil {
|
||||
@@ -119,6 +125,10 @@ func (s *NodeServiceServer) UpdateNode(ctx context.Context, req *nodepb.Object)
|
||||
if errN != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = runServerUpdateIfNeeded(shouldPeersUpdate, &models.Node{})
|
||||
if err != nil {
|
||||
logger.Log(1, "could not update peers on gRPC after node,", newnode.ID, "updated (gRPC)")
|
||||
}
|
||||
return &nodepb.Object{
|
||||
Data: string(nodeData),
|
||||
Type: nodepb.NODE_TYPE,
|
||||
@@ -138,6 +148,11 @@ func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.Object)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = runServerPeerUpdate()
|
||||
if err != nil {
|
||||
logger.Log(1, "internal error when setting peers after deleting node:", node.ID, "over gRPC")
|
||||
}
|
||||
|
||||
return &nodepb.Object{
|
||||
Data: "success",
|
||||
Type: nodepb.STRING_TYPE,
|
||||
@@ -152,9 +167,6 @@ func (s *NodeServiceServer) GetPeers(ctx context.Context, req *nodepb.Object) (*
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if node.IsServer == "yes" && logic.IsLeader(&node) {
|
||||
logic.SetNetworkServerPeers(&node)
|
||||
}
|
||||
excludeIsRelayed := node.IsRelay != "yes"
|
||||
var relayedNode string
|
||||
if node.IsRelayed == "yes" {
|
||||
|
@@ -26,6 +26,9 @@ func createRelay(w http.ResponseWriter, r *http.Request) {
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
if err = runServerPeerUpdate(); err != nil {
|
||||
logger.Log(1, "internal error when creating relay on node:", relay.NodeID)
|
||||
}
|
||||
logger.Log(1, r.Header.Get("user"), "created relay on node", relay.NodeID, "on network", relay.NetID)
|
||||
w.WriteHeader(http.StatusOK)
|
||||
json.NewEncoder(w).Encode(node)
|
||||
@@ -41,6 +44,9 @@ func deleteRelay(w http.ResponseWriter, r *http.Request) {
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
if err = runServerPeerUpdate(); err != nil {
|
||||
logger.Log(1, "internal error when deleting relay on node:", nodeid)
|
||||
}
|
||||
logger.Log(1, r.Header.Get("user"), "deleted egress gateway", nodeid, "on network", netid)
|
||||
w.WriteHeader(http.StatusOK)
|
||||
json.NewEncoder(w).Encode(node)
|
||||
|
@@ -7,13 +7,25 @@ import (
|
||||
"github.com/gravitl/netmaker/serverctl"
|
||||
)
|
||||
|
||||
func runServerUpdateIfNeeded(currentNode *models.Node, newNode *models.Node) error {
|
||||
// check if a peer/server update is needed
|
||||
var serverData = serverctl.ServerUpdateData{
|
||||
UpdatePeers: logic.ShouldPeersUpdate(currentNode, newNode),
|
||||
func runServerPeerUpdate() error {
|
||||
var serverData = models.ServerUpdateData{
|
||||
UpdatePeers: true,
|
||||
}
|
||||
if currentNode.IsServer == "yes" {
|
||||
serverData.ServerNode = *currentNode
|
||||
serverctl.Push(serverData)
|
||||
var settings, err = serverctl.Pop()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return handlePeerUpdate(&settings.ServerNode)
|
||||
}
|
||||
|
||||
func runServerUpdateIfNeeded(shouldPeersUpdate bool, serverNode *models.Node) error {
|
||||
// check if a peer/server update is needed
|
||||
var serverData = models.ServerUpdateData{
|
||||
UpdatePeers: shouldPeersUpdate,
|
||||
}
|
||||
if serverNode.IsServer == "yes" {
|
||||
serverData.ServerNode = *serverNode
|
||||
}
|
||||
serverctl.Push(serverData)
|
||||
|
||||
|
@@ -17,6 +17,7 @@ import (
|
||||
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
||||
)
|
||||
|
||||
// == Public ==
|
||||
// == Join, Checkin, and Leave for Server ==
|
||||
|
||||
// KUBERNETES_LISTEN_PORT - starting port for Kubernetes in order to use NodePort range
|
||||
@@ -366,6 +367,8 @@ func checkNodeActions(node *models.Node) string {
|
||||
return ""
|
||||
}
|
||||
|
||||
// == Private ==
|
||||
|
||||
func serverPull(serverNode *models.Node, onErr bool) error {
|
||||
|
||||
var err error
|
||||
|
@@ -156,3 +156,10 @@ type RelayRequest struct {
|
||||
NetID string `json:"netid" bson:"netid"`
|
||||
RelayAddrs []string `json:"relayaddrs" bson:"relayaddrs"`
|
||||
}
|
||||
|
||||
// ServerUpdateData - contains data to configure server
|
||||
// and if it should set peers
|
||||
type ServerUpdateData struct {
|
||||
UpdatePeers bool `json:"updatepeers" bson:"updatepeers"`
|
||||
ServerNode Node `json:"servernode" bson:"servernode"`
|
||||
}
|
||||
|
@@ -7,30 +7,23 @@ import (
|
||||
)
|
||||
|
||||
// ServerQueue - holds data to be updated across the server
|
||||
var ServerQueue chan ServerUpdateData
|
||||
var ServerQueue chan models.ServerUpdateData
|
||||
|
||||
func init() {
|
||||
ServerQueue = make(chan ServerUpdateData, 100)
|
||||
}
|
||||
|
||||
// ServerUpdateData - contains data to configure server
|
||||
// and if it should set peers
|
||||
type ServerUpdateData struct {
|
||||
UpdatePeers bool `json:"updatepeers" bson:"updatepeers"`
|
||||
ServerNode models.Node `json:"servernode" bson:"servernode"`
|
||||
ServerQueue = make(chan models.ServerUpdateData, 100)
|
||||
}
|
||||
|
||||
// Push - Pushes ServerUpdateData to be used later
|
||||
func Push(serverData ServerUpdateData) {
|
||||
func Push(serverData models.ServerUpdateData) {
|
||||
ServerQueue <- serverData
|
||||
}
|
||||
|
||||
// Pop - fetches first available data from queue
|
||||
func Pop() (ServerUpdateData, error) {
|
||||
func Pop() (models.ServerUpdateData, error) {
|
||||
select {
|
||||
case serverData := <-ServerQueue:
|
||||
return serverData, nil
|
||||
default:
|
||||
return ServerUpdateData{}, fmt.Errorf("empty server queue")
|
||||
return models.ServerUpdateData{}, fmt.Errorf("empty server queue")
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user