@@ -125,6 +125,10 @@ func validateInferenceService(isvc *InferenceService) (admission.Warnings, error
125125 return allWarnings , err
126126 }
127127
128+ if err := validatePredictor (isvc ); err != nil {
129+ return allWarnings , err
130+ }
131+
128132 for _ , component := range []Component {
129133 & isvc .Spec .Predictor ,
130134 isvc .Spec .Transformer ,
@@ -146,6 +150,40 @@ func validateInferenceService(isvc *InferenceService) (admission.Warnings, error
146150 return allWarnings , nil
147151}
148152
153+ func validatePredictor (isvc * InferenceService ) error {
154+ predictor := isvc .Spec .Predictor
155+
156+ // log predictor
157+ validatorLogger .Info ("Incoming predictor struct" , "predictor" , predictor )
158+
159+ // in most of the case, standard predictors will all be packed into `predictor.model`, and decide the backend process through `modelFormat.name``
160+ switch {
161+ case predictor .SKLearn != nil && predictor .SKLearn .Name != "" :
162+ return errors .New ("the 'name' field is not allowed in standard predictor" )
163+ case predictor .XGBoost != nil && predictor .XGBoost .Name != "" :
164+ return errors .New ("the 'name' field is not allowed in standard predictor" )
165+ case predictor .Tensorflow != nil && predictor .Tensorflow .Name != "" :
166+ return errors .New ("the 'name' field is not allowed in standard predictor" )
167+ case predictor .PyTorch != nil && predictor .PyTorch .Name != "" :
168+ return errors .New ("the 'name' field is not allowed in standard predictor" )
169+ case predictor .Triton != nil && predictor .Triton .Name != "" :
170+ return errors .New ("the 'name' field is not allowed in standard predictor" )
171+ case predictor .ONNX != nil && predictor .ONNX .Name != "" :
172+ return errors .New ("the 'name' field is not allowed in standard predictor" )
173+ case predictor .HuggingFace != nil && predictor .HuggingFace .Name != "" :
174+ return errors .New ("the 'name' field is not allowed in standard predictor" )
175+ case predictor .PMML != nil && predictor .PMML .Name != "" :
176+ return errors .New ("the 'name' field is not allowed in standard predictor" )
177+ case predictor .LightGBM != nil && predictor .LightGBM .Name != "" :
178+ return errors .New ("the 'name' field is not allowed in standard predictor" )
179+ case predictor .Paddle != nil && predictor .Paddle .Name != "" :
180+ return errors .New ("the 'name' field is not allowed in standard predictor" )
181+ case predictor .Model != nil && predictor .Model .Name != "" :
182+ return errors .New ("the 'name' field is not allowed in standard predictor" )
183+ }
184+ return nil
185+ }
186+
149187// validateMultiNodeVariables validates when there is workerSpec set in isvc
150188func validateMultiNodeVariables (isvc * InferenceService ) error {
151189 if isvc .Spec .Predictor .WorkerSpec != nil {
0 commit comments