ohai 7.4.1 → 7.6.0.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.
Files changed (35) hide show
  1. checksums.yaml +5 -13
  2. data/README.md +8 -8
  3. data/Rakefile +2 -2
  4. data/lib/ohai/mixin/cloudstack_metadata.rb +88 -0
  5. data/lib/ohai/plugins/aix/kernel.rb +15 -1
  6. data/lib/ohai/plugins/aix/network.rb +5 -2
  7. data/lib/ohai/plugins/aix/virtualization.rb +39 -0
  8. data/lib/ohai/plugins/cloud.rb +32 -0
  9. data/lib/ohai/plugins/cloudstack.rb +43 -0
  10. data/lib/ohai/plugins/darwin/cpu.rb +2 -2
  11. data/lib/ohai/plugins/go.rb +30 -0
  12. data/lib/ohai/plugins/hostname.rb +1 -1
  13. data/lib/ohai/plugins/linux/filesystem.rb +19 -5
  14. data/lib/ohai/plugins/linux/platform.rb +5 -1
  15. data/lib/ohai/plugins/openstack.rb +22 -0
  16. data/lib/ohai/plugins/passwd.rb +5 -1
  17. data/lib/ohai/plugins/python.rb +3 -3
  18. data/lib/ohai/plugins/solaris2/zpools.rb +1 -1
  19. data/lib/ohai/version.rb +1 -1
  20. data/spec/unit/mixin/cloudstack_metadata_spec.rb +33 -0
  21. data/spec/unit/plugins/aix/kernel_spec.rb +6 -3
  22. data/spec/unit/plugins/aix/network_spec.rb +1 -1
  23. data/spec/unit/plugins/aix/virtualization_spec.rb +53 -0
  24. data/spec/unit/plugins/cloud_spec.rb +31 -0
  25. data/spec/unit/plugins/cloudstack_spec.rb +155 -0
  26. data/spec/unit/plugins/darwin/cpu_spec.rb +2 -2
  27. data/spec/unit/plugins/go_spec.rb +44 -0
  28. data/spec/unit/plugins/hostname_spec.rb +12 -0
  29. data/spec/unit/plugins/linux/filesystem_spec.rb +55 -40
  30. data/spec/unit/plugins/linux/platform_spec.rb +36 -0
  31. data/spec/unit/plugins/openstack_spec.rb +55 -0
  32. data/spec/unit/plugins/passwd_spec.rb +3 -2
  33. data/spec/unit/plugins/python_spec.rb +22 -20
  34. data/spec/unit/plugins/solaris2/zpools_spec.rb +153 -0
  35. metadata +75 -59
@@ -72,6 +72,18 @@ describe Ohai::System, "hostname plugin" do
72
72
  end
73
73
  end
74
74
 
75
+ context "when a system has a bare hostname without a FQDN" do
76
+ before(:each) do
77
+ @plugin.stub(:collect_os).and_return(:default)
78
+ @plugin.stub(:shell_out).with("hostname").and_return(mock_shell_out(0, "katie", ""))
79
+ end
80
+
81
+ it "should correctly set the [short] hostname" do
82
+ @plugin.run
83
+ @plugin[:hostname].should == "katie"
84
+ end
85
+ end
86
+
75
87
  context "hostname --fqdn when it returns empty string" do
76
88
  before(:each) do
77
89
  @plugin.stub(:collect_os).and_return(:linux)
@@ -26,7 +26,7 @@ describe Ohai::System, "Linux filesystem plugin" do
26
26
  @plugin.stub(:shell_out).with("df -P").and_return(mock_shell_out(0, "", ""))
27
27
  @plugin.stub(:shell_out).with("df -i").and_return(mock_shell_out(0, "", ""))
28
28
  @plugin.stub(:shell_out).with("mount").and_return(mock_shell_out(0, "", ""))
29
- File.stub(:exists?).with("/bin/lsblk").and_return(false)
29
+ File.stub(:exist?).with("/bin/lsblk").and_return(false)
30
30
  @plugin.stub(:shell_out).with("blkid -s TYPE").and_return(mock_shell_out(0, "", ""))
31
31
  @plugin.stub(:shell_out).with("blkid -s UUID").and_return(mock_shell_out(0, "", ""))
32
32
  @plugin.stub(:shell_out).with("blkid -s LABEL").and_return(mock_shell_out(0, "", ""))
@@ -38,7 +38,22 @@ describe Ohai::System, "Linux filesystem plugin" do
38
38
  @plugin.stub(:shell_out).with("lsblk -r -n -o NAME,LABEL").
39
39
  and_return(mock_shell_out(0, "", ""))
40
40
 
41
- File.stub(:exists?).with("/proc/mounts").and_return(false)
41
+ File.stub(:exist?).with("/proc/mounts").and_return(false)
42
+
43
+ %w{sdb1 sdb2 sda1 sda2 md0 md1 md2}.each do |name|
44
+ File.stub(:exist?).with("/dev/#{name}").and_return(true)
45
+ end
46
+ %w{
47
+ sys.vg-root.lv
48
+ sys.vg-swap.lv
49
+ sys.vg-tmp.lv
50
+ sys.vg-usr.lv
51
+ sys.vg-var.lv
52
+ sys.vg-home.lv
53
+ }.each do |name|
54
+ File.stub(:exist?).with("/dev/#{name}").and_return(false)
55
+ File.stub(:exist?).with("/dev/mapper/#{name}").and_return(true)
56
+ end
42
57
  end
43
58
 
44
59
  describe "when gathering filesystem usage data from df" do
@@ -191,20 +206,20 @@ BLKID_TYPE
191
206
 
192
207
  describe "when gathering filesystem type data from lsblk" do
193
208
  before(:each) do
194
- File.stub(:exists?).with("/bin/lsblk").and_return(true)
209
+ File.stub(:exist?).with("/bin/lsblk").and_return(true)
195
210
  @stdout = <<-BLKID_TYPE
196
- /dev/sdb1 linux_raid_member
197
- /dev/sdb2 linux_raid_member
198
- /dev/sda1 linux_raid_member
199
- /dev/sda2 linux_raid_member
200
- /dev/md0 ext3
201
- /dev/md1 LVM2_member
202
- /dev/mapper/sys.vg-root.lv ext4
203
- /dev/mapper/sys.vg-swap.lv swap
204
- /dev/mapper/sys.vg-tmp.lv ext4
205
- /dev/mapper/sys.vg-usr.lv ext4
206
- /dev/mapper/sys.vg-var.lv ext4
207
- /dev/mapper/sys.vg-home.lv xfs
211
+ sdb1 linux_raid_member
212
+ sdb2 linux_raid_member
213
+ sda1 linux_raid_member
214
+ sda2 linux_raid_member
215
+ md0 ext3
216
+ md1 LVM2_member
217
+ sys.vg-root.lv ext4
218
+ sys.vg-swap.lv swap
219
+ sys.vg-tmp.lv ext4
220
+ sys.vg-usr.lv ext4
221
+ sys.vg-var.lv ext4
222
+ sys.vg-home.lv xfs
208
223
  BLKID_TYPE
209
224
  @plugin.stub(:shell_out).with("lsblk -r -n -o NAME,FSTYPE").
210
225
  and_return(mock_shell_out(0, @stdout, ""))
@@ -254,20 +269,20 @@ BLKID_UUID
254
269
 
255
270
  describe "when gathering filesystem uuid data from lsblk" do
256
271
  before(:each) do
257
- File.stub(:exists?).with("/bin/lsblk").and_return(true)
272
+ File.stub(:exist?).with("/bin/lsblk").and_return(true)
258
273
  @stdout = <<-BLKID_UUID
