fluent-plugin-kubernetes_metadata_filter 2.5.0 → 2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b1991a6b8cd09f65728588401e697dda36954b94cf75b625789c6e7773d50ccf
4
- data.tar.gz: df46f28a113c17aa3e2174d3ad23edb0b5b93fb6d65d5f02787d6ac83ac129a2
3
+ metadata.gz: c891b663769f4927f2bc0a2524b8358d965c0962ec8d56e691e50a4011c4b6f4
4
+ data.tar.gz: cb8110159bd202df0fba96c477149f16836b54598be864bbb5bda9412d8ef563
5
5
  SHA512:
6
- metadata.gz: 1a41d498af8a2e92723c05679608294d07acf2cf7a87dfdf5921fe3a385df6369003eef939dd5aeabf970c67f31eb319ac1485d566ac110bcbe6b79f5acc392a
7
- data.tar.gz: e62c355dbdb0ac1e89e43534c5929c80e82b166f5c614b1967d6ff79658835881a9c6803d5072e85a41c83fbefc8db326ba95c6d2f1c5a20ca1b8a0f18ce3cf1
6
+ metadata.gz: a974a260ab2b56e5e941711ae0216c6da574429a35e12cd622f76cea8423b66fa09b71a58f7627c5f940ad175b8c45cf8fb1b3993cb825197dab0ef4b4d28443
7
+ data.tar.gz: 5988e42558432f8e067b50230490c2a128661ef0f6f7294ee0e3e219eab764c11d4fc86b33b8c13a2c2753afc8416e14af8afff625afa64858d9a59c5802bb97
data/.circleci/config.yml CHANGED
@@ -14,21 +14,21 @@ missingdeps: &missingdeps
14
14
  sudo cp /tmp/sources.list /etc/apt/sources.list
15
15
  sudo apt-get update
16
16
  sudo apt-get install cmake libicu-dev libssl-dev
17
-
17
+
18
18
  test: &test
19
19
  name: Test bundle
20
20
  command: bundle exec rake test
21
21
 
22
22
  executors:
23
- ruby-2-4:
24
- docker:
25
- - image: circleci/ruby:2.4.6
26
23
  ruby-2-5:
27
24
  docker:
28
25
  - image: circleci/ruby:2.5.5
29
26
  ruby-2-6:
30
27
  docker:
31
28
  - image: circleci/ruby:2.6.3
29
+ ruby-2-7:
30
+ docker:
31
+ - image: circleci/ruby:2.7.1
32
32
  jobs:
33
33
  "ruby-test":
34
34
  parameters:
@@ -49,9 +49,9 @@ jobs:
49
49
  workflows:
50
50
  "test_multiple_ruby_versions":
51
51
  jobs:
52
- - ruby-test:
53
- ruby-version: ruby-2-4
54
52
  - ruby-test:
55
53
  ruby-version: ruby-2-5
56
54
  - ruby-test:
57
55
  ruby-version: ruby-2-6
56
+ - ruby-test:
57
+ ruby-version: ruby-2-7
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fluent-plugin-kubernetes_metadata_filter (2.5.0)
5
- fluentd (>= 0.14.0, < 1.12)
4
+ fluent-plugin-kubernetes_metadata_filter (2.6.0)
5
+ fluentd (>= 0.14.0, < 1.13)
6
6
  kubeclient (< 5)
7
7
  lru_redux
8
8
 
@@ -12,36 +12,37 @@ GEM
12
12
  addressable (2.7.0)
13
13
  public_suffix (>= 2.0.2, < 5.0)
14
14
  ast (2.4.1)
15
- bump (0.9.0)
15
+ bump (0.10.0)
16
16
  charlock_holmes (0.7.7)
17
17
  codeclimate-test-reporter (0.6.0)
18
18
  simplecov (>= 0.7.1, < 1.0.0)
19
- concurrent-ruby (1.1.6)
20
- cool.io (1.6.0)
19
+ concurrent-ruby (1.1.8)
20
+ cool.io (1.7.0)
21
21
  copyright-header (1.0.22)
22
22
  github-linguist
23
- crack (0.4.3)
24
- safe_yaml (~> 1.0.0)
25
- docile (1.3.2)
23
+ crack (0.4.5)
24
+ rexml
25
+ docile (1.3.5)
26
26
  domain_name (0.5.20190701)
27
27
  unf (>= 0.0.5, < 1.0.0)
