fluent-plugin-gcs 0.4.0.beta1 → 0.4.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d4e0e0d0018992e06145a4982a26182240998f12
4
- data.tar.gz: 5c96a75ae786b74be8f8092ed210ebae68be3ad6
2
+ SHA256:
3
+ metadata.gz: e6bc239a1a47a29d4cc3dc94aaaafc5e3ed6ed20e23e0ea9807c88309ec1f7a0
4
+ data.tar.gz: c27f4d556b545ffb6050a72dcc9ff6a7fcfc53d16f44bce305f14560a4482725
5
5
  SHA512:
6
- metadata.gz: a6d11e853d46efff711d2a0e2f2aeab878ad0923cd7230923bdf90da33ae98d11f7789a76c042faa01151473505e56a98d477904d246a876ca593582491e7f4a
7
- data.tar.gz: 0fcffefaf44dc28f0d29d97c6f26e2cd6047ebaa8092eea65726c46637bb9073d31f1d0998ad94de502b1bdd8225f89429a89a9c93b6ed35338495474e0ab499
6
+ metadata.gz: 3eb03cfb810bf23d8447391145cd8ba6cf6379f1730e1c486a35bcafcb66fdf5b953741b5913b0255bc5969914fc1fda4e37110fe76eb7bf21f65d441466bedb
7
+ data.tar.gz: 85bcc85ab97e567a872893cfb890b7920343ff0010adf5d7c6d5b36f5ff952640bac4f42b90d811f1f1b6717c1691c40f6581d66a6da45135711a030dcf6b297
@@ -0,0 +1,24 @@
1
+ name: Test
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ ruby-version: ['2.7', '3.0', '3.1']
16
+ steps:
17
+ - uses: actions/checkout@v3
18
+ - name: Set up Ruby
19
+ uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: ${{ matrix.ruby-version }}
22
+ bundler-cache: true
23
+ - name: Run tests
24
+ run: bundle exec rake test
data/CHANGELOG.md CHANGED
@@ -1,6 +1,19 @@
1
1
  ## [Unreleased]
2
2
 
