summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/type.rb11
-rw-r--r--lib/puppet/type/service.rb16
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