logstash-output-cassandra 1.0.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3ccda8e1d446951b213876866064ec3f2ff49342
4
- data.tar.gz: 16046aa9de45847c9a22713a390d3fe17b4cd3a0
3
+ metadata.gz: d59e968998f2c6a341ac05c52c2d6b2c249e9e0e
4
+ data.tar.gz: 45a7bd93395ad23786d0b7b7377dbbae7cddbe10
5
5
  SHA512:
6
- metadata.gz: 867dd5881b618c57caaa3c90c54e2cbafb2bb9baa4b82718e051641227dfdd52e0ad094834ea7ec59d4e18511804d1ba9d73a12a336888cf9b1f60def432e095
7
- data.tar.gz: 7536a4709aadb39a8deb2d7632d211eb73049c710bf1c99ba29b6e0307a0dc2e0b6bbb4d6452fb34aa322972a7f5420dd199e2331d4017a42281b0e0edb4e896
6
+ metadata.gz: f8b7b126e8f2533ec9bb8ba915f75e63b268a66b00f662f057e004f34b9d5676e7d9320f6b61770599a3c603813028d43f1ba0f33918680a790ac2c380111a10
7
+ data.tar.gz: d07ae28d48b0ba218546c25918cc510b969c562362ae3eaf2fa69f675ad82a40e3aefb0dea84a4d419dc94922ad31e91a84a15dcbaf31b1bc85269dd75cd5f09
@@ -40,7 +40,7 @@ module LogStash; module Outputs; module Cassandra
40
40
  def get_filter_transform(event)
41
41
  filter_transform = nil
42
42
  if @filter_transform_event_key
43
- filter_transform = event[@filter_transform_event_key]
43
+ filter_transform = event.get(@filter_transform_event_key)
44
44
  assert_filter_transform_structure(filter_transform)
45
45
  elsif @filter_transform.length > 0
46
46
  filter_transform = @filter_transform
@@ -59,7 +59,7 @@ module LogStash; module Outputs; module Cassandra
59
59
  def add_event_value_from_filter_to_action(event, filter, action)
60
60
  event_data = event.sprintf(filter['event_key'])
61
61
  unless filter.fetch('expansion_only', false)
62
- event_data = event[event_data]
62
+ event_data = event.get(event_data)
63
63
  end
64
64
  if filter.has_key?('cassandra_type')
65
65
  cassandra_type = event.sprintf(filter['cassandra_type'])
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-output-cassandra'
4
- s.version = '1.0.0'
4
+ s.version = '5.0.0'
5
5
  s.licenses = [ 'Apache License (2.0)' ]
6
6
  s.summary = 'Store events into Cassandra'
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'
@@ -20,16 +20,13 @@ Gem::Specification.new do |s|
20
20
 
21
21
  # Gem dependencies
22
22
  s.add_runtime_dependency 'concurrent-ruby'
23
- s.add_runtime_dependency 'logstash-core', '>= 2.0.0', '< 3.0.0'
23
+ s.add_runtime_dependency 'logstash-core-plugin-api', '>= 1.60', '<= 2.99'
24
24
  s.add_runtime_dependency 'cassandra-driver', '>= 3.0.0'
25
- s.add_development_dependency 'cabin', ['~> 0.6']
25
+ s.add_development_dependency 'cabin'
26
26
  s.add_development_dependency 'longshoreman'
27
27
  s.add_development_dependency 'logstash-devutils'
28
28
  s.add_development_dependency 'logstash-codec-plain'
29
29
  s.add_development_dependency 'simplecov'
30
30
  s.add_development_dependency 'simplecov-rcov'
31
- s.add_development_dependency 'unparser', '0.2.4'
32
- s.add_development_dependency 'metric_fu'
33
- s.add_development_dependency 'coveralls'
34
31
  s.add_development_dependency 'gems'
35
32
  end
@@ -29,7 +29,7 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
29
29
 
30
30
  it 'allows for string expansion in table names' do
31
31
  sut_instance = sut.new(default_opts.update({ 'table' => '%{[a_field]}' }))
32
- sample_event['a_field'] = 'a_value'
32
+ sample_event.set('a_field', 'a_value')
33
33
 
34
34
  action = sut_instance.parse(sample_event)
35
35
 
@@ -52,7 +52,7 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
52
52
  describe 'properly configured' do
53
53
  it 'maps the event key to the column' do
54
54
  sut_instance = sut.new(default_opts.update({ 'filter_transform' => [{ 'event_key' => 'a_field', 'column_name' => 'a_column' }] }))
55
- sample_event['a_field'] = 'a_value'
55
+ sample_event.set('a_field', 'a_value')
56
56
 
57
57
  action = sut_instance.parse(sample_event)
58
58
 
@@ -61,8 +61,8 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
61
61
 
62
62
  it 'works with multiple filter transforms' do
63
63
  sut_instance = sut.new(default_opts.update({ 'filter_transform' => [{ 'event_key' => 'a_field', 'column_name' => 'a_column' }, { 'event_key' => 'another_field', 'column_name' => 'a_different_column' }] }))
64
- sample_event['a_field'] = 'a_value'
65
- sample_event['another_field'] = 'a_second_value'
64
+ sample_event.set('a_field', 'a_value')
65
+ sample_event.set('another_field', 'a_second_value')
66
66
 
67
67
  action = sut_instance.parse(sample_event)
68
68
 
@@ -72,8 +72,8 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
72
72
 
73
73
  it 'allows for string expansion in event keys' do
74
74
  sut_instance = sut.new(default_opts.update({ 'filter_transform' => [{ 'event_key' => '%{[pointer_to_another_field]}', 'column_name' => 'a_column' }] }))
75
- sample_event['pointer_to_another_field'] = 'another_field'
76
- sample_event['another_field'] = 'a_value'
75
+ sample_event.set('pointer_to_another_field', 'another_field')
76
+ sample_event.set('another_field', 'a_value')
77
77
 
78
78
  action = sut_instance.parse(sample_event)
79
79
 
@@ -91,8 +91,8 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
91
91
 
92
92
  it 'allows for string expansion in column names' do
93
93
  sut_instance = sut.new(default_opts.update({ 'filter_transform' => [{ 'event_key' => 'a_field', 'column_name' => '%{[pointer_to_another_field]}' }] }))
94
- sample_event['a_field'] = 'a_value'
95
- sample_event['pointer_to_another_field'] = 'a_different_column'
94
+ sample_event.set('a_field', 'a_value')
95
+ sample_event.set('pointer_to_another_field', 'a_different_column')
96
96
 
97
97
  action = sut_instance.parse(sample_event)
98
98
 
@@ -103,7 +103,7 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
103
103
 
104
104
  describe 'cassandra type mapping' do
