onering-report 0.6.5 → 0.6.6

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: 2ec8274d268a961e2138cb05c7371610982db522
4
- data.tar.gz: 0faf9d2467b487596783743c9485940149016d89
3
+ metadata.gz: 52a32d9a3ce8d7cf810b725c475de4f73897be43
4
+ data.tar.gz: 2d9baebdcbc0bf1f33e9c13ad0aa8c1137f208c6
5
5
  SHA512:
6
- metadata.gz: 73c92ee34a7b60620f9c9d232a1ee11ea72d53dd5f23e32c29e3baeb74b995f1a3aee9eb2397181971a9fc2f755bea98f5cade44ce5bc9be3471c768b6a51d2e
7
- data.tar.gz: 9a79363d52c99399801d87206bf9171708f5930b698d5e2dea9174ab2468495329d9ffd2a2ecab3b53c60eb6418c531e7c2f132111498a9057d271a6e40eb664
6
+ metadata.gz: 68f3bf0756d41ac91af178c26c19dbfe06ae7e3bd4ef43407e4fcb039fe10e2b6b399199d075d5255efc360436aad6efd94849e2ae4a6a8f065c9995fdd5f118
7
+ data.tar.gz: 2ae2657444af6fdf86949cd232e381dc12fcb369e42da71fa21bdffce857bf533f51d877b35e8143f59afd79b01a2e2f3ccb2f3e5e061c94d85fcfd24b70fdb3
data/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Intro
2
+
3
+ A set of Pupppet Facter facts for onering agent.
@@ -1,22 +1,24 @@
1
+ require 'timeout'
2
+
1
3
  Facter.add('site') do
2
4
  setcode do
3
5
  if File.size?('/etc/onering/static/site')
4
- site = File.read('/etc/onering/static/site').strip.chomp
6
+ site = File.read('/etc/onering/static/site').strip.chomp
5
7
 
6
8
  else
7
- if File.exists?('/proc/cmdline')
8
- site = (File.read('/proc/cmdline').chomp.split(' ').select{|i| i =~ /^domain=/ }.first rescue nil)
9
- site = site.split('=', 2).last if site
10
- site = site.split('.').first if site
11
- end
9
+ if File.exists?('/proc/cmdline')
10
+ site = (File.read('/proc/cmdline').chomp.split(' ').select{|i| i =~ /^domain=/ }.first rescue nil)
11
+ site = site.split('=', 2).last if site
12
+ site = site.split('.').first if site
13
+ end
12
14
  end
13
15
 
14
16
  site = nil if ['test', 'hw', 'vm'].include?(site)
15
17
 
16
18
  if site
17
- site
19
+ site
18
20
  else
19
- Facter.value('fqdn').split('.')[-3].downcase rescue nil
21
+ Facter.value('fqdn').split('.')[-3].downcase rescue nil
20
22
  end
21
23
  end
22
24
  end
@@ -27,13 +29,13 @@ Facter.add('environment') do
27
29
 
28
30
  case env
29
31
  when 'dev'
30
- 'development'
32
+ 'development'
31
33
  when /(stg|stage)/
32
- 'staging'
34
+ 'staging'
33
35
  when 'prod'
34
- 'production'
36
+ 'production'
35
37
  else
36
- nil
38
+ nil
37
39
  end
38
40
  end
39
41
  end
@@ -46,42 +48,52 @@ Facter.add('slot') do
46
48
  end
47
49
  end
48
50
 
51
+ def ipmi_ok?
52
+ begin
53
+ ipmi = IPMI_PATH if defined? IPMI_PATH
54
+ ipmi ||= 'ipmiutil'
55
+ Timeout::timeout(1) {
56
+ Facter::Util::Resolution.exec("#{ipmi} health 2> /dev/null | tail -n1 | grep failed").nil?
57
+ }
58
+ rescue Timeout::Error
59
+ $stderr.puts "timed out while running #{ipmi}"
60
+ false
61
+ end
62
+ end
49
63
 
50
- ipmi_ok = (Facter::Util::Resolution.exec("ipmiutil health 2> /dev/null | tail -n1 | grep failed") === nil)
51
-
52
- if ipmi_ok
64
+ if ipmi_ok?
53
65
  ipmi_lan = Facter::Util::Resolution.exec("ipmitool lan print 1 2> /dev/null")
54
66
 
55
67
  if ipmi_lan
56
68
  ipmi_lan_data = {}
57
69
 
58
70
  ipmi_lan.lines.each do |line|
59
- key, value = line.split(/:/, 2)
60
- value = value.strip.squeeze(' ').chomp
71
+ key, value = line.split(/:/, 2)
72
+ value = value.strip.squeeze(' ').chomp
61
73
 
