def cleanup_fields_recursive(fields, prefix, original_fieldset=None): for (name, field) in fields.items(): # Copy field here so reusable field sets become unique copies instead of references to the original set field = field.copy() fields[name] = field temp_original_fieldset = name if ( 'reusable' in field and prefix != "") else original_fieldset if 'field_details' in field: # Deep copy the field details so we can insert different flat names for each reusable fieldset field_details = copy.deepcopy(field['field_details']) new_flat_name = prefix + name field_details['flat_name'] = new_flat_name field_details['dashed_name'] = new_flat_name.replace('.', '-').replace( '_', '-') if temp_original_fieldset: field_details['original_fieldset'] = temp_original_fieldset ecs_helpers.dict_clean_string_values(field_details) field_set_defaults(field_details) field['field_details'] = field_details if 'fields' in field: field['fields'] = field['fields'].copy() new_prefix = prefix + name + "." if 'root' in field and field['root']: new_prefix = "" cleanup_fields_recursive(field['fields'], new_prefix, temp_original_fieldset)
def field_cleanup(field): field_mandatory_attributes(field) if ecs_helpers.is_intermediate(field): return ecs_helpers.dict_clean_string_values(field['field_details']) if 'allowed_values' in field['field_details']: for allowed_value in field['field_details']['allowed_values']: ecs_helpers.dict_clean_string_values(allowed_value) field_defaults(field) field_assertions_and_warnings(field)
def field_cleanup(field): field_mandatory_attributes(field) if ecs_helpers.is_intermediate(field): return ecs_helpers.dict_clean_string_values(field['field_details']) # TODO Temporarily commented out to simplify initial rewrite review # if 'allowed_values' in field['field_details']: # for allowed_value in field['field_details']['allowed_values']: # ecs_helpers.dict_clean_string_values(allowed_value) field_defaults(field) field_assertions_and_warnings(field)
def schema_cleanup(schema): # Sanity check first schema_mandatory_attributes(schema) # trailing space cleanup ecs_helpers.dict_clean_string_values(schema['schema_details']) ecs_helpers.dict_clean_string_values(schema['field_details']) # Some defaults schema['schema_details'].setdefault('group', 2) schema['schema_details'].setdefault('root', False) schema['field_details'].setdefault('type', 'group') schema['field_details'].setdefault('short', schema['field_details']['description']) if 'reusable' in schema['schema_details']: # order to perform chained reuses. Set to 1 if it needs to happen earlier. schema['schema_details']['reusable'].setdefault('order', 2) # Precalculate stuff. Those can't be set in the YAML. if schema['schema_details']['root']: schema['schema_details']['prefix'] = '' else: schema['schema_details']['prefix'] = schema['field_details']['name'] + '.' normalize_reuse_notation(schema) # Final validity check if in strict mode schema_assertions_and_warnings(schema)
def schema_cleanup_values(schema): """Clean up one schema""" ecs_helpers.dict_clean_string_values(schema) schema_set_default_values(schema) schema_set_fieldset_prefix(schema) schema_fields_as_dictionary(schema)