diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/oxidized/nodes.rb | 20 | 
1 files changed, 14 insertions, 6 deletions
| diff --git a/lib/oxidized/nodes.rb b/lib/oxidized/nodes.rb index 6f30af4..227f656 100644 --- a/lib/oxidized/nodes.rb +++ b/lib/oxidized/nodes.rb @@ -9,16 +9,11 @@ module Oxidized      def load node_want=nil        with_lock do          new = [] -        node_want_ip = (IPAddr.new(node_want) rescue false) if node_want          @source = CFG.source.default          Oxidized.mgr.add_source @source          Oxidized.mgr.source[@source].new.load.each do |node| -            # we want to load specific node(s), not all of them -          if node_want -            next unless node_want_ip == node[:ip] or node_want.match(node[:name]) -          end - +          next unless node_want? node_want, node            begin              _node = Node.new node              new.push _node @@ -33,6 +28,19 @@ module Oxidized        end      end +    def node_want? node_want, node +      node_want_ip = (IPAddr.new(node_want) rescue false) +      name_is_ip   = (IPAddr.new(node[:name]) rescue false) +      if name_is_ip and node_want_ip == node[:name] +        true +      elsif node[:ip] and node_want_ip == node[:ip] +        true +      elsif node_want.match node[:name] +        true unless name_is_ip +      end +    end + +      def list        with_lock do          map { |e| e.serialize } | 