62
- case key
63
- when /^IP Address/i
64
- ipmi_lan_data[:ip] = value
74
+ case key
75
+ when /^IP Address/i
76
+ ipmi_lan_data[:ip] = value
65
77
 
66
- when /^Subnet Mask/i
67
- ipmi_lan_data[:netmask] = value
78
+ when /^Subnet Mask/i
79
+ ipmi_lan_data[:netmask] = value
68
80
 
69
- when /^MAC Address/i
70
- ipmi_lan_data[:macaddress] = value.upcase
81
+ when /^MAC Address/i
82
+ ipmi_lan_data[:macaddress] = value.upcase
71
83
 
72
- when /^Default Gateway IP/i
73
- ipmi_lan_data[:gateway] = value
84
+ when /^Default Gateway IP/i
85
+ ipmi_lan_data[:gateway] = value
74
86
 
75
- when /^SNMP Community String/i
76
- ipmi_lan_data[:snmp_community] = value
87
+ when /^SNMP Community String/i
88
+ ipmi_lan_data[:snmp_community] = value
77
89
 
78
- end
90
+ end
79
91
  end
80
92
 
81
93
  ipmi_lan_data.each do |key, value|
82
- Facter.add("ipmi_#{key}") do
83
- setcode { value }
84
- end
94
+ Facter.add("ipmi_#{key}") do
95
+ setcode { value }
96
+ end
85
97
  end
86
98
  end
87
99
  end
@@ -1,12 +1,12 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |gem|
3
3
  gem.name = 'onering-report'
4
- gem.version = "0.6.5"
4
+ gem.version = '0.6.6'
5
5
  gem.authors = ['rnarkis']
6
6
  gem.email = ['rnarkis@outbrain.com']
7
7
  gem.description = %q{Onering facter facts}
8
8
  gem.summary = %q{Onering facter facts}
9
- gem.homepage = ""
9
+ gem.homepage = ''
10
10
  gem.add_runtime_dependency 'onering-client'
11
11
  gem.add_development_dependency('puppet')
12
12
  gem.add_development_dependency('pry')
data/test/bin/ipmiutil ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env bash
2
+ sleep 10
data/test/ipmi_test.rb ADDED
@@ -0,0 +1,37 @@
1
+
2
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
3
+
4
+ require 'minitest/autorun'
5
+ require_relative 'test_helper'
6
+ require 'facter'
7
+
8
+ IPMI_PATH = '/bin/bash test/bin/ipmiutil'
9
+
10
+ require 'facter/onering_properties_physical'
11
+
12
+ class IpmiTest < MiniTest::Unit::TestCase
13
+ include FileUtils
14
+
15
+ def setup
16
+ end
17
+
18
+ def teardown
19
+ rm_rf 'foo-sandbox'
20
+ end
21
+
22
+ def with_cwd(dir)
23
+ Dir.chdir dir do
24
+ yield
25
+ end
26
+ end
27
+
28
+ def test_sanity
29
+ # sanity
30
+ assert_match(/\d*.\d*.\d*.\d*/, Facter.fact(:netmask).value)
31
+ end
32
+
33
+ def test_ipmi_ok_timeout
34
+ assert_equal false, ipmi_ok?
35
+ end
36
+
37
+ end
@@ -0,0 +1,2 @@
1
+ require 'rubygems'
2
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onering-report
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.5
4
+ version: 0.6.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - rnarkis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-30 00:00:00.000000000 Z
11
+ date: 2014-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: onering-client
@@ -65,6 +65,7 @@ files:
65
65
  - Gemfile
66
66
  - Gemfile.lock
67
67
  - Makefile
68
+ - README.md
68
69
  - Rakefile
69
70
  - lib/etc/facter.list
70
71
  - lib/facter/onering_disk_smart.rb
@@ -100,6 +101,9 @@ files:
100
101
  - lib/reporter/default/stats_virident.rb
101
102
  - lib/reporter/default/stats_zfs.rb
102
103
  - onering-report.gemspec
104
+ - test/bin/ipmiutil
105
+ - test/ipmi_test.rb
106
+ - test/test_helper.rb
103
107
  homepage: ''
104
108
  licenses: []
105
109
  metadata: {}
@@ -123,4 +127,7 @@ rubygems_version: 2.2.2
123
127
  signing_key:
124
128
  specification_version: 4
125
129
  summary: Onering facter facts
126
- test_files: []
130
+ test_files:
131
+ - test/bin/ipmiutil
132
+ - test/ipmi_test.rb
133
+ - test/test_helper.rb