259
- /dev/sdb1 bd1197e0-6997-1f3a-e27e-7801388308b5
260
- /dev/sdb2 e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa
261
- /dev/sda1 bd1197e0-6997-1f3a-e27e-7801388308b5
262
- /dev/sda2 e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa
263
- /dev/md0 37b8de8e-0fe3-4b5a-b9b4-dde33e19bb32
264
- /dev/md1 YsIe0R-fj1y-LXTd-imla-opKo-OuIe-TBoxSK
265
- /dev/mapper/sys.vg-root.lv 7742d14b-80a3-4e97-9a32-478be9ea9aea
266
- /dev/mapper/sys.vg-swap.lv 9bc2e515-8ddc-41c3-9f63-4eaebde9ce96
267
- /dev/mapper/sys.vg-tmp.lv 74cf7eb9-428f-479e-9a4a-9943401e81e5
268
- /dev/mapper/sys.vg-usr.lv 26ec33c5-d00b-4f88-a550-492def013bbc
269
- /dev/mapper/sys.vg-var.lv 6b559c35-7847-4ae2-b512-c99012d3f5b3
270
- /dev/mapper/sys.vg-home.lv d6efda02-1b73-453c-8c74-7d8dee78fa5e
274
+ sdb1 bd1197e0-6997-1f3a-e27e-7801388308b5
275
+ sdb2 e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa
276
+ sda1 bd1197e0-6997-1f3a-e27e-7801388308b5
277
+ sda2 e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa
278
+ md0 37b8de8e-0fe3-4b5a-b9b4-dde33e19bb32
279
+ md1 YsIe0R-fj1y-LXTd-imla-opKo-OuIe-TBoxSK
280
+ sys.vg-root.lv 7742d14b-80a3-4e97-9a32-478be9ea9aea
281
+ sys.vg-swap.lv 9bc2e515-8ddc-41c3-9f63-4eaebde9ce96
282
+ sys.vg-tmp.lv 74cf7eb9-428f-479e-9a4a-9943401e81e5
283
+ sys.vg-usr.lv 26ec33c5-d00b-4f88-a550-492def013bbc
284
+ sys.vg-var.lv 6b559c35-7847-4ae2-b512-c99012d3f5b3
285
+ sys.vg-home.lv d6efda02-1b73-453c-8c74-7d8dee78fa5e
271
286
  BLKID_UUID
272
287
  @plugin.stub(:shell_out).with("lsblk -r -n -o NAME,UUID").
273
288
  and_return(mock_shell_out(0, @stdout, ""))
@@ -316,18 +331,18 @@ BLKID_LABEL
316
331
 
317
332
  describe "when gathering filesystem label data from lsblk" do
318
333
  before(:each) do
319
- File.stub(:exists?).with("/bin/lsblk").and_return(true)
334
+ File.stub(:exist?).with("/bin/lsblk").and_return(true)
320
335
  @stdout = <<-BLKID_LABEL
321
- /dev/sda1 fuego:0
322
- /dev/sda2 fuego:1
323
- /dev/sdb1 fuego:0
324
- /dev/sdb2 fuego:1
325
- /dev/md0 /boot
326
- /dev/mapper/sys.vg-root.lv /
327
- /dev/mapper/sys.vg-tmp.lv /tmp
328
- /dev/mapper/sys.vg-usr.lv /usr
329
- /dev/mapper/sys.vg-var.lv /var
330
- /dev/mapper/sys.vg-home.lv /home
336
+ sda1 fuego:0
337
+ sda2 fuego:1
338
+ sdb1 fuego:0
339
+ sdb2 fuego:1
340
+ md0 /boot
341
+ sys.vg-root.lv /
342
+ sys.vg-tmp.lv /tmp
343
+ sys.vg-usr.lv /usr
344
+ sys.vg-var.lv /var
345
+ sys.vg-home.lv /home
331
346
  BLKID_LABEL
332
347
  @plugin.stub(:shell_out).with("lsblk -r -n -o NAME,LABEL").
333
348
  and_return(mock_shell_out(0, @stdout, ""))
@@ -348,7 +363,7 @@ BLKID_LABEL
348
363
 
349
364
  describe "when gathering data from /proc/mounts" do
350
365
  before(:each) do
351
- File.stub(:exists?).with("/proc/mounts").and_return(true)
366
+ File.stub(:exist?).with("/proc/mounts").and_return(true)
352
367
  @double_file = double("/proc/mounts")
353
368
  @mounts = <<-MOUNTS
354
369
  rootfs / rootfs rw 0 0
@@ -35,6 +35,7 @@ describe Ohai::System, "Linux plugin platform" do
35
35
  File.stub(:exists?).with("/etc/slackware-version").and_return(false)
36
36
  File.stub(:exists?).with("/etc/enterprise-release").and_return(false)
37
37
  File.stub(:exists?).with("/etc/oracle-release").and_return(false)
38
+ File.stub(:exists?).with("/etc/parallels-release").and_return(false)
38
39
  File.stub(:exists?).with("/usr/bin/raspi-config").and_return(false)
39
40
  end
40
41
 
@@ -295,6 +296,41 @@ describe Ohai::System, "Linux plugin platform" do
295
296
  @plugin[:platform].should == "fedora"
296
297
  @plugin[:platform_version].to_i.should == 13
297
298
  end
299
+
300
+ end
301
+ end
302
+
303
+ describe "on pcs linux" do
304
+ describe "with lsb_result" do
305
+ it "should read the platform as parallels and version as 6.0.5" do
306
+ @plugin[:lsb][:id] = "CloudLinuxServer"
307
+ @plugin[:lsb][:release] = "6.5"
308
+ File.stub(:exists?).with("/etc/redhat-release").and_return(true)
309
+ File.stub(:read).with("/etc/redhat-release").and_return("CloudLinux Server release 6.5 (Pavel Popovich)")
310
+ File.should_receive(:exists?).with("/etc/parallels-release").and_return(true)
311
+ File.should_receive(:read).with("/etc/parallels-release").and_return("Parallels Cloud Server 6.0.5 (20007)")
312
+ @plugin.run
313
+ @plugin[:platform].should == "parallels"
314
+ @plugin[:platform_version].should == "6.0.5"
315
+ @plugin[:platform_family].should == "rhel"
316
+ end
317
+ end
318
+
319
+ describe "without lsb_results" do
320
+ before(:each) do
321
+ @plugin.lsb = nil
322
+ end
323
+
324
+ it "should read the platform as parallels and version as 6.0.5" do
325
+ File.stub(:exists?).with("/etc/redhat-release").and_return(true)
326
+ File.stub(:read).with("/etc/redhat-release").and_return("CloudLinux Server release 6.5 (Pavel Popovich)")
327
+ File.should_receive(:exists?).with("/etc/parallels-release").and_return(true)
328
+ File.should_receive(:read).with("/etc/parallels-release").and_return("Parallels Cloud Server 6.0.5 (20007)")
329
+ @plugin.run
330
+ @plugin[:platform].should == "parallels"
331
+ @plugin[:platform_version].should == "6.0.5"
332
+ @plugin[:platform_family].should == "rhel"
333
+ end
298
334
  end
299
335
  end
300
336
 
@@ -118,6 +118,26 @@ EOM
118
118
  }
119
119
  end
120
120
 
121
+ let(:openstack_metadata_version) { "2013-04-04" }
122
+ let(:openstack_metadata_endpoint) { "http://169.254.169.254/openstack/" }
123
+
124
+ let(:openstack_metadata_values) do
125
+ '{
126
+ "availability_zone" : "nova",
127
+ "hostname" : "ohai.novalocal",
128
+ "launch_index" : 0,
129
+ "meta" : {
130
+ "priority" : "low",
131
+ "role" : "ohaiserver"
132
+ },
133
+ "name" : "ohai_spec",
134
+ "public_keys" : {
135
+ "mykey" : "SSH KEY DATA"
136
+ },
137
+ "uuid" : "00000000-0000-0000-0000-100000000000"
138
+ }'
139
+ end
140
+
121
141
  let(:http_client) { double("Net::HTTP", :read_timeout= => nil) }
122
142
 
123
143
  def expect_get(url, response_body)
@@ -126,6 +146,12 @@ EOM
126
146
  and_return(double("HTTP Response", :code => "200", :body => response_body))
127
147
  end
128
148
 
149
+ def expect_get_response(url, response_body)
150
+ http_client.should_receive(:get_response).
151
+ with(url,nil,nil).
152
+ and_return(double("HTTP Response", :code => "200", :body => response_body))
153
+ end
154
+
129
155
  before do
130
156
  openstack_plugin.should_receive(:can_metadata_connect?).
131
157
  with(Ohai::Mixin::Ec2Metadata::EC2_METADATA_ADDR,80).
@@ -143,6 +169,11 @@ EOM
143
169
  expect_get("/#{metadata_version}/meta-data/#{md_id}", md_value)
144
170
  end
145
171
 
172
+ expect_get_response(
173
+ URI.parse("#{openstack_metadata_endpoint}#{openstack_metadata_version}/meta_data.json"),
174
+ openstack_metadata_values
175
+ )
176
+
146
177
  openstack_plugin.run
147
178
  end
148
179
 
@@ -206,6 +237,30 @@ EOM
206
237
  it "reads the provider from the metadata service" do
207
238
  expect(ohai_data['openstack']['provider']).to eq("openstack")
208
239
  end
240
+
241
+ context 'Retreive openStack specific metadata' do
242
+ it "reads the availability_zone from the openstack metadata service" do
243
+ expect(ohai_data['openstack']['metadata']['availability_zone']).to eq('nova')
244
+ end
245
+ it "reads the hostname from the openstack metadata service" do
246
+ expect(ohai_data['openstack']['metadata']['hostname']).to eq('ohai.novalocal')
247
+ end
248
+ it "reads the launch_index from the openstack metadata service" do
249
+ expect(ohai_data['openstack']['metadata']['launch_index']).to eq(0)
250
+ end
251
+ it "reads the meta from the openstack metadata service" do
252
+ expect(ohai_data['openstack']['metadata']['meta']).to eq({ "priority" => "low", "role" => "ohaiserver"})
253
+ end
254
+ it "reads the name from the openstack metadata service" do
255
+ expect(ohai_data['openstack']['metadata']['name']).to eq('ohai_spec')
256
+ end
257
+ it "reads the public_keys from the openstack metadata service" do
258
+ expect(ohai_data['openstack']['metadata']['public_keys']).to eq({"mykey" => "SSH KEY DATA"})
259
+ end
260
+ it "reads the uuid from the openstack metadata service" do
261
+ expect(ohai_data['openstack']['metadata']['uuid']).to eq('00000000-0000-0000-0000-100000000000')
262
+ end
263
+ end
209
264
  end
210
265
 
211
266
 
@@ -1,6 +1,6 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper.rb')
2
2
 
3
- describe Ohai::System, "plugin etc" do
3
+ describe Ohai::System, "plugin etc", :unix_only do
4
4
  before(:each) do
5
5
  @plugin = get_plugin("passwd")
6
6
  end
@@ -24,7 +24,8 @@ describe Ohai::System, "plugin etc" do
24
24
  end
25
25
 
26
26
  it "should set the current user" do
27
- Etc.should_receive(:getlogin).and_return('chef')
27
+ Process.should_receive(:euid).and_return('31337')
28
+ Etc.should_receive(:getpwuid).and_return(PasswdEntry.new('chef', 31337, 31337, '/home/chef', '/bin/ksh', 'Julia Child'))
28
29
  @plugin.run
29
30
  @plugin[:current_user].should == 'chef'
30
31
  end
@@ -7,9 +7,9 @@
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
8
8
  # you may not use this file except in compliance with the License.
9
9
  # You may obtain a copy of the License at
10
- #
10
+ #
11
11
  # http://www.apache.org/licenses/LICENSE-2.0
12
- #
12
+ #
13
13
  # Unless required by applicable law or agreed to in writing, software
14
14
  # distributed under the License is distributed on an "AS IS" BASIS,
15
15
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,33 +17,35 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
-
21
20
  require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper.rb')
22
21
 
23
22
  describe Ohai::System, "plugin python" do
23
+ let(:stdout) { "2.5.2 (r252:60911, Jan 4 2009, 17:40:26)\n[GCC 4.3.2]\n" }
24
+
25
+ let(:retval) { 0 }
24
26
 
25
- before(:each) do
26
- @plugin = get_plugin("python")
27
- @plugin[:languages] = Mash.new
28
- @stdout = "2.5.2 (r252:60911, Jan 4 2009, 17:40:26)\n[GCC 4.3.2]\n"
29
- @plugin.stub(:shell_out).with("python -c \"import sys; print sys.version\"").and_return(mock_shell_out(0, @stdout, ""))
27
+ let(:plugin) do
28
+ plugin = get_plugin("python")
29
+ plugin[:languages] = Mash.new
30
+ expect(plugin).to receive(:shell_out).with("python -c \"import sys; print (sys.version)\"").and_return(mock_shell_out(retval, stdout, ""))
31
+ plugin
30
32
  end
31
-
33
+
32
34
  it "should get the python version from printing sys.version and sys.platform" do
