ohai 0.5.8 → 0.6.0.beta.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.
Files changed (52) hide show
  1. data/Rakefile +16 -48
  2. data/bin/ohai +1 -1
  3. data/lib/ohai.rb +1 -3
  4. data/lib/ohai/mash.rb +211 -0
  5. data/lib/ohai/mixin/command.rb +157 -44
  6. data/lib/ohai/mixin/ec2_metadata.rb +87 -0
  7. data/lib/ohai/plugins/c.rb +16 -13
  8. data/lib/ohai/plugins/chef.rb +2 -1
  9. data/lib/ohai/plugins/cloud.rb +25 -0
  10. data/lib/ohai/plugins/darwin/network.rb +10 -1
  11. data/lib/ohai/plugins/dmi.rb +100 -37
  12. data/lib/ohai/plugins/dmi_common.rb +117 -0
  13. data/lib/ohai/plugins/ec2.rb +12 -61
  14. data/lib/ohai/plugins/eucalyptus.rb +65 -0
  15. data/lib/ohai/plugins/freebsd/network.rb +11 -2
  16. data/lib/ohai/plugins/java.rb +4 -4
  17. data/lib/ohai/plugins/linux/filesystem.rb +24 -0
  18. data/lib/ohai/plugins/linux/network.rb +14 -1
  19. data/lib/ohai/plugins/linux/platform.rb +3 -0
  20. data/lib/ohai/plugins/linux/virtualization.rb +28 -6
  21. data/lib/ohai/plugins/netbsd/network.rb +10 -1
  22. data/lib/ohai/plugins/network.rb +3 -1
  23. data/lib/ohai/plugins/ohai.rb +1 -0
  24. data/lib/ohai/plugins/openbsd/network.rb +10 -1
  25. data/lib/ohai/plugins/ruby.rb +1 -1
  26. data/lib/ohai/plugins/sigar/filesystem.rb +2 -0
  27. data/lib/ohai/plugins/solaris2/dmi.rb +176 -0
  28. data/lib/ohai/plugins/solaris2/filesystem.rb +101 -0
  29. data/lib/ohai/plugins/solaris2/hostname.rb +10 -1
  30. data/lib/ohai/plugins/solaris2/network.rb +6 -1
  31. data/lib/ohai/plugins/solaris2/uptime.rb +36 -0
  32. data/lib/ohai/plugins/solaris2/virtualization.rb +91 -0
  33. data/lib/ohai/plugins/virtualization.rb +1 -1
  34. data/lib/ohai/plugins/windows/network.rb +17 -11
  35. data/lib/ohai/system.rb +22 -32
  36. data/lib/ohai/version.rb +23 -0
  37. data/spec/ohai/plugins/c_spec.rb +58 -7
  38. data/spec/ohai/plugins/cloud_spec.rb +24 -0
  39. data/spec/ohai/plugins/dmi_spec.rb +107 -47
  40. data/spec/ohai/plugins/ec2_spec.rb +3 -3
  41. data/spec/ohai/plugins/eucalyptus_spec.rb +84 -0
  42. data/spec/ohai/plugins/java_spec.rb +55 -2
  43. data/spec/ohai/plugins/linux/platform_spec.rb +13 -0
  44. data/spec/ohai/plugins/linux/virtualization_spec.rb +47 -6
  45. data/spec/ohai/plugins/perl_spec.rb +15 -14
  46. data/spec/ohai/plugins/rackspace_spec.rb +14 -14
  47. data/spec/ohai/plugins/solaris2/hostname_spec.rb +3 -8
  48. data/spec/ohai/plugins/solaris2/kernel_spec.rb +6 -6
  49. data/spec/ohai/plugins/solaris2/network_spec.rb +22 -22
  50. data/spec/ohai/plugins/solaris2/virtualization_spec.rb +133 -0
  51. data/spec/spec_helper.rb +5 -13
  52. metadata +182 -179