105
105
  [
106
- { :name => 'timestamp', :type => ::Cassandra::Types::Timestamp, :value => Time::parse('1979-07-27 00:00:00 +0300') },
106
+ { :name => 'timestamp', :type => ::Cassandra::Types::Timestamp, :value => Time::parse('1979-07-27 00:00:00 +0000'), expected: Time::parse('1979-07-27 00:00:00 +0000').utc},
107
107
  { :name => 'timestamp', :type => ::Cassandra::Types::Timestamp, :value => '1982-05-04 00:00:00 +0300', expected: Time::parse('1982-05-04 00:00:00 +0300') },
108
108
  { :name => 'timestamp', :type => ::Cassandra::Types::Timestamp, :value => 1457606758, expected: Time.at(1457606758) },
109
109
  { :name => 'inet', :type => ::Cassandra::Types::Inet, :value => '0.0.0.0' },
@@ -123,7 +123,7 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
123
123
  # NOTE: this is not the best test there is, but it is the best / simplest I could think of :/
124
124
  it "properly maps #{mapping[:name]} to #{mapping[:type]}" do
125
125
  sut_instance = sut.new(default_opts.update({ 'filter_transform' => [{ 'event_key' => 'a_field', 'column_name' => 'a_column', 'cassandra_type' => mapping[:name] }] }))
126
- sample_event['a_field'] = mapping[:value]
126
+ sample_event.set('a_field', mapping[:value])
127
127
 
128
128
  action = sut_instance.parse(sample_event)
129
129
 
@@ -135,7 +135,7 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
135
135
  it 'properly maps sets to their specific set types' do
136
136
  sut_instance = sut.new(default_opts.update({ 'filter_transform' => [{ 'event_key' => 'a_field', 'column_name' => 'a_column', 'cassandra_type' => 'set<int>' }] }))
137
137
  original_value = [ 1, 2, 3 ]
138
- sample_event['a_field'] = original_value
138
+ sample_event.set('a_field', original_value)
139
139
 
140
140
  action = sut_instance.parse(sample_event)
141
141
 
@@ -145,7 +145,7 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
145
145
  it 'properly maps sets to their specific set types for type which also require actual conversion' do
146
146
  sut_instance = sut.new(default_opts.update({ 'filter_transform' => [{ 'event_key' => 'a_field', 'column_name' => 'a_column', 'cassandra_type' => 'set<timeuuid>' }] }))
147
147
  original_value = %w(00000000-0000-0000-0000-000000000000 00000000-0000-0000-0000-000000000001 00000000-0000-0000-0000-000000000002)
148
- sample_event['a_field'] = original_value
148
+ sample_event.set('a_field', original_value)
149
149
 
150
150
  action = sut_instance.parse(sample_event)
151
151
 
@@ -157,8 +157,8 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
157
157
 
158
158
  it 'allows for string expansion in cassandra types' do
159
159
  sut_instance = sut.new(default_opts.update({ 'filter_transform' => [{ 'event_key' => 'a_field', 'column_name' => 'a_column', 'cassandra_type' => '%{[pointer_to_a_field]}' }] }))
160
- sample_event['a_field'] = '123'
161
- sample_event['pointer_to_a_field'] = 'int'
160
+ sample_event.set('a_field', '123')
161
+ sample_event.set('pointer_to_a_field', 'int')
162
162
 
163
163
  action = sut_instance.parse(sample_event)
164
164
 
@@ -168,7 +168,7 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
168
168
  it 'fails in case of an unknown type' do
169
169
  options = default_opts.update({ 'filter_transform' => [{ 'event_key' => 'a_field', 'column_name' => 'a_column', 'cassandra_type' => 'what?!' }] })
170
170
  sut_instance = sut.new(options)
171
- sample_event['a_field'] = 'a_value'
171
+ sample_event.set('a_field', 'a_value')
172
172
  expect(options['logger']).to(receive(:error)).at_least(:once)
173
173
 
174
174
  result = sut_instance.parse(sample_event)
@@ -180,8 +180,8 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
180
180
  describe 'from event' do
181
181
  it 'obtains the filter transform from the event if defined' do
182
182
  sut_instance = sut.new(default_opts.update({ 'filter_transform_event_key' => 'an_event_filter' }))
183
- sample_event['a_field'] = 'a_value'
184
- sample_event['an_event_filter'] = [{ 'event_key' => 'a_field', 'column_name' => 'a_column' }]
183
+ sample_event.set('a_field', 'a_value')
184
+ sample_event.set('an_event_filter', [{ 'event_key' => 'a_field', 'column_name' => 'a_column' }])
185
185
 
186
186
  action = sut_instance.parse(sample_event)
187
187
 
@@ -190,8 +190,8 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
190
190
 
191
191
  it 'obtains the filter transform from the event even when it is in the metadata' do
192
192
  sut_instance = sut.new(default_opts.update({ 'filter_transform_event_key' => '[@metadata][the_filter]' }))
193
- sample_event['a_field'] = 'a_value'
194
- sample_event['@metadata'] = { 'the_filter' => [{ 'event_key' => 'a_field', 'column_name' => 'a_column' }] }
193
+ sample_event.set('a_field', 'a_value')
194
+ sample_event.set('@metadata', { 'the_filter' => [{ 'event_key' => 'a_field', 'column_name' => 'a_column' }] })
195
195
 
196
196
  action = sut_instance.parse(sample_event)
197
197
 
@@ -203,8 +203,8 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
203
203
  describe 'hints' do
204
204
  it 'removes fields starting with @' do
205
205
  sut_instance = sut.new(default_opts.update({ 'hints' => {} }))
206
- sample_event['leave'] = 'a_value'
207
- sample_event['@remove'] = 'another_value'
206
+ sample_event.set('leave', 'a_value')
207
+ sample_event.set('@remove', 'another_value')
208
208
 
209
209
  action = sut_instance.parse(sample_event)
210
210
 
@@ -215,18 +215,18 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
215
215
  it 'does not attempt to change items with no hints' do
216
216
  sut_instance = sut.new(default_opts.update({ 'hints' => {} }))
217
217
  expected_value = [ 1, 2, 3 ]
218
- sample_event['no_hint_here'] = expected_value
218
+ sample_event.set('no_hint_here', expected_value)
219
219
 
220
220
  action = sut_instance.parse(sample_event)
221
221
 
222
- expect(action['data']['no_hint_here']).to(equal(expected_value))
222
+ expect(action['data']['no_hint_here']).to(match_array(expected_value))
223
223
  end
224
224
 
225
225
  it 'converts items with hints' do
226
226
  sut_instance = sut.new(default_opts.update({ 'hints' => { 'a_set' => 'set<int>', 'an_int' => 'int' } }))
227
227
  original_set = [ 1, 2, 3 ]
228
- sample_event['a_set'] = original_set
229
- sample_event['an_int'] = '123'
228
+ sample_event.set('a_set', original_set)
229
+ sample_event.set('an_int', '123')
230
230
 
231
231
  action = sut_instance.parse(sample_event)
232
232
 
@@ -239,7 +239,7 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
239
239
  options = default_opts.update({ 'hints' => { 'a_field' => 'not_a_real_type' } })
240
240
  sut_instance = sut.new(options)
241
241
  expect(options['logger']).to(receive(:error)).at_least(:once)
242
- sample_event['a_field'] = 'a value'
242
+ sample_event.set('a_field', 'a value')
243
243
 
244
244
  result = sut_instance.parse(sample_event)
245
245
 
@@ -250,7 +250,7 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
250
250
  options = default_opts.update({ 'hints' => { 'a_field' => 'int' } })
251
251
  expect(options['logger']).to(receive(:error)).at_least(:once)
252
252
  sut_instance = sut.new(options)
253
- sample_event['a_field'] = 'i am not an int!!!'
253
+ sample_event.set('a_field', 'i am not an int!!!')
254
254
 
255
255
  result = sut_instance.parse(sample_event)
256
256
 
@@ -275,7 +275,7 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
275
275
  options = default_opts.update({ 'ignore_bad_values' => true, 'hints' => { 'a_field' => mapping[:name] } })
276
276
  expect(options['logger']).to(receive(:warn))
277
277
  sut_instance = sut.new(options)
278
- sample_event['a_field'] = mapping[:value]
278
+ sample_event.set('a_field', mapping[:value])
279
279
 
280
280
  action = sut_instance.parse(sample_event)
281
281
 
@@ -287,7 +287,7 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
287
287
  options = default_opts.update({ 'ignore_bad_values' => true, 'hints' => { 'a_field' => 'set<float>' } })
288
288
  expect(options['logger']).to(receive(:warn))
289
289
  sut_instance = sut.new(options)
290
- sample_event['a_field'] = 'i am not a set'
290
+ sample_event.set('a_field', 'i am not a set')
291
291
 
292
292
  action = sut_instance.parse(sample_event)
293
293
 
@@ -298,7 +298,7 @@ RSpec.describe LogStash::Outputs::Cassandra::EventParser do
298
298
  it 'raises an ArgumentError in case we try to default a type we dont know' do
299
299
  options = default_opts.update({ 'ignore_bad_values' => true, 'hints' => { 'a_field' => 'map<float>' } })
300
300
  sut_instance = sut.new(options)
301
- sample_event['a_field'] = 'i am not a set'
301
+ sample_event.set('a_field', 'i am not a set')
302
302
  expect(options['logger']).to(receive(:error))
303
303
 
304
304
  result = sut_instance.parse(sample_event)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-output-cassandra
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - PerimeterX
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-19 00:00:00.000000000 Z
11
+ date: 2016-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -29,21 +29,21 @@ dependencies:
29
29
  requirements:
30
30
  - - '>='
31
31
  - !ruby/object:Gem::Version
32
- version: 2.0.0
33
- - - <
32
+ version: '1.60'
33
+ - - <=
34
34
  - !ruby/object:Gem::Version
35
- version: 3.0.0
36
- name: logstash-core
35
+ version: '2.99'
36
+ name: logstash-core-plugin-api
37
37
  prerelease: false
38
38
  type: :runtime
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - '>='
42
42
  - !ruby/object:Gem::Version
43
- version: 2.0.0
44
- - - <
43
+ version: '1.60'
44
+ - - <=
45
45
  - !ruby/object:Gem::Version
46
- version: 3.0.0
46
+ version: '2.99'
47
47
  - !ruby/object:Gem::Dependency
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  requirements:
@@ -61,17 +61,17 @@ dependencies:
61
61
  - !ruby/object:Gem::Dependency
62
62
  requirement: !ruby/object:Gem::Requirement
63
63
  requirements:
64
- - - ~>
64
+ - - '>='
65
65
  - !ruby/object:Gem::Version
66
- version: '0.6'
66
+ version: '0'
67
67
  name: cabin
68
68
  prerelease: false
69
69
  type: :development
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ~>
72
+ - - '>='
73
73
  - !ruby/object:Gem::Version
74
- version: '0.6'
74
+ version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
76
  requirement: !ruby/object:Gem::Requirement
77
77
  requirements:
@@ -142,48 +142,6 @@ dependencies:
142
142
  - - '>='
143
143
  - !ruby/object:Gem::Version
144
144
  version: '0'
145
- - !ruby/object:Gem::Dependency
146
- requirement: !ruby/object:Gem::Requirement
147
- requirements:
148
- - - '='
149
- - !ruby/object:Gem::Version
150
- version: 0.2.4
151
- name: unparser
152
- prerelease: false
153
- type: :development
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - '='
157
- - !ruby/object:Gem::Version
158
- version: 0.2.4
159
- - !ruby/object:Gem::Dependency
160
- requirement: !ruby/object:Gem::Requirement
161
- requirements:
162
- - - '>='
163
- - !ruby/object:Gem::Version
164
- version: '0'
165
- name: metric_fu
166
- prerelease: false
167
- type: :development
168
- version_requirements: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - '>='
171
- - !ruby/object:Gem::Version
172
- version: '0'
173
- - !ruby/object:Gem::Dependency
174
- requirement: !ruby/object:Gem::Requirement
175
- requirements:
176
- - - '>='
177
- - !ruby/object:Gem::Version
178
- version: '0'
179
- name: coveralls
180
- prerelease: false
181
- type: :development
182
- version_requirements: !ruby/object:Gem::Requirement
183
- requirements:
184
- - - '>='
185
- - !ruby/object:Gem::Version
186
- version: '0'
187
145
  - !ruby/object:Gem::Dependency
188
146
  requirement: !ruby/object:Gem::Requirement
189
147
  requirements: