genesis_collector 0.1.45 → 1.0.0

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: f2d31c2c02165f66c5cd9a332d48f7f5c5fc0cf9
4
- data.tar.gz: 61758e8518bfeeaf105793e57506dd6bf6d1bcfb
3
+ metadata.gz: ca7b324782ded8c7434bb37ddf9827dfa274dae6
4
+ data.tar.gz: b9bb6794ba2612ddaddc1825864d1a92a8510a26
5
5
  SHA512:
6
- metadata.gz: f30e129ad37c1ce7ae1aca8884d0f2f37424c6b2d038f6f43fd244d28a97a6c5923006378f47277586f977d907725d37b66cb07d8b11e19aee6798eebb47a43a
7
- data.tar.gz: 5a90543bc051b925119f9c2381a233dad785107c36f7c90ac95aaabd81a1e80f3606c0d19e18fa4f06bf241c34f5559fd8c33923058deb35c3a51526746c7d1c
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
@@ -1,3 +1,3 @@
1
1
  module GenesisCollector
2
- VERSION = '0.1.45'
2
+ VERSION = '1.0.0'
3
3
  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.1.45
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-20 00:00:00.000000000 Z
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