ohai 8.9.0 → 8.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 045c43590e3c7ece0dc1cf3c6aa928b5f116c136
4
- data.tar.gz: 020c8dfeabd26ba77291ba80e445b5ca3d61d661
3
+ metadata.gz: df97b8b25c82b3afc5230e4be648989481aa4082
4
+ data.tar.gz: b6814cfa34071bd5e11bee94c417c0e57035c32e
5
5
  SHA512:
6
- metadata.gz: 482f14bc6fee2caab189234bf52ee9bbc0c0437f18da3efe2a52b28544ff6080886ef7d4d2ffb84f647a4d19de9144f00c6f16a92ccaa2a6a5dfe3ce105627e8
7
- data.tar.gz: fe03f4ace8579e38373ff3fd244c3dd6a47a0738a401f65c673ff4a22c6fc284c3cca8c1788d6c533f03140f78f2ad7dd8a2d71ed8689bbf1d626ac51bcce636
6
+ metadata.gz: aa2aa6235d8baf1371e4a40c6fb3b7d2e238a6d3da7a460cb312519ed24d4a8edd9d9188b0f02b9c77e47bcc838583fffe2422aba57663750b4003c8945386ea
7
+ data.tar.gz: 8578b6b564b23aef84eea2efcc356df71f4a410ae212a25ee213542eab8ce63c4f82a026741c2f78cef647729e405289f71ac641df52f30f7cd9c3d68bc04364
@@ -17,7 +17,7 @@
17
17
 
18
18
  # http://www.dmo.ca/blog/detecting-virtualization-on-linux
19
19
  module ::Ohai::Mixin::DmiDecode
20
- def determine_guest(dmi_data)
20
+ def guest_from_dmi(dmi_data)
21
21
  dmi_data.each_line do |line|
22
22
  case line
23
23
  when /Manufacturer: Microsoft/
@@ -69,7 +69,7 @@ Ohai.plugin(:Virtualization) do
69
69
 
70
70
  # parse dmidecode to discover various virtualization guests
71
71
  if File.exist?('/usr/local/sbin/dmidecode') || File.exist?('/usr/pkg/sbin/dmidecode')
72
- guest = determine_guest(shell_out('dmidecode').stdout)
72
+ guest = guest_from_dmi(shell_out('dmidecode').stdout)
73
73
  if guest
74
74
  virtualization[:system] = guest
75
75
  virtualization[:role] = 'guest'
@@ -26,7 +26,9 @@ Ohai.plugin(:EC2) do
26
26
  provides "ec2"
27
27
 
28
28
  depends "network/interfaces"
29
+ depends "dmi"
29
30
 
31
+ # look for arp address that non-VPC hosts will have
30
32
  def has_ec2_mac?
31
33
  network[:interfaces].values.each do |iface|
32
34
  unless iface[:arp].nil?
@@ -40,10 +42,26 @@ Ohai.plugin(:EC2) do
40
42
  false
41
43
  end
42
44
 
45
+ # look for amazon string in dmi bios data
46
+ # this only works on hvm instances as paravirt instances have no dmi data
47
+ def has_ec2_dmi?
48
+ begin
49
+ # detect a version of '4.2.amazon'
50
+ if dmi[:bios][:all_records][0][:Version] =~ /amazon/
51
+ Ohai::Log.debug("has_ec2_dmi? == true")
52
+ true
53
+ end
54
+ rescue NoMethodError
55
+ Ohai::Log.debug("has_ec2_dmi? == false")
56
+ false
57
+ end
58
+ end
59
+
60
+
43
61
  def looks_like_ec2?
44
62
  # Try non-blocking connect so we don't "block" if
45
63
  # the Xen environment is *not* EC2
46
- hint?('ec2') || has_ec2_mac? && can_metadata_connect?(Ohai::Mixin::Ec2Metadata::EC2_METADATA_ADDR,80)
64
+ hint?('ec2') || ( has_ec2_dmi? || has_ec2_mac?) && can_metadata_connect?(Ohai::Mixin::Ec2Metadata::EC2_METADATA_ADDR,80)
47
65
  end
48
66
 
49
67
  collect_data do
@@ -60,7 +78,7 @@ Ohai.plugin(:EC2) do
60
78
  end
61
79
  ec2[:userdata] = self.fetch_userdata
62
80
  #ASCII-8BIT is equivalent to BINARY in this case
63
- if ec2[:userdata].encoding.to_s == "ASCII-8BIT"
81
+ if ec2[:userdata] && ec2[:userdata].encoding.to_s == "ASCII-8BIT"
64
82
  Ohai::Log.debug("Binary UserData Found. Storing in base64")
65
83
  ec2[:userdata] = Base64.encode64(ec2[:userdata])
66
84
  end
@@ -41,15 +41,15 @@ Ohai.plugin(:Virtualization) do
41
41
  # virtualization[:mechanism]
42
42
 
43
43
  ## Xen
44
- # /proc/xen is an empty dir for EL6 + Linode Guests
45
- if File.exists?("/proc/xen")
44
+ # /proc/xen is an empty dir for EL6 + Linode Guests + Paravirt EC2 instances
45
+ if File.exist?("/proc/xen")
46
46
  virtualization[:system] = "xen"
47
47
  # Assume guest
48
48
  virtualization[:role] = "guest"
49
49
  virtualization[:systems][:xen] = "guest"
50
50
 
51
51
  # This file should exist on most Xen systems, normally empty for guests
52
- if File.exists?("/proc/xen/capabilities")
52
+ if File.exist?("/proc/xen/capabilities")
53
53
  if File.read("/proc/xen/capabilities") =~ /control_d/i
54
54
  virtualization[:role] = "host"
55
55
  virtualization[:systems][:xen] = "host"
@@ -65,7 +65,7 @@ Ohai.plugin(:Virtualization) do
65
65
  # but rather be additive - btm
66
66
 
67
67
  # Detect from kernel module
68
- if File.exists?("/proc/modules")
68
+ if File.exist?("/proc/modules")
69
69
  modules = File.read("/proc/modules")
70
70
  if modules =~ /^kvm/
71
71
  virtualization[:system] = "kvm"
@@ -87,7 +87,7 @@ Ohai.plugin(:Virtualization) do
87
87
  # 2.6.27-9-server (intrepid) has this / 2.6.18-6-amd64 (etch) does not
88
88
  # It would be great if we could read pv_info in the kernel
89
89
  # Wait for reply to: http://article.gmane.org/gmane.comp.emulators.kvm.devel/27885
90
- if File.exists?("/proc/cpuinfo")
90
+ if File.exist?("/proc/cpuinfo")
91
91
  if File.read("/proc/cpuinfo") =~ /QEMU Virtual CPU|Common KVM processor|Common 32-bit KVM processor/
92
92
  virtualization[:system] = "kvm"
93
93
  virtualization[:role] = "guest"
@@ -97,18 +97,18 @@ Ohai.plugin(:Virtualization) do
97
97
 
98
98
  # Detect OpenVZ / Virtuozzo.
99
99
  # http://wiki.openvz.org/BC_proc_entries
100
- if File.exists?("/proc/bc/0")
100
+ if File.exist?("/proc/bc/0")
101
101
  virtualization[:system] = "openvz"
102
102
  virtualization[:role] = "host"
103
103
  virtualization[:systems][:openvz] = "host"
104
- elsif File.exists?("/proc/vz")
104
+ elsif File.exist?("/proc/vz")
105
105
  virtualization[:system] = "openvz"
106
106
  virtualization[:role] = "guest"
107
107
  virtualization[:systems][:openvz] = "guest"
108
108
  end
109
109
 
110
110
  # Detect Parallels virtual machine from pci devices
111
- if File.exists?("/proc/bus/pci/devices")
111
+ if File.exist?("/proc/bus/pci/devices")
112
112
  if File.read("/proc/bus/pci/devices") =~ /1ab84000/
113
113
  virtualization[:system] = "parallels"
114
114
  virtualization[:role] = "guest"
@@ -117,8 +117,8 @@ Ohai.plugin(:Virtualization) do
117
117
  end
118
118
 
119
119
  # parse dmidecode to discover various virtualization guests
