diff options
author | Luke Kanies <luke@puppetlabs.com> | 2011-03-25 14:15:12 -0700 |
---|---|---|
committer | Luke Kanies <luke@puppetlabs.com> | 2011-03-25 14:32:18 -0700 |
commit | e16a38349c596c4a6ea682173e0cc704dedc98a7 (patch) | |
tree | 7222ea83fc10d9bec621e881b5815503d7150ed5 /lib/puppet/indirector | |
parent | 29268f3fda3c6e29f60d05e5aa387ff0424e7b1e (diff) | |
download | puppet-e16a38349c596c4a6ea682173e0cc704dedc98a7.tar.gz puppet-e16a38349c596c4a6ea682173e0cc704dedc98a7.tar.xz puppet-e16a38349c596c4a6ea682173e0cc704dedc98a7.zip |
Fixing #6851 - ResourceType#find/search loads types
Previously we could only find types from site.pp, but
we now automatically load the specified type (for find)
or all types.
This also adds a TypeLoader#import_all capable of importing
all manifests (ruby or puppet) on a given system.
Signed-off-by: Luke Kanies <luke@puppetlabs.com>
Reviewed-by: Daniel Pittman <daniel@puppetlabs.com>
Diffstat (limited to 'lib/puppet/indirector')
-rw-r--r-- | lib/puppet/indirector/resource_type/parser.rb | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/lib/puppet/indirector/resource_type/parser.rb b/lib/puppet/indirector/resource_type/parser.rb index 24b4b065e..fd5b3938a 100644 --- a/lib/puppet/indirector/resource_type/parser.rb +++ b/lib/puppet/indirector/resource_type/parser.rb @@ -10,7 +10,10 @@ class Puppet::Indirector::ResourceType::Parser < Puppet::Indirector::Code # This is a bit ugly. [:hostclass, :definition, :node].each do |type| - if r = krt.send(type, request.key) + # We have to us 'find_<type>' here because it will + # load any missing types from disk, whereas the plain + # '<type>' method only returns from memory. + if r = krt.send("find_#{type}", [""], request.key) return r end end @@ -18,16 +21,11 @@ class Puppet::Indirector::ResourceType::Parser < Puppet::Indirector::Code end def search(request) -=begin - @modulepath = set_modulepath(options[:modulepath]) - get_code(@modulepath)[:manifests].collect do |file| - Puppet[:manifest]=file - get_resources_of_type(:hostclass) - end.flatten -=end raise ArgumentError, "Only '*' is acceptable as a search request" unless request.key == "*" krt = request.environment.known_resource_types - result = [krt.hostclasses.values, krt.definitions.values, krt.nodes.values].flatten + # 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? result end |