@@ -26,6 +26,7 @@ import (
2626 "github.com/devtron-labs/devtron/pkg/cluster/rbac"
2727 "github.com/devtron-labs/devtron/pkg/cluster/read"
2828 bean3 "github.com/devtron-labs/devtron/pkg/k8s/bean"
29+ "gopkg.in/go-playground/validator.v9"
2930 "net/http"
3031 "strconv"
3132
@@ -60,6 +61,7 @@ type K8sCapacityRestHandlerImpl struct {
6061 environmentService environment.EnvironmentService
6162 clusterRbacService rbac.ClusterRbacService
6263 clusterReadService read.ClusterReadService
64+ validator * validator.Validate
6365}
6466
6567func NewK8sCapacityRestHandlerImpl (logger * zap.SugaredLogger ,
@@ -68,7 +70,7 @@ func NewK8sCapacityRestHandlerImpl(logger *zap.SugaredLogger,
6870 clusterService cluster.ClusterService ,
6971 environmentService environment.EnvironmentService ,
7072 clusterRbacService rbac.ClusterRbacService ,
71- clusterReadService read.ClusterReadService ) * K8sCapacityRestHandlerImpl {
73+ clusterReadService read.ClusterReadService , validator * validator. Validate ) * K8sCapacityRestHandlerImpl {
7274 return & K8sCapacityRestHandlerImpl {
7375 logger : logger ,
7476 k8sCapacityService : k8sCapacityService ,
@@ -78,6 +80,7 @@ func NewK8sCapacityRestHandlerImpl(logger *zap.SugaredLogger,
7880 environmentService : environmentService ,
7981 clusterRbacService : clusterRbacService ,
8082 clusterReadService : clusterReadService ,
83+ validator : validator ,
8184 }
8285}
8386
@@ -401,6 +404,15 @@ func (handler *K8sCapacityRestHandlerImpl) DrainNode(w http.ResponseWriter, r *h
401404 common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
402405 return
403406 }
407+
408+ // Validate the struct using the validator
409+ err = handler .validator .Struct (nodeDrainReq )
410+ if err != nil {
411+ handler .logger .Errorw ("validation error" , "err" , err , "payload" , nodeDrainReq )
412+ common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
413+ return
414+ }
415+
404416 userId , err := handler .userService .GetLoggedInUser (r )
405417 if userId == 0 || err != nil {
406418 common .WriteJsonResp (w , err , "Unauthorized User" , http .StatusUnauthorized )
0 commit comments