120
- if File.exists?("/usr/sbin/dmidecode")
121
- guest = determine_guest(shell_out('dmidecode').stdout)
120
+ if File.exist?("/usr/sbin/dmidecode")
121
+ guest = guest_from_dmi(shell_out('dmidecode').stdout)
122
122
  if guest
123
123
  virtualization[:system] = guest
124
124
  virtualization[:role] = 'guest'
@@ -127,10 +127,10 @@ Ohai.plugin(:Virtualization) do
127
127
  end
128
128
 
129
129
  # Detect Linux-VServer
130
- if File.exists?("/proc/self/status")
130
+ if File.exist?("/proc/self/status")
131
131
  proc_self_status = File.read("/proc/self/status")
132
132
  vxid = proc_self_status.match(/^(s_context|VxID):\s*(\d+)$/)
133
- if vxid and vxid[2]
133
+ if vxid && vxid[2]
134
134
  virtualization[:system] = "linux-vserver"
135
135
  if vxid[2] == "0"
136
136
  virtualization[:role] = "host"
@@ -160,7 +160,7 @@ Ohai.plugin(:Virtualization) do
160
160
  #
161
161
  # Full notes, https://tickets.opscode.com/browse/OHAI-551
162
162
  # Kernel docs, https://www.kernel.org/doc/Documentation/cgroups
163
- if File.exists?("/proc/self/cgroup")
163
+ if File.exist?("/proc/self/cgroup")
164
164
  cgroup_content = File.read("/proc/self/cgroup")
165
165
  if cgroup_content =~ %r{^\d+:[^:]+:/(lxc|docker)/.+$} ||
166
166
  cgroup_content =~ %r{^\d+:[^:]+:/[^/]+/(lxc|docker)-.+$}
@@ -180,10 +180,10 @@ Ohai.plugin(:Virtualization) do
180
180
  # If so, we may need to look further for a differentiator (OHAI-573)
181
181
  virtualization[:systems][:lxc] = "host"
182
182
  end
183
- elsif File.exists?("/.dockerenv") || File.exists?("/.dockerinit")
184
- virtualization[:system] = "docker"
185
- virtualization[:role] = "guest"
186
- virtualization[:systems][:docker] = "guest"
183
+ elsif File.exist?("/.dockerenv") || File.exist?("/.dockerinit")
184
+ virtualization[:system] = "docker"
185
+ virtualization[:role] = "guest"
186
+ virtualization[:systems][:docker] = "guest"
187
187
  end
188
188
  end
189
189
  end
@@ -23,58 +23,62 @@ Ohai.plugin(:Packages) do
23
23
  depends 'platform_family'
24
24
 
25
25
  collect_data(:linux) do
26
- packages Mash.new
26
+ if configuration(:enabled)
27
+ packages Mash.new
28
+ if %w(debian).include? platform_family
29
+ so = shell_out('dpkg-query -W')
30
+ pkgs = so.stdout.lines
27
31
 
28
- if %w(debian).include? platform_family
29
- so = shell_out('dpkg-query -W')
30
- pkgs = so.stdout.lines
31
-
32
- pkgs.each do |pkg|
33
- name, version = pkg.split
34
- packages[name] = { 'version' => version }
35
- end
32
+ pkgs.each do |pkg|
33
+ name, version = pkg.split
34
+ packages[name] = { 'version' => version }
35
+ end
36
36
 
37
- elsif %w(rhel fedora suse).include? platform_family
38
- require 'shellwords'
39
- format = Shellwords.escape '%{NAME}\t%{VERSION}\t%{RELEASE}\n'
40
- so = shell_out("rpm -qa --queryformat #{format}")
41
- pkgs = so.stdout.lines
37
+ elsif %w(rhel fedora suse).include? platform_family
38
+ require 'shellwords'
39
+ format = Shellwords.escape '%{NAME}\t%{VERSION}\t%{RELEASE}\n'
40
+ so = shell_out("rpm -qa --queryformat #{format}")
41
+ pkgs = so.stdout.lines
42
42
 
43
- pkgs.each do |pkg|
44
- name, version, release = pkg.split
45
- packages[name] = { 'version' => version, 'release' => release }
43
+ pkgs.each do |pkg|
44
+ name, version, release = pkg.split
45
+ packages[name] = { 'version' => version, 'release' => release }
46
+ end
46
47
  end
47
48
  end
48
49
  end
49
50
 
50
51
  collect_data(:windows) do
51
- packages Mash.new
52
-
53
- require 'wmi-lite'
52
+ if configuration(:enabled)
53
+ packages Mash.new
54
+ require 'wmi-lite'
54
55
 
55
- wmi = WmiLite::Wmi.new
56
- w32_product = wmi.instances_of('Win32_Product')
56
+ wmi = WmiLite::Wmi.new
57
+ w32_product = wmi.instances_of('Win32_Product')
57
58
 
58
- w32_product.find_all.each do |product|
59
- name = product['name']
60
- package = packages[name] = Mash.new
61
- %w(version vendor installdate).each do |attr|
62
- package[attr] = product[attr]
59
+ w32_product.find_all.each do |product|
60
+ name = product['name']
61
+ package = packages[name] = Mash.new
62
+ %w(version vendor installdate).each do |attr|
63
+ package[attr] = product[attr]
64
+ end
63
65
  end
64
66
  end
65
67
  end
66
68
 
67
69
  collect_data(:aix) do
68
- packages Mash.new
69
- so = shell_out('lslpp -L -q -c')
70
- pkgs = so.stdout.lines
70
+ if configuration(:enabled)
71
+ packages Mash.new
72
+ so = shell_out('lslpp -L -q -c')
73
+ pkgs = so.stdout.lines
71
74
 
72
- # Output format is
73
- # Package Name:Fileset:Level
74
- # On aix, filesets are packages and levels are versions
75
- pkgs.each do |pkg|
76
- _, name, version = pkg.split(':')
77
- packages[name] = { 'version' => version }
75
+ # Output format is
76
+ # Package Name:Fileset:Level
77
+ # On aix, filesets are packages and levels are versions
78
+ pkgs.each do |pkg|
79
+ _, name, version = pkg.split(':')
80
+ packages[name] = { 'version' => version }
81
+ end
78
82
  end
79
83
  end
80
84
 
@@ -115,8 +119,10 @@ Ohai.plugin(:Packages) do
115
119
  end
116
120
 
117
121
  collect_data(:solaris2) do
118
- packages Mash.new
119
- collect_ips_packages
120
- collect_sysv_packages
122
+ if configuration(:enabled)
123
+ packages Mash.new
124
+ collect_ips_packages
125
+ collect_sysv_packages
126
+ end
121
127
  end
122
128
  end
@@ -20,28 +20,32 @@ Ohai.plugin(:Drivers) do
20
20
  depends "kernel"
21
21
 
22
22
  collect_data(:windows) do
23
- require 'wmi-lite/wmi'
23
+ if configuration(:enabled)
24
24
 
25
- wmi = WmiLite::Wmi.new
25
+ require 'wmi-lite/wmi'
26
26
 
27
- kext = Mash.new
28
- pnp_drivers = Mash.new
27
+ kext = Mash.new
28
+ pnp_drivers = Mash.new
29
29
 
30
- drivers = wmi.instances_of('Win32_PnPSignedDriver')
31
- drivers.each do |driver|
32
- pnp_drivers[driver['deviceid']] = Mash.new
33
- driver.wmi_ole_object.properties_.each do |p|
34
- pnp_drivers[driver['deviceid']][p.name.wmi_underscore.to_sym] = driver[p.name.downcase]
35
- end
36
- if driver['devicename']
37
- kext[driver['devicename']] = pnp_drivers[driver['deviceid']]
38
- kext[driver['devicename']][:version] = pnp_drivers[driver['deviceid']][:driver_version]
39
- kext[driver['devicename']][:date] = pnp_drivers[driver['deviceid']][:driver_date] ? pnp_drivers[driver['deviceid']][:driver_date].to_s[0..7] : nil
30
+ wmi = WmiLite::Wmi.new
31
+
32
+ drivers = wmi.instances_of('Win32_PnPSignedDriver')
33
+ drivers.each do |driver|
34
+ pnp_drivers[driver['deviceid']] = Mash.new
35
+ driver.wmi_ole_object.properties_.each do |p|
36
+ pnp_drivers[driver['deviceid']][p.name.wmi_underscore.to_sym] = driver[p.name.downcase]
37
+ end
38
+ if driver['devicename']
39
+ kext[driver['devicename']] = pnp_drivers[driver['deviceid']]
40
+ kext[driver['devicename']][:version] = pnp_drivers[driver['deviceid']][:driver_version]
41
+ kext[driver['devicename']][:date] = pnp_drivers[driver['deviceid']][:driver_date] ? pnp_drivers[driver['deviceid']][:driver_date].to_s[0..7] : nil
42
+ end
40
43
  end
41
- end
42
44
 
43
- kernel[:pnp_drivers] = pnp_drivers
44
- kernel[:modules] = kext
45
+ kernel[:pnp_drivers] = pnp_drivers
46
+ kernel[:modules] = kext
45
47
 
48
+ end
46
49
  end
50
+
47
51
  end
@@ -18,5 +18,5 @@
18
18
 
19
19
  module Ohai
20
20
  OHAI_ROOT = File.expand_path(File.dirname(__FILE__))
21
- VERSION = '8.9.0'
21
+ VERSION = '8.10.0'
22
22
  end
@@ -270,6 +270,22 @@ end
270
270
  end
271
271
  end
272
272
 
273
+ describe "with ec2 dmi data" do
274
+ it_should_behave_like "ec2"
275
+
276
+ before(:each) do
277
+ @plugin[:dmi] = { :bios => { :all_records => [ { :Version => "4.2.amazon" } ] } }
278
+ end
279
+ end
280
+
281
+ describe "without ec2 dmi data" do
282
+ it_should_behave_like "!ec2"
283
+
284
+ before(:each) do
285
+ @plugin[:dmi] = nil
286
+ end
287
+ end
288
+
273
289
  describe "with ec2 cloud file" do
274
290
  it_should_behave_like "ec2"
275
291
 
@@ -25,24 +25,24 @@ describe Ohai::System, "Linux virtualization platform" do
25
25
  allow(plugin).to receive(:collect_os).and_return(:linux)
26
26
 
27
27
  # default to all requested Files not existing
28
- allow(File).to receive(:exists?).with("/proc/xen").and_return(false)
29
- allow(File).to receive(:exists?).with("/proc/xen/capabilities").and_return(false)
30
- allow(File).to receive(:exists?).with("/proc/modules").and_return(false)
31
- allow(File).to receive(:exists?).with("/proc/cpuinfo").and_return(false)
32
- allow(File).to receive(:exists?).with("/usr/sbin/dmidecode").and_return(false)
33
- allow(File).to receive(:exists?).with("/proc/self/status").and_return(false)
34
- allow(File).to receive(:exists?).with("/proc/bc/0").and_return(false)
35
- allow(File).to receive(:exists?).with("/proc/vz").and_return(false)
36
- allow(File).to receive(:exists?).with("/proc/self/cgroup").and_return(false)
37
- allow(File).to receive(:exists?).with("/.dockerenv").and_return(false)
38
- allow(File).to receive(:exists?).with("/.dockerinit").and_return(false)
39
- allow(File).to receive(:exists?).with("/proc/bus/pci/devices").and_return(false)
28
+ allow(File).to receive(:exist?).with("/proc/xen").and_return(false)
29
+ allow(File).to receive(:exist?).with("/proc/xen/capabilities").and_return(false)
30
+ allow(File).to receive(:exist?).with("/proc/modules").and_return(false)
31
+ allow(File).to receive(:exist?).with("/proc/cpuinfo").and_return(false)
32
+ allow(File).to receive(:exist?).with("/usr/sbin/dmidecode").and_return(false)
33
+ allow(File).to receive(:exist?).with("/proc/self/status").and_return(false)
34
+ allow(File).to receive(:exist?).with("/proc/bc/0").and_return(false)
35
+ allow(File).to receive(:exist?).with("/proc/vz").and_return(false)
36
+ allow(File).to receive(:exist?).with("/proc/self/cgroup").and_return(false)
37
+ allow(File).to receive(:exist?).with("/.dockerenv").and_return(false)
38
+ allow(File).to receive(:exist?).with("/.dockerinit").and_return(false)
39
+ allow(File).to receive(:exist?).with("/proc/bus/pci/devices").and_return(false)
40
40
  end
41
41
 
42
42
  describe "when we are checking for xen" do
43
43
  it "sets xen guest if /proc/xen exists but /proc/xen/capabilities does not" do
44
- expect(File).to receive(:exists?).with("/proc/xen").and_return(true)
45
- expect(File).to receive(:exists?).with("/proc/xen/capabilities").and_return(false)
44
+ expect(File).to receive(:exist?).with("/proc/xen").and_return(true)
45
+ expect(File).to receive(:exist?).with("/proc/xen/capabilities").and_return(false)
46
46
  plugin.run
47
47
  expect(plugin[:virtualization][:system]).to eq("xen")
48
48
  expect(plugin[:virtualization][:role]).to eq("guest")
@@ -50,8 +50,8 @@ describe Ohai::System, "Linux virtualization platform" do
50
50
  end
51
51
 
52
52
  it "sets xen host if /proc/xen/capabilities contains control_d " do
53
- expect(File).to receive(:exists?).with("/proc/xen").and_return(true)
54
- expect(File).to receive(:exists?).with("/proc/xen/capabilities").and_return(true)
53
+ expect(File).to receive(:exist?).with("/proc/xen").and_return(true)
54
+ expect(File).to receive(:exist?).with("/proc/xen/capabilities").and_return(true)
55
55
  allow(File).to receive(:read).with("/proc/xen/capabilities").and_return("control_d")
56
56
  plugin.run
57
57
  expect(plugin[:virtualization][:system]).to eq("xen")
@@ -60,8 +60,8 @@ describe Ohai::System, "Linux virtualization platform" do
60
60
  end
61
61
 
62
62
  it "sets xen guest if /proc/xen/capabilities exists but is empty" do
63
- expect(File).to receive(:exists?).with("/proc/xen").and_return(true)
64
- expect(File).to receive(:exists?).with("/proc/xen/capabilities").and_return(true)
63
+ expect(File).to receive(:exist?).with("/proc/xen").and_return(true)
64
+ expect(File).to receive(:exist?).with("/proc/xen/capabilities").and_return(true)
65
65
  allow(File).to receive(:read).with("/proc/xen/capabilities").and_return("")
66
66
  plugin.run
67
67
  expect(plugin[:virtualization][:system]).to eq("xen")
@@ -70,7 +70,7 @@ describe Ohai::System, "Linux virtualization platform" do
70
70
  end
71
71
 
72
72
  it "does not set virtualization if xen isn't there" do
73
- expect(File).to receive(:exists?).at_least(:once).and_return(false)
73
+ expect(File).to receive(:exist?).at_least(:once).and_return(false)
74
74
  plugin.run
75
75
  expect(plugin[:virtualization]).to eq({'systems' => {}})
76
76
  end
@@ -78,7 +78,7 @@ describe Ohai::System, "Linux virtualization platform" do
78
78
 
79
79
  describe "when we are checking for kvm" do
80
80
  it "sets kvm host if /proc/modules contains kvm" do
81
- expect(File).to receive(:exists?).with("/proc/modules").and_return(true)
81
+ expect(File).to receive(:exist?).with("/proc/modules").and_return(true)
82
82
  allow(File).to receive(:read).with("/proc/modules").and_return("kvm 165872 1 kvm_intel")
83
83
  plugin.run
84
84
  expect(plugin[:virtualization][:system]).to eq("kvm")
@@ -87,7 +87,7 @@ describe Ohai::System, "Linux virtualization platform" do
87
87
  end
88
88
 
89
89
  it "sets kvm guest if /proc/cpuinfo contains QEMU Virtual CPU" do
