def validate_batch_jobdef()

in syndicate/core/build/validator/batch_jobdef_validator.py [0:0]


def validate_batch_jobdef(jobdef_name, jobdef_meta):
    """
    Performs check of Batch Job Definition resources.
    :param jobdef_name: name of resource
    :param jobdef_meta: resource definition

    :raises AssertionError in case of invalidity.

    :return: None
    """
    jobdef_config = [
        {
            'field_name': 'job_definition_name',
            'field_value': jobdef_name,
            'prefix': '',
            'validators': [
                _validate_required_field
            ]
        },
        {
            'field_name': 'job_definition_type',
            'field_value': jobdef_meta.get('job_definition_type'),
            'field_options': JOB_DEFINITION_TYPES,
            'prefix': '',
            'required': True,
            'validators': [
                _validate_options_field
            ]
        },
        {
            'field_name': 'parameters',
            'field_value': jobdef_meta.get('parameters'),
            'prefix': '',
            'required_type': dict,
            'validators': [
                _validate_field_type
            ]
        },
        {
            'field_name': 'retry_strategy',
            'field_value': jobdef_meta.get('retry_strategy'),
            'prefix': '',
            'required_type': dict,
            'validators': [
                _validate_field_type
            ]
        },
        {
            'field_name': 'propagate_tags',
            'field_value': jobdef_meta.get('propagate_tags'),
            'prefix': '',
            'required_type': bool,
            'validators': [
                _validate_field_type
            ]
        },
        {
            'field_name': 'timeout',
            'field_value': jobdef_meta.get('timeout'),
            'prefix': '',
            'required_type': dict,
            'validators': [
                _validate_field_type
            ]
        },
        {
            'field_name': 'tags',
            'field_value': jobdef_meta.get('tags'),
            'prefix': '',
            'required_type': dict,
            'validators': [
                _validate_field_type
            ]
        },
        {
            'field_name': 'platform_capabilities',
            'field_value': jobdef_meta.get('platform_capabilities'),
            'prefix': '',
            'required_type': list,
            'validators': [
                _validate_field_type
            ]
        }
    ]

    job_definition_type = jobdef_meta.get('job_definition_type')
    container_properties = jobdef_meta.get('container_properties')
    node_properties = jobdef_meta.get('node_properties')

    _process_config(jobdef_config)

    if job_definition_type == 'container':
        if not container_properties and not node_properties:
            raise AssertionError(
                "Either 'container_properties' or 'node_properties' must be specified "
                "for 'container' job definition type."
            )
    if container_properties:
        _validate_container_properties(container_properties)
    if node_properties:
        _validate_node_properties(node_properties)