summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorLuke Kanies <luke@puppetlabs.com>2011-03-25 16:07:25 -0700
committerLuke Kanies <luke@puppetlabs.com>2011-03-25 16:07:25 -0700
commitc0236aab1145e01e26f59cf1d823dc6966ba567b (patch)
tree130b88b1b76a8e9705361e6e90508281e7cd81a3 /lib
parentde2e84eb93416cebe6d5a92ee88ba9c98cd52661 (diff)
parent076de13a24163f485a5dea2469c4b958f73a7d1e (diff)
downloadpuppet-c0236aab1145e01e26f59cf1d823dc6966ba567b.tar.gz
puppet-c0236aab1145e01e26f59cf1d823dc6966ba567b.tar.xz
puppet-c0236aab1145e01e26f59cf1d823dc6966ba567b.zip
Merge branch 'tickets/next/6855-searching_in_resource_type' into next
Diffstat (limited to 'lib')
-rw-r--r--lib/puppet/indirector/resource_type/parser.rb13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/puppet/indirector/resource_type/parser.rb b/lib/puppet/indirector/resource_type/parser.rb
index fd5b3938a..4bcaf3f47 100644
--- a/lib/puppet/indirector/resource_type/parser.rb
+++ b/lib/puppet/indirector/resource_type/parser.rb
@@ -21,12 +21,23 @@ class Puppet::Indirector::ResourceType::Parser < Puppet::Indirector::Code
end
def search(request)
- raise ArgumentError, "Only '*' is acceptable as a search request" unless request.key == "*"
krt = request.environment.known_resource_types
# Make sure we've got all of the types loaded.
krt.loader.import_all
result = [krt.hostclasses.values, krt.definitions.values, krt.nodes.values].flatten.reject { |t| t.name == "" }
return nil if result.empty?
+ return result if request.key == "*"
+
+ # Strip the regex of any wrapping slashes that might exist
+ key = request.key.sub(/^\//, '').sub(/\/$/, '')
+ begin
+ regex = Regexp.new(key)
+ rescue => detail
+ raise ArgumentError, "Invalid regex '#{request.key}': #{detail}"
+ end
+
+ result.reject! { |t| t.name.to_s !~ regex }
+ return nil if result.empty?
result
end
end