Skip to content

Commit

Permalink
Add support for scaling_factor in the generator (elastic#1042)
Browse files Browse the repository at this point in the history
  • Loading branch information
Mathieu Martin authored and ebeahan committed Oct 28, 2020
1 parent 35764fa commit 8251f45
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 3 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.next.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ Thanks, you're awesome :-) -->
#### Added

* Added the `path` key when type is `alias`, to support the [alias field type](https://www.elastic.co/guide/en/elasticsearch/reference/current/alias.html). #877
* Added support for `scaled_float`'s mandatory parameter `scaling_factor`. #1042

#### Improvements

Expand Down
2 changes: 1 addition & 1 deletion scripts/generators/beats.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def fieldset_field_array(source_fields, df_whitelist, fieldset_prefix):
allowed_keys = ['name', 'level', 'required', 'type', 'object_type',
'ignore_above', 'multi_fields', 'format', 'input_format',
'output_format', 'output_precision', 'description',
'example', 'enabled', 'index', 'path']
'example', 'enabled', 'index', 'path', 'scaling_factor']
multi_fields_allowed_keys = ['name', 'type', 'norms', 'default_field', 'normalizer', 'ignore_above']

fields = []
Expand Down
2 changes: 2 additions & 0 deletions scripts/generators/es_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ def entry_for(field):
ecs_helpers.dict_copy_existing_keys(field, field_entry, ['norms'])
elif field['type'] == 'alias':
ecs_helpers.dict_copy_existing_keys(field, field_entry, ['path'])
elif field['type'] == 'scaled_float':
ecs_helpers.dict_copy_existing_keys(field, field_entry, ['scaling_factor'])

if 'multi_fields' in field:
field_entry['fields'] = {}
Expand Down
6 changes: 4 additions & 2 deletions scripts/schema/cleaner.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,10 +159,12 @@ def field_mandatory_attributes(field):
current_field_attributes = sorted(field['field_details'].keys())
missing_attributes = ecs_helpers.list_subtract(FIELD_MANDATORY_ATTRIBUTES, current_field_attributes)

# The `alias` type requires a target path.
# https:/elastic/ecs/issues/876
# `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: {}"
Expand Down
13 changes: 13 additions & 0 deletions scripts/tests/test_es_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,19 @@ def test_entry_for_alias(self):
}
self.assertEqual(es_template.entry_for(test_map), exp)

def test_entry_for_scaled_float(self):
test_map = {
'name': 'test.scaled_float',
'type': 'scaled_float',
'scaling_factor': 1000
}

exp = {
'type': 'scaled_float',
'scaling_factor': 1000
}
self.assertEqual(es_template.entry_for(test_map), exp)


if __name__ == '__main__':
unittest.main()
7 changes: 7 additions & 0 deletions scripts/tests/unit/test_schema_cleaner.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,13 @@ def test_field_raises_on_alias_missing_path_attribute(self):
"mandatory attributes: {}".format("path")):
cleaner.field_mandatory_attributes(field)

def test_raises_on_missing_scaling_factor(self):
field = self.schema_process()['process']['fields']['pid']
field['field_details']['type'] = "scaled_float"
with self.assertRaisesRegex(ValueError,
"mandatory attributes: {}".format("scaling_factor")):
cleaner.field_mandatory_attributes(field)

def test_field_simple_cleanup(self):
my_field = {
'field_details': {
Expand Down

0 comments on commit 8251f45

Please sign in to comment.