33
- @plugin.should_receive(:shell_out).with("python -c \"import sys; print sys.version\"").and_return(mock_shell_out(0, @stdout, ""))
34
- @plugin.run
35
+ plugin.run
35
36
  end
36
37
 
37
38
  it "should set languages[:python][:version]" do
38
- @plugin.run
39
- @plugin.languages[:python][:version].should eql("2.5.2")
40
- end
41
-
42
- it "should not set the languages[:python] tree up if python command fails" do
43
- @stdout = "2.5.2 (r252:60911, Jan 4 2009, 17:40:26)\n[GCC 4.3.2]\n"
44
- @plugin.stub(:shell_out).with("python -c \"import sys; print sys.version\"").and_return(mock_shell_out(1, @stdout, ""))
45
- @plugin.run
46
- @plugin.languages.should_not have_key(:python)
39
+ plugin.run
40
+ expect(plugin.languages[:python][:version]).to eql("2.5.2")
47
41
  end
48
42
 
43
+ context "when the python command fails" do
44
+ let(:retval) { 1 }
45
+
46
+ it "should not set the languages[:python] tree up" do
47
+ plugin.run
48
+ expect(plugin.languages).not_to have_key(:python)
49
+ end
50
+ end
49
51
  end
@@ -0,0 +1,153 @@
1
+ # License:: Apache License, Version 2.0
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ #
15
+
16
+ require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper.rb')
17
+
18
+ describe Ohai::System, "Solaris 2.x zpool plugin" do
19
+ before(:each) do
20
+ @plugin = get_plugin("solaris2/zpools")
21
+ @plugin.stub(:collect_os).and_return(:solaris2)
22
+
23
+ @zpool_status_rpool = <<-EOSR
24
+ pool: rpool
25
+ state: ONLINE
26
+ scan: resilvered 65.6G in 0h8m with 0 errors on Fri Jun 6 14:22:40 2014
27
+ config:
28
+
29
+ NAME STATE READ WRITE CKSUM
30
+ rpool ONLINE 0 0 0
31
+ mirror-0 ONLINE 0 0 0
32
+ c3t5d0s0 ONLINE 0 0 0
33
+ c3t4d0s0 ONLINE 0 0 0
34
+
35
+ errors: No known data errors
36
+ EOSR
37
+
38
+ @zpool_status_tank = <<-EOST
39
+ pool: tank
40
+ state: ONLINE
41
+ scan: scrub repaired 0 in 0h0m with 0 errors on Fri Jun 6 14:43:40 2014
42
+ config:
43
+
44
+ NAME STATE READ WRITE CKSUM
45
+ tank ONLINE 0 0 0
46
+ raidz2-0 ONLINE 0 0 0
47
+ c1t50014EE209D1DBA9d0 ONLINE 0 0 0
48
+ c1t50014EE20A0ECED2d0 ONLINE 0 0 0
49
+ c1t50014EE20A106BFFd0 ONLINE 0 0 0
50
+ c1t50014EE20A1423E8d0 ONLINE 0 0 0
51
+ c1t50014EE20A145447d0 ONLINE 0 0 0
52
+ c1t50014EE20A29EE56d0 ONLINE 0 0 0
53
+ raidz2-1 ONLINE 0 0 0
54
+ c1t50014EE20A2B984Cd0 ONLINE 0 0 0
55
+ c1t50014EE20A2BBC78d0 ONLINE 0 0 0
56
+ c1t50014EE20A2BDCA9d0 ONLINE 0 0 0
57
+ c1t50014EE25F697DC4d0 ONLINE 0 0 0
58
+ c1t50014EE25F698BECd0 ONLINE 0 0 0
59
+ c1t50014EE25F6998DAd0 ONLINE 0 0 0
60
+ EOST
61
+ @zpool_out = <<-EOZO
62
+ rpool 109G 66.2G 42.8G 60% 1.00x ONLINE 34
63
+ tank 130T 4.91M 130T 0% 1.00x ONLINE 34
64
+ EOZO
65
+ @plugin.stub(:shell_out).with("zpool list -H -o name,size,alloc,free,cap,dedup,health,version").and_return(mock_shell_out(0,@zpool_out,""))
66
+ @plugin.stub(:shell_out).with("su adm -c \"zpool status rpool\"").and_return(mock_shell_out(0,@zpool_status_rpool,""))
67
+ @plugin.stub(:shell_out).with("su adm -c \"zpool status tank\"").and_return(mock_shell_out(0,@zpool_status_tank,""))
68
+ end
69
+
70
+ describe "On Solaris2 Common" do
71
+ it "Should have entries for both zpools" do
72
+ @plugin.run
73
+ expect(@plugin[:zpools][:rpool]).to be
74
+ expect(@plugin[:zpools][:tank]).to be
75
+ end
76
+
77
+ it "Should have the correct pool size" do
78
+ @plugin.run
79
+ expect(@plugin[:zpools][:rpool][:pool_size]).to match("109G")
80
+ expect(@plugin[:zpools][:tank][:pool_size]).to match("130T")
81
+ end
82
+
83
+ it "Should have the correct pool allocated size" do
84
+ @plugin.run
85
+ expect(@plugin[:zpools][:rpool][:pool_allocated]).to match("66.2G")
86
+ expect(@plugin[:zpools][:tank][:pool_allocated]).to match("4.91M")
87
+ end
88
+
89
+ it "Should have the correct pool free size" do
90
+ @plugin.run
91
+ expect(@plugin[:zpools][:rpool][:pool_free]).to match("42.8G")
92
+ expect(@plugin[:zpools][:tank][:pool_free]).to match("130T")
93
+ end
94
+
95
+ it "Should have the correct capacity_used" do
96
+ @plugin.run
97
+ expect(@plugin[:zpools][:rpool][:capacity_used]).to match("60%")
98
+ expect(@plugin[:zpools][:tank][:capacity_used]).to match("0%")
99
+ end
100
+
101
+ it "Should have the correct dedup_factor" do
102
+ @plugin.run
103
+ expect(@plugin[:zpools][:rpool][:dedup_factor]).to match("1.00x")
104
+ expect(@plugin[:zpools][:tank][:dedup_factor]).to match("1.00x")
105
+ end
106
+
107
+ it "Should have the correct health" do
108
+ @plugin.run
109
+ expect(@plugin[:zpools][:rpool][:health]).to match("ONLINE")
110
+ expect(@plugin[:zpools][:tank][:health]).to match("ONLINE")
111
+ end
112
+
113
+ it "Should have the correct number of devices" do
114
+ @plugin.run
115
+ expect(@plugin[:zpools][:rpool][:devices].keys.size).to match(2)
116
+ expect(@plugin[:zpools][:tank][:devices].keys.size).to match(12)
117
+ end
118
+ end
119
+
120
+ describe "On OmniOS_151006" do
121
+ before(:each) do
122
+ @zpool_out = <<-EOZO
123
+ rpool 109G 66.2G 42.8G 60% 1.00x ONLINE -
124
+ tank 130T 4.91M 130T 0% 1.00x ONLINE -
125
+ EOZO
126
+ @plugin.stub(:shell_out).with("zpool list -H -o name,size,alloc,free,cap,dedup,health,version").and_return(mock_shell_out(0,@zpool_out,""))
127
+ end
128
+
129
+ it "Won't have a version number" do
130
+ @plugin.run
131
+ expect(@plugin[:zpools][:rpool][:zpool_version]).to match("-")
132
+ expect(@plugin[:zpools][:tank][:zpool_version]).to match("-")
133
+ end
134
+
135
+ end
136
+
137
+ describe "On Solaris_11.1" do
138
+ before(:each) do
139
+ @zpool_out = <<-EOZO
140
+ rpool 109G 66.2G 42.8G 60% 1.00x ONLINE 34
141
+ tank 130T 4.91M 130T 0% 1.00x ONLINE 34
142
+ EOZO
143
+ @plugin.stub(:shell_out).with("zpool list -H -o name,size,alloc,free,cap,dedup,health,version").and_return(mock_shell_out(0,@zpool_out,""))
144
+ end
145
+
146
+ it "Should have a version number" do
147
+ @plugin.run
148
+ expect(@plugin[:zpools][:rpool][:zpool_version]).to match("34")
149
+ expect(@plugin[:zpools][:tank][:zpool_version]).to match("34")
150
+ end
151
+
152
+ end
153
+ end