90
- expect(File).to receive(:exists?).with("/proc/cpuinfo").and_return(true)
90
+ expect(File).to receive(:exist?).with("/proc/cpuinfo").and_return(true)
91
91
  allow(File).to receive(:read).with("/proc/cpuinfo").and_return("QEMU Virtual CPU")
92
92
  plugin.run
93
93
  expect(plugin[:virtualization][:system]).to eq("kvm")
@@ -96,7 +96,7 @@ describe Ohai::System, "Linux virtualization platform" do
96
96
  end
97
97
 
98
98
  it "sets kvm guest if /proc/cpuinfo contains Common KVM processor" do
99
- expect(File).to receive(:exists?).with("/proc/cpuinfo").and_return(true)
99
+ expect(File).to receive(:exist?).with("/proc/cpuinfo").and_return(true)
100
100
  allow(File).to receive(:read).with("/proc/cpuinfo").and_return("Common KVM processor")
101
101
  plugin.run
102
102
  expect(plugin[:virtualization][:system]).to eq("kvm")
@@ -105,7 +105,7 @@ describe Ohai::System, "Linux virtualization platform" do
105
105
  end
106
106
 
107
107
  it "sets kvm guest if /proc/cpuinfo contains Common 32-bit KVM processor" do
108
- expect(File).to receive(:exists?).with("/proc/cpuinfo").and_return(true)
108
+ expect(File).to receive(:exist?).with("/proc/cpuinfo").and_return(true)
109
109
  allow(File).to receive(:read).with("/proc/cpuinfo").and_return("Common 32-bit KVM processor")
110
110
  plugin.run
111
111
  expect(plugin[:virtualization][:system]).to eq("kvm")
@@ -114,7 +114,7 @@ describe Ohai::System, "Linux virtualization platform" do
114
114
  end
115
115
 
116
116
  it "does not set virtualization if kvm isn't there" do
117
- expect(File).to receive(:exists?).at_least(:once).and_return(false)
117
+ expect(File).to receive(:exist?).at_least(:once).and_return(false)
118
118
  plugin.run
119
119
  expect(plugin[:virtualization]).to eq({'systems' => {}})
120
120
  end
@@ -122,7 +122,7 @@ describe Ohai::System, "Linux virtualization platform" do
122
122
 
123
123
  describe "when we are checking for VirtualBox" do
124
124
  it "sets vbox host if /proc/modules contains vboxdrv" do
125
- expect(File).to receive(:exists?).with("/proc/modules").and_return(true)
125
+ expect(File).to receive(:exist?).with("/proc/modules").and_return(true)
126
126
  allow(File).to receive(:read).with("/proc/modules").and_return("vboxdrv 268268 3 vboxnetadp,vboxnetflt")
127
127
  plugin.run
128
128
  expect(plugin[:virtualization][:system]).to eq("vbox")
@@ -131,7 +131,7 @@ describe Ohai::System, "Linux virtualization platform" do
131
131
  end
132
132
 
133
133
  it "sets vbox gues if /proc/modules contains vboxguest" do
134
- expect(File).to receive(:exists?).with("/proc/modules").and_return(true)
134
+ expect(File).to receive(:exist?).with("/proc/modules").and_return(true)
135
135
  allow(File).to receive(:read).with("/proc/modules").and_return("vboxguest 214901 2 vboxsf, Live 0xffffffffa00db000 (OF)")
136
136
  plugin.run
137
137
  expect(plugin[:virtualization][:system]).to eq("vbox")
@@ -140,7 +140,7 @@ describe Ohai::System, "Linux virtualization platform" do
140
140
  end
141
141
 
142
142
  it "does not set virtualization if vbox isn't there" do
143
- expect(File).to receive(:exists?).at_least(:once).and_return(false)
143
+ expect(File).to receive(:exist?).at_least(:once).and_return(false)
144
144
  plugin.run
145
145
  expect(plugin[:virtualization]).to eq({'systems' => {}})
146
146
  end
@@ -148,7 +148,7 @@ describe Ohai::System, "Linux virtualization platform" do
148
148
 
149
149
  describe "when we are parsing dmidecode" do
150
150
  before(:each) do
151
- expect(File).to receive(:exists?).with("/usr/sbin/dmidecode").and_return(true)
151
+ expect(File).to receive(:exist?).with("/usr/sbin/dmidecode").and_return(true)
152
152
  end
153
153
 
154
154
  it "sets virtualpc guest if dmidecode detects Microsoft Virtual Machine" do
@@ -308,7 +308,7 @@ RHEV
308
308
 
309
309
  describe "when we are checking for Linux-VServer" do
310
310
  it "sets Linux-VServer host if /proc/self/status contains s_context: 0" do
311
- expect(File).to receive(:exists?).with("/proc/self/status").and_return(true)
311
+ expect(File).to receive(:exist?).with("/proc/self/status").and_return(true)
312
312
  allow(File).to receive(:read).with("/proc/self/status").and_return("s_context: 0")
313
313
  plugin.run
314
314
  expect(plugin[:virtualization][:system]).to eq("linux-vserver")
@@ -317,7 +317,7 @@ RHEV
317
317
  end
318
318
 
319
319
  it "sets Linux-VServer host if /proc/self/status contains VxID: 0" do
320
- expect(File).to receive(:exists?).with("/proc/self/status").and_return(true)
320
+ expect(File).to receive(:exist?).with("/proc/self/status").and_return(true)
321
321
  allow(File).to receive(:read).with("/proc/self/status").and_return("VxID: 0")
322
322
  plugin.run
323
323
  expect(plugin[:virtualization][:system]).to eq("linux-vserver")
@@ -326,7 +326,7 @@ RHEV
326
326
  end
327
327
 
328
328
  it "sets Linux-VServer host if /proc/self/status contains multiple space VxID: 0" do
329
- expect(File).to receive(:exists?).with("/proc/self/status").and_return(true)
329
+ expect(File).to receive(:exist?).with("/proc/self/status").and_return(true)
330
330
  allow(File).to receive(:read).with("/proc/self/status").and_return("VxID: 0")
331
331
  plugin.run
332
332
  expect(plugin[:virtualization][:system]).to eq("linux-vserver")
@@ -335,7 +335,7 @@ RHEV
335
335
  end
336
336
 
337
337
  it "sets Linux-VServer host if /proc/self/status contains tabbed VxID:\t0" do
338
- expect(File).to receive(:exists?).with("/proc/self/status").and_return(true)
338
+ expect(File).to receive(:exist?).with("/proc/self/status").and_return(true)
339
339
  allow(File).to receive(:read).with("/proc/self/status").and_return("VxID:\t0")
340
340
  plugin.run
341
341
  expect(plugin[:virtualization][:system]).to eq("linux-vserver")
@@ -344,7 +344,7 @@ RHEV
344
344
  end
345
345
 
346
346
  it "sets Linux-VServer guest if /proc/self/status contains s_context > 0" do
347
- expect(File).to receive(:exists?).with("/proc/self/status").and_return(true)
347
+ expect(File).to receive(:exist?).with("/proc/self/status").and_return(true)
348
348
  allow(File).to receive(:read).with("/proc/self/status").and_return("s_context: 2")
349
349
  plugin.run
350
350
  expect(plugin[:virtualization][:system]).to eq("linux-vserver")
@@ -353,7 +353,7 @@ RHEV
353
353
  end
354
354
 
355
355
  it "sets Linux-VServer guest if /proc/self/status contains VxID > 0" do
356
- expect(File).to receive(:exists?).with("/proc/self/status").and_return(true)
356
+ expect(File).to receive(:exist?).with("/proc/self/status").and_return(true)
357
357
  allow(File).to receive(:read).with("/proc/self/status").and_return("VxID: 2")
358
358
  plugin.run
359
359
  expect(plugin[:virtualization][:system]).to eq("linux-vserver")
@@ -362,7 +362,7 @@ RHEV
362
362
  end
363
363
 
364
364
  it "does not set virtualization if Linux-VServer isn't there" do
365
- expect(File).to receive(:exists?).at_least(:once).and_return(false)
365
+ expect(File).to receive(:exist?).at_least(:once).and_return(false)
366
366
  plugin.run
367
367
  expect(plugin[:virtualization]).to eq({'systems' => {}})
368
368
  end
@@ -370,7 +370,7 @@ RHEV
370
370
 
371
371
  describe "when we are checking for openvz" do
372
372
  it "sets openvz host if /proc/bc/0 exists" do
373
- expect(File).to receive(:exists?).with("/proc/bc/0").and_return(true)
373
+ expect(File).to receive(:exist?).with("/proc/bc/0").and_return(true)
374
374
  plugin.run
375
375
  expect(plugin[:virtualization][:system]).to eq("openvz")
376
376
  expect(plugin[:virtualization][:role]).to eq("host")
@@ -378,8 +378,8 @@ RHEV
378
378
  end
379
379
 
380
380
  it "sets openvz guest if /proc/bc/0 does not exist and /proc/vz exists" do
381
- expect(File).to receive(:exists?).with("/proc/bc/0").and_return(false)
382
- expect(File).to receive(:exists?).with("/proc/vz").and_return(true)
381
+ expect(File).to receive(:exist?).with("/proc/bc/0").and_return(false)
382
+ expect(File).to receive(:exist?).with("/proc/vz").and_return(true)
383
383
  plugin.run
384
384
  expect(plugin[:virtualization][:system]).to eq("openvz")
385
385
  expect(plugin[:virtualization][:role]).to eq("guest")
@@ -387,8 +387,8 @@ RHEV
387
387
  end
388
388
 
389
389
  it "does not set virtualization if openvz isn't there" do
390
- expect(File).to receive(:exists?).with("/proc/bc/0").and_return(false)
391
- expect(File).to receive(:exists?).with("/proc/vz").and_return(false)
390
+ expect(File).to receive(:exist?).with("/proc/bc/0").and_return(false)
391
+ expect(File).to receive(:exist?).with("/proc/vz").and_return(false)
392
392
  plugin.run
393
393
  expect(plugin[:virtualization]).to eq({'systems' => {}})
394
394
  end
@@ -400,7 +400,7 @@ RHEV
400
400
  0018 1ab84000 1f 8001 0 0 0 0 0 0 20 0 0 0 0 0 0 prl_tg
401
401
  0028 1af41000 17 8201 ee000000 0 0 0 0 0 40 1000 0 0 0 0 0 virtio-pci
402
402
  DEVICES
403
- expect(File).to receive(:exists?).with("/proc/bus/pci/devices").and_return(true)
403
+ expect(File).to receive(:exist?).with("/proc/bus/pci/devices").and_return(true)
404
404
  allow(File).to receive(:read).with("/proc/bus/pci/devices").and_return(devices)
405
405
  plugin.run
406
406
  expect(plugin[:virtualization][:system]).to eq("parallels")
@@ -413,7 +413,7 @@ RHEV
413
413
  0030 1af41000 a 8401 ee040000 0 0 0 0 0 40 1000 0 0 0 0 0 virtio-pci
414
414
  0050 10110022 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
415
415
  DEVICES
416
- expect(File).to receive(:exists?).with("/proc/bus/pci/devices").and_return(true)
416
+ expect(File).to receive(:exist?).with("/proc/bus/pci/devices").and_return(true)
417
417
  allow(File).to receive(:read).with("/proc/bus/pci/devices").and_return(devices)
418
418
  plugin.run
419
419
  expect(plugin[:virtualization]).to eq({'systems' => {}})
@@ -432,7 +432,7 @@ RHEV
432
432
  2:cpu:/lxc/baa660ed81bc81d262ac6e19486142aeec5fce2043e2a173eb2505c6fbed89bc
433
433
  1:cpuset:/
434
434
  CGROUP
435
- expect(File).to receive(:exists?).with("/proc/self/cgroup").and_return(true)
435
+ expect(File).to receive(:exist?).with("/proc/self/cgroup").and_return(true)
436
436
  allow(File).to receive(:read).with("/proc/self/cgroup").and_return(self_cgroup)
437
437
  plugin.run
438
438
  expect(plugin[:virtualization][:system]).to eq("lxc")
@@ -451,7 +451,7 @@ CGROUP
451
451
  2:cpu:/lxc/vanilla
452
452
  1:cpuset:/lxc/vanilla
453
453
  CGROUP
454
- expect(File).to receive(:exists?).with("/proc/self/cgroup").and_return(true)
454
+ expect(File).to receive(:exist?).with("/proc/self/cgroup").and_return(true)
455
455
  allow(File).to receive(:read).with("/proc/self/cgroup").and_return(self_cgroup)
456
456
  plugin.run
457
457
  expect(plugin[:virtualization][:system]).to eq("lxc")
@@ -470,7 +470,7 @@ CGROUP
470
470
  2:cpu:/Charlie
471
471
  1:cpuset:/Charlie
472
472
  CGROUP
473
- expect(File).to receive(:exists?).with("/proc/self/cgroup").and_return(true)
473
+ expect(File).to receive(:exist?).with("/proc/self/cgroup").and_return(true)
474
474
  allow(File).to receive(:read).with("/proc/self/cgroup").and_return(self_cgroup)
475
475
  plugin.run
476
476
  expect(plugin[:virtualization]).to eq({'systems' => {}})
@@ -488,7 +488,7 @@ CGROUP
488
488
  2:cpu:/
489
489
  1:cpuset:/
490
490
  CGROUP
491
- expect(File).to receive(:exists?).with("/proc/self/cgroup").and_return(true)
491
+ expect(File).to receive(:exist?).with("/proc/self/cgroup").and_return(true)
492
492
  allow(File).to receive(:read).with("/proc/self/cgroup").and_return(self_cgroup)
493
493
  end
494
494
 
@@ -521,7 +521,7 @@ CGROUP
521
521
  end
522
522
 
523
523
  it "does not set virtualization if /proc/self/cgroup isn't there" do
524
- expect(File).to receive(:exists?).with("/proc/self/cgroup").and_return(false)
524
+ expect(File).to receive(:exist?).with("/proc/self/cgroup").and_return(false)
525
525
  plugin.run
526
526
  expect(plugin[:virtualization]).to eq({'systems' => {}})
527
527
  end
@@ -539,7 +539,7 @@ CGROUP
539
539
  2:cpu:/docker/baa660ed81bc81d262ac6e19486142aeec5fce2043e2a173eb2505c6fbed89bc
540
540
  1:cpuset:/
541
541
  CGROUP
542
- allow(File).to receive(:exists?).with("/proc/self/cgroup").and_return(true)
542
+ allow(File).to receive(:exist?).with("/proc/self/cgroup").and_return(true)
543
543
  allow(File).to receive(:read).with("/proc/self/cgroup").and_return(self_cgroup)
544
544
  plugin.run
545
545
  expect(plugin[:virtualization][:system]).to eq("docker")
@@ -558,7 +558,7 @@ CGROUP
558
558
  2:cpu:/docker/vanilla
559
559
  1:cpuset:/docker/vanilla
560
560
  CGROUP
561
- allow(File).to receive(:exists?).with("/proc/self/cgroup").and_return(true)
561
+ allow(File).to receive(:exist?).with("/proc/self/cgroup").and_return(true)
562
562
  allow(File).to receive(:read).with("/proc/self/cgroup").and_return(self_cgroup)
563
563
  plugin.run
564
564
  expect(plugin[:virtualization][:system]).to eq("docker")
@@ -579,7 +579,7 @@ CGROUP
579
579
  2:cpu,cpuacct:/system.slice/docker-47341c91be8d491cb3b8a475ad5b4aef6e79bf728cbb351c384e4a6c410f172f.scope
580
580
  1:name=systemd:/system.slice/docker-47341c91be8d491cb3b8a475ad5b4aef6e79bf728cbb351c384e4a6c410f172f.scope
581
581
  CGROUP
582
- allow(File).to receive(:exists?).with("/proc/self/cgroup").and_return(true)
582
+ allow(File).to receive(:exist?).with("/proc/self/cgroup").and_return(true)
583
583
  allow(File).to receive(:read).with("/proc/self/cgroup").and_return(self_cgroup)
584
584
  plugin.run
