summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/parser')
-rw-r--r--lib/puppet/parser/ast/collexpr.rb15
-rw-r--r--lib/puppet/parser/collector.rb2
2 files changed, 12 insertions, 5 deletions
diff --git a/lib/puppet/parser/ast/collexpr.rb b/lib/puppet/parser/ast/collexpr.rb
index 54b003a91..eae2b0e42 100644
--- a/lib/puppet/parser/ast/collexpr.rb
+++ b/lib/puppet/parser/ast/collexpr.rb
@@ -31,10 +31,14 @@ class CollExpr < AST::Branch
when "and"; code1.call(resource) and code2.call(resource)
when "or"; code1.call(resource) or code2.call(resource)
when "=="
- if resource[str1].is_a?(Array)
- resource[str1].include?(str2)
+ if str1 == "tag"
+ resource.tagged?(str2)
else
- resource[str1] == str2
+ if resource[str1].is_a?(Array)
+ resource[str1].include?(str2)
+ else
+ resource[str1] == str2
+ end
end
when "!="; resource[str1] != str2
end
@@ -58,8 +62,11 @@ class CollExpr < AST::Branch
if oper == "=" or oper == "!="
# Add the rails association info where necessary
- if str1 == "title"
+ case str1
+ when "title"
str = "title #{oper} '#{str2}'"
+ when "tag"
+ str = "puppet_tags.name #{oper} '#{str2}'"
else
str = "param_values.value #{oper} '#{str2}' and " +
"param_names.name = '#{str1}'"
diff --git a/lib/puppet/parser/collector.rb b/lib/puppet/parser/collector.rb
index ece420536..5f11a6cea 100644
--- a/lib/puppet/parser/collector.rb
+++ b/lib/puppet/parser/collector.rb
@@ -102,7 +102,7 @@ class Puppet::Parser::Collector
raise Puppet::DevError, "Cannot collect resources for a nil host" unless @scope.host
host = Puppet::Rails::Host.find_by_name(@scope.host)
- query = {:include => {:param_values => :param_name}}
+ query = {:include => {:param_values => :param_name, :puppet_tags => :resource_tags}}
search = "(exported=? AND restype=?)"
values = [true, @type]