@@ -33,6 +33,7 @@ describe Ohai::System, "Linux plugin platform" do
33
33
  File.stub!(:exists?).with("/etc/SuSE-release").and_return(false)
34
34
  File.stub!(:exists?).with("/etc/arch-release").and_return(false)
35
35
  File.stub!(:exists?).with("/etc/system-release").and_return(false)
36
+ File.stub!(:exists?).with("/etc/slackware-version").and_return(false)
36
37
  end
37
38
 
38
39
  it "should require the lsb plugin" do
@@ -81,6 +82,18 @@ describe Ohai::System, "Linux plugin platform" do
81
82
 
82
83
  end
83
84
 
85
+ describe "on slackware" do
86
+ before(:each) do
87
+ @ohai.lsb = nil
88
+ File.should_receive(:exists?).with("/etc/slackware-version").and_return(true)
89
+ end
90
+
91
+ it "should set platform to slackware" do
92
+ @ohai._require_plugin("linux::platform")
93
+ @ohai[:platform].should == "slackware"
94
+ end
95
+ end
96
+
84
97
  describe "on arch" do
85
98
  before(:each) do
86
99
  @ohai.lsb = nil
@@ -31,6 +31,7 @@ describe Ohai::System, "Linux virtualization platform" do
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)
34
+ File.stub!(:exists?).with("/proc/self/status").and_return(false)
34
35
  end
35
36
 
36
37
  describe "when we are checking for xen" do
@@ -38,14 +39,14 @@ describe Ohai::System, "Linux virtualization platform" do
38
39
  File.should_receive(:exists?).with("/proc/xen/capabilities").and_return(true)
39
40
  File.stub!(:read).with("/proc/xen/capabilities").and_return("control_d")
40
41
  @ohai._require_plugin("linux::virtualization")
41
- @ohai[:virtualization][:emulator].should == "xen"
42
+ @ohai[:virtualization][:system].should == "xen"
42
43
  @ohai[:virtualization][:role].should == "host"
43
44
  end
44
45
 
45
46
  it "should set xen guest if /proc/sys/xen/independent_wallclock exists" do
46
47
  File.should_receive(:exists?).with("/proc/sys/xen/independent_wallclock").and_return(true)
47
48
  @ohai._require_plugin("linux::virtualization")
48
- @ohai[:virtualization][:emulator].should == "xen"
49
+ @ohai[:virtualization][:system].should == "xen"
49
50
  @ohai[:virtualization][:role].should == "guest"
50
51
  end
51
52
 
@@ -61,7 +62,7 @@ describe Ohai::System, "Linux virtualization platform" do
61
62
  File.should_receive(:exists?).with("/proc/modules").and_return(true)
62
63
  File.stub!(:read).with("/proc/modules").and_return("kvm 165872 1 kvm_intel")
63
64
  @ohai._require_plugin("linux::virtualization")
64
- @ohai[:virtualization][:emulator].should == "kvm"
65
+ @ohai[:virtualization][:system].should == "kvm"
65
66
  @ohai[:virtualization][:role].should == "host"
66
67
  end
67
68
 
@@ -69,7 +70,7 @@ describe Ohai::System, "Linux virtualization platform" do
69
70
  File.should_receive(:exists?).with("/proc/cpuinfo").and_return(true)
70
71
  File.stub!(:read).with("/proc/cpuinfo").and_return("QEMU Virtual CPU")
71
72
  @ohai._require_plugin("linux::virtualization")
72
- @ohai[:virtualization][:emulator].should == "kvm"
73
+ @ohai[:virtualization][:system].should == "kvm"
73
74
  @ohai[:virtualization][:role].should == "guest"
74
75
  end
75
76
 
@@ -109,7 +110,7 @@ MSVPC
109
110
 
110
111
  @ohai.stub!(:popen4).with("dmidecode").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
111
112
  @ohai._require_plugin("linux::virtualization")
