fluent-plugin-redmine 0.5.3 → 0.6.0
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/README.md +8 -6
- data/fluent-plugin-redmine.gemspec +1 -1
- data/lib/fluent/plugin/out_redmine.rb +28 -21
- data/test/plugin/test_out_redmine.rb +58 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f193b8f6fea649e602c652324c244eb11d521eea
|
4
|
+
data.tar.gz: 4633aeb58a38806c7f3221a692184dfbcd2eb512
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0a01fcc9fb1e13e446432cef4edd0c601d5fa22a4feb625057bc868f95237ac5a7f09291815faaa3b56215748e817eab1872edf2cb4d955c408bc0546f47712
|
7
|
+
data.tar.gz: b8d76888ac8d943176ceb84b61147135869451983e06b54cfff84da9c9ba8b245b61bf6290d5bf3f0001d66bccfe2d437c3546b7eb6f239fb41b4c012e464da0
|
data/README.md
CHANGED
@@ -38,12 +38,14 @@ Here is example settings:
|
|
38
38
|
|
39
39
|
and here is optional configuration:
|
40
40
|
|
41
|
-
project_id myproject
|
42
|
-
category_id 70
|
43
|
-
project_id_key key_of_priority_id
|
44
|
-
category_id_key key_of_category_id
|
45
|
-
tag_key my_ tag
|
46
|
-
|
41
|
+
project_id myproject # Redmine project id
|
42
|
+
category_id 70 # Redmine category id
|
43
|
+
project_id_key key_of_priority_id # key name if the record for priority id
|
44
|
+
category_id_key key_of_category_id # key name if the record for category id
|
45
|
+
tag_key my_ tag # 'tag' is used by default
|
46
|
+
custom_fields [{"id":1, "value" "value01"}] # Redmine custom fields, array of hash with id, value
|
47
|
+
custom_fields_key key_of_custom_fields # key name if the record for custom fields
|
48
|
+
debug_http true # set debug_http=true of Net::HTTP module, false is used by default
|
47
49
|
|
48
50
|
|
49
51
|
### placeholders
|
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "fluent-plugin-redmine"
|
7
|
-
spec.version = "0.
|
7
|
+
spec.version = "0.6.0"
|
8
8
|
spec.authors = ["Takuma kanari"]
|
9
9
|
spec.email = ["chemtrails.t@gmail.com"]
|
10
10
|
spec.summary = %q{Fluentd output plugin to create ticket in redmine}
|
@@ -9,40 +9,46 @@ module Fluent
|
|
9
9
|
end
|
10
10
|
|
11
11
|
desc "Redmine url"
|
12
|
-
config_param :url, :string, :
|
12
|
+
config_param :url, :string, default: nil
|
13
13
|
|
14
14
|
desc "Redmine api key"
|
15
|
-
config_param :api_key, :string, :
|
15
|
+
config_param :api_key, :string, default: nil, secret: true
|
16
16
|
|
17
17
|
desc "Key name in the record for tag"
|
18
|
-
config_param :tag_key, :string, :
|
18
|
+
config_param :tag_key, :string, default: "tag"
|
19
19
|
|
20
20
|
desc "Redmine project id"
|
21
|
-
config_param :project_id, :string, :
|
21
|
+
config_param :project_id, :string, default: nil
|
22
22
|
|
23
23
|
desc "Redmine category id"
|
24
|
-
config_param :category_id, :integer, :
|
24
|
+
config_param :category_id, :integer, default: nil
|
25
25
|
|
26
26
|
desc "Key name in the record for Redmine category id"
|
27
|
-
config_param :category_id_key, :string, :
|
27
|
+
config_param :category_id_key, :string, default: nil
|
28
28
|
|
29
29
|
desc "Redmine tracker id"
|
30
|
-
config_param :tracker_id, :integer
|
30
|
+
config_param :tracker_id, :integer, default: nil
|
31
31
|
|
32
32
|
desc "Redmine priority id"
|
33
|
-
config_param :priority_id, :integer
|
33
|
+
config_param :priority_id, :integer, default: nil
|
34
34
|
|
35
35
|
desc "Key name in the record for Redmine priority id"
|
36
|
-
config_param :priority_id_key, :string, :
|
36
|
+
config_param :priority_id_key, :string, default: nil
|
37
37
|
|
38
38
|
desc "Ticket title"
|
39
|
-
config_param :subject, :string, :
|
39
|
+
config_param :subject, :string, default: "Fluent::RedmineOutput plugin"
|
40
40
|
|
41
41
|
desc "Ticket description"
|
42
|
-
config_param :description, :string, :
|
42
|
+
config_param :description, :string, default: ""
|
43
43
|
|
44
44
|
desc "If true, show debug message of http operations"
|
45
|
-
config_param :debug_http, :bool, :
|
45
|
+
config_param :debug_http, :bool, default: false
|
46
|
+
|
47
|
+
desc "Redmine custom fields, array of hash with id, value"
|
48
|
+
config_param :custom_fields, :array, default: []
|
49
|
+
|
50
|
+
desc "Key name in the record for Redmine custom fields"
|
51
|
+
config_param :custom_fields_key, :string, default: nil
|
46
52
|
|
47
53
|
def initialize
|
48
54
|
super
|
@@ -123,16 +129,17 @@ module Fluent
|
|
123
129
|
def make_payload(subject, desc, record)
|
124
130
|
priority_id = @priority_id_key.nil? ? @priority_id : (record[@priority_id_key] || @priority_id).to_i
|
125
131
|
category_id = @category_id_key.nil? ? @category_id : (record[@category_id_key] || @category_id).to_i
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
:subject => subject,
|
133
|
-
:description => desc
|
134
|
-
}
|
132
|
+
custom_fields = @custom_fields_key.nil? ? @custom_fields : (record[@custom_fields_key] || [])
|
133
|
+
issue = {
|
134
|
+
project_id: @project_id,
|
135
|
+
category_id: category_id,
|
136
|
+
subject: subject,
|
137
|
+
description: desc
|
135
138
|
}
|
139
|
+
issue[:tracker_id] = @tracker_id unless @tracker_id.nil?
|
140
|
+
issue[:priority_id] = priority_id unless priority_id.nil?
|
141
|
+
issue[:custom_fields] = custom_fields unless custom_fields.empty?
|
142
|
+
{ issue: issue }
|
136
143
|
end
|
137
144
|
|
138
145
|
private
|
@@ -21,6 +21,28 @@ class RedmineOutputTest < Test::Unit::TestCase
|
|
21
21
|
description this is description %{d1} - %{d2} - %{d3}
|
22
22
|
]
|
23
23
|
|
24
|
+
CONFIG_WITHOUT_TRACKER_ID_AND_PRIORITY_ID = %[
|
25
|
+
type redmine
|
26
|
+
url http://localhost:4000
|
27
|
+
api_key test-api-key
|
28
|
+
tag_key test
|
29
|
+
project_id 1
|
30
|
+
category_id 4
|
31
|
+
subject awesome
|
32
|
+
description this is description %{d1} - %{d2} - %{d3}
|
33
|
+
]
|
34
|
+
|
35
|
+
CONFIG_WITH_CUSTOM_FIELDS = %[
|
36
|
+
type redmine
|
37
|
+
url http://localhost:4000
|
38
|
+
api_key test-api-key
|
39
|
+
tag_key test
|
40
|
+
project_id 1
|
41
|
+
subject awesome
|
42
|
+
custom_fields [{"id" : 1, "value" : "awesome"}]
|
43
|
+
description this is description %{d1} - %{d2} - %{d3}
|
44
|
+
]
|
45
|
+
|
24
46
|
CONFIG_WITH_PROPERTY_ALIAS_KEYS = %[
|
25
47
|
type redmine
|
26
48
|
url http://localhost:4000
|
@@ -32,6 +54,7 @@ class RedmineOutputTest < Test::Unit::TestCase
|
|
32
54
|
category_id 4
|
33
55
|
priority_id_key key_of_priority_id
|
34
56
|
category_id_key key_of_category_id
|
57
|
+
custom_fields_key key_of_custom_fields
|
35
58
|
subject awesome
|
36
59
|
description this is description %{d1} - %{d2} - %{d3}
|
37
60
|
]
|
@@ -149,6 +172,7 @@ class RedmineOutputTest < Test::Unit::TestCase
|
|
149
172
|
assert_nothing_raised { p = create_driver(CONFIG_WITH_PROPERTY_ALIAS_KEYS).instance }
|
150
173
|
assert_equal "key_of_priority_id", p.priority_id_key
|
151
174
|
assert_equal "key_of_category_id", p.category_id_key
|
175
|
+
assert_equal "key_of_custom_fields", p.custom_fields_key
|
152
176
|
end
|
153
177
|
|
154
178
|
def test_configure_https
|
@@ -200,17 +224,49 @@ CONFIG
|
|
200
224
|
assert_equal p.project_id, ret[:issue][:project_id]
|
201
225
|
assert_equal p.tracker_id, ret[:issue][:tracker_id]
|
202
226
|
assert_equal p.priority_id, ret[:issue][:priority_id]
|
227
|
+
assert_false ret[:issue].key?(:custom_fields)
|
228
|
+
end
|
229
|
+
|
230
|
+
def test_make_payload_with_custom_fields
|
231
|
+
p = create_driver(CONFIG_WITH_CUSTOM_FIELDS).instance
|
232
|
+
record = {
|
233
|
+
"name" => "John",
|
234
|
+
"age" => 25,
|
235
|
+
"message" => "this is message!"
|
236
|
+
}
|
237
|
+
ret = p.make_payload("subject", "description", record)
|
238
|
+
assert_equal 1, ret[:issue][:custom_fields].size
|
239
|
+
assert_equal 1, ret[:issue][:custom_fields].first["id"]
|
240
|
+
assert_equal "awesome", ret[:issue][:custom_fields].first["value"]
|
241
|
+
end
|
242
|
+
|
243
|
+
def test_make_payload_without_tracker_id_and_priority_id
|
244
|
+
p = create_driver(CONFIG_WITHOUT_TRACKER_ID_AND_PRIORITY_ID).instance
|
245
|
+
record = {
|
246
|
+
"name" => "John",
|
247
|
+
"age" => 25,
|
248
|
+
"message" => "this is message!"
|
249
|
+
}
|
250
|
+
ret = p.make_payload("subject", "description", record)
|
251
|
+
assert_equal "subject", ret[:issue][:subject]
|
252
|
+
assert_equal "description", ret[:issue][:description]
|
253
|
+
assert_false ret[:issue].key?(:priority_id)
|
254
|
+
assert_false ret[:issue].key?(:tracker_id)
|
255
|
+
assert_equal p.priority_id, ret[:issue][:priority_id]
|
203
256
|
end
|
204
257
|
|
205
258
|
def test_make_payload_with_alias_keys
|
206
259
|
p = create_driver(CONFIG_WITH_PROPERTY_ALIAS_KEYS).instance
|
260
|
+
custom_fields = [{"id" => 1, "value" => "awesome"}]
|
207
261
|
record = {
|
208
262
|
"key_of_priority_id" => "123",
|
209
|
-
"key_of_category_id" => "456"
|
263
|
+
"key_of_category_id" => "456",
|
264
|
+
"key_of_custom_fields" => custom_fields
|
210
265
|
}
|
211
266
|
ret = p.make_payload("subject", "description", record)
|
212
267
|
assert_equal 123, ret[:issue][:priority_id]
|
213
268
|
assert_equal 456, ret[:issue][:category_id]
|
269
|
+
assert_equal custom_fields, ret[:issue][:custom_fields]
|
214
270
|
end
|
215
271
|
|
216
272
|
def test_make_payload_with_alias_keys_use_default_ids
|
@@ -218,6 +274,7 @@ CONFIG
|
|
218
274
|
ret = p.make_payload("subject", "description", {})
|
219
275
|
assert_equal 3, ret[:issue][:priority_id]
|
220
276
|
assert_equal 4, ret[:issue][:category_id]
|
277
|
+
assert_false ret[:issue].key?(:custom_fields)
|
221
278
|
end
|
222
279
|
|
223
280
|
def test_emit
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-redmine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takuma kanari
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|