def schema_mandatory_attributes(schema): """Ensures for the presence of the mandatory schema attributes and raises if any are missing""" current_schema_attributes = sorted(list(schema['field_details'].keys()) + list(schema['schema_details'].keys())) missing_attributes = ecs_helpers.list_subtract(SCHEMA_MANDATORY_ATTRIBUTES, current_schema_attributes) if len(missing_attributes) > 0: msg = "Schema {} is missing the following mandatory attributes: {}.\nFound these: {}".format( schema['field_details']['name'], ', '.join(missing_attributes), current_schema_attributes) raise ValueError(msg) if 'reusable' in schema['schema_details']: reuse_attributes = sorted(schema['schema_details']['reusable'].keys()) missing_reuse_attributes = ecs_helpers.list_subtract(['expected', 'top_level'], reuse_attributes) if len(missing_reuse_attributes) > 0: msg = "Reusable schema {} is missing the following reuse attributes: {}.\nFound these: {}".format( schema['field_details']['name'], ', '.join(missing_reuse_attributes), reuse_attributes) raise ValueError(msg)
def field_mandatory_attributes(field): '''Ensures for the presence of the mandatory field attributes and raises if any are missing''' if ecs_helpers.is_intermediate(field): return current_field_attributes = sorted(field['field_details'].keys()) missing_attributes = ecs_helpers.list_subtract(FIELD_MANDATORY_ATTRIBUTES, current_field_attributes) if len(missing_attributes) > 0: msg = "Field is missing the following mandatory attributes: {}.\nFound these: {}.\nField details: {}" raise ValueError(msg.format(', '.join(missing_attributes), current_field_attributes, field))
def field_mandatory_attributes(field): """Ensures for the presence of the mandatory field attributes and raises if any are missing""" if ecs_helpers.is_intermediate(field): return current_field_attributes = sorted(field['field_details'].keys()) missing_attributes = ecs_helpers.list_subtract(FIELD_MANDATORY_ATTRIBUTES, current_field_attributes) # `alias` fields require a target `path` attribute. if field['field_details'].get('type') == 'alias' and 'path' not in current_field_attributes: missing_attributes.append('path') # `scaled_float` fields require a `scaling_factor` attribute. if field['field_details'].get('type') == 'scaled_float' and 'scaling_factor' not in current_field_attributes: missing_attributes.append('scaling_factor') if len(missing_attributes) > 0: msg = "Field is missing the following mandatory attributes: {}.\nFound these: {}.\nField details: {}" raise ValueError(msg.format(', '.join(missing_attributes), current_field_attributes, field))