fluent-plugin-mesosphere-filter 0.1.9 → 0.1.10

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MDFmNDBiNDczZmY1ZWVkYjMwOWNkNWQ5ZDhmOGIzNWEwYTMwM2E5YQ==
4
+ MGU0MDQyMzUwNzIyZGE0NWQ4OTdmMzgzYWY0OWM3N2NhMDA5YmRhNg==
5
5
  data.tar.gz: !binary |-
6
- NTc4ZjBmY2ZhYTI2ODY5Y2ZiZTlmNGY0MTRkNzJmODU5NTdmMjEwZA==
6
+ YWNhYTJmNDk4NjcwZmZkMDlkYmMwNDBlOWFkNjAyNzRkN2RhYjczNg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- Nzg4OGEwNjRiMTRlZjhmOGZiMmI3OTgwY2JlMTZkZmUyZTIyY2NjZDRlNDU3
10
- MGE2ZDVjMjMwOTYxNDY5MjIwZjc1YmFiYjI3NmExNmVjMDg5YmVjMTcyOTkx
11
- Mjc4NmRhZTlkMzY2ZTE5MDdhOTRmMjcyZDMxZTdkOTI0YzU3Yzg=
9
+ MzlhYTBhZjAwMjBlM2Y3N2Q4MjM0MjM1ZmZhNmZjMDlhZDdiMTRiNTk5NDAx
10
+ Yjg4MmQ2NTZiNGI1Njc2OTcwMjhjYzM4MmM4ZDA2M2JjNmE0MjE2ZWI5NjYy
11
+ NTgwYmVjMjdjZmZkYjNjODEzMDhjZjgyMDc3MzczYzgxNDM1YmQ=
12
12
  data.tar.gz: !binary |-
13
- MWJmYzhiZGY1N2RjZjkwN2I0MDMxMjdkNDQ1ZTY5OGU0ZTZiZmRiMjBiZTIz
14
- YTFmYjBlNTlmMWYzZmEzYTcyM2FkYmVjMWZkMmI5ZDgwYTk4ZGI1YTNjN2I1
15
- MmE0NjUyYWY3MzMyMDdmZmRkMGE3MWI2MWY3ODlmY2EwYTQ2MGE=
13
+ NDU5YmIxYjNmMTNkNmQyYjk4MDQyNWYyYjY4MTczZDg2YmI5OWYxODI3YzU4
14
+ ODI1MmMxZDM0M2E2MzdhMzFlOThlODkyNzEyNTZlMmFkMGE4MzViZTlkNzBl
15
+ NGQzZGUyNjYwM2VhZjg3ZTk1MDk5ZGQ1NmRiMzZlZWZlZDViNDM=
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |gem|
6
6
  gem.name = 'fluent-plugin-mesosphere-filter'
7
- gem.version = '0.1.9'
7
+ gem.version = '0.1.10'
8
8
  gem.authors = ['Joseph Hughes']
9
9
  gem.email = ['jjhughes57@gmail.com']
10
10
  gem.description = 'Filter plugin to add Mesosphere metadata'
@@ -25,6 +25,7 @@ module Fluent
25
25
  config_param :cache_ttl, :integer, default: 60 * 60
26
26
  config_param :get_container_id_tag, :bool, default: true
27
27
  config_param :container_id_attr, :string, default: 'container_id'
28
+ config_param :namespace_env_var, :string, default: nil
28
29
 
29
30
  config_param :merge_json_log, :bool, default: true
30
31
  config_param :cronos_task_regex,
@@ -122,6 +123,8 @@ module Fluent
122
123
  task_data['mesos_framework'] = 'chronos'
123
124
  task_data['app'] = match_data['app'] if match_data
124
125
  task_data['chronos_task_type'] = match_data['task_type'] if match_data
126
+ elsif @namespace_env_var && env.include?(@namespace_env_var)
127
+ task_data['namespace'] = parse_env(env)
125
128
  end
126
129
  end
127
130
  end
@@ -165,7 +168,8 @@ module Fluent
165
168
  end
166
169
 
167
170
  # Look at the log value and if it is valid json then we will parse the json
168
- # and merge it into the log record.
171
+ # and merge it into the log record. If a namespace is present then the log
172
+ # record is placed under that key.
169
173
  # ==== Attributes:
170
174
  # * +record+ - The record we are transforming in the fluentd event stream.
171
175
  # ==== Examples
