genesis_collector 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0ffc8ee73f6ae6d2beac4c5c6f417f32d207a024
4
- data.tar.gz: 0e79ae2099fe2f375bedf35dec2234df95c8b6e1
3
+ metadata.gz: 8b494c48f416ed6e6fa60d4fe2b0961b32b77218
4
+ data.tar.gz: 84944c09bfba7871176099a323aadf05058215b4
5
5
  SHA512:
6
- metadata.gz: 7d2193f9169116497316ee6003d53f62adb3fe4e83ac145d08ca7b895f7953794b9587b8ce2502cfd36d409738c16f695f664cbf398d7032c9ffc229a4b19d09
7
- data.tar.gz: 8088eaf3bf5db073d62af310df11775894415747fee328283bb1aa0c9daba1f67668415377aad33f846f7126161d4dc6bec25a005d6e9cefd1cb1d018e5ac729
6
+ metadata.gz: 9e8b72a5a28c6d2256775c626f075f13a3c465fe6e701672b42d7eb1426594d7ae2cf1f7a02fd5c2b3bbd5c898a063de0576545321dbd470b16f908dcc233996
7
+ data.tar.gz: f751f4b91284aa3d59526a9591befc4afdb1e9a1d1eaf5f912fb5607c6077a38e957b18f42e2ad985b4aa365cd99f15c46e59a5bb178f1c365b895fd6e7a6be6
@@ -14,19 +14,15 @@ class Chef
14
14
 
15
15
  def initialize(config = {})
16
16
  @config = Mash.new(config)
17
- if defined?(Bugsnag)
18
- Bugsnag.configure do |config|
19
- config.api_key = @config.delete('bugsnag_api_key')
20
- config.app_version = GenesisCollector::VERSION
21
- end
22
- end
23
17
  end
24
18
 
25
19
  def report
26
20
  if defined?(Bugsnag)
27
- Bugsnag.configure do |config|
28
- config.release_stage = run_context.node.chef_environment
29
- end
21
+ @bugsnag_config = Bugsnag::Configuration.new
22
+ @bugsnag_config.api_key = @config.delete('bugsnag_api_key')
23
+ @bugsnag_config.app_version = GenesisCollector::VERSION
24
+ @bugsnag_config.project_root = File.expand_path('../../..', File.dirname(__FILE__))
25
+ @bugsnag_config.release_stage = run_context.node.chef_environment
30
26
  end
31
27
  prepare_report
32
28
  send_report
@@ -38,7 +34,7 @@ class Chef
38
34
  @collector = GenesisCollector::Collector.new(@config.merge(chef_node: run_context.node))
39
35
  @collector.collect!
40
36
  rescue => e
41
- Bugsnag.notify(e) if defined?(Bugsnag)
37
+ Bugsnag::Notification.new(e, @bugsnag_config).deliver if defined?(Bugsnag)
42
38
  Chef::Log.error("Error collecting system information for Genesis:\n" + e.message)
43
39
  Chef::Log.error(e.backtrace.join("\n"))
44
40
  end
@@ -46,7 +42,7 @@ class Chef
46
42
  def send_report
47
43
  @collector.submit!
48
44
  rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT => e
49
- Bugsnag.notify(e) if defined?(Bugsnag)
45
+ Bugsnag::Notification.new(e, @bugsnag_config).deliver if defined?(Bugsnag)
50
46
  Chef::Log.error("Could not connect to Genesis. Connection error:\n" + e.message)
51
47
  Chef::Log.error(e.backtrace.join("\n"))
52
48
  end
@@ -84,7 +84,7 @@ module GenesisCollector
84
84
  end
85
85
 
86
86
  def collect_memories
87
- @payload[:memories] = get_dmi_data['memory'].map do |m|
87
+ @payload[:memories] = get_dmi_data['memory_device'].map do |m|
88
88
  empty = m['size'] == 'No Module Installed'
89
89
  {
90
90
  size: m['size'].to_i * 1000000,
@@ -1,6 +1,52 @@
1
1
  module GenesisCollector
2
2
  module DmiDecode
3
3
 
4
+ DMI_TYPES = {
5
+ 0 => 'bios',
6
+ 1 => 'system',
7
+ 2 => 'base_board',
8
+ 3 => 'chassis',
9
+ 4 => 'processor',
10
+ 5 => 'memory_controller',
11
+ 6 => 'memory_module',
12
+ 7 => 'cache',
13
+ 8 => 'port_connector',
14
+ 9 => 'system_slots',
15
+ 10 => 'on_board_devices',
16
+ 11 => 'oem_strings',
17
+ 12 => 'system_configuration_options',
18
+ 13 => 'bios_language',
19
+ 14 => 'group_associations',
20
+ 15 => 'system_event_log',
21
+ 16 => 'physical_memory_array',
22
+ 17 => 'memory_device',
23
+ 18 => '32_bit_memory_error',
24
+ 19 => 'memory_array_mapped_address',
25
+ 20 => 'memory_device_mapped_address',
26
+ 21 => 'builtin_pointing_device',
27
+ 22 => 'portable_battery',
28
+ 23 => 'system_reset',
29
+ 24 => 'hardware_security',
30
+ 25 => 'system_power_controls',
31
+ 26 => 'voltage_probe',
32
+ 27 => 'cooling_device',
33
+ 28 => 'temperature_probe',
34
+ 29 => 'electrical_current_probe',
35
+ 30 => 'out_of_band_remote_access',
36
+ 31 => 'boot_integrity_services',
37
+ 32 => 'system_boot',
38
+ 33 => '64_bit_memory_error',
39
+ 34 => 'management_device',
40
+ 35 => 'management_device_component',
41
+ 36 => 'management_device_threshold data',
42
+ 37 => 'memory_channel',
43
+ 38 => 'ipmi_device',
44
+ 39 => 'power_supply',
45
+ 40 => 'additional_information',
46
+ 41 => 'onboard_device',
47
+ 127 => 'end_of_table'
48
+ }
49
+
4
50
  def get_dmi_data
5
51
  @dmi_data ||= parse_dmidecode(shellout_with_timeout('dmidecode --type processor --type memory'))
6
52
  end
@@ -14,10 +60,11 @@ module GenesisCollector
14
60
  case line
15
61
  when /^End Of Table/, /^\s+$/, /^\# dmidecode/, /^SMBIOS/, /structures occupying/, /^Table at/
16
62
  next
17
- when /^Handle\s+(.*?),\s+/
63
+ when /^Handle\s+(.*?), DMI type (.*?),\s+/
18
64
  handle = $1.to_i(16)
19
- when /(.*)\s+Information\n$/, /(.*)\s+Device\n$/, /(.*)\s+Device Mapped Address\n$/, /(.*)\s+Array Mapped Address\n$/
20
- title = standardize_dmi_key($1)
65
+ type_id = $2.to_i
66
+ title = DMI_TYPES[type_id]
67
+ next if title == 'end_of_table'
21
68
  current_title = title
22
69
  dict[title] ||= []
23
70
  dict[title] << {'handle' => handle}
@@ -1,3 +1,3 @@
1
1
  module GenesisCollector
2
- VERSION = '0.1.10'
2
+ VERSION = '0.1.11'
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.10
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Radcliffe