3
- ## [0.4.0] - xxxx/xx/xx
3
+ New features / Enhancements
4
+
5
+ ## [0.4.2] - 2022/08/16
6
+
7
+ Bug fixes
8
+
9
+ - [Fix automatic conversion from a hash to keyword arguments](https://github.com/daichirata/fluent-plugin-gcs/pull/22)
10
+
11
+ ## [0.4.1] - 2020/04/17
12
+
13
+ New features
14
+ - [Support blind write to GSC](https://github.com/daichirata/fluent-plugin-gcs/pull/14)
15
+
16
+ ## [0.4.0] - 2019/04/01
4
17
 
5
18
  New features / Enhancements
6
19
 
@@ -26,7 +39,8 @@ New features / Enhancements
26
39
 
27
40
  - Add support for `%{hostname}` of object_key_format
28
41
 
29
- [Unreleased]: https://github.com/daichirata/fluent-plugin-gcs/compare/v0.3.0...HEAD
42
+ [Unreleased]: https://github.com/daichirata/fluent-plugin-gcs/compare/v0.4.0...HEAD
43
+ [0.4.0]: https://github.com/daichirata/fluent-plugin-gcs/compare/v0.3.0...v0.4.0
30
44
  [0.3.0]: https://github.com/daichirata/fluent-plugin-gcs/compare/v0.2.0...v0.3.0
31
- [0.2.0]: https://github.com/daichirata/fluent-plugin-gcs/compare/v0.1.a...v0.2.0
45
+ [0.2.0]: https://github.com/daichirata/fluent-plugin-gcs/compare/v0.1.0...v0.2.0
32
46
  [0.1.1]: https://github.com/daichirata/fluent-plugin-gcs/compare/v0.1.0...v0.1.1
data/Gemfile CHANGED
@@ -1,4 +1,13 @@
1
- source 'https://rubygems.org'
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
2
4
 
3
5
  # Specify your gem's dependencies in fluent-plugin-gcs.gemspec
4
6
  gemspec
7
+
8
+ gem "rake", "~> 13.0"
9
+ gem "rr", "= 1.1.2"
10
+ gem "test-unit", ">= 3.0.8"
11
+ gem "test-unit-rr", ">= 1.0.3"
12
+ gem "timecop"
13
+ gem "solargraph"
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # fluent-plugin-gcs
2
- [![Gem Version](https://badge.fury.io/rb/fluent-plugin-gcs.svg)](https://badge.fury.io/rb/fluent-plugin-gcs) [![Build Status](https://travis-ci.org/daichirata/fluent-plugin-gcs.svg?branch=master)](https://travis-ci.org/daichirata/fluent-plugin-gcs) [![Code Climate](https://codeclimate.com/github/daichirata/fluent-plugin-gcs/badges/gpa.svg)](https://codeclimate.com/github/daichirata/fluent-plugin-gcs)
2
+ [![Gem Version](https://badge.fury.io/rb/fluent-plugin-gcs.svg)](https://badge.fury.io/rb/fluent-plugin-gcs) [![Test](https://github.com/daichirata/fluent-plugin-gcs/actions/workflows/test.yaml/badge.svg)](https://github.com/daichirata/fluent-plugin-gcs/actions/workflows/test.yaml) [![Code Climate](https://codeclimate.com/github/daichirata/fluent-plugin-gcs/badges/gpa.svg)](https://codeclimate.com/github/daichirata/fluent-plugin-gcs)
3
3
 
4
4
  Google Cloud Storage output plugin for [Fluentd](https://github.com/fluent/fluentd).
5
5
 
@@ -7,16 +7,14 @@ Google Cloud Storage output plugin for [Fluentd](https://github.com/fluent/fluen
7
7
 
8
8
  | fluent-plugin-gcs | fluentd | ruby |
9
9
  |--------------------|------------|--------|
10
- | >= 0.4.0 | >= v0.14.0 | >= 2.1 |
10
+ | >= 0.4.0 | >= v0.14.0 | >= 2.4 |
11
11
  | < 0.4.0 | >= v0.12.0 | >= 1.9 |
12
12
 
13
- NOTE: fluent-plugin-gcs v0.4.0 is now beta.
14
-
15
13
  ## Installation
16
14
 
17
15
  ``` shell
18
- $ gem install fluent-plugin-gcs -v "~> 0.3" --no-document # for fluentd v0.12 or later
19
- $ gem install fluent-plugin-gcs -v "0.4.0.beta1" --no-document # for fluentd v0.14 or later
16
+ $ gem install fluent-plugin-gcs -v "~> 0.3" --no-document # for fluentd v0.12 or later
17
+ $ gem install fluent-plugin-gcs -v "0.4.0" --no-document # for fluentd v0.14 or later
20
18
  ```
21
19
 
22
20
  ## Examples
@@ -227,9 +225,18 @@ Use Local time instead of UTC.
227
225
 
228
226
  Use UTC instead of local time.
229
227
 
230
-
231
228
  And see [official Time Sliced Output article](http://docs.fluentd.org/articles/output-plugin-overview#time-sliced-output-parameters)
232
229
 
230
+ **blind_write**
231
+
232
+ Doesn't check if an object exists in GCS before writing. Default is false.
233
+
234
+ Allows to avoid granting of `storage.objects.get` permission.
235
+
236
+ Warning! If the object exists and `storage.objects.delete` permission is not
237
+ granted, it will result in an unrecoverable error. Usage of `%{hex_random}` is
238
+ recommended.
239
+
233
240
  ### ObjectMetadata
234
241
 
235
242
  User provided web-safe keys and arbitrary string values that will returned with requests for the file as "x-goog-meta-" response headers.
@@ -20,13 +20,6 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ["lib"]
22
22
 
23
- spec.add_runtime_dependency "fluentd", [">= 0.14.0", "< 2"]
24
- spec.add_runtime_dependency "google-cloud-storage", "~> 1.1.0"
25
-
26
- spec.add_development_dependency "bundler", "~> 1.13"
27
- spec.add_development_dependency "rake", "~> 10.0"
28
- spec.add_development_dependency "rr", "= 1.1.2"
29
- spec.add_development_dependency "test-unit", ">= 3.0.8"
30
- spec.add_development_dependency "test-unit-rr", ">= 1.0.3"
31
- spec.add_development_dependency "timecop"
23
+ spec.add_runtime_dependency "fluentd", [">= 0.14.22", "< 2"]
24
+ spec.add_runtime_dependency "google-cloud-storage", "~> 1.1"
32
25
  end
@@ -1,5 +1,5 @@
1
1
  module Fluent
2
2
  module GCSPlugin
3
- VERSION = "0.4.0.beta1"
3
+ VERSION = "0.4.2"
4
4
  end
5
5
  end
@@ -49,6 +49,8 @@ module Fluent::Plugin
49
49
  desc: "Storage class of the file"
50
50
  config_param :encryption_key, :string, default: nil, secret: true,
51
51
  desc: "Customer-supplied, AES-256 encryption key"
52
+ config_param :blind_write, :bool, default: false,
53
+ desc: "Whether to check if object already exists by given GCS path. Allows avoiding giving storage.object.get permission"
52
54
  config_section :object_metadata, required: false do
53
55
  config_param :key, :string, default: ""
54
56
  config_param :value, :string, default: ""
@@ -129,7 +131,7 @@ module Fluent::Plugin
129
131
  opts.merge!(@encryption_opts)
130
132
 
131
133
  log.debug { "out_gcs: upload chunk:#{chunk.key} to gcs://#{@bucket}/#{path} options: #{opts}" }
132
- @gcs_bucket.upload_file(obj.path, path, opts)
134
+ @gcs_bucket.upload_file(obj.path, path, **opts)
133
135
  end
134
136
  end
135
137
 
@@ -149,6 +151,14 @@ module Fluent::Plugin
149
151
  Digest::MD5.hexdigest(chunk.unique_id)[0...@hex_random_length]
150
152
  end
151
153
 
154
+ def check_object_exists(path)
155
+ if !@blind_write
156
+ return @gcs_bucket.find_file(path, **@encryption_opts)
157
+ else
158
+ return false
159
+ end
160
+ end
161
+
152
162
  def generate_path(chunk, i = 0, prev = nil)
153
163
  metadata = chunk.metadata
154
164
  time_slice = if metadata.timekey.nil?
@@ -166,8 +176,8 @@ module Fluent::Plugin
166
176
  "%{uuid_flush}" => SecureRandom.uuid,
167
177
  }
168
178
  path = @object_key_format.gsub(Regexp.union(tags.keys), tags)
169
- path = extract_placeholders(path, metadata)
170
- return path unless @gcs_bucket.find_file(path, @encryption_opts)
179
+ path = extract_placeholders(path, chunk)
180
+ return path unless check_object_exists(path)
171
181
 
172
182
  if path == prev
173
183
  if @overwrite
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-gcs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0.beta1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daichi HIRATA
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-24 00:00:00.000000000 Z
11
+ date: 2022-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.14.0
19
+ version: 0.14.22
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '2'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 0.14.0
29
+ version: 0.14.22
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '2'
@@ -36,98 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 1.1.0
39
+ version: '1.1'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 1.1.0
47
- - !ruby/object:Gem::Dependency
48
- name: bundler
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '1.13'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '1.13'
61
- - !ruby/object:Gem::Dependency
62
- name: rake
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '10.0'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '10.0'
75
- - !ruby/object:Gem::Dependency
76
- name: rr
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - '='
80
- - !ruby/object:Gem::Version
81
- version: 1.1.2
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - '='
87
- - !ruby/object:Gem::Version
88
- version: 1.1.2
89
- - !ruby/object:Gem::Dependency
90
- name: test-unit
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: 3.0.8
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: 3.0.8
103
- - !ruby/object:Gem::Dependency
104
- name: test-unit-rr
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: 1.0.3
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: 1.0.3
117
- - !ruby/object:Gem::Dependency
118
- name: timecop
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: '0'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- version: '0'
46
+ version: '1.1'
131
47
  description: Google Cloud Storage output plugin for Fluentd
132
48
  email:
133
49
  - hirata.daichi@gmail.com
@@ -135,8 +51,8 @@ executables: []
135
51
  extensions: []
136
52
  extra_rdoc_files: []
137
53
  files:
54
+ - ".github/workflows/test.yaml"
138
55
  - ".gitignore"
139
- - ".travis.yml"
140
56
  - CHANGELOG.md
141
57
  - Gemfile
142
58
  - LICENSE.txt
@@ -152,7 +68,7 @@ homepage: https://github.com/daichirata/fluent-plugin-gcs
152
68
  licenses:
153
69
  - Apache-2.0
154
70
  metadata: {}
155
- post_install_message:
71
+ post_install_message:
156
72
  rdoc_options: []
157
73
  require_paths:
158
74
  - lib
@@ -163,13 +79,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
163
79
  version: '0'
164
80
  required_rubygems_version: !ruby/object:Gem::Requirement
165
81
  requirements:
166
- - - ">"
82
+ - - ">="
167
83
  - !ruby/object:Gem::Version
168
- version: 1.3.1
84
+ version: '0'
169
85
  requirements: []
170
- rubyforge_project:
171
- rubygems_version: 2.5.1
172
- signing_key:
86
+ rubygems_version: 3.3.7
87
+ signing_key:
173
88
  specification_version: 4
174
89
  summary: Google Cloud Storage output plugin for Fluentd
175
90
  test_files: []
data/.travis.yml DELETED
@@ -1,11 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - 2.1
5
- - 2.2
6
- - 2.3.0
7
-
8
- before_install:
9
- - gem update bundler
10
-
11
- script: bundle exec rake test