Codebase list facter / e917e1a
Fixed #3087 - Identify VMWare Added support for VMWareESX and ESXi to operatingsystem and operatingsystemrelease facts Added appropriate tests James Turnbull 13 years ago
4 changed file(s) with 53 addition(s) and 10 deletion(s). Raw diff Collapse all Expand all
3131 end
3232 elsif FileTest.exists?("/etc/arch-release")
3333 "Arch"
34 elsif FileTest.exists?("/etc/vmware-release")
35 "VMWareESX"
3436 elsif FileTest.exists?("/etc/redhat-release")
3537 txt = File.read("/etc/redhat-release")
3638 if txt =~ /centos/i
6264 end
6365
6466 Facter.add(:operatingsystem) do
67 confine :kernel => "VMkernel"
68 setcode do
69 "ESXi"
70 end
71 end
72
73 Facter.add(:operatingsystem) do
6574 # Default to just returning the kernel as the operating system
6675 setcode do Facter[:kernel].value end
6776 end
8383 end
8484
8585 Facter.add(:operatingsystemrelease) do
86 confine :operatingsystem => %w{VMwareESX}
87 setcode do
88 release = Facter::Util::Resolution.exec('vmware -v')
89 if release =~ /VMware ESX .*?(\d.*)/
90 $1
91 end
92 end
93 end
94
95 Facter.add(:operatingsystemrelease) do
8696 confine :operatingsystem => %w{Slamd64}
8797 setcode do
8898 releasefile = Facter::Util::Resolution.exec('cat /etc/slamd64-version')
95105 end
96106
97107 Facter.add(:operatingsystemrelease) do
98 setcode do Facter[:kernelrelease].value end
108 setcode do Facter[:kernelrelease].value end
99109 end
2525 Facter.fact(:operatingsystem).value.should == "Solaris"
2626 end
2727
28 it "should be ESXi for VMkernel" do
29 Facter.fact(:kernel).stubs(:value).returns("VMkernel")
30
31 Facter.fact(:operatingsystem).value.should == "ESXi"
32 end
33
2834 it "should identify Oracle VM as OVS" do
29
3035 Facter.fact(:kernel).stubs(:value).returns("Linux")
3136 FileTest.stubs(:exists?).returns false
3237
3540
3641 Facter.fact(:operatingsystem).value.should == "OVS"
3742 end
43
44 it "should identify VMWare ESX" do
45 Facter.fact(:kernel).stubs(:value).returns("Linux")
46 FileTest.stubs(:exists?).returns false
47
48 FileTest.expects(:exists?).with("/etc/vmware-release").returns true
49
50 Facter.fact(:operatingsystem).value.should == "VMWareESX"
51 end
3852 end
1414 end
1515
1616 test_cases = {
17 "CentOS" => "/etc/redhat-release",
18 "RedHat" => "/etc/redhat-release",
19 "Fedora" => "/etc/fedora-release",
20 "MeeGo" => "/etc/meego-release",
21 "OEL" => "/etc/enterprise-release",
22 "oel" => "/etc/enterprise-release",
23 "OVS" => "/etc/ovs-release",
24 "ovs" => "/etc/ovs-release"
17 "CentOS" => "/etc/redhat-release",
18 "RedHat" => "/etc/redhat-release",
19 "Fedora" => "/etc/fedora-release",
20 "MeeGo" => "/etc/meego-release",
21 "OEL" => "/etc/enterprise-release",
22 "oel" => "/etc/enterprise-release",
23 "OVS" => "/etc/ovs-release",
24 "ovs" => "/etc/ovs-release",
2525 }
2626
2727 test_cases.each do |system, file|
3535 end
3636 end
3737 end
38
39 it "for VMWareESX it should run the vmware -v command" do
40 Facter.fact(:kernel).stubs(:value).returns("VMkernel")
41 Facter.fact(:kernelrelease).stubs(:value).returns("4.1.0")
42 Facter.fact(:operatingsystem).stubs(:value).returns("VMwareESX")
43
44 Facter::Util::Resolution.stubs(:exec).with('vmware -v').returns('foo')
45
46 Facter.fact(:operatingsystemrelease).value
47 end
3848 end