28
28
  escape_utils (1.2.1)
29
- ffi (1.13.1)
29
+ ffi (1.14.2)
30
30
  ffi-compiler (1.0.1)
31
31
  ffi (>= 1.0.0)
32
32
  rake
33
- fluentd (1.11.1)
33
+ fluentd (1.12.0)
34
+ bundler
34
35
  cool.io (>= 1.4.5, < 2.0.0)
35
36
  http_parser.rb (>= 0.5.1, < 0.7.0)
36
37
  msgpack (>= 1.3.1, < 2.0.0)
37
- serverengine (>= 2.0.4, < 3.0.0)
38
+ serverengine (>= 2.2.2, < 3.0.0)
38
39
  sigdump (~> 0.2.2)
39
40
  strptime (>= 0.2.2, < 1.0.0)
40
41
  tzinfo (>= 1.0, < 3.0)
41
42
  tzinfo-data (~> 1.0)
42
43
  yajl-ruby (~> 1.0)
43
- github-linguist (7.9.0)
44
- charlock_holmes (~> 0.7.6)
44
+ github-linguist (7.12.2)
45
+ charlock_holmes (~> 0.7.7)
45
46
  escape_utils (~> 1.2.0)
46
47
  mini_mime (~> 1.0)
47
48
  rugged (>= 0.25.1)
@@ -55,30 +56,34 @@ GEM
55
56
  http-cookie (1.0.3)
56
57
  domain_name (~> 0.5)
57
58
  http-form_data (2.3.0)
58
- http-parser (1.2.1)
59
+ http-parser (1.2.3)
59
60
  ffi-compiler (>= 1.0, < 2.0)
60
61
  http_parser.rb (0.6.0)
61
- kubeclient (4.7.0)
62
+ jsonpath (1.1.0)
63
+ multi_json
64
+ kubeclient (4.9.1)
62
65
  http (>= 3.0, < 5.0)
66
+ jsonpath (~> 1.0)
63
67
  recursive-open-struct (~> 1.1, >= 1.1.1)
64
68
  rest-client (~> 2.0)
65
69
  lru_redux (1.1.0)
66
70
  mime-types (3.3.1)
67
71
  mime-types-data (~> 3.2015)
68
- mime-types-data (3.2020.0512)
72
+ mime-types-data (3.2020.1104)
69
73
  mini_mime (1.0.2)
70
74
  minitest (4.7.5)
71
75
  msgpack (1.3.3)
76
+ multi_json (1.15.0)
72
77
  netrc (0.11.0)
73
- parallel (1.19.2)
74
- parser (2.7.1.4)
78
+ parallel (1.20.1)
79
+ parser (3.0.0.0)
75
80
  ast (~> 2.4.1)
76
81
  power_assert (1.2.0)
77
- public_suffix (4.0.5)
82
+ public_suffix (4.0.6)
78
83
  rainbow (3.0.0)
79
- rake (13.0.1)
80
- recursive-open-struct (1.1.2)
81
- regexp_parser (1.7.1)
84
+ rake (13.0.3)
85
+ recursive-open-struct (1.1.3)
86
+ regexp_parser (2.0.3)
82
87
  rest-client (2.1.0)
83
88
  http-accept (>= 1.7.0, < 2.0)
84
89
  http-cookie (>= 1.0.2, < 2.0)
@@ -86,43 +91,44 @@ GEM
86
91
  netrc (~> 0.8)
87
92
  rexml (3.2.4)
88
93
  rr (1.2.1)
89
- rubocop (0.86.0)
94
+ rubocop (1.8.1)
90
95
  parallel (~> 1.10)
91
- parser (>= 2.7.0.1)
96
+ parser (>= 3.0.0.0)
92
97
  rainbow (>= 2.2.2, < 4.0)
93
- regexp_parser (>= 1.7)
98
+ regexp_parser (>= 1.8, < 3.0)
94
99
  rexml
95
- rubocop-ast (>= 0.0.3, < 1.0)
100
+ rubocop-ast (>= 1.2.0, < 2.0)
96
101
  ruby-progressbar (~> 1.7)
