logstash-filter-mutate 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/logstash/filters/mutate.rb +16 -4
- data/logstash-filter-mutate.gemspec +1 -2
- data/spec/filters/mutate_spec.rb +46 -1
- metadata +18 -18
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 2deb0b46d89acc42b78efb99ca7b9ff488c0549a
         | 
| 4 | 
            +
              data.tar.gz: 3fcf4bdb6d92975fcb936a5f215587b3d1b0c0d8
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 9cfdca9495c7a3c22c29886a4724aa9549f43a6ab6f7754e48d236cd212135bdcc3849e449b4df45719c07e8373474e6734e7c6f4a79b489db59170a367d5b63
         | 
| 7 | 
            +
              data.tar.gz: 0322e26d0696ac60709dd205df9377a91016d8d510e4496cc6e459e436f684140dc5ecd3232980958c0e940617149ef5a1c6123e03873990fcd13e270e36c01f
         | 
| @@ -63,7 +63,13 @@ class LogStash::Filters::Mutate < LogStash::Filters::Base | |
| 63 63 | 
             
              # integer. If the field value is an array, all members will be converted.
         | 
| 64 64 | 
             
              # If the field is a hash, no action will be taken.
         | 
| 65 65 | 
             
              #
         | 
| 66 | 
            -
              #  | 
| 66 | 
            +
              # If the conversion type is `boolean`, the acceptable values are:
         | 
| 67 | 
            +
              # **True:** `true`, `t`, `yes`, `y`, and `1`
         | 
| 68 | 
            +
              # **False:** `false`, `f`, `no`, `n`, and `0`
         | 
| 69 | 
            +
              # "true" and "false".  If a value other than these is provided, it will
         | 
| 70 | 
            +
              # pass straight through and log a warning message.
         | 
| 71 | 
            +
              #
         | 
| 72 | 
            +
              # Valid conversion targets are: integer, float, string, and boolean.
         | 
| 67 73 | 
             
              #
         | 
| 68 74 | 
             
              # Example:
         | 
| 69 75 | 
             
              # [source,ruby]
         | 
| @@ -172,7 +178,7 @@ class LogStash::Filters::Mutate < LogStash::Filters::Base | |
| 172 178 |  | 
| 173 179 | 
             
              public
         | 
| 174 180 | 
             
              def register
         | 
| 175 | 
            -
                valid_conversions = %w(string integer float)
         | 
| 181 | 
            +
                valid_conversions = %w(string integer float boolean)
         | 
| 176 182 | 
             
                # TODO(sissel): Validate conversion requests if provided.
         | 
| 177 183 | 
             
                @convert.nil? or @convert.each do |field, type|
         | 
| 178 184 | 
             
                  if !valid_conversions.include?(type)
         | 
| @@ -254,8 +260,7 @@ class LogStash::Filters::Mutate < LogStash::Filters::Base | |
| 254 260 | 
             
                @convert.each do |field, type|
         | 
| 255 261 | 
             
                  next unless event.include?(field)
         | 
| 256 262 | 
             
                  original = event[field]
         | 
| 257 | 
            -
             | 
| 258 | 
            -
                  # calls convert_{string,integer,float} depending on type requested.
         | 
| 263 | 
            +
                  # calls convert_{string,integer,float,boolean} depending on type requested.
         | 
| 259 264 | 
             
                  converter = method("convert_" + type)
         | 
| 260 265 | 
             
                  if original.nil?
         | 
| 261 266 | 
             
                    next
         | 
| @@ -288,6 +293,13 @@ class LogStash::Filters::Mutate < LogStash::Filters::Base | |
| 288 293 | 
             
                return value.to_f
         | 
| 289 294 | 
             
              end # def convert_float
         | 
| 290 295 |  | 
| 296 | 
            +
              def convert_boolean(value)
         | 
| 297 | 
            +
                return true if value =~ (/^(true|t|yes|y|1)$/i)
         | 
| 298 | 
            +
                return false if value.empty? || value =~ (/^(false|f|no|n|0)$/i)
         | 
| 299 | 
            +
                @logger.warn("Failed to convert #{value} into boolean.")
         | 
| 300 | 
            +
                return value
         | 
| 301 | 
            +
              end # def convert_boolean
         | 
| 302 | 
            +
             | 
| 291 303 | 
             
              private
         | 
| 292 304 | 
             
              def gsub(event)
         | 
| 293 305 | 
             
                @gsub_parsed.each do |config|
         | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            Gem::Specification.new do |s|
         | 
| 2 2 |  | 
| 3 3 | 
             
              s.name            = 'logstash-filter-mutate'
         | 
| 4 | 
            -
              s.version         = '0.1. | 
| 4 | 
            +
              s.version         = '0.1.7'
         | 
| 5 5 | 
             
              s.licenses        = ['Apache License (2.0)']
         | 
| 6 6 | 
             
              s.summary         = "The mutate filter allows you to perform general mutations on fields. You can rename, remove, replace, and modify fields in your events."
         | 
| 7 7 | 
             
              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"
         | 
| @@ -25,4 +25,3 @@ Gem::Specification.new do |s| | |
| 25 25 | 
             
              s.add_runtime_dependency 'logstash-filter-grok'
         | 
| 26 26 | 
             
              s.add_development_dependency 'logstash-devutils'
         | 
| 27 27 | 
             
            end
         | 
| 28 | 
            -
             | 
    
        data/spec/filters/mutate_spec.rb
    CHANGED
    
    | @@ -114,6 +114,52 @@ describe LogStash::Filters::Mutate do | |
| 114 114 | 
             
                end
         | 
| 115 115 | 
             
              end
         | 
| 116 116 |  | 
| 117 | 
            +
              describe "convert strings to boolean values" do
         | 
| 118 | 
            +
                config <<-CONFIG
         | 
| 119 | 
            +
                  filter {
         | 
| 120 | 
            +
                    mutate {
         | 
| 121 | 
            +
                      convert => { "true_field"  => "boolean" }
         | 
| 122 | 
            +
                      convert => { "false_field" => "boolean" }
         | 
| 123 | 
            +
                      convert => { "true_upper"  => "boolean" }
         | 
| 124 | 
            +
                      convert => { "false_upper" => "boolean" }
         | 
| 125 | 
            +
                      convert => { "true_one"    => "boolean" }
         | 
| 126 | 
            +
                      convert => { "false_zero"  => "boolean" }
         | 
| 127 | 
            +
                      convert => { "true_yes"    => "boolean" }
         | 
| 128 | 
            +
                      convert => { "false_no"    => "boolean" }
         | 
| 129 | 
            +
                      convert => { "true_y"      => "boolean" }
         | 
| 130 | 
            +
                      convert => { "false_n"     => "boolean" }
         | 
| 131 | 
            +
                      convert => { "wrong_field" => "boolean" }
         | 
| 132 | 
            +
                    }
         | 
| 133 | 
            +
                  }
         | 
| 134 | 
            +
                CONFIG
         | 
| 135 | 
            +
                event = {
         | 
| 136 | 
            +
                  "true_field"  => "true",
         | 
| 137 | 
            +
                  "false_field" => "false",
         | 
| 138 | 
            +
                  "true_upper"  => "True",
         | 
| 139 | 
            +
                  "false_upper" => "False",
         | 
| 140 | 
            +
                  "true_one"    => "1",
         | 
| 141 | 
            +
                  "false_zero"  => "0",
         | 
| 142 | 
            +
                  "true_yes"    => "yes",
         | 
| 143 | 
            +
                  "false_no"    => "no",
         | 
| 144 | 
            +
                  "true_y"      => "Y",
         | 
| 145 | 
            +
                  "false_n"     => "N",
         | 
| 146 | 
            +
                  "wrong_field" => "none of the above"
         | 
| 147 | 
            +
                }
         | 
| 148 | 
            +
                sample event do
         | 
| 149 | 
            +
                  expect(subject["true_field"] ).to eq(true)
         | 
| 150 | 
            +
                  expect(subject["false_field"]).to eq(false)
         | 
| 151 | 
            +
                  expect(subject["true_upper"] ).to eq(true)
         | 
| 152 | 
            +
                  expect(subject["false_upper"]).to eq(false)
         | 
| 153 | 
            +
                  expect(subject["true_one"]   ).to eq(true)
         | 
| 154 | 
            +
                  expect(subject["false_zero"] ).to eq(false)
         | 
| 155 | 
            +
                  expect(subject["true_yes"]   ).to eq(true)
         | 
| 156 | 
            +
                  expect(subject["false_no"]   ).to eq(false)
         | 
| 157 | 
            +
                  expect(subject["true_y"]     ).to eq(true)
         | 
| 158 | 
            +
                  expect(subject["false_n"]    ).to eq(false)
         | 
| 159 | 
            +
                  expect(subject["wrong_field"]).to eq("none of the above")
         | 
| 160 | 
            +
                end
         | 
| 161 | 
            +
              end
         | 
| 162 | 
            +
             | 
| 117 163 | 
             
              describe "gsub on a String" do
         | 
| 118 164 | 
             
                config '
         | 
