summaryrefslogtreecommitdiffstats
path: root/lib/puppet/resource/type.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/resource/type.rb')
-rw-r--r--lib/puppet/resource/type.rb18
1 files changed, 14 insertions, 4 deletions
diff --git a/lib/puppet/resource/type.rb b/lib/puppet/resource/type.rb
index 1b78bf58b..fa5fd5c88 100644
--- a/lib/puppet/resource/type.rb
+++ b/lib/puppet/resource/type.rb
@@ -3,6 +3,7 @@ require 'puppet/util/warnings'
require 'puppet/util/errors'
require 'puppet/util/inline_docs'
require 'puppet/parser/ast/leaf'
+require 'puppet/dsl'
class Puppet::Resource::Type
include Puppet::Util::InlineDocs
@@ -11,7 +12,7 @@ class Puppet::Resource::Type
RESOURCE_SUPERTYPES = [:hostclass, :node, :definition]
- attr_accessor :file, :line, :doc, :code, :parent, :code_collection
+ attr_accessor :file, :line, :doc, :code, :ruby_code, :parent, :resource_type_collection
attr_reader :type, :namespace, :arguments, :behaves_like
# Are we a child of the passed class? Do a recursive search up our
@@ -35,8 +36,9 @@ class Puppet::Resource::Type
set_resource_parameters(resource, scope)
- return nil unless c = self.code
- return c.safeevaluate(scope)
+ code.safeevaluate(scope) if code
+
+ evaluate_ruby_code(resource, scope) if ruby_code
end
def initialize(type, name, options = {})
@@ -137,7 +139,7 @@ class Puppet::Resource::Type
def parent_type
return nil unless parent
- unless @parent_type ||= code_collection.send(type, parent)
+ unless @parent_type ||= resource_type_collection.send(type, parent)
fail Puppet::ParseError, "Could not find parent resource type '#{parent}'"
end
@@ -217,6 +219,14 @@ class Puppet::Resource::Type
return parent_scope(resource.scope, klass)
end
+ def evaluate_ruby_code(resource, scope)
+ resource.extend(Puppet::DSL::ResourceHelper)
+
+ resource.set_instance_variables
+
+ resource.instance_eval(&ruby_code)
+ end
+
# Split an fq name into a namespace and name
def namesplit(fullname)
ary = fullname.split("::")