summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/application/describe.rb2
-rw-r--r--lib/puppet/resource/type.rb9
-rw-r--r--lib/puppet/type.rb22
3 files changed, 23 insertions, 10 deletions
diff --git a/lib/puppet/application/describe.rb b/lib/puppet/application/describe.rb
index 5abe3ea14..e76b347f6 100644
--- a/lib/puppet/application/describe.rb
+++ b/lib/puppet/application/describe.rb
@@ -130,7 +130,7 @@ class TypeDoc
a[0].to_s <=> b[0].to_s
}.each { |name, doc|
print "\n- **#{name}**"
- if type.namevar == name and name != :name
+ if type.key_attributes.include?(name) and name != :name
puts " (*namevar*)"
else
puts ""
diff --git a/lib/puppet/resource/type.rb b/lib/puppet/resource/type.rb
index 1d378aaa6..7b21e55dc 100644
--- a/lib/puppet/resource/type.rb
+++ b/lib/puppet/resource/type.rb
@@ -233,8 +233,13 @@ class Puppet::Resource::Type
resource[param] = value
end
- scope.setvar("title", resource.title) unless set.include? :title
- scope.setvar("name", resource.name.to_s.downcase) unless set.include? :name
+ if @type == :hostclass
+ scope.setvar("title", resource.title.to_s.downcase) unless set.include? :title
+ scope.setvar("name", resource.name.to_s.downcase ) unless set.include? :name
+ else
+ scope.setvar("title", resource.title ) unless set.include? :title
+ scope.setvar("name", resource.name ) unless set.include? :name
+ end
scope.setvar("module_name", module_name) if module_name and ! set.include? :module_name
if caller_name = scope.parent_module_name and ! set.include?(:caller_module_name)
diff --git a/lib/puppet/type.rb b/lib/puppet/type.rb
index 291179a02..f9aacece8 100644
--- a/lib/puppet/type.rb
+++ b/lib/puppet/type.rb
@@ -410,13 +410,15 @@ class Type
property = self.newattr(name)
- begin
- # make sure the parameter doesn't have any errors
- property.value = value
- rescue => detail
- error = Puppet::Error.new("Parameter #{name} failed: #{detail}")
- error.set_backtrace(detail.backtrace)
- raise error
+ if property
+ begin
+ # make sure the parameter doesn't have any errors
+ property.value = value
+ rescue => detail
+ error = Puppet::Error.new("Parameter #{name} failed: #{detail}")
+ error.set_backtrace(detail.backtrace)
+ raise error
+ end
end
nil
@@ -472,6 +474,12 @@ class Type
raise Puppet::Error, "Resource type #{self.class.name} does not support parameter #{name}"
end
+ if provider and ! provider.class.supports_parameter?(klass)
+ missing = klass.required_features.find_all { |f| ! provider.class.feature?(f) }
+ info "Provider %s does not support features %s; not managing attribute %s" % [provider.class.name, missing.join(", "), name]
+ return nil
+ end
+
return @parameters[name] if @parameters.include?(name)
@parameters[name] = klass.new(:resource => self)