Ver código fonte

add OS checks for inet gws

abhishek9686 1 ano atrás
pai
commit
c81cdaf91a
2 arquivos alterados com 12 adições e 0 exclusões
  1. 9 0
      pro/controllers/inet_gws.go
  2. 3 0
      pro/logic/nodes.go

+ 9 - 0
pro/controllers/inet_gws.go

@@ -51,6 +51,15 @@ func createInternetGw(w http.ResponseWriter, r *http.Request) {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
 		return
 	}
+	host, err := logic.GetHost(node.HostID.String())
+	if err != nil {
+		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
+		return
+	}
+	if host.OS != models.OS_Types.Linux {
+		logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("only linux nodes can be made internet gws"), "badrequest"))
+		return
+	}
 	err = proLogic.ValidateInetGwReq(node, request)
 	if err != nil {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))

+ 3 - 0
pro/logic/nodes.go

@@ -18,6 +18,9 @@ func ValidateInetGwReq(inetNode models.Node, req models.InetNodeReq) error {
 		if err != nil {
 			return err
 		}
+		if clientHost.OS != models.OS_Types.Linux && clientHost.OS != models.OS_Types.Windows {
+			return errors.New("can only attach linux or windows machine to a internet gateway")
+		}
 		if clientNode.IsInternetGateway {
 			return fmt.Errorf("node %s acting as internet gateway cannot use another internet gateway", clientHost.Name)
 		}