ohai 0.6.6 → 0.6.8.rc.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.
- 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:
|