585
585
  expect(plugin[:virtualization][:system]).to eq("docker")
@@ -598,7 +598,7 @@ CGROUP
598
598
  2:cpu:/Charlie
599
599
  1:cpuset:/Charlie
600
600
  CGROUP
601
- allow(File).to receive(:exists?).with("/proc/self/cgroup").and_return(true)
601
+ allow(File).to receive(:exist?).with("/proc/self/cgroup").and_return(true)
602
602
  allow(File).to receive(:read).with("/proc/self/cgroup").and_return(self_cgroup)
603
603
  plugin.run
604
604
  expect(plugin[:virtualization]).to eq({'systems' => {}})
@@ -616,7 +616,7 @@ CGROUP
616
616
  2:cpu:/
617
617
  1:cpuset:/
618
618
  CGROUP
619
- allow(File).to receive(:exists?).with("/proc/self/cgroup").and_return(true)
619
+ allow(File).to receive(:exist?).with("/proc/self/cgroup").and_return(true)
620
620
  allow(File).to receive(:read).with("/proc/self/cgroup").and_return(self_cgroup)
621
621
  plugin.run
622
622
  expect(plugin[:virtualization]).to eq({'systems' => {}})
@@ -643,13 +643,13 @@ CGROUP
643
643
  end
644
644
 
645
645
  it "does not set virtualization if /proc/self/cgroup isn't there" do
646
- allow(File).to receive(:exists?).with("/proc/self/cgroup").and_return(false)
646
+ allow(File).to receive(:exist?).with("/proc/self/cgroup").and_return(false)
647
647
  plugin.run
648
648
  expect(plugin[:virtualization]).to eq({'systems' => {}})
649
649
  end
650
650
 
651
651
  it "sets virtualization if /.dockerenv exists" do
652
- allow(File).to receive(:exists?).with("/.dockerenv").and_return(true)
652
+ allow(File).to receive(:exist?).with("/.dockerenv").and_return(true)
653
653
  plugin.run
654
654
  expect(plugin[:virtualization][:system]).to eq("docker")
655
655
  expect(plugin[:virtualization][:role]).to eq("guest")
@@ -657,7 +657,7 @@ CGROUP
657
657
  end
658
658
 
659
659
  it "sets virtualization if /.dockerinit exists" do
660
- allow(File).to receive(:exists?).with("/.dockerinit").and_return(true)
660
+ allow(File).to receive(:exist?).with("/.dockerinit").and_return(true)
661
661
  plugin.run
662
662
  expect(plugin[:virtualization][:system]).to eq("docker")
663
663
  expect(plugin[:virtualization][:role]).to eq("guest")
@@ -665,8 +665,8 @@ CGROUP
665
665
  end
666
666
 
667
667
  it "does not set virtualization if /.dockerenv or /.dockerinit does not exists" do
668
- allow(File).to receive(:exists?).with("/.dockerenv").and_return(false)
669
- allow(File).to receive(:exists?).with("/.dockerinit").and_return(false)
668
+ allow(File).to receive(:exist?).with("/.dockerenv").and_return(false)
669
+ allow(File).to receive(:exist?).with("/.dockerinit").and_return(false)
670
670
  plugin.run
671
671
  expect(plugin[:virtualization]).to eq({'systems' => {}})
672
672
  end
@@ -20,222 +20,252 @@
20
20
  require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper.rb')
21
21
 
22
22
  describe Ohai::System, 'plugin packages' do
23
- context 'on debian' do
23
+ context "when the packages plugin is disabled" do
24
+ before do
25
+ Ohai.config[:plugin][:packages][:enabled] = false
26
+ allow(plugin).to receive(:collect_os).and_return(platform_family.to_s)
27
+ plugin.run
28
+ end
29
+
24
30
  let(:plugin) do
25
31
  get_plugin('packages').tap do |plugin|
26
- plugin[:platform_family] = 'debian'
32
+ plugin[:platform_family] = platform_family
27
33
  end
28
34
  end
29
35
 
30
- let(:stdout) do
31
- File.read(File.join(SPEC_PLUGIN_PATH, 'dpkg-query.output'))
32
- end
36
+ [:debian, :fedora, :windows, :aix, :solaris2].each do |os|
37
+ context "on #{os}" do
38
+ let(:platform_family) { os }
33
39
 
34
- before(:each) do
35
- allow(plugin).to receive(:collect_os).and_return(:linux)
36
- allow(plugin).to receive(:shell_out)
37
- .with('dpkg-query -W')
38
- .and_return(mock_shell_out(0, stdout, ''))
39
- plugin.run
40
+ it "does not enumerate the packages" do
41
+ expect(plugin[:packages]).to eq(nil)
42
+ end
43
+ end
40
44
  end
45
+ end
41
46
 
42
- it 'calls dpkg query' do
43
- expect(plugin).to receive(:shell_out)
44
- .with('dpkg-query -W')
45
- .and_return(mock_shell_out(0, stdout, ''))
46
- plugin.run
47
+ context "when the packages plugin is enabled" do
48
+ before do
49
+ Ohai.config[:plugin][:packages][:enabled] = true
47
50
  end
48
51
 
49
- it 'gets packages and versions' do
50
- expect(plugin[:packages]['vim-common'][:version]).to eq('2:7.4.052-1ubuntu3')
51
- end
52
- end
52
+ context 'on debian' do
53
+ let(:plugin) do
54
+ get_plugin('packages').tap do |plugin|
55
+ plugin[:platform_family] = 'debian'
56
+ end
57
+ end
53
58
 
54
- context 'on fedora' do
55
- let(:plugin) do
56
- get_plugin('packages').tap do |plugin|
57
- plugin[:platform_family] = 'fedora'
59
+ let(:stdout) do
60
+ File.read(File.join(SPEC_PLUGIN_PATH, 'dpkg-query.output'))
58
61
  end
59
- end
60
62
 
61
- let(:format) { Shellwords.escape '%{NAME}\t%{VERSION}\t%{RELEASE}\n' }
63
+ before(:each) do
64
+ allow(plugin).to receive(:collect_os).and_return(:linux)
65
+ allow(plugin).to receive(:shell_out)
66
+ .with('dpkg-query -W')
67
+ .and_return(mock_shell_out(0, stdout, ''))
68
+ plugin.run
69
+ end
62
70
 
63
- let(:stdout) do
64
- File.read(File.join(SPEC_PLUGIN_PATH, 'rpmquery.output'))
65
- end
71
+ it 'calls dpkg query' do
72
+ expect(plugin).to receive(:shell_out)
73
+ .with('dpkg-query -W')
74
+ .and_return(mock_shell_out(0, stdout, ''))
75
+ plugin.run
76
+ end
66
77
 
67
- before(:each) do
68
- allow(plugin).to receive(:collect_os).and_return(:linux)
69
- allow(plugin).to receive(:shell_out).with("rpm -qa --queryformat #{format}").and_return(mock_shell_out(0, stdout, ''))
70
- plugin.run
78
+ it 'gets packages and versions' do
79
+ expect(plugin[:packages]['vim-common'][:version]).to eq('2:7.4.052-1ubuntu3')
80
+ end
71
81
  end
72
82
 
73
- it 'calls rpm -qa' do
74
- expect(plugin).to receive(:shell_out)
75
- .with("rpm -qa --queryformat #{format}")
76
- .and_return(mock_shell_out(0, stdout, ''))
77
- plugin.run
78
- end
83
+ context 'on fedora' do
84
+ let(:plugin) do
85
+ get_plugin('packages').tap do |plugin|
86
+ plugin[:platform_family] = 'fedora'
87
+ end
88
+ end
79
89
 
80
- it 'gets packages and versions/release' do
81
- expect(plugin[:packages]['vim-common'][:version]).to eq('7.2.411')
82
- expect(plugin[:packages]['vim-common'][:release]).to eq('1.8.el6')
83
- end
84
- end
90
+ let(:format) { Shellwords.escape '%{NAME}\t%{VERSION}\t%{RELEASE}\n' }
85
91
 
86
- context 'on windows', :windows_only do
87
- require 'wmi-lite'
92
+ let(:stdout) do
93
+ File.read(File.join(SPEC_PLUGIN_PATH, 'rpmquery.output'))
94
+ end
88
95
 