@@ -177,9 +181,15 @@ module Fluent
177
181
  def merge_json_log(record)
178
182
  if record.key?('log')
179
183
  log = record['log'].strip
184
+ namespace = record['namespace']
180
185
  if log[0].eql?('{') && log[-1].eql?('}')
181
186
  begin
182
- record = Oj.load(log).merge(record)
187
+ log_json = Oj.load(log)
188
+ if namespace
189
+ record[namespace] = log_json
190
+ else
191
+ record = log_json.merge(record)
192
+ end
183
193
  rescue Oj::ParseError
184
194
  end
185
195
  end
@@ -29,7 +29,8 @@
29
29
  "YEAR=2016",
30
30
  "VAULT_HOSTS=https://dev-use1a-pr-01-vault-vault-0001.dev-utopia.com:8200,https://dev-use1b-pr-01-vault-vault-0001.dev-utopia.com:8200,https://dev-use1e-pr-01-vault-vault-0001.dev-utopia.com:8200",
31
31
  "MESOS_SANDBOX=/mnt/mesos/sandbox",
32
- "PORT=80"
32
+ "PORT=80",
33
+ "NAMESPACE=ns"
33
34
  ],
34
35
  "ExposedPorts": {
35
36
  "80/tcp": {}
@@ -122,7 +122,8 @@
122
122
  "MARATHON_APP_ID=/hello-world",
123
123
  "FLUENTD_CONF=test.conf",
124
124
  "PATH=/home/ubuntu/ruby/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
125
- "FLUENTD_OPT="
125
+ "FLUENTD_OPT=",
126
+ "NAMESPACE=ns"
126
127
  ],
127
128
  "Cmd": [
128
129
  "/bin/sh",
@@ -25,6 +25,9 @@ class AmplifierFilterTest < Test::Unit::TestCase
25
25
  get_container_id_tag false
26
26
  container_id_attr container_id
27
27
  ]
28
+ CONFIG4 = %[
29
+ namespace_env_var NAMESPACE
30
+ ]
28
31
 
29
32
  def create_driver(conf = CONFIG, tag = 'test')
30
33
  Fluent::Test::FilterTestDriver.new(Fluent::MesosphereFilter, tag).configure(conf)
@@ -152,6 +155,20 @@ class AmplifierFilterTest < Test::Unit::TestCase
152
155
  assert_equal 'Hello World', log_entry['test_key']
153
156
  end
154
157
 
158
+ def test_merge_json_with_namespace
159
+ setup_chronos_container
160
+
161
+ d1 = create_driver(CONFIG4, 'docker.foobar124')
162
+ d1.run do
163
+ d1.filter('log' => '{"test_key":"Hello World"}')
164
+ end
165
+ filtered = d1.filtered_as_array
166
+ log_entry = filtered[0][2]
167
+
168
+ assert_equal 'ns', log_entry['namespace']
169
+ assert_equal 'Hello World', log_entry['ns']['test_key']
170
+ end
171
+
155
172
  def test_bad_merge_json
156
173
  setup_chronos_container
157
174
  bad_json1 = '{"test_key":"Hello World"'
@@ -168,6 +185,24 @@ class AmplifierFilterTest < Test::Unit::TestCase
168
185
  assert_equal bad_json2, filtered[1][2]['log']
169
186
  end
170
187
 
188
+ def test_bad_merge_json_with_namespace
189
+ setup_chronos_container
190
+ bad_json1 = '{"test_key":"Hello World"'
191
+ bad_json2 = '{"test_key":"Hello World", "badnews"}'
192
+
193
+ d1 = create_driver(CONFIG4, 'docker.foobar124')
194
+ d1.run do
195
+ d1.filter('log' => bad_json1)
196
+ d1.filter('log' => bad_json2)
197
+ end
198
+ filtered = d1.filtered_as_array
199
+
200
+ assert_equal bad_json1, filtered[0][2]['log']
201
+ assert_equal bad_json2, filtered[1][2]['log']
202
+ assert_equal false, filtered[0][2].key?('ns')
203
+ assert_equal false, filtered[1][2].key?('ns')
204
+ end
205
+
171
206
  def test_container_id_from_record
172
207
  setup_marathon_container('somecontainer123', 'marathon2')
173
208
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-mesosphere-filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joseph Hughes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-02 00:00:00.000000000 Z
11
+ date: 2016-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd