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 +4 -4
- data/lib/chef/handler/genesis.rb +7 -11
- data/lib/genesis_collector/collector.rb +1 -1
- data/lib/genesis_collector/dmidecode.rb +50 -3
- data/lib/genesis_collector/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b494c48f416ed6e6fa60d4fe2b0961b32b77218
|
4
|
+
data.tar.gz: 84944c09bfba7871176099a323aadf05058215b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e8b72a5a28c6d2256775c626f075f13a3c465fe6e701672b42d7eb1426594d7ae2cf1f7a02fd5c2b3bbd5c898a063de0576545321dbd470b16f908dcc233996
|
7
|
+
data.tar.gz: f751f4b91284aa3d59526a9591befc4afdb1e9a1d1eaf5f912fb5607c6077a38e957b18f42e2ad985b4aa365cd99f15c46e59a5bb178f1c365b895fd6e7a6be6
|
data/lib/chef/handler/genesis.rb
CHANGED
@@ -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.
|
28
|
-
|
29
|
-
|
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.
|
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.
|
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['
|
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
|
-
|
20
|
-
title =
|
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}
|