genesis_collector 0.1.10 → 0.1.11

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: 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