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