|
@@ -226,6 +226,10 @@ func authorize(nodesAllowed, networkCheck bool, authNetwork string, next http.Ha
|
|
|
if nodesAllowed {
|
|
|
// TODO --- should ensure that node is only operating on itself
|
|
|
if _, _, _, err := logic.VerifyToken(authToken); err == nil {
|
|
|
+
|
|
|
+ // this indicates request is from a node
|
|
|
+ // used for failover - if a getNode comes from node, this will trigger a metrics wipe
|
|
|
+ r.Header.Set("requestfrom", "node")
|
|
|
next.ServeHTTP(w, r)
|
|
|
return
|
|
|
}
|
|
@@ -411,6 +415,8 @@ func getNode(w http.ResponseWriter, r *http.Request) {
|
|
|
// set header.
|
|
|
w.Header().Set("Content-Type", "application/json")
|
|
|
|
|
|
+ nodeRequest := r.Header.Get("requestfrom") == "node"
|
|
|
+
|
|
|
var params = mux.Vars(r)
|
|
|
nodeid := params["nodeid"]
|
|
|
node, err := logic.GetNodeByID(nodeid)
|
|
@@ -440,6 +446,12 @@ func getNode(w http.ResponseWriter, r *http.Request) {
|
|
|
PeerIDs: peerUpdate.PeerIDs,
|
|
|
}
|
|
|
|
|
|
+ if servercfg.Is_EE && nodeRequest {
|
|
|
+ if err = logic.EnterpriseResetAllPeersFailovers(node.ID, node.Network); err != nil {
|
|
|
+ logger.Log(1, "failed to reset failover list during node config pull", node.Name, node.Network)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
logger.Log(2, r.Header.Get("user"), "fetched node", params["nodeid"])
|
|
|
w.WriteHeader(http.StatusOK)
|
|
|
json.NewEncoder(w).Encode(response)
|
|
@@ -771,6 +783,12 @@ func createIngressGateway(w http.ResponseWriter, r *http.Request) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ if servercfg.Is_EE && failoverReqBody.Failover {
|
|
|
+ if err = logic.EnterpriseResetFailoverFunc(node.Network); err != nil {
|
|
|
+ logger.Log(1, "failed to reset failover list during failover create", node.Name, node.Network)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
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)
|
|
@@ -794,7 +812,7 @@ func deleteIngressGateway(w http.ResponseWriter, r *http.Request) {
|
|
|
var params = mux.Vars(r)
|
|
|
nodeid := params["nodeid"]
|
|
|
netid := params["network"]
|
|
|
- node, err := logic.DeleteIngressGateway(netid, nodeid)
|
|
|
+ node, wasFailover, err := logic.DeleteIngressGateway(netid, nodeid)
|
|
|
if err != nil {
|
|
|
logger.Log(0, r.Header.Get("user"),
|
|
|
fmt.Sprintf("failed to delete ingress gateway on node [%s] on network [%s]: %v",
|
|
@@ -803,6 +821,12 @@ func deleteIngressGateway(w http.ResponseWriter, r *http.Request) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ if servercfg.Is_EE && wasFailover {
|
|
|
+ if err = logic.EnterpriseResetFailoverFunc(node.Network); err != nil {
|
|
|
+ logger.Log(1, "failed to reset failover list during failover create", node.Name, node.Network)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
logger.Log(1, r.Header.Get("user"), "deleted ingress gateway", nodeid)
|
|
|
w.WriteHeader(http.StatusOK)
|
|
|
json.NewEncoder(w).Encode(node)
|
|
@@ -969,6 +993,12 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ if servercfg.Is_EE {
|
|
|
+ if err = logic.EnterpriseResetAllPeersFailovers(node.ID, node.Network); err != nil {
|
|
|
+ logger.Log(0, "failed to reset failover lists during node delete for node", node.Name, node.Network)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
logic.ReturnSuccessResponse(w, r, nodeid+" deleted.")
|
|
|
|
|
|
logger.Log(1, r.Header.Get("user"), "Deleted node", nodeid, "from network", params["network"])
|