112
- @ohai[:virtualization][:emulator].should == "virtualpc"
113
+ @ohai[:virtualization][:system].should == "virtualpc"
113
114
  @ohai[:virtualization][:role].should == "guest"
114
115
  end
115
116
 
@@ -128,7 +129,7 @@ VMWARE
128
129
  @stdout.stub!(:read).and_return(vmware_dmidecode)
129
130
  @ohai.stub!(:popen4).with("dmidecode").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
130
131
  @ohai._require_plugin("linux::virtualization")
131
- @ohai[:virtualization][:emulator].should == "vmware"
132
+ @ohai[:virtualization][:system].should == "vmware"
132
133
  @ohai[:virtualization][:role].should == "guest"
133
134
  end
134
135
 
@@ -139,6 +140,46 @@ VMWARE
139
140
  end
140
141
  end
141
142
 
143
+ describe "when we are checking for Linux-VServer" do
144
+ it "should set Linux-VServer host if /proc/self/status contains s_context: 0" do
145
+ File.should_receive(:exists?).with("/proc/self/status").and_return(true)
146
+ File.stub!(:read).with("/proc/self/status").and_return("s_context: 0")
147
+ @ohai._require_plugin("linux::virtualization")
148
+ @ohai[:virtualization][:system].should == "linux-vserver"
149
+ @ohai[:virtualization][:role].should == "host"
150
+ end
151
+
152
+ it "should set Linux-VServer host if /proc/self/status contains VxID: 0" do
153
+ File.should_receive(:exists?).with("/proc/self/status").and_return(true)
154
+ File.stub!(:read).with("/proc/self/status").and_return("VxID: 0")
155
+ @ohai._require_plugin("linux::virtualization")
156
+ @ohai[:virtualization][:system].should == "linux-vserver"
157
+ @ohai[:virtualization][:role].should == "host"
158
+ end
159
+
160
+ it "should set Linux-VServer guest if /proc/self/status contains s_context > 0" do
161
+ File.should_receive(:exists?).with("/proc/self/status").and_return(true)
162
+ File.stub!(:read).with("/proc/self/status").and_return("s_context: 2")
163
+ @ohai._require_plugin("linux::virtualization")
164
+ @ohai[:virtualization][:system].should == "linux-vserver"
165
+ @ohai[:virtualization][:role].should == "guest"
166
+ end
167
+
168
+ it "should set Linux-VServer guest if /proc/self/status contains VxID > 0" do
169
+ File.should_receive(:exists?).with("/proc/self/status").and_return(true)
170
+ File.stub!(:read).with("/proc/self/status").and_return("VxID: 2")
171
+ @ohai._require_plugin("linux::virtualization")
172
+ @ohai[:virtualization][:system].should == "linux-vserver"
173
+ @ohai[:virtualization][:role].should == "guest"
174
+ end
175
+
176
+ it "should not set virtualization if Linux-VServer isn't there" do
177
+ File.should_receive(:exists?).at_least(:once).and_return(false)
178
+ @ohai._require_plugin("linux::virtualization")
179
+ @ohai[:virtualization].should == {}
180
+ end
181
+ end
182
+
142
183
  it "should not set virtualization if no tests match" do
143
184
  @ohai._require_plugin("linux::virtualization")
144
185
  @ohai[:virtualization].should == {}
@@ -6,9 +6,9 @@
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
8
8
  # You may obtain a copy of the License at
9
- #
9
+ #
10
10
  # http://www.apache.org/licenses/LICENSE-2.0
11
- #
11
+ #
12
12
  # Unless required by applicable law or agreed to in writing, software
13
13
  # distributed under the License is distributed on an "AS IS" BASIS,
14
14
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -23,12 +23,13 @@ describe Ohai::System, "plugin perl" do
23
23
  @ohai = Ohai::System.new
24
24
  @ohai[:languages] = Mash.new
