ohai 0.6.6 → 0.6.8.rc.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +4 -4
- data/lib/ohai/plugins/linux/filesystem.rb +1 -1
- data/lib/ohai/plugins/linux/platform.rb +7 -1
- data/lib/ohai/plugins/linux/virtualization.rb +12 -4
- data/lib/ohai/version.rb +1 -1
- data/spec/ohai/plugins/linux/lsb_spec.rb +64 -26
- data/spec/ohai/plugins/linux/platform_spec.rb +66 -46
- data/spec/ohai/plugins/linux/virtualization_spec.rb +15 -8
- metadata +14 -10
data/README.rdoc
CHANGED
@@ -8,17 +8,17 @@ Ohai will print out a JSON data blob for all the known data about your system. W
|
|
8
8
|
|
9
9
|
Opscode distributes ohai as a RubyGem. This README is for developers who want to modify the Ohai source code. For users who want to write plugins for Ohai, see the wiki:
|
10
10
|
|
11
|
-
* http://wiki.opscode.com/display/
|
11
|
+
* http://wiki.opscode.com/display/chef/Ohai
|
12
12
|
|
13
13
|
= DEVELOPMENT:
|
14
14
|
|
15
15
|
Before working on the code, if you plan to contribute your changes, you need to read the Opscode Contributing document.
|
16
16
|
|
17
|
-
* http://wiki.opscode.com/display/
|
17
|
+
* http://wiki.opscode.com/display/chef/How+to+Contribute
|
18
18
|
|
19
19
|
You will also need to set up the repository with the appropriate branches. We document the process on the Chef Wiki.
|
20
20
|
|
21
|
-
* http://wiki.opscode.com/display/
|
21
|
+
* http://wiki.opscode.com/display/chef/Working+with+git
|
22
22
|
|
23
23
|
(Substitude 'ohai' for 'chef')
|
24
24
|
|
@@ -75,7 +75,7 @@ Tickets/Issues:
|
|
75
75
|
|
76
76
|
Documentation:
|
77
77
|
|
78
|
-
* http://wiki.opscode.com/display/
|
78
|
+
* http://wiki.opscode.com/display/chef/Ohai
|
79
79
|
|
80
80
|
= LICENSE:
|
81
81
|
|
@@ -66,7 +66,7 @@ popen4("ls -l /dev/disk/by-uuid/* | awk '{print $11, $9}'") do |pid, stdin, stdo
|
|
66
66
|
end
|
67
67
|
|
68
68
|
# Grab any missing mount information from /proc/mounts
|
69
|
-
File.open('/proc/mounts').read_nonblock(4096).
|
69
|
+
File.open('/proc/mounts').read_nonblock(4096).each_line do |line|
|
70
70
|
if line =~ /^(\S+) (\S+) (\S+) (\S+) \S+ \S+$/
|
71
71
|
filesystem = $1
|
72
72
|
next if fs.has_key?(filesystem)
|
@@ -15,6 +15,7 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
|
+
|
18
19
|
def get_redhatish_platform(contents)
|
19
20
|
contents[/^Red Hat/i] ? "redhat" : contents[/(\w+)/i, 1].downcase
|
20
21
|
end
|
@@ -26,8 +27,13 @@ end
|
|
26
27
|
provides "platform", "platform_version"
|
27
28
|
|
28
29
|
require_plugin 'linux::lsb'
|
30
|
+
|
31
|
+
# platform [ and platform_version ? ] should be lower case to avoid dealing with RedHat/Redhat/redhat matching
|
29
32
|
|
30
|
-
if lsb[:id]
|
33
|
+
if lsb[:id] =~ /RedHat/i
|
34
|
+
platform "redhat"
|
35
|
+
platform_version lsb[:release]
|
36
|
+
elsif lsb[:id]
|
31
37
|
platform lsb[:id].downcase
|
32
38
|
platform_version lsb[:release]
|
33
39
|
elsif File.exists?("/etc/debian_version")
|
@@ -22,15 +22,23 @@ virtualization Mash.new
|
|
22
22
|
|
23
23
|
# if it is possible to detect paravirt vs hardware virt, it should be put in
|
24
24
|
# virtualization[:mechanism]
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
|
26
|
+
## Xen
|
27
|
+
# This file should exists on most Xen systems
|
28
|
+
if File.exists?("/proc/xen/capabilities")
|
29
|
+
virtualization[:system] = "xen"
|
30
|
+
if File.read("/proc/xen/capabilities") =~ /control_d/i
|
28
31
|
virtualization[:role] = "host"
|
29
32
|
else
|
30
|
-
virtualization[:system] = "xen"
|
31
33
|
virtualization[:role] = "guest"
|
32
34
|
end
|
35
|
+
# Guests do not always have this file, but may
|
36
|
+
elsif File.exists?("/proc/sys/xen/independent_wallclock")
|
37
|
+
virtualization[:system] = "xen"
|
38
|
+
virtualization[:role] = "guest"
|
33
39
|
end
|
40
|
+
# cpuid of guests, if we could get it, would also be a clue
|
41
|
+
# may be able to determine if under paravirt from /dev/xen/evtchn (See OHAI-253)
|
34
42
|
|
35
43
|
# Detect from kernel module
|
36
44
|
if File.exists?("/proc/modules")
|
data/lib/ohai/version.rb
CHANGED
@@ -19,6 +19,8 @@
|
|
19
19
|
|
20
20
|
require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper.rb')
|
21
21
|
|
22
|
+
# We do not alter case for lsb attributes and consume them as provided
|
23
|
+
|
22
24
|
describe Ohai::System, "Linux lsb plugin" do
|
23
25
|
before(:each) do
|
24
26
|
@ohai = Ohai::System.new
|
@@ -64,44 +66,80 @@ describe Ohai::System, "Linux lsb plugin" do
|
|
64
66
|
before(:each) do
|
65
67
|
File.stub!(:exists?).with("/etc/lsb-release").and_return(false)
|
66
68
|
File.stub!(:exists?).with("/usr/bin/lsb_release").and_return(true)
|
67
|
-
|
69
|
+
|
68
70
|
@stdin = mock("STDIN", { :close => true })
|
69
71
|
@pid = 10
|
70
72
|
@stderr = mock("STDERR")
|
71
73
|
@stdout = mock("STDOUT")
|
72
74
|
@status = 0
|
73
75
|
|
74
|
-
@stdout.stub!(:each).
|
75
|
-
and_yield("LSB Version: :core-4.0-ia32:core-4.0-noarch").
|
76
|
-
and_yield("Distributor ID: Fedora").
|
77
|
-
and_yield("Description: Fedora release 14 (Laughlin)").
|
78
|
-
and_yield("Release: 14").
|
79
|
-
and_yield("Codename: Laughlin")
|
80
|
-
|
81
|
-
@ohai.stub!(:popen4).with("lsb_release -a").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
|
82
|
-
|
83
|
-
end
|
84
|
-
|
85
|
-
it "should set lsb[:id]" do
|
86
|
-
@ohai._require_plugin("linux::lsb")
|
87
|
-
@ohai[:lsb][:id].should == "Fedora"
|
88
76
|
end
|
77
|
+
|
78
|
+
describe "on Centos 5.4 correctly" do
|
79
|
+
before(:each) do
|
80
|
+
@stdout.stub!(:each).
|
81
|
+
and_yield("LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch").
|
82
|
+
and_yield("Distributor ID: CentOS").
|
83
|
+
and_yield("Description: CentOS release 5.4 (Final)").
|
84
|
+
and_yield("Release: 5.4").
|
85
|
+
and_yield("Codename: Final")
|
89
86
|
|
90
|
-
|
91
|
-
|
92
|
-
|
87
|
+
@ohai.stub!(:popen4).with("lsb_release -a").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should set lsb[:id]" do
|
91
|
+
@ohai._require_plugin("linux::lsb")
|
92
|
+
@ohai[:lsb][:id].should == "CentOS"
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should set lsb[:release]" do
|
96
|
+
@ohai._require_plugin("linux::lsb")
|
97
|
+
@ohai[:lsb][:release].should == "5.4"
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should set lsb[:codename]" do
|
101
|
+
@ohai._require_plugin("linux::lsb")
|
102
|
+
@ohai[:lsb][:codename].should == "Final"
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should set lsb[:description]" do
|
106
|
+
@ohai._require_plugin("linux::lsb")
|
107
|
+
@ohai[:lsb][:description].should == "CentOS release 5.4 (Final)"
|
108
|
+
end
|
93
109
|
end
|
110
|
+
|
111
|
+
describe "on Fedora 14 correctly" do
|
112
|
+
before(:each) do
|
113
|
+
@stdout.stub!(:each).
|
114
|
+
and_yield("LSB Version: :core-4.0-ia32:core-4.0-noarch").
|
115
|
+
and_yield("Distributor ID: Fedora").
|
116
|
+
and_yield("Description: Fedora release 14 (Laughlin)").
|
117
|
+
and_yield("Release: 14").
|
118
|
+
and_yield("Codename: Laughlin")
|
94
119
|
|
95
|
-
|
96
|
-
|
97
|
-
@ohai[:lsb][:codename].should == "Laughlin"
|
98
|
-
end
|
120
|
+
@ohai.stub!(:popen4).with("lsb_release -a").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
|
121
|
+
end
|
99
122
|
|
100
|
-
|
101
|
-
|
102
|
-
|
123
|
+
it "should set lsb[:id]" do
|
124
|
+
@ohai._require_plugin("linux::lsb")
|
125
|
+
@ohai[:lsb][:id].should == "Fedora"
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should set lsb[:release]" do
|
129
|
+
@ohai._require_plugin("linux::lsb")
|
130
|
+
@ohai[:lsb][:release].should == "14"
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should set lsb[:codename]" do
|
134
|
+
@ohai._require_plugin("linux::lsb")
|
135
|
+
@ohai[:lsb][:codename].should == "Laughlin"
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should set lsb[:description]" do
|
139
|
+
@ohai._require_plugin("linux::lsb")
|
140
|
+
@ohai[:lsb][:description].should == "Fedora release 14 (Laughlin)"
|
141
|
+
end
|
103
142
|
end
|
104
|
-
|
105
143
|
end
|
106
144
|
|
107
145
|
it "should not set any lsb values if /etc/lsb-release or /usr/bin/lsb_release do not exist " do
|
@@ -119,54 +119,74 @@ describe Ohai::System, "Linux plugin platform" do
|
|
119
119
|
end
|
120
120
|
|
121
121
|
describe "on redhat breeds" do
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
File.should_receive(:read).with("/etc/redhat-release").and_return("RedHat release 5.3")
|
139
|
-
@ohai._require_plugin("linux::platform")
|
140
|
-
@ohai[:platform].should == "redhat"
|
141
|
-
@ohai[:platform_version].should == "5.3"
|
142
|
-
end
|
143
|
-
|
144
|
-
it "should read the platform as redhat and version as 5.3" do
|
145
|
-
File.should_receive(:read).with("/etc/redhat-release").and_return("Red Hat release 5.3")
|
146
|
-
@ohai._require_plugin("linux::platform")
|
147
|
-
@ohai[:platform].should == "redhat"
|
148
|
-
@ohai[:platform_version].should == "5.3"
|
122
|
+
describe "with lsb_release results" do
|
123
|
+
it "should set the platform to redhat even if the LSB name is something absurd but redhat like" do
|
124
|
+
@ohai[:lsb][:id] = "RedHatEnterpriseServer"
|
125
|
+
@ohai[:lsb][:release] = "6.1"
|
126
|
+
@ohai._require_plugin("linux::platform")
|
127
|
+
@ohai[:platform].should == "redhat"
|
128
|
+
@ohai[:platform_version].should == "6.1"
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should set the platform to centos" do
|
132
|
+
@ohai[:lsb][:id] = "CentOS"
|
133
|
+
@ohai[:lsb][:release] = "5.4"
|
134
|
+
@ohai._require_plugin("linux::platform")
|
135
|
+
@ohai[:platform].should == "centos"
|
136
|
+
@ohai[:platform_version].should == "5.4"
|
137
|
+
end
|
149
138
|
end
|
150
139
|
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
140
|
+
describe "without lsb_release results" do
|
141
|
+
before(:each) do
|
142
|
+
@ohai.lsb = nil
|
143
|
+
File.should_receive(:exists?).with("/etc/redhat-release").and_return(true)
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should check for the existance of redhat-release" do
|
147
|
+
@ohai._require_plugin("linux::platform")
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should read the platform as centos and version as 5.3" do
|
151
|
+
File.should_receive(:read).with("/etc/redhat-release").and_return("CentOS release 5.3")
|
152
|
+
@ohai._require_plugin("linux::platform")
|
153
|
+
@ohai[:platform].should == "centos"
|
154
|
+
end
|
155
|
+
|
156
|
+
it "may be that someone munged Red Hat to be RedHat" do
|
157
|
+
File.should_receive(:read).with("/etc/redhat-release").and_return("RedHat release 5.3")
|
158
|
+
@ohai._require_plugin("linux::platform")
|
159
|
+
@ohai[:platform].should == "redhat"
|
160
|
+
@ohai[:platform_version].should == "5.3"
|
161
|
+
end
|
162
|
+
|
163
|
+
it "should read the platform as redhat and version as 5.3" do
|
164
|
+
File.should_receive(:read).with("/etc/redhat-release").and_return("Red Hat release 5.3")
|
165
|
+
@ohai._require_plugin("linux::platform")
|
166
|
+
@ohai[:platform].should == "redhat"
|
167
|
+
@ohai[:platform_version].should == "5.3"
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should read the platform as fedora and version as 13 (rawhide)" do
|
171
|
+
File.should_receive(:read).with("/etc/redhat-release").and_return("Fedora release 13 (Rawhide)")
|
172
|
+
@ohai._require_plugin("linux::platform")
|
173
|
+
@ohai[:platform].should == "fedora"
|
174
|
+
@ohai[:platform_version].should == "13 (rawhide)"
|
175
|
+
end
|
176
|
+
|
177
|
+
it "should read the platform as fedora and version as 10" do
|
178
|
+
File.should_receive(:read).with("/etc/redhat-release").and_return("Fedora release 10")
|
179
|
+
@ohai._require_plugin("linux::platform")
|
180
|
+
@ohai[:platform].should == "fedora"
|
181
|
+
@ohai[:platform_version].should == "10"
|
182
|
+
end
|
183
|
+
|
184
|
+
it "should read the platform as fedora and version as 13 using to_i" do
|
185
|
+
File.should_receive(:read).with("/etc/redhat-release").and_return("Fedora release 13 (Rawhide)")
|
186
|
+
@ohai._require_plugin("linux::platform")
|
187
|
+
@ohai[:platform].should == "fedora"
|
188
|
+
@ohai[:platform_version].to_i.should == 13
|
189
|
+
end
|
170
190
|
end
|
171
191
|
end
|
172
192
|
|
@@ -26,8 +26,8 @@ describe Ohai::System, "Linux virtualization platform" do
|
|
26
26
|
@ohai.extend(SimpleFromFile)
|
27
27
|
|
28
28
|
# default to all requested Files not existing
|
29
|
-
File.stub(:exists?).with("/proc/xen").and_return(false)
|
30
|
-
File.stub(:exists?).with("/
|
29
|
+
File.stub!(:exists?).with("/proc/xen/capabilities").and_return(false)
|
30
|
+
File.stub!(:exists?).with("/proc/sys/xen/independent_wallclock").and_return(false)
|
31
31
|
File.stub!(:exists?).with("/proc/modules").and_return(false)
|
32
32
|
File.stub!(:exists?).with("/proc/cpuinfo").and_return(false)
|
33
33
|
File.stub!(:exists?).with("/usr/sbin/dmidecode").and_return(false)
|
@@ -36,17 +36,24 @@ describe Ohai::System, "Linux virtualization platform" do
|
|
36
36
|
end
|
37
37
|
|
38
38
|
describe "when we are checking for xen" do
|
39
|
-
it "should set xen host if /proc/xen " do
|
40
|
-
File.should_receive(:exists?).with("/proc/xen").and_return(true)
|
41
|
-
File.
|
39
|
+
it "should set xen host if /proc/xen/capabilities contains control_d " do
|
40
|
+
File.should_receive(:exists?).with("/proc/xen/capabilities").and_return(true)
|
41
|
+
File.stub!(:read).with("/proc/xen/capabilities").and_return("control_d")
|
42
42
|
@ohai._require_plugin("linux::virtualization")
|
43
43
|
@ohai[:virtualization][:system].should == "xen"
|
44
44
|
@ohai[:virtualization][:role].should == "host"
|
45
45
|
end
|
46
46
|
|
47
|
-
it "should set xen guest if
|
48
|
-
File.should_receive(:exists?).with("/proc/xen").and_return(true)
|
49
|
-
File.
|
47
|
+
it "should set xen guest if /proc/xen/capabilities exists but is empty" do
|
48
|
+
File.should_receive(:exists?).with("/proc/xen/capabilities").and_return(true)
|
49
|
+
File.stub!(:read).with("/proc/xen/capabilities").and_return("")
|
50
|
+
@ohai._require_plugin("linux::virtualization")
|
51
|
+
@ohai[:virtualization][:system].should == "xen"
|
52
|
+
@ohai[:virtualization][:role].should == "guest"
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should set xen guest if /proc/sys/xen/independent_wallclock exists" do
|
56
|
+
File.should_receive(:exists?).with("/proc/sys/xen/independent_wallclock").and_return(true)
|
50
57
|
@ohai._require_plugin("linux::virtualization")
|
51
58
|
@ohai[:virtualization][:system].should == "xen"
|
52
59
|
@ohai[:virtualization][:role].should == "guest"
|
metadata
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ohai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 15424053
|
5
|
+
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 6
|
9
|
-
-
|
10
|
-
|
9
|
+
- 8
|
10
|
+
- rc
|
11
|
+
- 0
|
12
|
+
version: 0.6.8.rc.0
|
11
13
|
platform: ruby
|
12
14
|
authors:
|
13
15
|
- Adam Jacob
|
@@ -15,7 +17,7 @@ autorequire:
|
|
15
17
|
bindir: bin
|
16
18
|
cert_chain: []
|
17
19
|
|
18
|
-
date: 2011-10-
|
20
|
+
date: 2011-10-05 00:00:00 Z
|
19
21
|
dependencies:
|
20
22
|
- !ruby/object:Gem::Dependency
|
21
23
|
name: yajl-ruby
|
@@ -355,7 +357,7 @@ files:
|
|
355
357
|
- spec/rcov.opts
|
356
358
|
- spec/ohai_spec.rb
|
357
359
|
- bin/ohai
|
358
|
-
homepage: http://wiki.opscode.com/display/
|
360
|
+
homepage: http://wiki.opscode.com/display/chef/Ohai
|
359
361
|
licenses: []
|
360
362
|
|
361
363
|
post_install_message:
|
@@ -375,12 +377,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
375
377
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
376
378
|
none: false
|
377
379
|
requirements:
|
378
|
-
- - "
|
380
|
+
- - ">"
|
379
381
|
- !ruby/object:Gem::Version
|
380
|
-
hash:
|
382
|
+
hash: 25
|
381
383
|
segments:
|
382
|
-
-
|
383
|
-
|
384
|
+
- 1
|
385
|
+
- 3
|
386
|
+
- 1
|
387
|
+
version: 1.3.1
|
384
388
|
requirements: []
|
385
389
|
|
386
390
|
rubyforge_project:
|