Browse Source

switched ingress stuff

worker-9 4 years ago
parent
commit
60c5f06679
2 changed files with 34 additions and 3 deletions
  1. 19 0
      controllers/extClientHttpController.go
  2. 15 3
      controllers/nodeHttpController.go

+ 19 - 0
controllers/extClientHttpController.go

@@ -393,6 +393,25 @@ func DeleteExtClient(network string, clientid string) error {
 	return err
 }
 
+/**
+ * Deletes ext clients based on gateway (mac) of ingress node and network
+ */
+func DeleteGatewayExtClients(gatewayID string, networkName string) error {
+	currentExtClients, err := GetNetworkExtClients(networkName)
+	if err != nil {
+		return err
+	}
+	for _, extClient := range currentExtClients {
+		if extClient.IngressGatewayID == gatewayID {
+			if err = DeleteExtClient(networkName, extClient.ClientID); err != nil {
+				functions.PrintUserLog("netmaker", "failed to remove ext client "+extClient.ClientID, 2)
+				continue
+			}
+		}
+	}
+	return nil
+}
+
 //Delete a extclient
 //Pretty straightforward
 func deleteExtClient(w http.ResponseWriter, r *http.Request) {

+ 15 - 3
controllers/nodeHttpController.go

@@ -669,6 +669,7 @@ func CreateIngressGateway(netid string, macaddress string) (models.Node, error)
 	node.PostUp = postUpCmd
 	node.PostDown = postDownCmd
 	node.PullChanges = "yes"
+	node.UDPHolePunch = "no"
 	key, err := functions.GetRecordKey(node.MacAddress, node.Network)
 	if err != nil {
 		return models.Node{}, err
@@ -699,16 +700,27 @@ func deleteIngressGateway(w http.ResponseWriter, r *http.Request) {
 	json.NewEncoder(w).Encode(node)
 }
 
-func DeleteIngressGateway(network, macaddress string) (models.Node, error) {
+func DeleteIngressGateway(networkName string, macaddress string) (models.Node, error) {
 
-	node, err := functions.GetNodeByMacAddress(network, macaddress)
+	node, err := functions.GetNodeByMacAddress(networkName, macaddress)
+	if err != nil {
+		return models.Node{}, err
+	}
+	network, err := functions.GetParentNetwork(networkName)
 	if err != nil {
 		return models.Node{}, err
 	}
+	// delete ext clients belonging to ingress gateway
+	if err = DeleteGatewayExtClients(macaddress, networkName); err != nil {
+		return models.Node{}, err
+	}
+
+	node.UDPHolePunch = network.DefaultUDPHolePunch
 	node.LastModified = time.Now().Unix()
 	node.IsIngressGateway = "no"
 	node.IngressGatewayRange = ""
 	node.PullChanges = "yes"
+
 	key, err := functions.GetRecordKey(node.MacAddress, node.Network)
 	if err != nil {
 		return models.Node{}, err
@@ -721,7 +733,7 @@ func DeleteIngressGateway(network, macaddress string) (models.Node, error) {
 	if err != nil {
 		return models.Node{}, err
 	}
-	err = SetNetworkNodesLastModified(network)
+	err = SetNetworkNodesLastModified(networkName)
 	return node, err
 }