EBernhardson has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/344637 )

Change subject: [WIP] Update logstash plugins for 5.x
......................................................................

[WIP] Update logstash plugins for 5.x

Parts of this will need to be completely rewritten. I was originally
thinking the source .gems could also be held in archiva, but after
uploading them i don't even see them in archiva.

Most likely will adjust the build script to use logstash-plugin to build
a zip file, then add our own plugin to that zip, and prompt the user
to upload to archiva or something. Perhaps embed some sha1 hashes into
the script for what .gem's to expect

Change-Id: I1ed9d1b30ffa3e39765b5f0ebc50c7f63e4d73b8
---
A .gitattributes
A .gitfat
M .gitignore
A build.sh
A logstash-filters-wikimedia/Gemfile
R logstash-filters-wikimedia/lib/logstash/filters/de_dot.rb
R logstash-filters-wikimedia/lib/logstash/outputs/sentry.rb
R logstash-filters-wikimedia/logstash-filters-wikimedia.gemspec
D logstash/filters/prune.rb
A plugins-0.5.0.zip
10 files changed, 51 insertions(+), 152 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/operations/software/logstash/plugins 
refs/changes/37/344637/1

diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..8e447cd
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,2 @@
+*.gem filter=fat -text
+*.zip filter=fat -text
diff --git a/.gitfat b/.gitfat
new file mode 100644
index 0000000..0b69f2d
--- /dev/null
+++ b/.gitfat
@@ -0,0 +1,4 @@
+[rsync]
+remote = archiva.wikimedia.org::archiva/git-fat
+options = --copy-links --verbose
+
diff --git a/.gitignore b/.gitignore
index 3300a23..4929e1c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
-*.gem
 Gemfile.lock
 .bundle
 vendor