89
- let(:plugin) do
90
- get_plugin('packages').tap do |plugin|
91
- plugin[:platform_family] = 'windows'
96
+ before(:each) do
97
+ allow(plugin).to receive(:collect_os).and_return(:linux)
98
+ allow(plugin).to receive(:shell_out).with("rpm -qa --queryformat #{format}").and_return(mock_shell_out(0, stdout, ''))
99
+ plugin.run
92
100
  end
93
- end
94
101
 
95
- let(:win32_product_output) do
96
- [{ 'assignmenttype' => 0,
97
- 'caption' => 'NXLOG-CE',
98
- 'description' => 'NXLOG-CE',
99
- 'helplink' => nil,
100
- 'helptelephone' => nil,
101
- 'identifyingnumber' => '{22FA28AB-3C1B-438B-A8B5-E23892C8B567}',
102
- 'installdate' => '20150511',
103
- 'installdate2' => nil,
104
- 'installlocation' => nil,
105
- 'installsource' => 'C:\\chef\\cache\\',
106
- 'installstate' => 5,
107
- 'language' => '1033',
108
- 'localpackage' => 'C:\\Windows\\Installer\\30884.msi',
109
- 'name' => 'NXLOG-CE',
110
- 'packagecache' => 'C:\\Windows\\Installer\\30884.msi',
111
- 'packagecode' => '{EC3A13C4-4634-47FC-9662-DC293CB96F9F}',
112
- 'packagename' => 'nexlog-ce-2.8.1248.msi',
113
- 'productid' => nil,
114
- 'regcompany' => nil,
115
- 'regowner' => nil,
116
- 'skunumber' => nil,
117
- 'transforms' => nil,
118
- 'urlinfoabout' => nil,
119
- 'urlupdateinfo' => nil,
120
- 'vendor' => 'nxsec.com',
121
- 'version' => '2.8.1248',
122
- 'wordcount' => 2 },
123
- { 'assignmenttype' => 1,
124
- 'caption' => 'Chef Development Kit v0.7.0',
125
- 'description' => 'Chef Development Kit v0.7.0',
126
- 'helplink' => 'http://www.getchef.com/support/',
127
- 'helptelephone' => nil,
128
- 'identifyingnumber' => '{90754A33-404C-4172-8F3B-7F04CE98011C}',
129
- 'installdate' => '20150925', 'installdate2' => nil,
130
- 'installlocation' => nil,
131
- 'installsource' => 'C:\\Users\\skhajamohid1\\Downloads\\',
132
- 'installstate' => 5, 'language' => '1033',
133
- 'localpackage' => 'C:\\WINDOWS\\Installer\\d9e1ca7.msi',
134
- 'name' => 'Chef Development Kit v0.7.0',
135
- 'packagecache' => 'C:\\WINDOWS\\Installer\\d9e1ca7.msi',
136
- 'packagecode' => '{9B82FB86-40AE-4CDF-9DE8-97574F9395B9}',
137
- 'packagename' => 'chefdk-0.7.0-1 (2).msi',
138
- 'productid' => nil,
139
- 'regcompany' => nil,
140
- 'regowner' => nil,
141
- 'skunumber' => nil,
142
- 'transforms' => nil,
143
- 'urlinfoabout' => nil,
144
- 'urlupdateinfo' => nil,
145
- 'vendor' => "\"Chef Software, Inc. <maintainers@chef.io>\"",
146
- 'version' => '0.7.0.1',
147
- 'wordcount' => 2 }]
148
- end
102
+ it 'calls rpm -qa' do
103
+ expect(plugin).to receive(:shell_out)
104
+ .with("rpm -qa --queryformat #{format}")
105
+ .and_return(mock_shell_out(0, stdout, ''))
106
+ plugin.run
107
+ end
149
108
 
150
- before(:each) do
151
- allow(plugin).to receive(:collect_os).and_return(:windows)
152
- expect_any_instance_of(WmiLite::Wmi).to receive(:instances_of).with('Win32_Product').and_return(win32_product_output)
153
- plugin.run
109
+ it 'gets packages and versions/release' do
110
+ expect(plugin[:packages]['vim-common'][:version]).to eq('7.2.411')
111
+ expect(plugin[:packages]['vim-common'][:release]).to eq('1.8.el6')
112
+ end
154
113
  end
155
114
 
156
- it 'gets package info' do
157
- expect(plugin[:packages]['Chef Development Kit v0.7.0'][:version]).to eq('0.7.0.1')
158
- expect(plugin[:packages]['Chef Development Kit v0.7.0'][:vendor]).to eq("\"Chef Software, Inc. <maintainers@chef.io>\"")
159
- expect(plugin[:packages]['Chef Development Kit v0.7.0'][:installdate]).to eq('20150925')
115
+ context 'on windows', :windows_only do
116
+ require 'wmi-lite'
160
117
 
161
- expect(plugin[:packages]['NXLOG-CE'][:version]).to eq('2.8.1248')
162
- expect(plugin[:packages]['NXLOG-CE'][:vendor]).to eq('nxsec.com')
163
- expect(plugin[:packages]['NXLOG-CE'][:installdate]).to eq('20150511')
164
- end
165
- end
118
+ let(:plugin) do
119
+ get_plugin('packages').tap do |plugin|
120
+ plugin[:platform_family] = 'windows'
121
+ end
122
+ end
166
123
 
167
- context 'on aix' do
168
- let(:plugin) { get_plugin('packages') }
124
+ let(:win32_product_output) do
125
+ [{ 'assignmenttype' => 0,
126
+ 'caption' => 'NXLOG-CE',
127
+ 'description' => 'NXLOG-CE',
128
+ 'helplink' => nil,
129
+ 'helptelephone' => nil,
130
+ 'identifyingnumber' => '{22FA28AB-3C1B-438B-A8B5-E23892C8B567}',
131
+ 'installdate' => '20150511',
132
+ 'installdate2' => nil,
133
+ 'installlocation' => nil,
134
+ 'installsource' => 'C:\\chef\\cache\\',
135
+ 'installstate' => 5,
136
+ 'language' => '1033',
137
+ 'localpackage' => 'C:\\Windows\\Installer\\30884.msi',
138
+ 'name' => 'NXLOG-CE',
139
+ 'packagecache' => 'C:\\Windows\\Installer\\30884.msi',
140
+ 'packagecode' => '{EC3A13C4-4634-47FC-9662-DC293CB96F9F}',
141
+ 'packagename' => 'nexlog-ce-2.8.1248.msi',
142
+ 'productid' => nil,
143
+ 'regcompany' => nil,
144
+ 'regowner' => nil,
145
+ 'skunumber' => nil,
146
+ 'transforms' => nil,
147
+ 'urlinfoabout' => nil,
148
+ 'urlupdateinfo' => nil,
149
+ 'vendor' => 'nxsec.com',
150
+ 'version' => '2.8.1248',
151
+ 'wordcount' => 2 },
152
+ { 'assignmenttype' => 1,
153
+ 'caption' => 'Chef Development Kit v0.7.0',
154
+ 'description' => 'Chef Development Kit v0.7.0',
155
+ 'helplink' => 'http://www.getchef.com/support/',
156
+ 'helptelephone' => nil,
157
+ 'identifyingnumber' => '{90754A33-404C-4172-8F3B-7F04CE98011C}',
158
+ 'installdate' => '20150925', 'installdate2' => nil,
159
+ 'installlocation' => nil,
160
+ 'installsource' => 'C:\\Users\\skhajamohid1\\Downloads\\',
161
+ 'installstate' => 5, 'language' => '1033',
162
+ 'localpackage' => 'C:\\WINDOWS\\Installer\\d9e1ca7.msi',
163
+ 'name' => 'Chef Development Kit v0.7.0',
164
+ 'packagecache' => 'C:\\WINDOWS\\Installer\\d9e1ca7.msi',
165
+ 'packagecode' => '{9B82FB86-40AE-4CDF-9DE8-97574F9395B9}',
166
+ 'packagename' => 'chefdk-0.7.0-1 (2).msi',
167
+ 'productid' => nil,
168
+ 'regcompany' => nil,
169
+ 'regowner' => nil,
170
+ 'skunumber' => nil,
171
+ 'transforms' => nil,
172
+ 'urlinfoabout' => nil,
173
+ 'urlupdateinfo' => nil,
174
+ 'vendor' => "\"Chef Software, Inc. <maintainers@chef.io>\"",
175
+ 'version' => '0.7.0.1',
176
+ 'wordcount' => 2 }]
177
+ end
169
178
 
