fluent-plugin-s3 0.3.6 → 0.3.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.
@@ -5,7 +5,7 @@ rvm:
5
5
  - 1.9.3
6
6
  - 2.0.0
7
7
  - 2.1.0
8
- - rbx-19mode
8
+ - rbx
9
9
 
10
10
  gemfile:
11
11
  - Gemfile
@@ -19,4 +19,4 @@ script: bundle exec rake test
19
19
 
20
20
  matrix:
21
21
  allow_failures:
22
- - rvm: rbx-19mode
22
+ - rvm: rbx
data/ChangeLog CHANGED
@@ -1,3 +1,11 @@
1
+ Release 0.3.7 - 2014/03/07
2
+
3
+ * Support lzma2 compression using 'xz' command
4
+ https://github.com/fluent/fluent-plugin-s3/pull/41
5
+ * Relax aws-sdk gem requirement
6
+ https://github.com/fluent/fluent-plugin-s3/pull/42
7
+
8
+
1
9
  Release 0.3.6 - 2014/02/05
2
10
 
3
11
  * Support 'log_level' option
@@ -1,4 +1,4 @@
1
- = Amazon S3 output plugin for Fluent event collector
1
+ = Amazon S3 output plugin for {Fluentd}[http://github.com/fluent/fluentd]
2
2
 
3
3
  == Overview
4
4
 
@@ -103,8 +103,12 @@ The {fluent-mixin-config-placeholders}[https://github.com/tagomoris/fluent-mixin
103
103
  [utc] Use UTC instead of local time.
104
104
 
105
105
 
106
- == Copyright
107
-
108
- Copyright:: Copyright (c) 2011 Sadayuki Furuhashi
109
- License:: Apache License, Version 2.0
106
+ == Website, license, et. al.
110
107
 
108
+ Web site:: http://fluentd.org/
109
+ Documents:: http://docs.fluentd.org/
110
+ Source repository:: http://github.com/fluent
111
+ Discussion:: http://groups.google.com/group/fluentd
112
+ Author:: Sadayuki Furuhashi
113
+ Copyright:: (c) 2011 FURUHASHI Sadayuki
114
+ License:: Apache License, Version 2.0
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.6
1
+ 0.3.7
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
17
17
  gem.require_paths = ['lib']
18
18
 
19
19
  gem.add_dependency "fluentd", "~> 0.10.0"
20
- gem.add_dependency "aws-sdk", "~> 1.8.2"
20
+ gem.add_dependency "aws-sdk", ">= 1.8.2"
21
21
  gem.add_dependency "yajl-ruby", "~> 1.0"
22
22
  gem.add_dependency "fluent-mixin-config-placeholders", "~> 0.2.0"
23
23
  gem.add_development_dependency "rake", ">= 0.9.2"
@@ -35,6 +35,7 @@ class S3Output < Fluent::TimeSlicedOutput
35
35
  config_param :s3_endpoint, :string, :default => nil
36
36
  config_param :s3_object_key_format, :string, :default => "%{path}%{time_slice}_%{index}.%{file_extension}"
37
37
  config_param :store_as, :string, :default => "gzip"
38
+ config_param :command_parameter, :string, :default => nil
38
39
  config_param :auto_create_bucket, :bool, :default => true
39
40
  config_param :check_apikey_on_start, :bool, :default => true
40
41
  config_param :proxy_uri, :string, :default => nil
@@ -69,17 +70,21 @@ class S3Output < Fluent::TimeSlicedOutput
69
70
  end
70
71
 
71
72
  @ext, @mime_type = case @store_as
72
- when 'gzip' then ['gz', 'application/x-gzip']
73
- when 'lzo' then
74
- begin
75
- Open3.capture3('lzop -V')
76
- rescue Errno::ENOENT
77
- raise ConfigError, "'lzop' utility must be in PATH for LZO compression"
78
- end
79
- ['lzo', 'application/x-lzop']
80
- when 'json' then ['json', 'application/json']
81
- else ['txt', 'text/plain']
82
- end
73
+ when 'gzip'
74
+ ['gz', 'application/x-gzip']
75
+ when 'lzo'
76
+ check_command('lzop', 'LZO')
77
+ @command_parameter = '-qf1' if @command_parameter.nil?
78
+ ['lzo', 'application/x-lzop']
79
+ when 'lzma2'
80
+ check_command('xz', 'LZMA2')
81
+ @command_parameter = '-qf0' if @command_parameter.nil?
82
+ ['xz', 'application/x-xz']
83
+ when 'json'
84
+ ['json', 'application/json']
85
+ else
86
+ ['txt', 'text/plain']
87
+ end
83
88
 
84
89
  @timef = TimeFormatter.new(@time_format, @localtime)
85
90
 
@@ -109,8 +114,8 @@ class S3Output < Fluent::TimeSlicedOutput
109
114
  @s3 = AWS::S3.new(options)
110
115
  @bucket = @s3.buckets[@s3_bucket]
111
116
 
112
- ensure_bucket
113
117
  check_apikeys if @check_apikey_on_start
118
+ ensure_bucket
114
119
  end
115
120
 
116
121
  def format(tag, time, record)
@@ -162,7 +167,13 @@ class S3Output < Fluent::TimeSlicedOutput
162
167
  w.close
163
168
  tmp.close
164
169
  # We don't check the return code because we can't recover lzop failure.
165
- system "lzop -qf1 -o #{tmp.path} #{w.path}"
170
+ system "lzop #{@command_parameter} -o #{tmp.path} #{w.path}"
171
+ elsif @store_as == "lzma2"
172
+ w = Tempfile.new("chunk-xz-tmp")
173
+ chunk.write_to(w)
174
+ w.close
175
+ tmp.close
176
+ system "xz #{@command_parameter} -c #{w.path} > #{tmp.path}"
166
177
  else
167
178
  chunk.write_to(tmp)
168
179
  tmp.close
@@ -194,6 +205,14 @@ class S3Output < Fluent::TimeSlicedOutput
194
205
  rescue
195
206
  raise "aws_key_id or aws_sec_key is invalid. Please check your configuration"
196
207
  end
208
+
209
+ def check_command(command, algo)
210
+ begin
211
+ Open3.capture3("#{command} -V")
212
+ rescue Errno::ENOENT
213
+ raise ConfigError, "'#{command}' utility must be in PATH for #{algo} compression"
214
+ end
215
+ end
197
216
  end
198
217
 
199
218
 
@@ -27,6 +27,9 @@ class S3OutputTest < Test::Unit::TestCase
27
27
 
28
28
  private
29
29
 
30
+ def ensure_bucket
31
+ end
32
+
30
33
  def check_apikeys
31
34
  end
32
35
  end.configure(conf)
@@ -214,8 +217,7 @@ class S3OutputTest < Test::Unit::TestCase
214
217
  def test_write_with_custom_s3_object_key_format
215
218
  # Assert content of event logs which are being sent to S3
216
219
  s3obj = flexmock(AWS::S3::S3Object)
217
- s3obj.should_receive(:exists?).with_any_args.
218
- and_return { false }
220
+ s3obj.should_receive(:exists?).with_any_args.and_return { false }
219
221
  s3obj.should_receive(:write).with(
220
222
  on { |pathname|
221
223
  data = nil
@@ -226,7 +228,7 @@ class S3OutputTest < Test::Unit::TestCase
226
228
  gz.close
227
229
  }
228
230
  assert_equal %[2011-01-02T13:14:15Z\ttest\t{"a":1}\n] +
229
- %[2011-01-02T13:14:15Z\ttest\t{"a":2}\n],
231
+ %[2011-01-02T13:14:15Z\ttest\t{"a":2}\n],
230
232
  data
231
233
 
232
234
  pathname.to_s.match(%r|s3-|)
@@ -244,12 +246,8 @@ class S3OutputTest < Test::Unit::TestCase
244
246
  }
245
247
 
246
248
  # Partial mock the S3Bucket, not to make an actual connection to Amazon S3
247
- flexmock(AWS::S3::Bucket).new_instances do |bucket|
248
- bucket.should_receive(:objects).with_any_args.
249
- and_return {
250
- s3obj_col
251
- }
252
- end
249
+ s3bucket, _ = setup_mocks(true)
250
+ s3bucket.should_receive(:objects).with_any_args.and_return { s3obj_col }
253
251
 
254
252
  # We must use TimeSlicedOutputTestDriver instead of BufferedOutputTestDriver,
255
253
  # to make assertions on chunks' keys
@@ -263,9 +261,9 @@ class S3OutputTest < Test::Unit::TestCase
263
261
  d.run
264
262
  end
265
263
 
266
- def setup_mocks
264
+ def setup_mocks(exists_return = false)
267
265
  s3bucket = flexmock(AWS::S3::Bucket)
268
- s3bucket.should_receive(:exists?).with_any_args.and_return { false }
266
+ s3bucket.should_receive(:exists?).with_any_args.and_return { exists_return }
269
267
  s3bucket_col = flexmock(AWS::S3::BucketCollection)
270
268
  s3bucket_col.should_receive(:[]).with_any_args.and_return { s3bucket }
271
269
  flexmock(AWS::S3).new_instances do |bucket|
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-s3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.3.7
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Sadayuki Furuhashi
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-02-05 00:00:00.000000000 Z
12
+ date: 2014-03-07 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: fluentd
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
@@ -27,20 +30,23 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: aws-sdk
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - ~>
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: 1.8.2
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - ~>
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: 1.8.2
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: yajl-ruby
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ~>
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: fluent-mixin-config-placeholders
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ~>
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :runtime
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ~>
67
76
  - !ruby/object:Gem::Version
@@ -69,29 +78,33 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: rake
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
- - - '>='
83
+ - - ! '>='
74
84
  - !ruby/object:Gem::Version
75
85
  version: 0.9.2
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
- - - '>='
91
+ - - ! '>='
81
92
  - !ruby/object:Gem::Version
82
93
  version: 0.9.2
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: flexmock
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
- - - '>='
99
+ - - ! '>='
88
100
  - !ruby/object:Gem::Version
89
101
  version: 1.2.0
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
- - - '>='
107
+ - - ! '>='
95
108
  - !ruby/object:Gem::Version
96
109
  version: 1.2.0
97
110
  description: Amazon S3 output plugin for Fluentd event collector
@@ -113,26 +126,33 @@ files:
113
126
  - test/out_s3.rb
114
127
  homepage: https://github.com/fluent/fluent-plugin-s3
115
128
  licenses: []
116
- metadata: {}
117
129
  post_install_message:
118
130
  rdoc_options: []
119
131
  require_paths:
120
132
  - lib
121
133
  required_ruby_version: !ruby/object:Gem::Requirement
134
+ none: false
122
135
  requirements:
123
- - - '>='
136
+ - - ! '>='
124
137
  - !ruby/object:Gem::Version
125
138
  version: '0'
139
+ segments:
140
+ - 0
141
+ hash: -3014844547885413145
126
142
  required_rubygems_version: !ruby/object:Gem::Requirement
143
+ none: false
127
144
  requirements:
128
- - - '>='
145
+ - - ! '>='
129
146
  - !ruby/object:Gem::Version
130
147
  version: '0'
148
+ segments:
149
+ - 0
150
+ hash: -3014844547885413145
131
151
  requirements: []
132
152
  rubyforge_project:
133
- rubygems_version: 2.0.2
153
+ rubygems_version: 1.8.23
134
154
  signing_key:
135
- specification_version: 4
155
+ specification_version: 3
136
156
  summary: Amazon S3 output plugin for Fluentd event collector
137
157
  test_files:
138
158
  - test/out_s3.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 7f3399bf6de1662008eb3172d029a449f367a8f9
4
- data.tar.gz: 533c1fdc074a07ae577463bc342fd537f25919e1
5
- SHA512:
6
- metadata.gz: 1e4e4cf633290fe4630797453305199cb884a96722cf0bc0cdeb96dde0c9b759aae36fa18453872938c8c2d775047972950356371f400781ab446b418c6e2682
7
- data.tar.gz: f8f2128b80bb3fc305f53db40ff30172d5b8fbb21406bdd1c9055c7b7c9e4c3bbac197aee160a499f86079ed6a29e34ff44b3d5300df360a95528c196f11c673