@@ -286,8 +286,7 @@ def validate_values(data):
286286 @classmethod
287287 def validate_typed_values (cls , data ):
288288 for procfile_type , values in data .items ():
289- if not re .match (PROCTYPE_MATCH , procfile_type ):
290- raise serializers .ValidationError (PROCTYPE_MISMATCH_MSG )
289+ validate_procfile_type (procfile_type )
291290 if values is None : # use NoneType to unset an item
292291 continue
293292 cls .validate_values (values )
@@ -297,8 +296,7 @@ def validate_typed_values(cls, data):
297296 def validate_limits (data ):
298297 req_plan_ids = []
299298 for procfile_type , plan_id in data .items ():
300- if not re .match (PROCTYPE_MATCH , procfile_type ):
301- raise serializers .ValidationError (PROCTYPE_MISMATCH_MSG )
299+ validate_procfile_type (procfile_type )
302300 if plan_id is not None :
303301 req_plan_ids .append (plan_id )
304302 plan_ids = [plan .id for plan in models .limit .LimitPlan .objects .filter (
@@ -311,8 +309,7 @@ def validate_limits(data):
311309 @staticmethod
312310 def validate_termination_grace_period (data ):
313311 for procfile_type , value in data .items ():
314- if not re .match (PROCTYPE_MATCH , procfile_type ):
315- raise serializers .ValidationError (PROCTYPE_MISMATCH_MSG )
312+ validate_procfile_type (procfile_type )
316313 if value is None : # use NoneType to unset an item
317314 continue
318315 timeout = re .match (TERMINATION_GRACE_PERIOD_MATCH , str (value ))
@@ -324,37 +321,38 @@ def validate_termination_grace_period(data):
324321
325322 @staticmethod
326323 def validate_tags (data ):
327- for key , value in data .items ():
328- if value is None : # use NoneType to unset an item
329- continue
330-
331- # split key into a prefix and name
332- if '/' in key :
333- prefix , name = key .split ('/' )
334- else :
335- prefix , name = None , key
324+ for procfile_type , values in data .items ():
325+ validate_procfile_type (procfile_type )
326+ for key , value in values .items ():
327+ if value is None : # use NoneType to unset an item
328+ continue
336329
337- # validate optional prefix
338- if prefix :
339- if len ( prefix ) > 253 :
340- raise serializers . ValidationError (
341- "Tag key prefixes must 253 characters or less." )
330+ # split key into a prefix and name
331+ if '/' in key :
332+ prefix , name = key . split ( '/' )
333+ else :
334+ prefix , name = None , key
342335
343- for part in prefix .split ('/' ):
344- if not re .match (TAGVAL_MATCH , part ):
336+ # validate optional prefix
337+ if prefix :
338+ if len (prefix ) > 253 :
345339 raise serializers .ValidationError (
346- "Tag key prefixes must be DNS subdomains ." )
340+ "Tag key prefixes must 253 characters or less ." )
347341
348- # validate required name
349- if not re .match (TAGVAL_MATCH , name ):
350- raise serializers .ValidationError (
351- "Tag keys must be alphanumeric or \" -_. \" , and 1-63 characters ." )
342+ for part in prefix . split ( '/' ):
343+ if not re .match (TAGVAL_MATCH , part ):
344+ raise serializers .ValidationError (
345+ "Tag key prefixes must be DNS subdomains ." )
352346
353- # validate value if it isn't empty
354- if value and not re .match (TAGVAL_MATCH , str ( value ) ):
355- raise serializers .ValidationError (
356- "Tag values must be alphanumeric or \" -_.\" , and 1-63 characters." )
347+ # validate required name
348+ if not re .match (TAGVAL_MATCH , name ):
349+ raise serializers .ValidationError (
350+ "Tag keys must be alphanumeric or \" -_.\" , and 1-63 characters." )
357351
352+ # validate value if it isn't empty
353+ if value and not re .match (TAGVAL_MATCH , str (value )):
354+ raise serializers .ValidationError (
355+ "Tag values must be alphanumeric or \" -_.\" , and 1-63 characters." )
358356 return data
359357
360358 @staticmethod
@@ -371,8 +369,7 @@ def validate_registry(data):
371369 @staticmethod
372370 def validate_healthcheck (data ):
373371 for procfile_type , healthcheck in data .items ():
374- if not re .match (PROCTYPE_MATCH , procfile_type ):
375- raise serializers .ValidationError (PROCTYPE_MISMATCH_MSG )
372+ validate_procfile_type (procfile_type )
376373 if healthcheck is None :
377374 continue
378375 for key , value in healthcheck .items ():
@@ -630,8 +627,7 @@ def validate_path(data):
630627 logger .debug (f"mount validate_path data: { data } " )
631628 new_data = {}
632629 for key , value in data .items ():
633- if not re .match (PROCTYPE_MATCH , key ):
634- raise serializers .ValidationError (PROCTYPE_MISMATCH_MSG )
630+ validate_procfile_type (key )
635631 if value is None : # use NoneType to unset an item
636632 new_data [key ] = value
637633 continue
0 commit comments