genesis_collector 0.1.45 → 1.0.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 +4 -4
- data/lib/genesis_collector/collector.rb +7 -0
- data/lib/genesis_collector/megaraid.rb +52 -0
- data/lib/genesis_collector/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca7b324782ded8c7434bb37ddf9827dfa274dae6
|
4
|
+
data.tar.gz: b9bb6794ba2612ddaddc1825864d1a92a8510a26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0e612affad5353b1c41a537b496e97186e0a7037236978f868dd56cd8d1a734fe5678db20360bc2bcf08d8b9996f9cd84842fea3433861d37a176824544a4d3
|
7
|
+
data.tar.gz: 0a8dc9e161a5c958ef1d4ef9568d0a1682b81eff43196043460460c1cb1f5001392917f1e6314dd66338ac8406e227cd6db694972e5c48190751574d11948759
|
@@ -7,6 +7,7 @@ require 'genesis_collector/chef'
|
|
7
7
|
require 'genesis_collector/ipmi'
|
8
8
|
require 'genesis_collector/disks'
|
9
9
|
require 'genesis_collector/dmidecode'
|
10
|
+
require 'genesis_collector/megaraid'
|
10
11
|
require 'English'
|
11
12
|
|
12
13
|
module GenesisCollector
|
@@ -18,6 +19,7 @@ module GenesisCollector
|
|
18
19
|
include GenesisCollector::IPMI
|
19
20
|
include GenesisCollector::Disks
|
20
21
|
include GenesisCollector::DmiDecode
|
22
|
+
include GenesisCollector::MegaRaid
|
21
23
|
|
22
24
|
def initialize(config = {})
|
23
25
|
@chef_node = config.delete(:chef_node)
|
@@ -34,6 +36,7 @@ module GenesisCollector
|
|
34
36
|
safely { collect_disks }
|
35
37
|
safely { collect_cpus }
|
36
38
|
safely { collect_memories }
|
39
|
+
safely { collect_raids }
|
37
40
|
@payload
|
38
41
|
end
|
39
42
|
|
@@ -120,6 +123,10 @@ module GenesisCollector
|
|
120
123
|
end.compact
|
121
124
|
end
|
122
125
|
|
126
|
+
def collect_raids
|
127
|
+
collect_megaraid if megaraid?
|
128
|
+
end
|
129
|
+
|
123
130
|
private
|
124
131
|
|
125
132
|
def safely
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module GenesisCollector
|
2
|
+
module MegaRaid
|
3
|
+
|
4
|
+
def collect_megaraid
|
5
|
+
@payload[:raids] ||= []
|
6
|
+
@payload[:properties] ||= {}
|
7
|
+
if megaraid?
|
8
|
+
@payload[:properties]['MEGARAID_TYPE'] = read_megacli_adapter_type
|
9
|
+
@payload[:properties]['MEGARAID_FW_PACKAGE'] = read_megacli_adapter_firmware
|
10
|
+
@payload[:raids].concat read_megacli_logical_disks
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def megaraid?
|
15
|
+
return !read_megacli_adapter_type.nil?
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def megacli_adapter_output()
|
21
|
+
@megacli_adapter_output ||= shellout_with_timeout('megacli -AdpAllInfo -aAll', 10)
|
22
|
+
end
|
23
|
+
|
24
|
+
def read_megacli_adapter_type()
|
25
|
+
match = megacli_adapter_output.match(/Product Name\s*:\s*(.+)\s*$/)
|
26
|
+
return nil if match.nil?
|
27
|
+
match[1]
|
28
|
+
end
|
29
|
+
|
30
|
+
def read_megacli_adapter_firmware()
|
31
|
+
match = megacli_adapter_output.match(/FW Package Build\s*:\s*(\S+)$/)
|
32
|
+
return nil if match.nil?
|
33
|
+
match[1]
|
34
|
+
end
|
35
|
+
|
36
|
+
def read_megacli_logical_disks()
|
37
|
+
@megacli_ld_output ||= shellout_with_timeout('megacli -LDInfo -Lall -aAll', 10)
|
38
|
+
lds = []
|
39
|
+
@megacli_ld_output.split(/^$/).each do |disk|
|
40
|
+
lines = disk.split(/\n+/)
|
41
|
+
next if lines.count < 5 # skip status and empty
|
42
|
+
record = {}
|
43
|
+
lines.each do |line|
|
44
|
+
match = line.match(/\s*(.+?)\s*:\s*(.+)\s*$/)
|
45
|
+
record[match[1]] = match[2] unless match.nil?
|
46
|
+
end
|
47
|
+
lds << record
|
48
|
+
end
|
49
|
+
lds
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: genesis_collector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Radcliffe
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -93,6 +93,7 @@ files:
|
|
93
93
|
- lib/genesis_collector/disks.rb
|
94
94
|
- lib/genesis_collector/dmidecode.rb
|
95
95
|
- lib/genesis_collector/ipmi.rb
|
96
|
+
- lib/genesis_collector/megaraid.rb
|
96
97
|
- lib/genesis_collector/network_interfaces.rb
|
97
98
|
- lib/genesis_collector/simple_http.rb
|
98
99
|
- lib/genesis_collector/version.rb
|