-
Notifications
You must be signed in to change notification settings - Fork 447
Add --oss flag to the ECS generator script #991
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
74e4ee4
Reorder flags in docs to start with the more user focused ones
5256093
Add the --oss flag
a1398ff
Implement simple OSS type fallback
d689b53
Changelog
0fa7554
Add docs in the USAGE.md file
a503006
Fix small mistake in another part of the docs
cd16747
If, not when
1bb60b8
Code formatting
c947c4f
Try to make it clear that the --oss flag will be unnecessary for most…
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| # This script performs a best effort fallback of basic data types to equivalent | ||
| # OSS data types. | ||
| # Note however that not all basic data types have an OSS replacement. | ||
| # | ||
| # The way this script is currently written, it has to be run on the fields *before* | ||
| # the cleaner script applies defaults, as there's no concept of defaults here. | ||
| # But since it navigates using the visitor script, it can easily be moved around | ||
| # in the chain, provided we add support for defaults as well. | ||
| # | ||
| # For now, no warning is output on basic fields that don't have a fallback. | ||
| # This could be improved if ECS starts using such types. | ||
|
|
||
| from schema import visitor | ||
|
|
||
| TYPE_FALLBACKS = { | ||
webmat marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| 'wildcard': 'keyword', | ||
| 'version': 'keyword' | ||
| } | ||
|
|
||
|
|
||
| def fallback(fields): | ||
| """Verify all fields for basic data type usage, and fallback to an OSS equivalent if appropriate.""" | ||
| visitor.visit_fields(fields, field_func=perform_fallback) | ||
|
|
||
|
|
||
| def perform_fallback(field): | ||
| """Performs a best effort fallback of basic data types to equivalent OSS data types.""" | ||
| if field['field_details']['type'] in TYPE_FALLBACKS.keys(): | ||
| field['field_details']['type'] = TYPE_FALLBACKS[field['field_details']['type']] | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,35 @@ | ||
| import os | ||
| import pprint | ||
| import sys | ||
| import unittest | ||
|
|
||
| sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) | ||
|
|
||
| from schema import oss | ||
| from schema import visitor | ||
|
|
||
|
|
||
| class TestSchemaOss(unittest.TestCase): | ||
|
|
||
| def setUp(self): | ||
| self.maxDiff = None | ||
|
|
||
| def test_wildcard_fallback(self): | ||
| field = {'field_details': {'name': 'myfield', 'type': 'wildcard'}} | ||
| oss.perform_fallback(field) | ||
| self.assertEqual('keyword', field['field_details']['type']) | ||
|
|
||
| def test_version_fallback(self): | ||
| field = {'field_details': {'name': 'myfield', 'type': 'version'}} | ||
| oss.perform_fallback(field) | ||
| self.assertEqual('keyword', field['field_details']['type']) | ||
|
|
||
| def test_basic_without_fallback(self): | ||
| field = {'field_details': {'name': 'myfield', 'type': 'histogram'}} | ||
| oss.perform_fallback(field) | ||
| self.assertEqual('histogram', field['field_details']['type']) | ||
|
|
||
| def test_oss_no_fallback(self): | ||
| field = {'field_details': {'name': 'myfield', 'type': 'keyword'}} | ||
| oss.perform_fallback(field) | ||
| self.assertEqual('keyword', field['field_details']['type']) |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.