170
- let(:stdout) do
171
- File.read(File.join(SPEC_PLUGIN_PATH, 'lslpp.output'))
172
- end
179
+ before(:each) do
180
+ allow(plugin).to receive(:collect_os).and_return(:windows)
181
+ expect_any_instance_of(WmiLite::Wmi).to receive(:instances_of).with('Win32_Product').and_return(win32_product_output)
182
+ plugin.run
183
+ end
173
184
 
174
- before(:each) do
175
- allow(plugin).to receive(:collect_os).and_return(:aix)
176
- allow(plugin).to receive(:shell_out).with('lslpp -L -q -c').and_return(mock_shell_out(0, stdout, ''))
177
- plugin.run
178
- end
185
+ it 'gets package info' do
186
+ expect(plugin[:packages]['Chef Development Kit v0.7.0'][:version]).to eq('0.7.0.1')
187
+ expect(plugin[:packages]['Chef Development Kit v0.7.0'][:vendor]).to eq("\"Chef Software, Inc. <maintainers@chef.io>\"")
188
+ expect(plugin[:packages]['Chef Development Kit v0.7.0'][:installdate]).to eq('20150925')
179
189
 
180
- it 'calls lslpp -L -q -c' do
181
- expect(plugin).to receive(:shell_out)
182
- .with('lslpp -L -q -c')
183
- .and_return(mock_shell_out(0, stdout, ''))
184
- plugin.run
190
+ expect(plugin[:packages]['NXLOG-CE'][:version]).to eq('2.8.1248')
191
+ expect(plugin[:packages]['NXLOG-CE'][:vendor]).to eq('nxsec.com')
192
+ expect(plugin[:packages]['NXLOG-CE'][:installdate]).to eq('20150511')
193
+ end
185
194
  end
186
195
 
187
- it 'gets packages with version' do
188
- expect(plugin[:packages]['chef'][:version]).to eq('12.5.1.1')
189
- end
190
- end
196
+ context 'on aix' do
197
+ let(:plugin) { get_plugin('packages') }
191
198
 
192
- context 'on solaris2' do
193
- let(:plugin) { get_plugin('packages') }
199
+ let(:stdout) do
200
+ File.read(File.join(SPEC_PLUGIN_PATH, 'lslpp.output'))
201
+ end
194
202
 
195
- let(:pkglist_output) do
196
- File.read(File.join(SPEC_PLUGIN_PATH, 'pkglist.output'))
197
- end
203
+ before(:each) do
204
+ allow(plugin).to receive(:collect_os).and_return(:aix)
205
+ allow(plugin).to receive(:shell_out).with('lslpp -L -q -c').and_return(mock_shell_out(0, stdout, ''))
206
+ plugin.run
207
+ end
198
208
 
199
- let(:pkginfo_output) do
200
- File.read(File.join(SPEC_PLUGIN_PATH, 'pkginfo.output'))
201
- end
209
+ it 'calls lslpp -L -q -c' do
210
+ expect(plugin).to receive(:shell_out)
211
+ .with('lslpp -L -q -c')
212
+ .and_return(mock_shell_out(0, stdout, ''))
213
+ plugin.run
214
+ end
202
215
 
203
- before(:each) do
204
- allow(plugin).to receive(:collect_os).and_return(:solaris2)
205
- allow(plugin).to receive(:shell_out).with('pkg list -H').and_return(mock_shell_out(0, pkglist_output, ''))
206
- allow(plugin).to receive(:shell_out).with('pkginfo -l').and_return(mock_shell_out(0, pkginfo_output, ''))
207
- plugin.run
216
+ it 'gets packages with version' do
217
+ expect(plugin[:packages]['chef'][:version]).to eq('12.5.1.1')
218
+ end
208
219
  end
209
220
 
210
- it 'calls pkg list -H' do
211
- expect(plugin).to receive(:shell_out)
212
- .with('pkg list -H')
213
- .and_return(mock_shell_out(0, pkglist_output, ''))
214
- plugin.run
215
- end
221
+ context 'on solaris2' do
222
+ let(:plugin) { get_plugin('packages') }
216
223
 
217
- it 'calls pkginfo -l' do
218
- expect(plugin).to receive(:shell_out)
219
- .with('pkginfo -l')
220
- .and_return(mock_shell_out(0, pkginfo_output, ''))
221
- plugin.run
222
- end
224
+ let(:pkglist_output) do
225
+ File.read(File.join(SPEC_PLUGIN_PATH, 'pkglist.output'))
226
+ end
223
227
 
224
- it 'gets ips packages with version' do
225
- expect(plugin[:packages]['chef'][:version]).to eq('12.5.1')
226
- end
228
+ let(:pkginfo_output) do
229
+ File.read(File.join(SPEC_PLUGIN_PATH, 'pkginfo.output'))
230
+ end
227
231
 
228
- it 'gets ips packages with version and publisher' do
229
- expect(plugin[:packages]['system/EMCpower'][:version]).to eq('6.0.0.1.0-3')
230
- expect(plugin[:packages]['system/EMCpower'][:publisher]).to eq('emc.com')
231
- end
232
+ before(:each) do
233
+ allow(plugin).to receive(:collect_os).and_return(:solaris2)
234
+ allow(plugin).to receive(:shell_out).with('pkg list -H').and_return(mock_shell_out(0, pkglist_output, ''))
235
+ allow(plugin).to receive(:shell_out).with('pkginfo -l').and_return(mock_shell_out(0, pkginfo_output, ''))
236
+ plugin.run
237
+ end
232
238
 
233
- it 'gets sysv packages with version' do
234
- expect(plugin[:packages]['chef'][:version]).to eq('12.5.1')
235
- end
239
+ it 'calls pkg list -H' do
240
+ expect(plugin).to receive(:shell_out)
241
+ .with('pkg list -H')
242
+ .and_return(mock_shell_out(0, pkglist_output, ''))
243
+ plugin.run
244
+ end
236
245
 
237
- it 'gets sysv packages with version' do
238
- expect(plugin[:packages]['mqm'][:version]).to eq('7.0.1.4')
246
+ it 'calls pkginfo -l' do
247
+ expect(plugin).to receive(:shell_out)
248
+ .with('pkginfo -l')
249
+ .and_return(mock_shell_out(0, pkginfo_output, ''))
250
+ plugin.run
251
+ end
252
+
253
+ it 'gets ips packages with version' do
254
+ expect(plugin[:packages]['chef'][:version]).to eq('12.5.1')
255
+ end
256
+
257
+ it 'gets ips packages with version and publisher' do
258
+ expect(plugin[:packages]['system/EMCpower'][:version]).to eq('6.0.0.1.0-3')
259
+ expect(plugin[:packages]['system/EMCpower'][:publisher]).to eq('emc.com')
260
+ end
261
+
262
+ it 'gets sysv packages with version' do
263
+ expect(plugin[:packages]['chef'][:version]).to eq('12.5.1')
264
+ end
265
+
266
+ it 'gets sysv packages with version' do
267
+ expect(plugin[:packages]['mqm'][:version]).to eq('7.0.1.4')
268
+ end
239
269
  end
240
270
  end
241
271
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ohai
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.9.0
4
+ version: 8.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Jacob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-28 00:00:00.000000000 Z
11
+ date: 2016-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: systemu
@@ -582,7 +582,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
582
582
  version: '0'
583
583
  requirements: []
584
584
  rubyforge_project:
585
- rubygems_version: 2.4.8
585
+ rubygems_version: 2.4.5
586
586
  signing_key:
587
587
  specification_version: 4
588
588
  summary: Ohai profiles your system and emits JSON