+/target
+/logstash-filters-wikimedia/*.gem
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000..ee9026a
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+set -e
+
+echo ------------------------
+echo 'Cleanup previous builds'
+rm -rf target/
+rm -f wikimedia-logstash-plugins.zip
+rm -f logstash-filters-wikimedia/logstash-filters-wikimedia-*.gem
+echo
+
+echo ------------------------
+echo Create an empty place to build our directory structure
+mkdir -p target/logstash
+echo
+
+echo ------------------------
+echo Build the wikimedia gem
+pushd logstash-filters-wikimedia
+gem build logstash-filters-wikimedia.gemspec
+popd
+echo
+
+echo ------------------------
+echo Copy all the files we need into the plugin pack
+cp logstash-filters-wikimedia/logstash-filters-wikimedia-*.gem target/logstash
+cp -rf external/* target/logstash
+echo
+
+echo ------------------------
+echo Zip it up into a logstash 'plugin pack'
+pushd target
+zip -r ../wikimedia-logstash-plugins.zip .
+popd
+echo
+
+echo ------------------------
+echo "Build wikimedia-logstash-plugins.zip complete"
diff --git a/logstash-filters-wikimedia/Gemfile 
b/logstash-filters-wikimedia/Gemfile
new file mode 100644
index 0000000..851fabc
--- /dev/null
+++ b/logstash-filters-wikimedia/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gemspec
diff --git a/logstash/filters/de_dot.rb 
b/logstash-filters-wikimedia/lib/logstash/filters/de_dot.rb
similarity index 100%
rename from logstash/filters/de_dot.rb
rename to logstash-filters-wikimedia/lib/logstash/filters/de_dot.rb
diff --git a/logstash/outputs/sentry.rb 
b/logstash-filters-wikimedia/lib/logstash/outputs/sentry.rb
similarity index 100%
rename from logstash/outputs/sentry.rb
rename to logstash-filters-wikimedia/lib/logstash/outputs/sentry.rb
diff --git a/logstash-filters-wikimedia.gemspec 
b/logstash-filters-wikimedia/logstash-filters-wikimedia.gemspec
similarity index 88%
rename from logstash-filters-wikimedia.gemspec
rename to logstash-filters-wikimedia/logstash-filters-wikimedia.gemspec
index eaa183f..3fd2aa3 100644
--- a/logstash-filters-wikimedia.gemspec
+++ b/logstash-filters-wikimedia/logstash-filters-wikimedia.gemspec
@@ -1,10 +1,10 @@
 Gem::Specification.new do |s|
 
   s.name            = 'logstash-filters-wikimedia'
-  s.version         = '0.1.5'
+  s.version         = '0.5.0'
   s.licenses        = ['Apache License (2.0)']
   s.summary         = "Backports of logstash plugins for wikimedia 
installation. Includes the prune and de_dot filters"
-  s.description     = "This gem is a logstash plugin required to be installed 
on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. 
This gem is not a stand-alone program"
+  s.description     = "This gem is a logstash plugin required to be installed 
on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install 
/path/to/gemfile. This gem is not a stand-alone program"
   s.authors         = ["Elastic"]
   s.email           = 'i...@elastic.co'
   s.homepage        = 
"http://www.elastic.co/guide/en/logstash/current/index.html";
diff --git a/logstash/filters/prune.rb b/logstash/filters/prune.rb
deleted file mode 100644
index d85be39..0000000
--- a/logstash/filters/prune.rb
+++ /dev/null
@@ -1,149 +0,0 @@
-# encoding: utf-8
-require "logstash/filters/base"
-require "logstash/namespace"
-
-
-# The prune filter is for pruning event data from `@fields` based on 
whitelist/blacklist
-# of field names or their values (names and values can also be regular 
expressions).
-
-class LogStash::Filters::Prune < LogStash::Filters::Base
-  config_name "prune"
-
-  # Trigger whether configation fields and values should be interpolated for
-  # dynamic values.
-  # Probably adds some performance overhead. Defaults to false.
-  config :interpolate, :validate => :boolean, :default => false
-
-  # Include only fields only if their names match specified regexps, default 
to empty list which means include everything.
-  # [source,ruby] 
-  #     filter { 
-  #       %PLUGIN% { 
-  #         tags            => [ "apache-accesslog" ]
-  #         whitelist_names => [ "method", "(referrer|status)", 
"${some}_field" ]
-  #       }
-  #     }
-  config :whitelist_names, :validate => :array, :default => []
-
-  # Exclude fields which names match specified regexps, by default exclude 
unresolved `%{field}` strings.
-  # [source,ruby]
-  #     filter { 
-  #       %PLUGIN% { 
-  #         tags            => [ "apache-accesslog" ]
-  #         blacklist_names => [ "method", "(referrer|status)", 
"${some}_field" ]
-  #       }
-  #     }
-  config :blacklist_names, :validate => :array, :default => [ "%\{[^}]+\}" ]
-
-  # Include specified fields only if their values match regexps.
-  # In case field values are arrays, the fields are pruned on per array item
-  # thus only matching array items will be included.
-  # [source,ruby]
-  #     filter { 
-  #       %PLUGIN% { 
-  #         tags             => [ "apache-accesslog" ]
-  #         whitelist_values => [ "uripath", "/index.php",
-  #                               "method", "(GET|POST)",
-  #                               "status", "^[^2]" ]
-  #       }
-  #     }
-  config :whitelist_values, :validate => :hash, :default => {}
-
-  # Exclude specified fields if their values match regexps.
-  # In case field values are arrays, the fields are pruned on per array item
-  # in case all array items are matched whole field will be deleted.
-  # [source,ruby]
-  #     filter { 
-  #       %PLUGIN% { 
-  #         tags             => [ "apache-accesslog" ]
-  #         blacklist_values => [ "uripath", "/index.php",
-  #                               "method", "(HEAD|OPTIONS)",
-  #                               "status", "^[^2]" ]
-  #       }
-  #     }
-  config :blacklist_values, :validate => :hash, :default => {}
-
-  public
-  def register
-    unless @interpolate
-      @whitelist_names_regexp = Regexp.union(@whitelist_names.map {|x| 
Regexp.new(x)})
-      @blacklist_names_regexp = Regexp.union(@blacklist_names.map {|x| 
Regexp.new(x)})
-      @whitelist_values.each do |key, value|
-        @whitelist_values[key] = Regexp.new(value)
-      end
-      @blacklist_values.each do |key, value|
-        @blacklist_values[key] = Regexp.new(value)
-      end
-    end
-  end # def register
-
-  public
-  def filter(event)
-    return unless filter?(event)
-
-    hash = event.to_hash
-
-    # We need to collect fields which needs to be remove ,and only in the end
-    # actually remove it since then interpolation mode you can get unexpected
-    # results as fields with dynamic values will not match since the fields to
-    # which they refer have already been removed.
-    fields_to_remove = []
-
-    unless @whitelist_names.empty?
-      @whitelist_names_regexp = Regexp.union(@whitelist_names.map {|x| 
Regexp.new(event.sprintf(x))}) if @interpolate
-      hash.each_key do |field|
-        fields_to_remove << field unless field.match(@whitelist_names_regexp)
-      end
-    end
-
-    unless @blacklist_names.empty?
-      @blacklist_names_regexp = Regexp.union(@blacklist_names.map {|x| 
Regexp.new(event.sprintf(x))}) if @interpolate
-      hash.each_key do |field|
-        fields_to_remove << field if field.match(@blacklist_names_regexp)
-      end
-    end
-
-    @whitelist_values.each do |key, value|
-      if @interpolate
-        key = event.sprintf(key)
-        value = Regexp.new(event.sprintf(value))
-      end
-      if hash[key]
-        if hash[key].is_a?(Array)
-          subvalues_to_remove = hash[key].find_all{|x| not x.match(value)}
-          unless subvalues_to_remove.empty?
-            fields_to_remove << (subvalues_to_remove.length == 
hash[key].length ? key : { :key => key, :values => subvalues_to_remove })
-          end
-        else
-          fields_to_remove << key if not hash[key].match(value)
-        end
-      end
-    end
-
-    @blacklist_values.each do |key, value|
-      if @interpolate
-        key = event.sprintf(key)
-        value = Regexp.new(event.sprintf(value))
-      end
-      if hash[key]
-        if hash[key].is_a?(Array)
-          subvalues_to_remove = hash[key].find_all{|x| x.match(value)}
-          unless subvalues_to_remove.empty?
-            fields_to_remove << (subvalues_to_remove.length == 
hash[key].length ? key : { :key => key, :values => subvalues_to_remove })
-          end
-        else
-          fields_to_remove << key if hash[key].match(value)
-        end
-      end
-    end
-
-    fields_to_remove.each do |field|
-      if field.is_a?(Hash)
-        hash[field[:key]] = hash[field[:key]] - field[:values]
-      else
-        hash.delete(field)
-      end
-    end
-
-    filter_matched(event)
-  end # def filter
-end # class LogStash::Filters::Prune
diff --git a/plugins-0.5.0.zip b/plugins-0.5.0.zip
new file mode 100644
index 0000000..36f3629
--- /dev/null
+++ b/plugins-0.5.0.zip
@@ -0,0 +1 @@
+#$# git-fat fca84d690146884e851329fa59ef4a2c7078f9dd                93466

-- 
To view, visit https://gerrit.wikimedia.org/r/344637
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1ed9d1b30ffa3e39765b5f0ebc50c7f63e4d73b8
Gerrit-PatchSet: 1
Gerrit-Project: operations/software/logstash/plugins
Gerrit-Branch: master
Gerrit-Owner: EBernhardson <ebernhard...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to