25
25
  @ohai.stub!(:require_plugin).and_return(true)
26
- @pid = mock("PID", :null_object => true)
27
- @stderr = mock("STDERR", :null_object => true)
28
- @stdout = mock("STDOUT", :null_object => true)
29
- @stdout.stub!(:each_line).and_yield("version='5.8.8';").
30
- and_yield("archname='darwin-thread-multi-2level';")
31
- @stdin = mock("STDIN", :null_object => true)
26
+ @pid = 2342
27
+ @stderr = StringIO.new
28
+ @stdout = StringIO.new(<<-OUT)
29
+ version='5.8.8';
30
+ archname='darwin-thread-multi-2level';
31
+ OUT
32
+ @stdin = StringIO.new
32
33
  @status = 0
33
34
  @ohai.stub!(:run_command).with({:no_status_check=>true, :command=>"perl -V:version -V:archname"}).and_return([
34
35
  @status,
@@ -36,12 +37,12 @@ describe Ohai::System, "plugin perl" do
36
37
  @stderr
37
38
  ])
38
39
  end
39
-
40
+
40
41
  it "should run perl -V:version -V:archname" do
41
42
  @ohai.should_receive(:run_command).with({:no_status_check=>true, :command=>"perl -V:version -V:archname"}).and_return(true)
42
43
  @ohai._require_plugin("perl")
43
44
  end
44
-
45
+
45
46
  it "should iterate over each line of perl command's stdout" do
46
47
  @stdout.should_receive(:each_line).and_return(true)
47
48
  @ohai._require_plugin("perl")
@@ -50,13 +51,13 @@ describe Ohai::System, "plugin perl" do
50
51
  it "should set languages[:perl][:version]" do
51
52
  @ohai._require_plugin("perl")
52
53
  @ohai.languages[:perl][:version].should eql("5.8.8")
53
- end
54
-
54
+ end
55
+
55
56
  it "should set languages[:perl][:archname]" do
56
57
  @ohai._require_plugin("perl")
57
58
  @ohai.languages[:perl][:archname].should eql("darwin-thread-multi-2level")
58
59
  end
59
-
60
+
60
61
  it "should set languages[:perl] if perl command succeeds" do
61
62
  @status = 0
62
63
  @ohai.stub!(:run_command).with({:no_status_check=>true, :command=>"perl -V:version -V:archname"}).and_return([
@@ -67,7 +68,7 @@ describe Ohai::System, "plugin perl" do
67
68
  @ohai._require_plugin("perl")
68
69
  @ohai.languages.should have_key(:perl)
69
70
  end
70
-
71
+
71
72
  it "should not set languages[:perl] if perl command fails" do
72
73
  @status = 1
73
74
  @ohai.stub!(:run_command).with({:no_status_check=>true, :command=>"perl -V:version -V:archname"}).and_return([
@@ -38,8 +38,8 @@ describe Ohai::System, "plugin rackspace" do
38
38
  }}
39
39
  }
40
40
  }
