summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Turnbull <james@lovedthanlost.net>2008-05-28 20:38:22 +1000
committerJames Turnbull <james@lovedthanlost.net>2008-05-28 20:38:22 +1000
commitd9bd38835f98af5925f33e0f43adbbf89d61f1db (patch)
treeb591066a95959b1dd24e1cae6ab5a10b5f413277
parentf9961c705f56229ccd0151cda87316ec73a8675c (diff)
downloadfacter-d9bd38835f98af5925f33e0f43adbbf89d61f1db.tar.gz
facter-d9bd38835f98af5925f33e0f43adbbf89d61f1db.tar.xz
facter-d9bd38835f98af5925f33e0f43adbbf89d61f1db.zip
Refactor of netmask fact - fixes ticket #66
-rw-r--r--lib/facter/netmask.rb35
-rw-r--r--lib/facter/util/netmask.rb36
2 files changed, 38 insertions, 33 deletions
diff --git a/lib/facter/netmask.rb b/lib/facter/netmask.rb
index 140f8f1..309ef63 100644
--- a/lib/facter/netmask.rb
+++ b/lib/facter/netmask.rb
@@ -6,43 +6,12 @@
# idea and originial source by Mark 'phips' Phillips
#
-def 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('.') }
- }
- 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
- end
- end
- netmask
-end
+require 'facter/util/netmask'
Facter.add("netmask") do
confine :kernel => [ :sunos, :linux ]
setcode do
- get_netmask
+ Facter::NetMask.get_netmask
end
end
diff --git a/lib/facter/util/netmask.rb b/lib/facter/util/netmask.rb
new file mode 100644
index 0000000..71696ad
--- /dev/null
+++ b/lib/facter/util/netmask.rb
@@ -0,0 +1,36 @@
+module Facter::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('.') }
+ }
+ 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
+ end
+ end
+ netmask
+end
+
+end