diff options
author | James Turnbull <james@lovedthanlost.net> | 2008-05-28 20:38:22 +1000 |
---|---|---|
committer | James Turnbull <james@lovedthanlost.net> | 2008-05-28 20:38:22 +1000 |
commit | d9bd38835f98af5925f33e0f43adbbf89d61f1db (patch) | |
tree | b591066a95959b1dd24e1cae6ab5a10b5f413277 | |
parent | f9961c705f56229ccd0151cda87316ec73a8675c (diff) | |
download | facter-d9bd38835f98af5925f33e0f43adbbf89d61f1db.tar.gz facter-d9bd38835f98af5925f33e0f43adbbf89d61f1db.tar.xz facter-d9bd38835f98af5925f33e0f43adbbf89d61f1db.zip |
Refactor of netmask fact - fixes ticket #66
-rw-r--r-- | lib/facter/netmask.rb | 35 | ||||
-rw-r--r-- | lib/facter/util/netmask.rb | 36 |
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 |