summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-04-06 04:00:59 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-04-06 04:00:59 +0000
commite5be7d3ffe4fe11fba8f97c1c272dc600382dbd9 (patch)
treecf275552aa0eb4a5b79ad27760aaa1562df47bb4
parentfcce8203fdb77c7135fd1fcae9a0e45c9b6073c3 (diff)
downloadpuppet-e5be7d3ffe4fe11fba8f97c1c272dc600382dbd9.tar.gz
puppet-e5be7d3ffe4fe11fba8f97c1c272dc600382dbd9.tar.xz
puppet-e5be7d3ffe4fe11fba8f97c1c272dc600382dbd9.zip
Adding autoloading for types and service types, also.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1090 980ebf18-57e1-0310-9a29-db15c13687c0
-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