generalize schedule prompts validation

This makes ScheduleSerializer behave same as WFJT nodes
Prevents providing job_type for workflow jobs, as example
This commit is contained in:
AlanCoding
2017-12-08 14:19:22 -05:00
parent 905ff7dad7
commit a9aae91634
4 changed files with 24 additions and 17 deletions

View File

@@ -3695,18 +3695,16 @@ class ScheduleSerializer(LaunchConfigurationBaseSerializer):
return value
def validate(self, attrs):
extra_data = parse_yaml_or_json(attrs.get('extra_data', {}))
if extra_data:
ujt = None
if 'unified_job_template' in attrs:
ujt = attrs['unified_job_template']
elif self.instance:
ujt = self.instance.unified_job_template
accepted, rejected, errors = ujt.accept_or_ignore_variables(extra_data)
if 'extra_vars' in errors:
errors['extra_data'] = errors.pop('extra_vars')
if errors:
raise serializers.ValidationError(errors)
ujt = None
if 'unified_job_template' in attrs:
ujt = attrs['unified_job_template']
elif self.instance:
ujt = self.instance.unified_job_template
accepted, rejected, errors = ujt._accept_or_ignore_job_kwargs(**self._build_mock_obj(attrs).prompts_dict())
if 'extra_vars' in errors:
errors['extra_data'] = errors.pop('extra_vars')
if errors:
raise serializers.ValidationError(errors)
return super(ScheduleSerializer, self).validate(attrs)
# We reject rrules if: