Signed-off-by: Paul Berry <[email protected]>
---
 lib/puppet/indirector/inventory/yaml.rb |   46 +++++++++++++++++++-----------
 1 files changed, 29 insertions(+), 17 deletions(-)

diff --git a/lib/puppet/indirector/inventory/yaml.rb 
b/lib/puppet/indirector/inventory/yaml.rb
index c6b1a14..5acbef6 100644
--- a/lib/puppet/indirector/inventory/yaml.rb
+++ b/lib/puppet/indirector/inventory/yaml.rb
@@ -15,23 +15,7 @@ class Puppet::Node::Inventory::Yaml < 
Puppet::Indirector::Yaml
       type, name, operator = key.to_s.split(".")
       operator ||= 'eq'
 
-      next unless type == "facts"
-      return false unless facts.values[name]
-
-      return false unless case operator
-      when "eq"
-        facts.values[name].to_s == value.to_s
-      when "le"
-        facts.values[name].to_f <= value.to_f
-      when "ge"
-        facts.values[name].to_f >= value.to_f
-      when "lt"
-        facts.values[name].to_f < value.to_f
-      when "gt"
-        facts.values[name].to_f > value.to_f
-      when "ne"
-        facts.values[name].to_s != value.to_s
-      end
+      return false unless node_matches_option?(type, name, operator, value, 
facts)
     end
     return true
   end
@@ -44,4 +28,32 @@ class Puppet::Node::Inventory::Yaml < 
Puppet::Indirector::Yaml
     end
     node_names
   end
+
+  private
+
+  def node_matches_option?(type, name, operator, value, facts)
+    case type
+    when "facts"
+      compare_facts(operator, facts.values[name], value)
+    end
+  end
+
+  def compare_facts(operator, value1, value2)
+    return false unless value1
+
+    case operator
+    when "eq"
+      value1.to_s == value2.to_s
+    when "le"
+      value1.to_f <= value2.to_f
+    when "ge"
+      value1.to_f >= value2.to_f
+    when "lt"
+      value1.to_f < value2.to_f
+    when "gt"
+      value1.to_f > value2.to_f
+    when "ne"
+      value1.to_s != value2.to_s
+    end
+  end
 end
-- 
1.7.2

-- 
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.

Reply via email to