diff options
-rw-r--r-- | lib/puppet/type.rb | 11 | ||||
-rw-r--r-- | lib/puppet/type/service.rb | 16 |
2 files changed, 27 insertions, 0 deletions
diff --git a/lib/puppet/type.rb b/lib/puppet/type.rb index 8663a6aa4..73897776f 100644 --- a/lib/puppet/type.rb +++ b/lib/puppet/type.rb @@ -215,6 +215,17 @@ class Type < Puppet::Element name = name.intern end + unless @types.include? name + begin + require "puppet/type/#{name}" + unless @types.include? name + Puppet.warning "Loaded puppet/type/#{name} but no class was created" + end + rescue LoadError + # nothing + end + end + @types[name] end diff --git a/lib/puppet/type/service.rb b/lib/puppet/type/service.rb index af2f0a376..ea43a9ce2 100644 --- a/lib/puppet/type/service.rb +++ b/lib/puppet/type/service.rb @@ -315,6 +315,22 @@ module Puppet # Retrieve a service type. def self.svctype(name) + name = name.intern if name.is_a? String + + # Try autoloading lacking service types. + unless @modules.include? name + begin + require "puppet/type/service/#{name}" + unless @modules.include? name + Puppet.warning( + "Loaded puppet/type/service/#{name} but " + + "service type was not created" + ) + end + rescue LoadError + # nothing + end + end @modules[name] end |