41
-
42
- @ohai[:network][:interfaces][:eth1] = {:addresses => {
41
+
42
+ @ohai[:network][:interfaces][:eth1] = {:addresses => {
43
43
  "fe80::4240:f5ff:feab:2836" => {
44
44
  "scope"=> "Link",
45
45
  "prefixlen"=> "64",
@@ -56,20 +56,20 @@ describe Ohai::System, "plugin rackspace" do
56
56
  }}
57
57
  end
58
58
 
59
- describe "!rackspace", :shared => true do
59
+ shared_examples_for "!rackspace" do
60
60
  it "should NOT create rackspace" do
61
61
  @ohai._require_plugin("rackspace")
62
62
  @ohai[:rackspace].should be_nil
63
63
  end
64
64
  end
65
-
66
- describe "rackspace", :shared => true do
67
-
65
+
66
+ shared_examples_for "rackspace" do
67
+
68
68
  it "should create rackspace" do
69
69
  @ohai._require_plugin("rackspace")
70
70
  @ohai[:rackspace].should_not be_nil
71
71
  end
72
-
72
+
73
73
  it "should have all required attributes" do
74
74
  @ohai._require_plugin("rackspace")
75
75
  @ohai[:rackspace][:public_ip].should_not be_nil
@@ -81,22 +81,22 @@ describe Ohai::System, "plugin rackspace" do
81
81
  @ohai[:rackspace][:public_ip].should == "1.2.3.4"
82
82
  @ohai[:rackspace][:private_ip].should == "5.6.7.8"
83
83
  end
84
-
84
+
85
85
  end
86
86
 
87
87
  describe "with rackspace mac and hostname" do
88
88
  it_should_behave_like "rackspace"
89
-
89
+
90
90
  before(:each) do
91
91
  IO.stub!(:select).and_return([[],[1],[]])
92
92
  @ohai[:hostname] = "slice74976"
93
- @ohai[:network][:interfaces][:eth0][:arp] = {"67.23.20.1" => "00:00:0c:07:ac:01"}
93
+ @ohai[:network][:interfaces][:eth0][:arp] = {"67.23.20.1" => "00:00:0c:07:ac:01"}
94
94
  end
95
95
  end
96
-
96
+
97
97
  describe "without rackspace mac" do
98
98
  it_should_behave_like "!rackspace"
99
-
99
+
100
100
  before(:each) do
101
101
  @ohai[:hostname] = "slice74976"
102
102
  @ohai[:network][:interfaces][:eth0][:arp] = {"169.254.1.0"=>"fe:ff:ff:ff:ff:ff"}
@@ -105,10 +105,10 @@ describe Ohai::System, "plugin rackspace" do
105
105
 
106
106
  describe "without rackspace hostname" do
107
107
  it_should_behave_like "rackspace"
108
-
108
+
109
109
  before(:each) do
110
110
  @ohai[:hostname] = "bubba"
111
- @ohai[:network][:interfaces][:eth0][:arp] = {"67.23.20.1" => "00:00:0c:07:ac:01"}
111
+ @ohai[:network][:interfaces][:eth0][:arp] = {"67.23.20.1" => "00:00:0c:07:ac:01"}
112
112
  end
113
113
  end
114
114
 
@@ -24,18 +24,13 @@ describe Ohai::System, "Solaris2.X hostname plugin" do
24
24
  @ohai.stub!(:require_plugin).and_return(true)
25
25
  @ohai[:os] = "solaris2"
26
26
  @ohai.stub!(:from).with("hostname").and_return("kitteh")
27
- @ohai.stub!(:from).with("domainname").and_return("inurfridge.eatinurfoodz")
27
+ Socket.stub!(:getaddrinfo).and_return( [["AF_INET", 0, "kitteh.inurfridge.eatinurfoodz", "10.1.2.3", 2, 0, 0]] );
28
28
  end
29
29
 
30
30
  it_should_check_from("solaris2::hostname", "hostname", "hostname", "kitteh")
31
31
 
32
- it "should get the fqdn value from 'hostname' + 'domainname'" do
33
- @ohai.should_receive(:from).with("hostname").and_return("kitteh")
34
- @ohai.should_receive(:from).with("domainname").and_return("inurfridge.eatinurfoodz")
35
- @ohai._require_plugin("solaris2::hostname")
36
- end
37
-
38
- it "should set the fqdn to the value from 'hostname' and 'domainname'" do
32
+ it "should get the fqdn value from socket getaddrinfo" do
33
+ Socket.should_receive(:getaddrinfo)
39
34
  @ohai._require_plugin("solaris2::hostname")
40
35
  @ohai["fqdn"].should == "kitteh.inurfridge.eatinurfoodz"
41
36
  end
@@ -132,18 +132,18 @@ describe Ohai::System, "Solaris2.X kernel plugin" do
132
132
  145 12138e4 15e4 4 1 RT (realtime scheduling class)
133
133
  146 121719e 28c - 1 RT_DPTBL (realtime dispatch table)
134
134
  TOOMUCH
135
-
135
+
136
136
  before(:each) do
137
137
  @ohai = Ohai::System.new
138
138
  @ohai.stub!(:require_plugin).and_return(true)
139
139
  @ohai[:kernel] = Mash.new
140
140
  @ohai.stub(:from).with("uname -s").and_return("SunOS")
141
141
  end
142
-
142
+
143
143
  it_should_check_from_deep_mash("solaris2::kernel", "kernel", "os", "uname -s", "SunOS")
144
144
 
145
145
  it "gives excruciating detail about kernel modules" do
146
- stdin = mock("stdin", :null_object => true)
146
+ stdin = StringIO.new
147
147
  @modinfo_stdout = StringIO.new(MODINFO)
148
148
  @ohai.stub!(:popen4).with("modinfo").and_yield(nil, stdin, @modinfo_stdout, nil)
149
149
 
@@ -159,6 +159,6 @@ describe Ohai::System, "Solaris2.X kernel plugin" do
159
159
  @ohai[:kernel][:modules].keys.should_not include("Module")
160
160
  @ohai[:kernel][:modules]["specfs"].should == teh_daterz
161
161
  end
162
-
163
-
164
- end
162
+
163
+
164
+ end
@@ -1,25 +1,25 @@
1
- #
1
+ #
2
2
  # Author:: Daniel DeLeo <dan@opscode.com>
3
3
  # Copyright:: Copyright (c) 2010 Opscode, Inc.
4
4
  # License:: Apache License, Version 2.0
5
- #
5
+ #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
8
8
  # You may obtain a copy of the License at
9
- #
9
+ #
10
10
  # http://www.apache.org/licenses/LICENSE-2.0
11
- #
11
+ #
12
12
  # Unless required by applicable law or agreed to in writing, software
13
13
  # distributed under the License is distributed on an "AS IS" BASIS,
14
14
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
- #
17
+ #
18
18
 
19
19
  require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper.rb')
20
20
 
21
21
  describe Ohai::System, "Solaris2.X network plugin" do
22
-
22
+
23
23
  before do
24
24
  solaris_ifconfig = <<-ENDIFCONFIG
25
25
  lo0:3: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
@@ -60,17 +60,17 @@ ENDIFCONFIG
60
60
 
61
61
  solaris_netstat_rn = <<-NETSTAT_RN
62
62
  Routing Table: IPv4
63
- Destination Gateway Flags Ref Use Interface
64
- -------------------- -------------------- ----- ----- ---------- ---------
65
- default 10.13.37.1 UG 1 0 e1000g0
66
- 10.13.37.0 10.13.37.157 U 1 2 e1000g0
67
- 127.0.0.1 127.0.0.1 UH 1 35 lo0
68
-
63
+ Destination Gateway Flags Ref Use Interface
64
+ -------------------- -------------------- ----- ----- ---------- ---------
65
+ default 10.13.37.1 UG 1 0 e1000g0
66
+ 10.13.37.0 10.13.37.157 U 1 2 e1000g0
67
+ 127.0.0.1 127.0.0.1 UH 1 35 lo0
68
+
69
69
  Routing Table: IPv6
70
- Destination/Mask Gateway Flags Ref Use If
71
- --------------------------- --------------------------- ----- --- ------- -----
72
- fe80::/10 fe80::250:56ff:fe13:3757 U 1 0 e1000g0
73
- ::1 ::1 UH 1 0 lo0
70
+ Destination/Mask Gateway Flags Ref Use If
71
+ --------------------------- --------------------------- ----- --- ------- -----
72
+ fe80::/10 fe80::250:56ff:fe13:3757 U 1 0 e1000g0
73
+ ::1 ::1 UH 1 0 lo0
74
74
  NETSTAT_RN
75
75
 
76
76
  @solaris_route_get = <<-ROUTE_GET
@@ -81,20 +81,20 @@ destination: default
81
81
  interface: e1000g0
82
82
  flags: <UP,GATEWAY,DONE,STATIC>
83
83
  recvpipe sendpipe ssthresh rtt,ms rttvar,ms hopcount mtu expire
84
- 0 0 0 0 0 0 1500 0
84
+ 0 0 0 0 0 0 1500 0
85
85
  ROUTE_GET
86
86
 
87
- @stdin = mock("STDIN", :null_object => true)
87
+ @stdin = StringIO.new
88
88
  @ifconfig_lines = solaris_ifconfig.split("\n")
89
89
 
90
90
  @ohai = Ohai::System.new
91
91
  @ohai.stub!(:require_plugin).and_return(true)
92
92
  @ohai[:network] = Mash.new
93
-
93
+
94
94
  @ohai.stub(:popen4).with("ifconfig -a")
95
95
  @ohai.stub(:popen4).with("arp -an")
96
96
  end
97
-
97
+
98
98
  describe "gathering IP layer address info" do
99
99
  before do
100
100
  @ohai.stub!(:popen4).with("ifconfig -a").and_yield(nil, @stdin, @ifconfig_lines, nil)
@@ -123,7 +123,7 @@ ROUTE_GET
123
123
  describe "setting the node's default IP address attribute" do
124
124
  before do
125
125
  @stdout = mock("Pipe, stdout, cmd=`route get default`", :read => @solaris_route_get)
126
- @ohai.stub!(:popen4).with("route get default").and_yield(nil,@stdin, @stdout, nil)
126
+ @ohai.stub!(:popen4).with("route -n get default").and_yield(nil,@stdin, @stdout, nil)
127
127
  @ohai._require_plugin("solaris2::network")
128
128
  end
129
129
 
@@ -132,4 +132,4 @@ ROUTE_GET
132
132
  end
133
133
  end
134
134
  end
135
-
135
+
@@ -0,0 +1,133 @@
1
+ #
2
+ # Author:: Sean Walbran (<seanwalbran@gmail.com>)
3
+ # Copyright:: Copyright (c) 2009 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper.rb')
20
+
21
+ describe Ohai::System, "Solaris virtualization platform" do
22
+ before(:each) do
23
+ @ohai = Ohai::System.new
24
+ @ohai[:os] = "solaris2"
25
+ @ohai.stub!(:require_plugin).and_return(true)
26
+ @ohai.extend(SimpleFromFile)
27
+
28
+ # default to all requested Files not existing
29
+ File.stub!(:exists?).with("/usr/sbin/psrinfo").and_return(false)
30
+ File.stub!(:exists?).with("/usr/sbin/smbios").and_return(false)
31
+ File.stub!(:exists?).with("/usr/sbin/zoneadm").and_return(false)
32
+ end
33
+
34
+ describe "when we are checking for kvm" do
35
+ before(:each) do
36
+ File.should_receive(:exists?).with("/usr/sbin/psrinfo").and_return(true)
37
+ @stdin = mock("STDIN", { :close => true })
38
+ @pid = 10
39
+ @stderr = mock("STDERR")
40
+ @stdout = mock("STDOUT")
41
+ @status = 0
42
+ end
43
+
44
+ it "should run psrinfo -pv" do
45
+ @ohai.should_receive(:popen4).with("/usr/sbin/psrinfo -pv").and_return(true)
46
+ @ohai._require_plugin("solaris2::virtualization")
47
+ end
48
+
49
+ it "Should set kvm guest if psrinfo -pv contains QEMU Virtual CPU" do
50
+ @stdout.stub!(:read).and_return("QEMU Virtual CPU")
51
+ @ohai.stub!(:popen4).with("/usr/sbin/psrinfo -pv").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
52
+ @ohai._require_plugin("solaris2::virtualization")
53
+ @ohai[:virtualization][:system].should == "kvm"
54
+ @ohai[:virtualization][:role].should == "guest"
55
+ end
56
+
57
+ it "should not set virtualization if kvm isn't there" do
58
+ @ohai.should_receive(:popen4).with("/usr/sbin/psrinfo -pv").and_return(true)
59
+ @ohai._require_plugin("solaris2::virtualization")
60
+ @ohai[:virtualization].should == {}
61
+ end
62
+ end
63
+
64
+ describe "when we are parsing smbios" do
65
+ before(:each) do
66
+ File.should_receive(:exists?).with("/usr/sbin/smbios").and_return(true)
67
+ @stdin = mock("STDIN", { :close => true })
68
+ @pid = 20
69
+ @stderr = mock("STDERR")
70
+ @stdout = mock("STDOUT")
71
+ @status = 0
72
+ end
73
+
74
+ it "should run smbios" do
75
+ @ohai.should_receive(:popen4).with("/usr/sbin/smbios").and_return(true)
76
+ @ohai._require_plugin("solaris2::virtualization")
77
+ end
78
+
79
+ it "should set virtualpc guest if smbios detects Microsoft Virtual Machine" do
80
+ ms_vpc_smbios=<<-MSVPC
81
+ ID SIZE TYPE
82
+ 1 72 SMB_TYPE_SYSTEM (system information)
83
+
84
+ Manufacturer: Microsoft Corporation
85
+ Product: Virtual Machine
86
+ Version: VS2005R2
87
+ Serial Number: 1688-7189-5337-7903-2297-1012-52
88
+
89
+ UUID: D29974A4-BE51-044C-BDC6-EFBC4B87A8E9
90
+ Wake-Up Event: 0x6 (power switch)
91
+ MSVPC
92
+ @stdout.stub!(:read).and_return(ms_vpc_smbios)
93
+
94
+ @ohai.stub!(:popen4).with("/usr/sbin/smbios").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
95
+ @ohai._require_plugin("solaris2::virtualization")
96
+ @ohai[:virtualization][:system].should == "virtualpc"
97
+ @ohai[:virtualization][:role].should == "guest"
98
+ end
99
+
100
+ it "should set vmware guest if smbios detects VMware Virtual Platform" do
101
+ vmware_smbios=<<-VMWARE
102
+ ID SIZE TYPE
103
+ 1 72 SMB_TYPE_SYSTEM (system information)
104
+
105
+ Manufacturer: VMware, Inc.
106
+ Product: VMware Virtual Platform
107
+ Version: None
108
+ Serial Number: VMware-50 3f f7 14 42 d1 f1 da-3b 46 27 d0 29 b4 74 1d
109
+
110
+ UUID: a86cc405-e1b9-447b-ad05-6f8db39d876a
111
+ Wake-Up Event: 0x6 (power switch)
112
+ VMWARE
113
+ @stdout.stub!(:read).and_return(vmware_smbios)
114
+ @ohai.stub!(:popen4).with("/usr/sbin/smbios").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
115
+ @ohai._require_plugin("solaris2::virtualization")
116
+ @ohai[:virtualization][:system].should == "vmware"
117
+ @ohai[:virtualization][:role].should == "guest"
118
+ end
119
+
120
+ it "should run smbios and not set virtualization if nothing is detected" do
121
+ @ohai.should_receive(:popen4).with("/usr/sbin/smbios").and_return(true)
122
+ @ohai._require_plugin("solaris2::virtualization")
123
+ @ohai[:virtualization].should == {}
124
+ end
125
+ end
126
+
127
+ it "should not set virtualization if no tests match" do
128
+ @ohai._require_plugin("solaris2::virtualization")
129
+ @ohai[:virtualization].should == {}
130
+ end
131
+ end
132
+
133
+