97
- unicode-display_width (>= 1.4.0, < 2.0)
98
- rubocop-ast (0.1.0)
99
- parser (>= 2.7.0.1)
100
- ruby-progressbar (1.10.1)
101
- rugged (1.0.1)
102
- safe_yaml (1.0.5)
103
- serverengine (2.2.1)
102
+ unicode-display_width (>= 1.4.0, < 3.0)
103
+ rubocop-ast (1.4.0)
104
+ parser (>= 2.7.1.5)
105
+ ruby-progressbar (1.11.0)
106
+ rugged (1.1.0)
107
+ serverengine (2.2.2)
104
108
  sigdump (~> 0.2.2)
105
109
  sigdump (0.2.4)
106
- simplecov (0.18.5)
110
+ simplecov (0.21.2)
107
111
  docile (~> 1.1)
108
112
  simplecov-html (~> 0.11)
109
- simplecov-html (0.12.2)
110
- strptime (0.2.4)
113
+ simplecov_json_formatter (~> 0.1)
114
+ simplecov-html (0.12.3)
115
+ simplecov_json_formatter (0.1.2)
116
+ strptime (0.2.5)
111
117
  test-unit (3.0.9)
112
118
  power_assert
113
119
  test-unit-rr (1.0.5)
114
120
  rr (>= 1.1.1)
115
121
  test-unit (>= 2.5.2)
116
- tzinfo (2.0.2)
122
+ tzinfo (2.0.4)
117
123
  concurrent-ruby (~> 1.0)
118
- tzinfo-data (1.2020.1)
124
+ tzinfo-data (1.2020.6)
119
125
  tzinfo (>= 1.0.0)
120
126
  unf (0.1.4)
121
127
  unf_ext
122
128
  unf_ext (0.0.7.7)
123
- unicode-display_width (1.7.0)
129
+ unicode-display_width (2.0.0)
124
130
  vcr (6.0.0)
125
- webmock (3.8.3)
131
+ webmock (3.11.1)
126
132
  addressable (>= 2.3.6)
127
133
  crack (>= 0.3.2)
128
134
  hashdiff (>= 0.4.0, < 2.0.0)
@@ -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-kubernetes_metadata_filter"
7
- gem.version = "2.5.0"
7
+ gem.version = "2.6.0"
8
8
  gem.authors = ["Jimmi Dyson"]
9
9
  gem.email = ["jimmidyson@gmail.com"]
10
10
  gem.description = %q{Filter plugin to add Kubernetes metadata}
@@ -13,13 +13,10 @@ Gem::Specification.new do |gem|
13
13
  gem.license = "Apache-2.0"
14
14
 
15
15
  gem.files = `git ls-files`.split($/)
16
- gem.executables = gem.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
- gem.require_paths = ["lib"]
19
16
 
20
- gem.required_ruby_version = '>= 2.1.0'
17
+ gem.required_ruby_version = '>= 2.5.0'
21
18
 
22
- gem.add_runtime_dependency 'fluentd', ['>= 0.14.0', '< 1.12']
19
+ gem.add_runtime_dependency 'fluentd', ['>= 0.14.0', '< 1.13']
23
20
  gem.add_runtime_dependency "lru_redux"
24
21
  gem.add_runtime_dependency "kubeclient", '< 5'
25
22
 
@@ -90,29 +90,15 @@ module Fluent::Plugin
90
90
 
91
91
  def fetch_pod_metadata(namespace_name, pod_name)
92
92
  log.trace("fetching pod metadata: #{namespace_name}/#{pod_name}") if log.trace?
93
- begin
94
- metadata = @client.get_pod(pod_name, namespace_name)
95
- unless metadata
96
- log.trace("no metadata returned for: #{namespace_name}/#{pod_name}") if log.trace?
97
- @stats.bump(:pod_cache_api_nil_not_found)
98
- else
99
- begin
100
- log.trace("raw metadata for #{namespace_name}/#{pod_name}: #{metadata}") if log.trace?
101
- metadata = parse_pod_metadata(metadata)
102
- @stats.bump(:pod_cache_api_updates)
103
- log.trace("parsed metadata for #{namespace_name}/#{pod_name}: #{metadata}") if log.trace?
104
- @cache[metadata['pod_id']] = metadata
105
- return metadata
106
- rescue Exception=>e
107
- log.debug(e)
108
- @stats.bump(:pod_cache_api_nil_bad_resp_payload)
109
- log.trace("returning empty metadata for #{namespace_name}/#{pod_name} due to error '#{e}'") if log.trace?
110
- end
111
- end
112
- rescue Exception=>e
113
- @stats.bump(:pod_cache_api_nil_error)
114
- log.debug "Exception '#{e}' encountered fetching pod metadata from Kubernetes API #{@apiVersion} endpoint #{@kubernetes_url}"
115
- end
93
+ pod_object = @client.get_pod(pod_name, namespace_name)
94
+ log.trace("raw metadata for #{namespace_name}/#{pod_name}: #{pod_object}") if log.trace?
95
+ metadata = parse_pod_metadata(pod_object)
96
+ @stats.bump(:pod_cache_api_updates)
97
+ log.trace("parsed metadata for #{namespace_name}/#{pod_name}: #{metadata}") if log.trace?
98
+ @cache[metadata['pod_id']] = metadata
99
+ rescue => e
100
+ @stats.bump(:pod_cache_api_nil_error)
101
+ log.debug "Exception '#{e}' encountered fetching pod metadata from Kubernetes API #{@apiVersion} endpoint #{@kubernetes_url}"
116
102
  {}
117
103
  end
118
104
 
@@ -132,29 +118,15 @@ module Fluent::Plugin
132
118
 
133
119
  def fetch_namespace_metadata(namespace_name)
134
120
  log.trace("fetching namespace metadata: #{namespace_name}") if log.trace?
135
- begin
136
- metadata = @client.get_namespace(namespace_name)
137
- unless metadata
138
- log.trace("no metadata returned for: #{namespace_name}") if log.trace?
139
- @stats.bump(:namespace_cache_api_nil_not_found)
140
- else
141
- begin
142
- log.trace("raw metadata for #{namespace_name}: #{metadata}") if log.trace?
143
- metadata = parse_namespace_metadata(metadata)
144
- @stats.bump(:namespace_cache_api_updates)
145
- log.trace("parsed metadata for #{namespace_name}: #{metadata}") if log.trace?
146
- @namespace_cache[metadata['namespace_id']] = metadata
147
- return metadata
148
- rescue Exception => e
149
- log.debug(e)
150
- @stats.bump(:namespace_cache_api_nil_bad_resp_payload)
151
- log.trace("returning empty metadata for #{namespace_name} due to error '#{e}'") if log.trace?
152
- end
153
- end
154
- rescue Exception => kube_error
155
- @stats.bump(:namespace_cache_api_nil_error)
156
- log.debug "Exception '#{kube_error}' encountered fetching namespace metadata from Kubernetes API #{@apiVersion} endpoint #{@kubernetes_url}"
157
- end
121
+ namespace_object = @client.get_namespace(namespace_name)
122
+ log.trace("raw metadata for #{namespace_name}: #{namespace_object}") if log.trace?
123
+ metadata = parse_namespace_metadata(namespace_object)
124
+ @stats.bump(:namespace_cache_api_updates)
125
+ log.trace("parsed metadata for #{namespace_name}: #{metadata}") if log.trace?
126
+ @namespace_cache[metadata['namespace_id']] = metadata
127
+ rescue => kube_error
128
+ @stats.bump(:namespace_cache_api_nil_error)
129
+ log.debug "Exception '#{kube_error}' encountered fetching namespace metadata from Kubernetes API #{@apiVersion} endpoint #{@kubernetes_url}"
158
130
  {}
159
131
  end
160
132
 
@@ -174,7 +146,7 @@ module Fluent::Plugin
174
146
  require 'lru_redux'
175
147
  @stats = KubernetesMetadata::Stats.new
176
148
 
177
- if @de_dot && (@de_dot_separator =~ /\./).present?
149
+ if @de_dot && @de_dot_separator.include?(".")
178
150
  raise Fluent::ConfigError, "Invalid de_dot_separator: cannot be or contain '.'"
179
151
  end
180
152
 
@@ -201,7 +173,7 @@ module Fluent::Plugin
201
173
 
202
174
  env_host = ENV['KUBERNETES_SERVICE_HOST']
203
175
  env_port = ENV['KUBERNETES_SERVICE_PORT']
204
- if env_host.present? && env_port.present?
176
+ if present?(env_host) && present?(env_port)
205
177
  if env_host =~ Resolv::IPv6::Regex
206
178
  # Brackets are needed around IPv6 addresses
207
179
  env_host = "[#{env_host}]"
@@ -219,22 +191,21 @@ module Fluent::Plugin
219
191
  ca_cert = File.join(@secret_dir, K8_POD_CA_CERT)
220
192
  pod_token = File.join(@secret_dir, K8_POD_TOKEN)
221
193
 
222
- if !@ca_file.present? and File.exist?(ca_cert)
194
+ if !present?(@ca_file) and File.exist?(ca_cert)
223
195
  log.debug "Found CA certificate: #{ca_cert}"
224
196
  @ca_file = ca_cert
225
197
  end
226
198
 
227
- if !@bearer_token_file.present? and File.exist?(pod_token)
199
+ if !present?(@bearer_token_file) and File.exist?(pod_token)
228
200
  log.debug "Found pod token: #{pod_token}"
229
201
  @bearer_token_file = pod_token
230
202
  end
231
203
  end
232
204
 
233
- if @kubernetes_url.present?
234
-
205
+ if present?(@kubernetes_url)
235
206
  ssl_options = {
236
- client_cert: @client_cert.present? ? OpenSSL::X509::Certificate.new(File.read(@client_cert)) : nil,
237
- client_key: @client_key.present? ? OpenSSL::PKey::RSA.new(File.read(@client_key)) : nil,
207
+ client_cert: present?(@client_cert) ? OpenSSL::X509::Certificate.new(File.read(@client_cert)) : nil,
208
+ client_key: present?(@client_key) ? OpenSSL::PKey::RSA.new(File.read(@client_key)) : nil,
238
209
  ca_file: @ca_file,
239
210
  verify_ssl: @verify_ssl ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE
240
211
  }
@@ -256,15 +227,19 @@ module Fluent::Plugin
256
227
 
257
228
  auth_options = {}
258
229
 
259
- if @bearer_token_file.present?
230
+ if present?(@bearer_token_file)
260
231
  bearer_token = File.read(@bearer_token_file)
261
232
  auth_options[:bearer_token] = bearer_token
262
233
  end
263
234
 
264
235
  log.debug "Creating K8S client"
265
- @client = Kubeclient::Client.new @kubernetes_url, @apiVersion,
266
- ssl_options: ssl_options,
267
- auth_options: auth_options
236
+ @client = Kubeclient::Client.new(
237
+ @kubernetes_url,
238
+ @apiVersion,
239
+ ssl_options: ssl_options,
240
+ auth_options: auth_options,
241
+ as: :parsed_symbolized
242
+ )
268
243
 
269
244
  begin
270
245
  @client.api_valid?
@@ -305,7 +280,7 @@ module Fluent::Plugin
305
280
  'pod_name' => pod_name
306
281
  }
307
282
  }
308
- if @kubernetes_url.present?
283
+ if present?(@kubernetes_url)
309
284
  pod_metadata = get_pod_metadata(container_id, namespace_name, pod_name, create_time, batch_miss_cache)
310
285
 
311
286
  if (pod_metadata.include? 'containers') && (pod_metadata['containers'].include? container_id) && !@skip_container_metadata
@@ -396,5 +371,9 @@ module Fluent::Plugin
396
371
  end
397
372
  end
398
373
 
374
+ # copied from activesupport
375
+ def present?(object)
376
+ object.respond_to?(:empty?) ? !object.empty? : !!object
377
+ end
399
378
  end
400
379
  end
@@ -19,6 +19,12 @@
19
19
  module KubernetesMetadata
20
20
  module Common
21
21
 
22
+ class GoneError < StandardError
23
+ def initialize(msg="410 Gone")
24
+ super
25
+ end
26
+ end
27
+
22
28
  def match_annotations(annotations)
23
29
  result = {}
24
30
  @annotations_regexps.each do |regexp|
@@ -33,65 +39,65 @@ module KubernetesMetadata
33
39
 
34
40
  def parse_namespace_metadata(namespace_object)
35
41
  labels = String.new
36
- labels = syms_to_strs(namespace_object['metadata']['labels'].to_h) unless @skip_labels
42
+ labels = syms_to_strs(namespace_object[:metadata][:labels].to_h) unless @skip_labels
37
43
 
38
- annotations = match_annotations(syms_to_strs(namespace_object['metadata']['annotations'].to_h))
44
+ annotations = match_annotations(syms_to_strs(namespace_object[:metadata][:annotations].to_h))
39
45
  if @de_dot
40
46
  self.de_dot!(labels) unless @skip_labels
41
47
  self.de_dot!(annotations)
42
48
  end
43
49
  kubernetes_metadata = {
44
- 'namespace_id' => namespace_object['metadata']['uid'],
45
- 'creation_timestamp' => namespace_object['metadata']['creationTimestamp']
50
+ 'namespace_id' => namespace_object[:metadata][:uid],
51
+ 'creation_timestamp' => namespace_object[:metadata][:creationTimestamp]
46
52
  }
47
53
  kubernetes_metadata['namespace_labels'] = labels unless labels.empty?
48
54
  kubernetes_metadata['namespace_annotations'] = annotations unless annotations.empty?
49
- return kubernetes_metadata
55
+ kubernetes_metadata
50
56
  end
51
57
 
52
58
  def parse_pod_metadata(pod_object)
53
59
  labels = String.new
54
- labels = syms_to_strs(pod_object['metadata']['labels'].to_h) unless @skip_labels
60
+ labels = syms_to_strs(pod_object[:metadata][:labels].to_h) unless @skip_labels
55
61
 
56
- annotations = match_annotations(syms_to_strs(pod_object['metadata']['annotations'].to_h))
62
+ annotations = match_annotations(syms_to_strs(pod_object[:metadata][:annotations].to_h))
57
63
  if @de_dot
58
64
  self.de_dot!(labels) unless @skip_labels
59
65
  self.de_dot!(annotations)
60
66
  end
61
67
 
62
- # collect container informations
68
+ # collect container information
63
69
  container_meta = {}
64
70
  begin
65
- pod_object['status']['containerStatuses'].each do|container_status|
71
+ pod_object[:status][:containerStatuses].each do|container_status|
66
72
  # get plain container id (eg. docker://hash -> hash)
67
- container_id = container_status['containerID'].sub /^[-_a-zA-Z0-9]+:\/\//, ''
73
+ container_id = container_status[:containerID].sub /^[-_a-zA-Z0-9]+:\/\//, ''
68
74
  unless @skip_container_metadata
69
75
  container_meta[container_id] = {
70
- 'name' => container_status['name'],
71
- 'image' => container_status['image'],
72
- 'image_id' => container_status['imageID']
76
+ 'name' => container_status[:name],
77
+ 'image' => container_status[:image],
78
+ 'image_id' => container_status[:imageID]
73
79
  }
74
80
  else
75
81
  container_meta[container_id] = {
76
- 'name' => container_status['name']
82
+ 'name' => container_status[:name]
77
83
  }
78
84
  end
79
85
  end
80
86
  rescue
81
- log.debug("parsing container meta information failed for: #{pod_object['metadata']['namespace']}/#{pod_object['metadata']['name']} ")
87
+ log.debug("parsing container meta information failed for: #{pod_object[:metadata][:namespace]}/#{pod_object[:metadata][:name]} ")
82
88
  end
83
89
 
84
90
  kubernetes_metadata = {
85
- 'namespace_name' => pod_object['metadata']['namespace'],
86
- 'pod_id' => pod_object['metadata']['uid'],
87
- 'pod_name' => pod_object['metadata']['name'],
91
+ 'namespace_name' => pod_object[:metadata][:namespace],
92
+ 'pod_id' => pod_object[:metadata][:uid],
93
+ 'pod_name' => pod_object[:metadata][:name],
88
94
  'containers' => syms_to_strs(container_meta),
89
- 'host' => pod_object['spec']['nodeName']
95
+ 'host' => pod_object[:spec][:nodeName]
90
96
  }
91
97
  kubernetes_metadata['annotations'] = annotations unless annotations.empty?
92
98
  kubernetes_metadata['labels'] = labels unless labels.empty?
93
99
  kubernetes_metadata['master_url'] = @kubernetes_url unless @skip_master_url
94
- return kubernetes_metadata
100
+ kubernetes_metadata
95
101
  end
96
102
 
97
103
  def syms_to_strs(hsh)
@@ -111,29 +117,3 @@ module KubernetesMetadata
111
117
 
112
118
  end
113
119
  end
114
-
115
- # copied from activesupport
116
- class Object
117
- # An object is blank if it's false, empty, or a whitespace string.
118
- # For example, +nil+, '', ' ', [], {}, and +false+ are all blank.
119
- #
120
- # This simplifies
121
- #
122
- # !address || address.empty?
123
- #
124
- # to
125
- #
126
- # address.blank?
127
- #
128
- # @return [true, false]
129
- def blank?
130
- respond_to?(:empty?) ? !!empty? : !self
131
- end
132
-
133
- # An object is present if it's not blank.
134
- #
135
- # @return [true, false]
136
- def present?
137
- !blank?
138
- end
139
- end