diff options
| author | Luke Kanies <luke@puppetlabs.com> | 2011-03-25 16:07:25 -0700 |
|---|---|---|
| committer | Luke Kanies <luke@puppetlabs.com> | 2011-03-25 16:07:25 -0700 |
| commit | c0236aab1145e01e26f59cf1d823dc6966ba567b (patch) | |
| tree | 130b88b1b76a8e9705361e6e90508281e7cd81a3 /lib | |
| parent | de2e84eb93416cebe6d5a92ee88ba9c98cd52661 (diff) | |
| parent | 076de13a24163f485a5dea2469c4b958f73a7d1e (diff) | |
| download | puppet-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.rb | 13 |
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 |
