Signed-off-by: Luke Kanies <[email protected]>
---
lib/facter/Cfkey.rb | 4 +-
lib/facter/fqdn.rb | 3 +-
lib/facter/ipmess.rb | 42 +++++-----
lib/facter/kernelrelease.rb | 4 +-
lib/facter/kernelversion.rb | 6 +-
lib/facter/macaddress.rb | 52 ++++++------
lib/facter/operatingsystemrelease.rb | 16 ++--
lib/facter/puppetversion.rb | 4 +-
lib/facter/util/ip.rb | 151 +++++++++++++++++-----------------
lib/facter/util/macosx.rb | 49 ++++++------
lib/facter/util/manufacturer.rb | 3 +-
lib/facter/util/netmask.rb | 44 +++++-----
lib/facter/util/plist.rb | 2 +-
lib/facter/virtual.rb | 133 +++++++++++++++---------------
spec/unit/util/ip.rb | 5 +-
15 files changed, 256 insertions(+), 262 deletions(-)
diff --git a/lib/facter/Cfkey.rb b/lib/facter/Cfkey.rb
index 4c17a0a..a4e0c11 100644
--- a/lib/facter/Cfkey.rb
+++ b/lib/facter/Cfkey.rb
@@ -22,7 +22,7 @@ Facter.add(:Cfkey) do
"/var/cfengine/ppkeys/localhost.pub",
"/var/lib/cfengine/ppkeys/localhost.pub",
"/var/lib/cfengine2/ppkeys/localhost.pub"
- ].each { |file|
+ ].each do |file|
if FileTest.file?(file)
File.open(file) { |openfile|
value = openfile.readlines.reject { |line|
@@ -35,7 +35,7 @@ Facter.add(:Cfkey) do
if value
break
end
- }
+ end
value
end
diff --git a/lib/facter/fqdn.rb b/lib/facter/fqdn.rb
index 1fcc764..5ebc5f5 100644
--- a/lib/facter/fqdn.rb
+++ b/lib/facter/fqdn.rb
@@ -1,4 +1,5 @@
-Facter.add(:fqdn) do setcode do
+Facter.add(:fqdn) do
+ setcode do
host = Facter.value(:hostname)
domain = Facter.value(:domain)
if host and domain
diff --git a/lib/facter/ipmess.rb b/lib/facter/ipmess.rb
index e879300..1dcd8ed 100644
--- a/lib/facter/ipmess.rb
+++ b/lib/facter/ipmess.rb
@@ -15,32 +15,32 @@ Facter.add(:interfaces) do
end
case Facter.value(:kernel)
- when 'SunOS', 'Linux', 'OpenBSD', 'NetBSD', 'FreeBSD'
- Facter::IPAddress.get_interfaces.each do |interface|
- mi = interface.gsub(/[:.]/, '_')
+when 'SunOS', 'Linux', 'OpenBSD', 'NetBSD', 'FreeBSD'
+ Facter::IPAddress.get_interfaces.each do |interface|
+ mi = interface.gsub(/[:.]/, '_')
- Facter.add("ipaddress_" + mi) do
- confine :kernel => [ :sunos, :freebsd, :openbsd, :netbsd, :linux ]
- setcode do
- label = 'ipaddress'
- Facter::IPAddress.get_interface_value(interface, label)
+ Facter.add("ipaddress_" + mi) do
+ confine :kernel => [ :sunos, :freebsd, :openbsd, :netbsd, :linux ]
+ setcode do
+ label = 'ipaddress'
+ Facter::IPAddress.get_interface_value(interface, label)
+ end
end
- end
- Facter.add("macaddress_" + mi) do
- confine :kernel => [ :sunos, :freebsd, :openbsd, :netbsd, :linux ]
- setcode do
- label = 'macaddress'
- Facter::IPAddress.get_interface_value(interface, label)
+ Facter.add("macaddress_" + mi) do
+ confine :kernel => [ :sunos, :freebsd, :openbsd, :netbsd, :linux ]
+ setcode do
+ label = 'macaddress'
+ Facter::IPAddress.get_interface_value(interface, label)
+ end
end
- end
- Facter.add("netmask_" + mi) do
- confine :kernel => [ :sunos, :freebsd, :openbsd, :netbsd, :linux ]
- setcode do
- label = 'netmask'
- Facter::IPAddress.get_interface_value(interface, label)
+ Facter.add("netmask_" + mi) do
+ confine :kernel => [ :sunos, :freebsd, :openbsd, :netbsd, :linux ]
+ setcode do
+ label = 'netmask'
+ Facter::IPAddress.get_interface_value(interface, label)
+ end
end
end
- end
end
diff --git a/lib/facter/kernelrelease.rb b/lib/facter/kernelrelease.rb
index 5dccf8f..2f6ae45 100644
--- a/lib/facter/kernelrelease.rb
+++ b/lib/facter/kernelrelease.rb
@@ -14,10 +14,10 @@ Facter.add(:kernelrelease) do
version = ""
connection_string = "winmgmts://./root/cimv2"
wmi = WIN32OLE.connect(connection_string)
- wmi.ExecQuery("SELECT Version from Win32_OperatingSystem").each { |ole|
+ wmi.ExecQuery("SELECT Version from Win32_OperatingSystem").each do
|ole|
version = "#{ole.Version}"
break
- }
+ end
version
end
end
diff --git a/lib/facter/kernelversion.rb b/lib/facter/kernelversion.rb
index 7d2b31d..bfa8d0d 100644
--- a/lib/facter/kernelversion.rb
+++ b/lib/facter/kernelversion.rb
@@ -1,5 +1,5 @@
Facter.add("kernelversion") do
- setcode do
- Facter['kernelrelease'].value.split('-')[0]
- end
+ setcode do
+ Facter['kernelrelease'].value.split('-')[0]
+ end
end
diff --git a/lib/facter/macaddress.rb b/lib/facter/macaddress.rb
index 28ded4c..e048209 100644
--- a/lib/facter/macaddress.rb
+++ b/lib/facter/macaddress.rb
@@ -3,9 +3,9 @@ Facter.add(:macaddress) do
setcode do
ether = []
output = %x{/sbin/ifconfig -a}
- output.each {|s|
- ether.push($1) if s =~ /(?:ether|HWaddr)
(\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2})/
- }
+ output.each do |s|
+ ether.push($1) if s =~ /(?:ether|HWaddr)
(\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2})/
+ end
ether[0]
end
end
@@ -15,11 +15,11 @@ Facter.add(:macaddress) do
setcode do
ether = []
output = %x{/sbin/ifconfig}
- output.each {|s|
- if s =~
/(?:ether|lladdr)\s+(\w\w:\w\w:\w\w:\w\w:\w\w:\w\w)/
- ether.push($1)
- end
- }
+ output.each do |s|
+ if s =~ /(?:ether|lladdr)\s+(\w\w:\w\w:\w\w:\w\w:\w\w:\w\w)/
+ ether.push($1)
+ end
+ end
ether[0]
end
end
@@ -30,12 +30,12 @@ Facter.add(:macaddress) do
ether = nil
output = %x{/sbin/ifconfig}
- output.split(/^\S/).each { |str|
+ output.split(/^\S/).each do |str|
if str =~ /10baseT/ # we're wired
str =~ /ether (\w\w:\w\w:\w\w:\w\w:\w\w:\w\w)/
ether = $1
end
- }
+ end
ether
end
@@ -47,19 +47,19 @@ Facter.add(:macaddress) do
ether = []
ip = nil
output = %x{/usr/sbin/ifconfig -a}
- output.each { |str|
+ output.each do |str|
if str =~ /([a-z]+\d+): flags=/
devname = $1
unless devname =~ /lo0/
- output2 = %x{/usr/bin/entstat #{devname}}
- output2.each { |str2|
- if str2 =~ /^Hardware Address:
(\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2})/
- ether.push($1)
- end
- }
+ output2 = %x{/usr/bin/entstat #{devname}}
+ output2.each do |str2|
+ if str2 =~ /^Hardware Address:
(\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2})/
+ ether.push($1)
+ end
+ end
end
end
- }
+ end
ether[0]
end
end
@@ -67,13 +67,13 @@ end
Facter.add(:macaddress) do
confine :kernel => %w(windows)
setcode do
- ether = []
- output = %x{ipconfig /all}
- output.split(/\r\n/).each do |str|
- if str =~ /.*Physical Address.*:
(\w{1,2}-\w{1,2}-\w{1,2}-\w{1,2}-\w{1,2}-\w{1,2})/
- ether.push($1.gsub(/-/, ":"))
- end
- end
- ether[0]
+ ether = []
+ output = %x{ipconfig /all}
+ output.split(/\r\n/).each do |str|
+ if str =~ /.*Physical Address.*:
(\w{1,2}-\w{1,2}-\w{1,2}-\w{1,2}-\w{1,2}-\w{1,2})/
+ ether.push($1.gsub(/-/, ":"))
+ end
+ end
+ ether[0]
end
end
diff --git a/lib/facter/operatingsystemrelease.rb
b/lib/facter/operatingsystemrelease.rb
index 586d104..f88278a 100644
--- a/lib/facter/operatingsystemrelease.rb
+++ b/lib/facter/operatingsystemrelease.rb
@@ -29,11 +29,11 @@ end
Facter.add(:operatingsystemrelease) do
confine :operatingsystem => %w{CentOS}
setcode do
- centos_release = Facter::Util::Resolution.exec("sed -r -e 's/CentOS
release //' -e 's/ \((Branch|Final)\)//' /etc/redhat-release")
+ centos_release = Facter::Util::Resolution.exec("sed -r -e 's/CentOS
release //' -e 's/ \((Branch|Final)\)//' /etc/redhat-release")
if centos_release =~ /5/
- release = Facter::Util::Resolution.exec('rpm -q --qf
\'%{VERSION}.%{RELEASE}\' centos-release | cut -d. -f1,2')
+ release = Facter::Util::Resolution.exec('rpm -q --qf
\'%{VERSION}.%{RELEASE}\' centos-release | cut -d. -f1,2')
else
- release = centos_release
+ release = centos_release
end
end
end
@@ -42,16 +42,16 @@ Facter.add(:operatingsystemrelease) do
confine :operatingsystem => %w{Debian}
setcode do
release = Facter::Util::Resolution.exec('cat /etc/debian_version')
- end
+ end
end
Facter.add(:operatingsystemrelease) do
confine :operatingsystem => %w{Ubuntu}
setcode do
release = Facter::Util::Resolution.exec('cat /etc/issue')
- if release =~ /Ubuntu (\d+.\d+)/
- $1
- end
+ if release =~ /Ubuntu (\d+.\d+)/
+ $1
+ end
end
end
@@ -76,7 +76,7 @@ end
Facter.add(:operatingsystemrelease) do
confine :operatingsystem => %w{Solaris}
setcode do
- release = Facter::Util::Resolution.exec('uname -v')
+ release = Facter::Util::Resolution.exec('uname -v')
end
end
diff --git a/lib/facter/puppetversion.rb b/lib/facter/puppetversion.rb
index 66fcfe8..d2eb1f3 100644
--- a/lib/facter/puppetversion.rb
+++ b/lib/facter/puppetversion.rb
@@ -1,10 +1,10 @@
Facter.add(:puppetversion) do
- setcode {
+ setcode do
begin
require 'puppet'
Puppet::PUPPETVERSION.to_s
rescue LoadError
nil
end
- }
+ end
end
diff --git a/lib/facter/util/ip.rb b/lib/facter/util/ip.rb
index 5449858..d90c204 100644
--- a/lib/facter/util/ip.rb
+++ b/lib/facter/util/ip.rb
@@ -1,27 +1,27 @@
+# A base module for collecting IP-related
+# information from all kinds of platforms.
module Facter::IPAddress
-
def self.get_interfaces
-
- int = nil
-
- output = Facter::IPAddress.get_all_interface_output()
- # We get lots of warnings on platforms that don't get an output
- # made.
- if output
- int = output.scan(/^\w+[.:]?\d+/)
- else
- []
- end
-
+ int = nil
+
+ output = Facter::IPAddress.get_all_interface_output()
+
+ # We get lots of warnings on platforms that don't get an output
+ # made.
+ if output
+ int = output.scan(/^\w+[.:]?\d+/)
+ else
+ []
+ end
end
def self.get_all_interface_output
case Facter.value(:kernel)
- when 'Linux', 'OpenBSD', 'NetBSD', 'FreeBSD'
- output = %x{/sbin/ifconfig -a}
- when 'SunOS'
- output = %x{/usr/sbin/ifconfig -a}
+ when 'Linux', 'OpenBSD', 'NetBSD', 'FreeBSD'
+ output = %x{/sbin/ifconfig -a}
+ when 'SunOS'
+ output = %x{/usr/sbin/ifconfig -a}
end
output
end
@@ -29,9 +29,9 @@ module Facter::IPAddress
def self.get_single_interface_output(interface)
output = ""
case Facter.value(:kernel)
- when 'Linux', 'OpenBSD', 'NetBSD', 'FreeBSD'
- output = %x{/sbin/ifconfig #{interface}}
- when 'SunOS'
+ when 'Linux', 'OpenBSD', 'NetBSD', 'FreeBSD'
+ output = %x{/sbin/ifconfig #{interface}}
+ when 'SunOS'
output = %x{/usr/sbin/ifconfig #{interface}}
end
output
@@ -43,75 +43,76 @@ module Facter::IPAddress
end
# We need ip instead of ifconfig because it will show us
# the bonding master device.
- if not FileTest.executable?("/sbin/ip")
+ if not FileTest.executable?("/sbin/ip")
return nil
end
regex = /SLAVE[,>].* (bond[0-9]+)/
- ethbond = regex.match(%x{/sbin/ip link show #{interface}})
- if ethbond
+ ethbond = regex.match(%x{/sbin/ip link show #{interface}})
+ if ethbond
device = ethbond[1]
else
device = nil
end
device
end
-
+
def self.get_interface_value(interface, label)
-
- tmp1 = []
+ tmp1 = []
- case Facter.value(:kernel)
- when 'Linux'
- addr = /inet addr:([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
- mac =
/(?:ether|HWaddr)\s+(\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2})/
- mask = /Mask:([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
- when 'OpenBSD', 'NetBSD', 'FreeBSD'
- addr = /inet\s+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
- mac = /(?:ether|lladdr)\s+(\w\w:\w\w:\w\w:\w\w:\w\w:\w\w)/
- mask = /netmask\s+(\w{10})/
- when 'SunOS'
- addr = /inet\s+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
- mac = /(?:ether|lladdr)\s+(\w?\w:\w?\w:\w?\w:\w?\w:\w?\w:\w?\w)/
- mask = /netmask\s+(\w{8})/
- end
+ # LAK:NOTE This is pretty ugly - two case statements being used for
most of the
+ # logic. These should be pulled into a small dispatch table. We
don't have tests for this code,
+ # though, so it's not exactly trivial to do so.
+ case Facter.value(:kernel)
+ when 'Linux'
+ addr = /inet addr:([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
+ mac =
/(?:ether|HWaddr)\s+(\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2})/
+ mask = /Mask:([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
+ when 'OpenBSD', 'NetBSD', 'FreeBSD'
+ addr = /inet\s+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
+ mac = /(?:ether|lladdr)\s+(\w\w:\w\w:\w\w:\w\w:\w\w:\w\w)/
+ mask = /netmask\s+(\w{10})/
+ when 'SunOS'
+ addr = /inet\s+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
+ mac = /(?:ether|lladdr)\s+(\w?\w:\w?\w:\w?\w:\w?\w:\w?\w:\w?\w)/
+ mask = /netmask\s+(\w{8})/
+ end
+
+ case label
+ when 'ipaddress'
+ regex = addr
+ when 'macaddress'
+ regex = mac
+ when 'netmask'
+ regex = mask
+ end
- case label
- when 'ipaddress'
- regex = addr
- when 'macaddress'
- regex = mac
- when 'netmask'
- regex = mask
- end
+ # Linux changes the MAC address reported via ifconfig when an ethernet
interface
+ # becomes a slave of a bonding device to the master MAC address.
+ # We have to dig a bit to get the original/real MAC address of the
interface.
+ bonddev = get_bonding_master(interface)
+ if label == 'macaddress' and bonddev
+ bondinfo = IO.readlines("/proc/net/bonding/#{bonddev}")
+ hwaddrre = /^Slave Interface: #{interface}\n[^\n].+?\nPermanent HW
addr: (([0-9a-fA-F]{2}:?)*)$/m
+ value = hwaddrre.match(bondinfo.to_s)[1].upcase
+ else
+ output_int = get_single_interface_output(interface)
- # Linux changes the MAC address reported via ifconfig when an ethernet
interface
- # becomes a slave of a bonding device to the master MAC address.
- # We have to dig a bit to get the original/real MAC address of the
interface.
- bonddev = get_bonding_master(interface)
- if label == 'macaddress' and bonddev
- bondinfo = IO.readlines("/proc/net/bonding/#{bonddev}")
- hwaddrre = /^Slave Interface: #{interface}\n[^\n].+?\nPermanent HW
addr: (([0-9a-fA-F]{2}:?)*)$/m
- value = hwaddrre.match(bondinfo.to_s)[1].upcase
- else
- output_int = get_single_interface_output(interface)
-
- if interface != "lo" && interface != "lo0"
- output_int.each { |s|
- if s =~ regex
- value = $1
- if label == 'netmask' && Facter.value(:kernel) == "SunOS"
- value = value.scan(/../).collect do |byte|
byte.to_i(16) end.join('.')
- end
- tmp1.push(value)
- end
- }
- end
+ if interface != "lo" && interface != "lo0"
+ output_int.each { |s|
+ if s =~ regex
+ value = $1
+ if label == 'netmask' && Facter.value(:kernel) ==
"SunOS"
+ value = value.scan(/../).collect do |byte|
byte.to_i(16) end.join('.')
+ end
+ tmp1.push(value)
+ end
+ }
+ end
- if tmp1
- value = tmp1.shift
- end
+ if tmp1
+ value = tmp1.shift
+ end
+ end
end
-
- end
end
diff --git a/lib/facter/util/macosx.rb b/lib/facter/util/macosx.rb
index 1e596d8..2704a7c 100644
--- a/lib/facter/util/macosx.rb
+++ b/lib/facter/util/macosx.rb
@@ -17,34 +17,33 @@
##
module Facter::Macosx
- require 'thread'
- require 'facter/util/plist'
+ require 'thread'
+ require 'facter/util/plist'
- # JJM I'd really like to dynamically generate these methods
- # by looking at the _name key of the _items dict for each _dataType
+ # JJM I'd really like to dynamically generate these methods
+ # by looking at the _name key of the _items dict for each _dataType
- def self.hardware_overview
- # JJM Perhaps we should cache the XML data in a "class" level object.
- top_level_plist = Plist::parse_xml %x{/usr/sbin/system_profiler -xml
SPHardwareDataType}
- system_hardware = top_level_plist[0]['_items'][0]
- system_hardware.delete '_name'
- system_hardware
- end
+ def self.hardware_overview
+ # JJM Perhaps we should cache the XML data in a "class" level object.
+ top_level_plist = Plist::parse_xml %x{/usr/sbin/system_profiler -xml
SPHardwareDataType}
+ system_hardware = top_level_plist[0]['_items'][0]
+ system_hardware.delete '_name'
+ system_hardware
+ end
- # SPSoftwareDataType
- def self.os_overview
- top_level_plist = Plist::parse_xml %x{/usr/sbin/system_profiler -xml
SPSoftwareDataType}
- os_stuff = top_level_plist[0]['_items'][0]
- os_stuff.delete '_name'
- os_stuff
- end
+ # SPSoftwareDataType
+ def self.os_overview
+ top_level_plist = Plist::parse_xml %x{/usr/sbin/system_profiler -xml
SPSoftwareDataType}
+ os_stuff = top_level_plist[0]['_items'][0]
+ os_stuff.delete '_name'
+ os_stuff
+ end
- def self.sw_vers
- ver = Hash.new
- [ "productName", "productVersion", "buildVersion" ].each do |option|
- ver["macosx_#{option}"] = %x{sw_vers -#{option}}.strip
+ def self.sw_vers
+ ver = Hash.new
+ [ "productName", "productVersion", "buildVersion" ].each do |option|
+ ver["macosx_#{option}"] = %x{sw_vers -#{option}}.strip
+ end
+ ver
end
- ver
- end
end
-
diff --git a/lib/facter/util/manufacturer.rb b/lib/facter/util/manufacturer.rb
index 657901d..ff12e7e 100644
--- a/lib/facter/util/manufacturer.rb
+++ b/lib/facter/util/manufacturer.rb
@@ -42,6 +42,5 @@ module Facter::Manufacturer
end
end
end
+ end
end
-end
-
diff --git a/lib/facter/util/netmask.rb b/lib/facter/util/netmask.rb
index 71696ad..dcbb795 100644
--- a/lib/facter/util/netmask.rb
+++ b/lib/facter/util/netmask.rb
@@ -1,36 +1,34 @@
module Facter::NetMask
-
-def self.get_netmask
+ def self.get_netmask
netmask = nil;
ipregex = %r{(\d{1,3}\.){3}\d{1,3}}
ops = nil
case Facter.value(:kernel)
- when 'Linux'
- ops = {
- :ifconfig => '/sbin/ifconfig',
- :regex => %r{\s+ inet\saddr:
#{Facter.ipaddress} .*? Mask: (#{ipregex})}x,
- :munge => nil,
- }
- when 'SunOS'
- ops = {
- :ifconfig => '/usr/sbin/ifconfig -a',
- :regex => %r{\s+ inet\s+? #{Facter.ipaddress}
\+? mask (\w{8})}x,
- :munge => Proc.new { |mask|
mask.scan(/../).collect do |byte| byte.to_i(16) end.join('.') }
- }
+ when 'Linux'
+ ops = {
+ :ifconfig => '/sbin/ifconfig',
+ :regex => %r{\s+ inet\saddr: #{Facter.ipaddress} .*? Mask:
(#{ipregex})}x,
+ :munge => nil,
+ }
+ when 'SunOS'
+ ops = {
+ :ifconfig => '/usr/sbin/ifconfig -a',
+ :regex => %r{\s+ inet\s+? #{Facter.ipaddress} \+? mask
(\w{8})}x,
+ :munge => Proc.new { |mask| mask.scan(/../).collect do |byte|
byte.to_i(16) end.join('.') }
+ }
end
%x{#{ops[:ifconfig]}}.split(/\n/).collect do |line|
- matches = line.match(ops[:regex])
- if !matches.nil?
- if ops[:munge].nil?
- netmask = matches[1]
- else
- netmask = ops[:munge].call(matches[1])
- end
+ matches = line.match(ops[:regex])
+ if !matches.nil?
+ if ops[:munge].nil?
+ netmask = matches[1]
+ else
+ netmask = ops[:munge].call(matches[1])
end
+ end
end
netmask
-end
-
+ end
end
diff --git a/lib/facter/util/plist.rb b/lib/facter/util/plist.rb
index 32e9e2b..54f5248 100644
--- a/lib/facter/util/plist.rb
+++ b/lib/facter/util/plist.rb
@@ -18,7 +18,7 @@ require 'facter/util/plist/generator'
require 'facter/util/plist/parser'
module Plist
- VERSION = '3.0.0'
+ VERSION = '3.0.0'
end
# $Id: plist.rb 1781 2006-10-16 01:01:35Z luke $
diff --git a/lib/facter/virtual.rb b/lib/facter/virtual.rb
index db8dc33..7c1ee91 100644
--- a/lib/facter/virtual.rb
+++ b/lib/facter/virtual.rb
@@ -1,76 +1,75 @@
Facter.add("virtual") do
- confine :kernel => %w{Linux FreeBSD OpenBSD SunOS}
-
- result = "physical"
-
- setcode do
+ confine :kernel => %w{Linux FreeBSD OpenBSD SunOS}
+
+ result = "physical"
+
+ setcode do
+ if FileTest.exists?("/proc/user_beancounters")
+ # openvz. can be hardware node or virtual environment
+ # read the init process' status file, it has laxer permissions
+ # than /proc/user_beancounters (so this won't fail as non-root)
+ txt = File.read("/proc/1/status")
+ if txt =~ /^envID:[[:blank:]]+0$/mi
+ result = "openvzhn"
+ else
+ result = "openvzve"
+ end
+ end
- if FileTest.exists?("/proc/user_beancounters")
- # openvz. can be hardware node or virtual environment
- # read the init process' status file, it has laxer permissions
- # than /proc/user_beancounters (so this won't fail as non-root)
- txt = File.read("/proc/1/status")
- if txt =~ /^envID:[[:blank:]]+0$/mi
- result = "openvzhn"
- else
- result = "openvzve"
- end
- end
+ if FileTest.exists?("/proc/xen/capabilities") &&
FileTest.readable?("/proc/xen/capabilities")
+ txt = File.read("/proc/xen/capabilities")
+ if txt =~ /control_d/i
+ result = "xen0"
+ else
+ result = "xenu"
+ end
+ end
- if FileTest.exists?("/proc/xen/capabilities") &&
FileTest.readable?("/proc/xen/capabilities")
- txt = File.read("/proc/xen/capabilities")
- if txt =~ /control_d/i
- result = "xen0"
- else
- result = "xenu"
- end
- end
+ if result == "physical"
+ path = %x{which lspci 2> /dev/null}.chomp
+ if path !~ /no lspci/
+ output = %x{#{path}}
+ output.each do |p|
+ # --- look for the vmware video card to determine if it is
virtual => vmware.
+ # --- 00:0f.0 VGA compatible controller: VMware Inc
[VMware SVGA II] PCI Display Adapter
+ result = "vmware" if p =~ /VM[wW]are/
+ end
+ else
+ path = %x{which dmidecode 2> /dev/null}.chomp
+ if path !~ /no dmidecode/
+ output = %x{#{path}}
+ output.each do |pd|
+ result = "vmware" if pd =~ /VMware|Parallels/
+ end
+ else
+ path = %x{which prtdiag 2> /dev/null}.chomp
+ if path !~ /no prtdiag/
+ output = %x{#{path}}
+ output.each do |pd|
+ result = "vmware" if pd =~ /VMware|Parallels/
+ end
+ end
+ end
+ end
+ end
- if result == "physical"
- path = %x{which lspci 2> /dev/null}.chomp
- if path !~ /no lspci/
- output = %x{#{path}}
- output.each {|p|
- # --- look for the vmware video card to determine if it is virtual
=> vmware.
- # --- 00:0f.0 VGA compatible controller: VMware Inc [VMware SVGA
II] PCI Display Adapter
- result = "vmware" if p =~ /VM[wW]are/
- }
- else
- path = %x{which dmidecode 2> /dev/null}.chomp
- if path !~ /no dmidecode/
- output = %x{#{path}}
- output.each {|pd|
- result = "vmware" if pd =~ /VMware|Parallels/
- }
- else
- path = %x{which prtdiag 2> /dev/null}.chomp
- if path !~ /no prtdiag/
- output = %x{#{path}}
- output.each {|pd|
- result = "vmware" if pd =~ /VMware|Parallels/
- }
- end
- end
- end
- end
+ # VMware server 1.0.3 rpm places vmware-vmx in this place, other
versions or platforms may not.
+ if FileTest.exists?("/usr/lib/vmware/bin/vmware-vmx")
+ result = "vmware_server"
+ end
- # VMware server 1.0.3 rpm places vmware-vmx in this place, other versions
or platforms may not.
- if FileTest.exists?("/usr/lib/vmware/bin/vmware-vmx")
- result = "vmware_server"
- end
+ mountexists = system "which mount > /dev/null 2>&1"
+ if $?.exitstatus == 0
+ output = %x{mount}
+ output.each do |p|
+ result = "vserver" if p =~ /\/dev\/hdv1/
+ end
+ end
- mountexists = system "which mount > /dev/null 2>&1"
- if $?.exitstatus == 0
- output = %x{mount}
- output.each {|p|
- result = "vserver" if p =~ /\/dev\/hdv1/
- }
- end
+ if FileTest.directory?('/proc/virtual')
+ result = "vserver_host"
+ end
- if FileTest.directory?('/proc/virtual')
- result = "vserver_host"
+ result
end
-
- result
- end
end
diff --git a/spec/unit/util/ip.rb b/spec/unit/util/ip.rb
index e27531e..059bdd1 100644
--- a/spec/unit/util/ip.rb
+++ b/spec/unit/util/ip.rb
@@ -5,7 +5,6 @@ require File.dirname(__FILE__) + '/../../spec_helper'
require 'facter/util/ip'
describe Facter::IPAddress do
-
it "should return a list of interfaces" do
Facter::IPAddress.should respond_to(:get_interfaces)
end
@@ -23,7 +22,7 @@ describe Facter::IPAddress do
end
it "should return a value for a specific interface" do
- Facter::IPAddress.should respond_to(:get_interface_value)
+ Facter::IPAddress.should respond_to(:get_interface_value)
end
it "should return a human readable netmask on Solaris" do
@@ -35,6 +34,4 @@ describe Facter::IPAddress do
Facter::IPAddress.get_interface_value("e1000g0", "netmask").should ==
"255.255.255.0"
end
-
end
-
--
1.5.6.5
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Puppet Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/puppet-dev?hl=en
-~----------~----~----~----~------~----~------~--~---