make the jar manager to have some of the checks already present in the old load_elasticsearch_jars
removed the load_elasticsearch_jars! method as it's a legacy code from when ES was delivered within LS, nowadays this comes within the differents plugins
clean up Environment::JAR_DIR as is another legacy variable not used anymore
move the jar loading code within the environment module
ammend previous commit adding more clear code
ammend previous commits
added a few simple unit test for the jar manager in the environment module
refactor spec naming
dry out common code for loading jars
clean up env_spec bein in the util dir
cleaning up logstash-core dependencies related to jar-dependencies
ammend stale maen patches created for the LS way of using maven plugins
applied some comments coming from the review by @ph
bring back the maven tools and jar-dependency code as we still need some code like this for the kafka plugins
Revert "bring back the maven tools and jar-dependency code as we still need some code like this for the kafka plugins"
This reverts commit c23f456362776c0a600d78369c2ece8789fa49c2.
Fixes#2980
Beforehand, Event#include? would depend on a value of a certain
field to be non-nil as the signal that a field exists. This breaks
when a field's value is nil, even if the field exists. It is now
possible to check for existance of both normal and metadata fields.
Closes#2977.
Fixes#2997
rework output function init
removed double logger.debug
use event constant
fix LogStash::SHUTDOWN to actually be the shutdown signal event push in the pipeline
fix outputs conditionals handling
code gen methods not lambdas, remove intermediate arrays, base multi_filter to simplify code gen
remove block from filter_func
force_encoding at compile time
commented multi_filter method
typo
DRY & cleanups
optimizations: string constants, timestamp initialization, useless logger instance
specs for signal events
Filters::Base interface and multi_filter method
closes#2870Fixes#2869
All internal references, flags, kibana, vendor, everything must go!
If it referenced kibana or logstash-web, it is deprecated, and removed!
Operators are standing by...
Fixes#2661
squashed 113 commits by @ph, @colinsurprenant, @jordansissel, @purbon, @jsvd
cleaning the environment.rb
initial work
remove multiples polyglot
force to load rubygems
notice
point to one config
update lock
bootstrap will package the standard application until we have the plugin manager on top of the gemfile
add the gem path to find bundler
fixing dependencies
add gemfiles and bundle
comment platform requiremments in the gemfile
Set `Gem.paths = ...` to the GEM_HOME
Without this, `bin/logstash` will error:
LoadError: no such file to load -- bundler
require at org/jruby/RubyKernel.java:1071
require at C:/Users/jls/Documents/GitHub/logstash/vendor/jruby/lib/ruby/shared/rubygems/core_ext/kernel_require
.rb:55
set_gem_paths! at C:/Users/jls/Documents/GitHub/logstash/lib/logstash/environment.rb:64
(root) at C:\Users\jls\Documents\GitHub\logstash\lib\logstash\runner.rb:8
Patch JRuby's jar_installer.rb with a newer version
jar-dependencies is shipped by default with JRuby. However, the version
it ships with has a bug, and despite upgrading jar-dependencies to
0.1.7, which has the fix, JRuby continues to load the "shipped" version
which has a bug.
This patch will patch JRuby by copying in our own jar_installer.rb from
jar-dependencies master, This patching occurs while unpacking JRuby just
after `vendor:jruby`.
The jar_installer.rb is MIT-licensed and no changes were made.
Add `test:plugins` to test all installed plugins
Tell rspec to do the wildcards instead of trying to make the shell do it.
This fixes test runs on Windows (which doesn't do wildcards like this).
The solution was to tell RSpec to look for all files matching a certain path pattern
within the GEM_HOME.
do not run bundle install twice for test:plugins
Gemfile manipulation classes
Gemfile now in root
install POC with new Gemfile classes
specs for the Gemfile classes
header, some bug fixes
spec header
WIP pluginmanager refactor
generated format
updated .lock
unused file
removed --proxy option
fail elegantly
initial support for update
refactor invoke_bundler, debug output
removed old .lock file
no plugin Gemfile
use clamp error handling
reenable list, some cleanups
support for more finders
refactored using new finders
refactor using is_installed_plugin? and some cleanups
verify valid plugin and update all now only update plugins not all gems
support multiple plugins argument, --force option to bypass validation
list only explicitly installed plugins by default, --all option to include dependencies
support multiple plugins argument
renamed all_installed_plugins to all_installed_plugins_gem_specs and return specs, added comments
remove then
update_gem bug, comments
moved gems as development dependencies
updated .lock file
support for :without
--development option, better output feedback, cleanups
abort when no plugins
cosmetic
param fix, cleanups
removed deprecated .lock files
remove deprecated bundler_install_command and struggling with set_gem_paths
refactored all bundler stuff into LogStash::Bundler
rakelib refactor
refactored bundler code
Bundler.real_fuckin_reset
real_fuckin_reset is now reset_settings, removed unnecessary resetings, cleanups
duplicate plugins requirements merging
cleanups
added vendor:rake, cleanups
broke test tasks into 2 steps, first invoke install then test
rake task name fix
proper error exit code
Freezing the jar-dependencies, ruby-maven, tools
set gem paths on error
renamed TEST_PLUGINS to CORE_PLUGINS, added comments
replace test by core, cleanups
DRYied test tasks
missing gemspec
fixed output
correct image build for artifacts
removed deprecated Gemfiles
fix update with multiple plugins arguments
fix update with multiple plugins arguments
remove deprecated code
implicit begin, explicit block
spec for LogStash::Bundler
remove explit require of rubygems
renamed Environment.set_gem_paths! to bundler_setup!
rename Dsl to DSL
respect to_s contract and return empty string not nil
rename DSL.parse gemfile argument to gemfile_content
better error message
renamed --force to --[no-]verify
refactored exit error handling
use explicit array items in iterators
fix --development switch validation, cleaned bundler_options hash init
renamed is_xxx? methods to xxx?
use direct method call on collection
removed double negative, typo
move maven tools monkey patch into maven_tools_patch.rb
renamed build-image to prepare
fix forgotten argument name change
namespace cleanups
spec files glob pattern
cleanup
cleanup
cleanup
Fix the file-dependencies version to 0.1.5 to fix path issues on windows
monkeypatch Rubygems to silence ffi warning
list all plugin gems by default, new options
adding rake task to get faster feedback loop on windows
refactor bat scripts
Use an unreleased filedependencies gem and skip installing drupal
bump file-dependencies
use the released gem of file-dependencies
Add a set of scripts that simplify: * The necessary setup for the CI test to be executed. * The actuall CI test execution, having a different scripts for each different workflow. This makes the test execution simpler and standard, so changes in internal task don't need big changes in the CI config. It also documents and makes easy for developers to run the tests.
Fixes#2640
refactored test to not depend on STDOUT
create a .rspec file to pass some options used while the code is in the testing environment
add coveralls and simplecov as a development dependencies so we can run coverage tests
remove unnecessary .bundle directory from the artifact
In a release, the .bundle/config has a BUNDLE_PATH setting that can
interfere by misleading the plugin manager into not seeing the
vendor/bundle path.
Fixes#2647Fixes#2475
mock the coverage report from devutils into the general spec helper
Revert "mock the coverage report from devutils into the general spec helper"
This reverts commit 4c7e265e302b9e9450a44469ac571ad39fb7d433.
Fixes#2412
refactor Plugin#lookup to resolve existing plugin class in the namespace but not in the plugins path
ex noop filter specs refactored into a filter base_spec
reverted locales/en.yml changes
plugin lookup logic refactor
fix the new spec_helper location
check if class in a LogStash::Plugin
add debug log
typo
test for plugin class and config_name method
replaced :file with :path
use Class.new and cosmetic changes
Fixes#2095
This fixes Accessors so that when one `get`s a
field reference, it does not inject an empty path
into the original store
before, there were side-effects:
data = {}
a = LogStash::Util::Accessors.new(data)
a.get("[hello][world]")
//(data mutates) data == {"hello" => {}}
Fixes#2294
Previously: Filters like mutate would throw an exception when attempting
to convert an element within an array to a specific type. This was
raising an error because the index in the field reference was being
treated as a String instead of an integer representing the index of the
field to convert.
Now: Plugins like Mutate can access and convert elements within arrays
to specific types, or, updating their values.
Plugins have moved to https://github.com/logstash-plugins/... into
individual repositories. One plugin per repo.
* Add plugin install task and add required plugins for testing
* Adding a plugin task to install plugins
* Added required plugins to a prep task for the test part.
Fixes#1984
The new way to build is using 'rake' and not 'make'.
For some some attempt at compatibility, any 'make' invocation will
invoke rake. `make foo` will invoke `rake foo`.
This is for #1640
Major changes:
* rake is used instead of make. This allows us to more easily improve,
debug, and test the build tooling.
* The build process can be bootstrapped from any Ruby that has
Rake available. Bootstrapping rake is automatic will download JRuby and
re-execute itself under JRuby.
* rpm and deb packages no longer list any java as dependencies. This
is the result of user discomfort and discussions which concluded
that there is no good way to "depend" on Java via rpm or deb.
Internal changes:
* Vendoring paths are project-based. Each vendor directory is now
specific as vendor/<project>/... For example, JRuby is dumped into
vendor/jruby/...
Other changes:
* We don't use jruby-complete anymore. We now use bin/jruby as the entry point.
This improves the startup time of Logstash on my laptop by approximately
1.5 seconds (~25% speedup of startup time). Testing `bin/logstash
version` speed; 5 runs each:
* Before patch: 7.27 7.55 7.26 7.42 7.47
* After patch: 5.54 5.97 5.67 5.58 5.54
Smaller changes:
- removed 'env' subcommand
- Remove 'deps' subcommand. Replaced by 'rake vendor:all'
- Add gem_home method for this platform's GEM_HOME
- .travis.yml removed because we haven't used Travis in a long time.
- bin/logstash exits nonzero with a useful message if JRuby can't be found.
Notes:
Invoke bundler via system() call instead of Bundler::CLI.
After some discussion in #bundler on freenode (very helpful!) on how
to do what we need to do with bundler, I was encouraged to not use the
bundler api from ruby, so system() it is.
Patch slightly modified to fit the new model of packaging (ruby instead
of shell invocation), but original author is obazoud in #1008.
Richard Pijnenburg helped with some of the code and was lovely in
helping test it.
Fixes#1640
This bug was introduced in the recent metadata patch. The problem was
caused by a testing-specific monkeypatch on LogStash::Event#[]=
I fixed this by moving the strict_set input validation from
LogStash::Util::Accessors to LogStash::Event as a class method.
Then monkeypatched the Event#[]= to invoke validation before doing
the set operation. This now makes it call the original []= method
and should help keep future breakages from happening.
Fixes#1936
This makes @metadata basically a way to store data along with an event
that is *NOT* included when serialized to an output.
Use cases:
- For elasticsearch output, set the index, type, document_id, routing
key, etc with metadata and you won't be burdened by storing a filed
named 'index' in your document!
- For elasticsearch input, we can set @metadata fields for the
index/type/document_id instead of polluting the event data itself.
- No need for "short-lived fields" such as timestamps. For example, a
common pattern is to use grok to capture a timestamp text and give that
to the date filter and finally use mutate to remove that captured text
field.
- Provide a kind of scratch space for events that are not part of the
event data.
Fixes#1834Fixes#1836