mirror of
https://github.com/gravitl/netmaker.git
synced 2024-09-20 07:16:06 +08:00
added logs
This commit is contained in:
parent
916866f73c
commit
a5495300d0
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue