genesis_collector 0.1.27 → 0.1.28

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
  SHA1:
3
- metadata.gz: 794cf9b7336cdf2230c6a0dac7dabcd713728f1c
4
- data.tar.gz: 66a0922e1a18e79edc407526ed96f8a5bc492ac8
3
+ metadata.gz: bd8f39a8d1af3d60b93b660d40ec8a2a892137e7
4
+ data.tar.gz: 29b7807e760154ddee6e6c9eb049054ba9e616cd
5
5
  SHA512:
6
- metadata.gz: 636cc95d095a07df45cf6910d192c318f7628f96fa1f8f12a55ad4352e13dcb45cdeef8b02c1d65e8ee56391fde121a0f2a7401a9343ee1a6ec84dd4704e0f33
7
- data.tar.gz: d5f2f0350ed6686157d390ebb012294500e2c2af2ad490e35c0b939b15a091d758836977de6d6f5e43620d6751ecaad33f87002eea25b02ce0a2730e84d9acc6
6
+ metadata.gz: e93499cfc55c3f2a87529124f173b64c583ad8a26d8683caa1bdd7e634911a95268afd7ac047c9a6858e7493e6bc1973abe54f6bed8eb6357e12fa15c3fd4a21
7
+ data.tar.gz: bc936f4b2eead68e95e7ed803dbfef82abd11a71f1f651a992668c71dd2a098a07b53d38d312de1a16a84b66ddb4b276a0bdb8b230f2ef1ecb9f5083a627a2a3
@@ -23,6 +23,7 @@ class Chef
23
23
  @bugsnag_config.app_version = GenesisCollector::VERSION
24
24
  @bugsnag_config.project_root = File.expand_path('../../..', File.dirname(__FILE__))
25
25
  @bugsnag_config.release_stage = run_context.node.chef_environment
26
+ @config[:error_handler] = ->(e) { Bugsnag::Notification.new(e, @bugsnag_config).deliver }
26
27
  end
27
28
  prepare_report
28
29
  send_report
@@ -27,13 +27,13 @@ module GenesisCollector
27
27
 
28
28
  def collect!
29
29
  @sku = get_sku
30
- collect_basic_data
31
- collect_chef
32
- collect_ipmi
33
- collect_network_interfaces
34
- collect_disks
35
- collect_cpus
36
- collect_memories
30
+ safely { collect_basic_data }
31
+ safely { collect_chef }
32
+ safely { collect_ipmi }
33
+ safely { collect_network_interfaces }
34
+ safely { collect_disks }
35
+ safely { collect_cpus }
36
+ safely { collect_memories }
37
37
  @payload
38
38
  end
39
39
 
@@ -114,6 +114,13 @@ module GenesisCollector
114
114
 
115
115
  private
116
116
 
117
+ def safely
118
+ yield
119
+ rescue StandardError => ex
120
+ STDERR.puts ex.message
121
+ @config[:error_handler].call(ex) if @config[:error_handler]
122
+ end
123
+
117
124
  def shellout_with_timeout(command, timeout = 2)
118
125
  response = `timeout #{timeout} #{command}`
119
126
  unless $CHILD_STATUS.success?
@@ -173,6 +180,8 @@ module GenesisCollector
173
180
  'UKN'
174
181
  end
175
182
  "#{manufacturer}-#{serial}".gsub('.','') # dells
183
+ rescue StandardError => ex
184
+ raise "Unable to deterimine SKU: #{ex.message}"
176
185
  end
177
186
 
178
187
  def read_dmi(key)
@@ -186,5 +195,9 @@ module GenesisCollector
186
195
  return nil unless ('A'..'Z').include?(value)
187
196
  value.empty? ? nil : value
188
197
  end
198
+
199
+ def ensure_command(command)
200
+ !`which #{command}`.empty? || raise("#{command} missing!")
201
+ end
189
202
  end
190
203
  end
@@ -2,6 +2,7 @@ module GenesisCollector
2
2
  module Disks
3
3
 
4
4
  def collect_disks
5
+ ensure_command('smartctl')
5
6
  @payload[:disks] = enumerate_disks
6
7
  @payload[:disks].each do |d|
7
8
  info = get_disk_info(d.delete(:smartctl_cmd))
@@ -13,6 +14,10 @@ module GenesisCollector
13
14
  d[:slot] = get_scsi_slot(d[:dev]) if d[:dev] =~ /^\/dev\/sd/
14
15
  end
15
16
  @payload[:disks].delete_if { |d| d[:serial_number].nil? }
17
+ rescue StandardError => ex
18
+ # Just to be sure we don't send partial data
19
+ @payload.delete(:disks)
20
+ raise ex
16
21
  end
17
22
 
18
23
  private
@@ -1,3 +1,3 @@
1
1
  module GenesisCollector
2
- VERSION = '0.1.27'
2
+ VERSION = '0.1.28'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: genesis_collector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.27
4
+ version: 0.1.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Radcliffe