| 119 165 | 
             
                  filter {
         | 
| @@ -382,4 +428,3 @@ describe LogStash::Filters::Mutate do | |
| 382 428 | 
             
              end
         | 
| 383 429 |  | 
| 384 430 | 
             
            end
         | 
| 385 | 
            -
             | 
    
        metadata
    CHANGED
    
    | @@ -1,17 +1,18 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: logstash-filter-mutate
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.7
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Elastic
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-04- | 
| 11 | 
            +
            date: 2015-04-21 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            -
               | 
| 14 | 
            +
              name: logstash-core
         | 
| 15 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 15 16 | 
             
                requirements:
         | 
| 16 17 | 
             
                - - '>='
         | 
| 17 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -19,10 +20,7 @@ dependencies: | |
| 19 20 | 
             
                - - <
         | 
| 20 21 | 
             
                  - !ruby/object:Gem::Version
         | 
| 21 22 | 
             
                    version: 2.0.0
         | 
| 22 | 
            -
               | 
| 23 | 
            -
              prerelease: false
         | 
| 24 | 
            -
              type: :runtime
         | 
| 25 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 26 24 | 
             
                requirements:
         | 
| 27 25 | 
             
                - - '>='
         | 
| 28 26 | 
             
                  - !ruby/object:Gem::Version
         | 
| @@ -30,48 +28,50 @@ dependencies: | |
| 30 28 | 
             
                - - <
         | 
| 31 29 | 
             
                  - !ruby/object:Gem::Version
         | 
| 32 30 | 
             
                    version: 2.0.0
         | 
| 31 | 
            +
              prerelease: false
         | 
| 32 | 
            +
              type: :runtime
         | 
| 33 33 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 34 | 
            +
              name: logstash-patterns-core
         | 
| 35 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 36 | 
            +
                requirements:
         | 
| 37 | 
            +
                - - '>='
         | 
| 38 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 39 | 
            +
                    version: '0'
         | 
| 34 40 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 35 41 | 
             
                requirements:
         | 
| 36 42 | 
             
                - - '>='
         | 
| 37 43 | 
             
                  - !ruby/object:Gem::Version
         | 
| 38 44 | 
             
                    version: '0'
         | 
| 39 | 
            -
              name: logstash-patterns-core
         | 
| 40 45 | 
             
              prerelease: false
         | 
| 41 46 | 
             
              type: :runtime
         | 
| 47 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 48 | 
            +
              name: logstash-filter-grok
         | 
| 42 49 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 43 50 | 
             
                requirements:
         | 
| 44 51 | 
             
                - - '>='
         | 
| 45 52 | 
             
                  - !ruby/object:Gem::Version
         | 
| 46 53 | 
             
                    version: '0'
         | 
| 47 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 48 54 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 49 55 | 
             
                requirements:
         | 
| 50 56 | 
             
                - - '>='
         | 
| 51 57 | 
             
                  - !ruby/object:Gem::Version
         | 
| 52 58 | 
             
                    version: '0'
         | 
| 53 | 
            -
              name: logstash-filter-grok
         | 
| 54 59 | 
             
              prerelease: false
         | 
| 55 60 | 
             
              type: :runtime
         | 
| 61 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 62 | 
            +
              name: logstash-devutils
         | 
| 56 63 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 57 64 | 
             
                requirements:
         | 
| 58 65 | 
             
                - - '>='
         | 
| 59 66 | 
             
                  - !ruby/object:Gem::Version
         | 
| 60 67 | 
             
                    version: '0'
         | 
| 61 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 62 68 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 63 69 | 
             
                requirements:
         | 
| 64 70 | 
             
                - - '>='
         | 
| 65 71 | 
             
                  - !ruby/object:Gem::Version
         | 
| 66 72 | 
             
                    version: '0'
         | 
| 67 | 
            -
              name: logstash-devutils
         | 
| 68 73 | 
             
              prerelease: false
         | 
| 69 74 | 
             
              type: :development
         | 
| 70 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 71 | 
            -
                requirements:
         | 
| 72 | 
            -
                - - '>='
         | 
| 73 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 74 | 
            -
                    version: '0'
         | 
| 75 75 | 
             
            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
         | 
| 76 76 | 
             
            email: info@elastic.co
         | 
| 77 77 | 
             
            executables: []
         | 
| @@ -109,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 109 109 | 
             
                  version: '0'
         | 
| 110 110 | 
             
            requirements: []
         | 
| 111 111 | 
             
            rubyforge_project:
         | 
| 112 | 
            -
            rubygems_version: 2. | 
| 112 | 
            +
            rubygems_version: 2.2.2
         | 
| 113 113 | 
             
            signing_key:
         | 
| 114 114 | 
             
            specification_version: 4
         | 
| 115 115 | 
             
            summary: The mutate filter allows you to perform general mutations on fields. You can rename, remove, replace, and modify fields in your events.
         |