added logs

This commit is contained in:
0xdcarns 2022-01-18 09:06:43 -05:00
parent 916866f73c
commit a5495300d0
7 changed files with 82 additions and 22 deletions

View file

@ -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.")
}

View file

@ -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" {

View file

@ -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)

View file

@ -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)

View file

@ -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

View file

@ -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"`
}

View file

@ -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")
}
}