diff options
Diffstat (limited to 'lib/puppet')
-rw-r--r-- | lib/puppet/networkclient.rb | 3 | ||||
-rw-r--r-- | lib/puppet/parameter.rb | 52 | ||||
-rw-r--r-- | lib/puppet/type.rb | 3 | ||||
-rwxr-xr-x | lib/puppet/type/nameservice.rb | 15 | ||||
-rw-r--r-- | lib/puppet/type/pfile.rb | 4 | ||||
-rw-r--r-- | lib/puppet/util.rb | 45 |
6 files changed, 65 insertions, 57 deletions
diff --git a/lib/puppet/networkclient.rb b/lib/puppet/networkclient.rb index fc204ce10..766acef1b 100644 --- a/lib/puppet/networkclient.rb +++ b/lib/puppet/networkclient.rb @@ -68,6 +68,9 @@ module Puppet Puppet.err "Could not call %s.%s: %s" % [namespace, method, detail.inspect] #raise NetworkClientError.new(detail.to_s) + if Puppet[:debug] + puts detail.backtrace + end raise end } diff --git a/lib/puppet/parameter.rb b/lib/puppet/parameter.rb index 25789e9af..18ed07d35 100644 --- a/lib/puppet/parameter.rb +++ b/lib/puppet/parameter.rb @@ -11,6 +11,10 @@ module Puppet if block define_method(:default, &block) else + if value.nil? + raise Puppet::DevError, + "Either a default value or block must be provided" + end define_method(:default) do value end end end @@ -104,6 +108,9 @@ module Puppet rescue ArgumentError, Puppet::Error, TypeError raise rescue => detail + if Puppet[:debug] + puts detail.backtrace + end raise Puppet::DevError, "Validate method failed for class %s: %s" % [self.name, detail] @@ -145,7 +152,13 @@ module Puppet @aliasvalues ||= {} #[@aliasvalues.keys, @parametervalues.keys].flatten - @parametervalues.dup + if @parametervalues.is_a? Array + return @parametervalues.dup + elsif @parametervalues.is_a? Hash + return @parametervalues.keys + else + return [] + end end end @@ -162,36 +175,6 @@ module Puppet attr_accessor :parent - # This doesn't work, because the instance_eval doesn't bind the inner block - # only the outer one. -# def munge(value) -# if munger = self.class.munger -# return @parent.instance_eval { -# munger.call(value) -# } -# else -# return value -# end -# end -# -# def validate(value) -# if validater = self.class.validater -# return @parent.instance_eval { -# validater.call(value) -# } -# end -# end - - #def default - # default = self.class.default - # if default.is_a?(Proc) - # val = self.instance_eval(&default) - # return val - # else - # return default - # end - #end - def devfail(msg) self.fail(Puppet::DevError, msg) end @@ -276,16 +259,17 @@ module Puppet # Verify that the passed value is valid. validate do |value| - if self.class.values.empty? + values = self.class.values + if values.empty? # This parameter isn't using defined values to do its work. return end unless value.is_a?(Symbol) value = value.to_s.intern end - unless self.class.values.include?(value) or self.class.alias(value) + unless values.include?(value) or self.class.alias(value) self.fail "Invalid '%s' value '%s'. Valid values are '%s'" % - [self.class.name, value, self.class.values.join(", ")] + [self.class.name, value, values.join(", ")] end end diff --git a/lib/puppet/type.rb b/lib/puppet/type.rb index c90185fc1..9469d8b0a 100644 --- a/lib/puppet/type.rb +++ b/lib/puppet/type.rb @@ -1497,7 +1497,8 @@ class Type < Puppet::Element next if self.attrset?(type, klass.name) obj = self.newattr(type, klass) - if value = obj.default + value = obj.default + unless value.nil? #self.debug "defaulting %s to %s" % [obj.name, obj.default] obj.value = value else diff --git a/lib/puppet/type/nameservice.rb b/lib/puppet/type/nameservice.rb index 2f812ac61..1f132ee68 100755 --- a/lib/puppet/type/nameservice.rb +++ b/lib/puppet/type/nameservice.rb @@ -139,21 +139,6 @@ class State return nil end end -# # if the object needs to be created or deleted, -# # depend on another method to do it all at once -# if @is == :absent or self.should == :absent -# Puppet.info "creating" -# event = syncname() -# -# Puppet.info "created with event %s" % event -# -# return event -# # if the whole object is created at once, just return -# # an event saying so -# #if self.class.allatonce? -# # return event -# #end -# end unless @parent.exists? self.devfail "%s %s does not exist; cannot set %s" % diff --git a/lib/puppet/type/pfile.rb b/lib/puppet/type/pfile.rb index 082b2f5dc..6f064ee2a 100644 --- a/lib/puppet/type/pfile.rb +++ b/lib/puppet/type/pfile.rb @@ -440,9 +440,11 @@ module Puppet end end + #ignore = self[:ignore] || false ignore = self[:ignore] - #self.warning "Listing path %s" % path.inspect + #self.warning "Listing path %s with ignore %s" % + # [path.inspect, ignore.inspect] desc = server.list(path, r, ignore) desc.split("\n").each { |line| diff --git a/lib/puppet/util.rb b/lib/puppet/util.rb index 0d2d73900..1d5aff4d1 100644 --- a/lib/puppet/util.rb +++ b/lib/puppet/util.rb @@ -21,7 +21,11 @@ module Util # The gid has to be changed first, because, well, otherwise we won't # be able to if group - gid = self.gid(group) + if group.is_a? Integer + gid = group + else + gid = self.gid(group) + end if Process.gid != gid oldgid = Process.gid @@ -34,6 +38,11 @@ module Util end if user + if user.is_a? Integer + uid = user + else + uid = self.uid(user) + end uid = self.uid(user) # Now change the uid if Process.uid != uid @@ -133,11 +142,21 @@ module Util obj = nil # We want to look the group up either way - if group.is_a?(Integer) + if group.is_a?(Integer) + # If this doesn't find anything obj = Puppet.type(:group).find { |gobj| gobj.should(:gid) == group || gobj.is(:gid) == group } + + unless obj + begin + gobj = Etc.getgrgid(group) + gid = gobj.gid + rescue ArgumentError => detail + # ignore it; we couldn't find the group + end + end else unless obj = Puppet.type(:group)[group] obj = Puppet.type(:group).create( @@ -160,8 +179,22 @@ module Util if user =~ /^\d+$/ user = Integer(user) end + if user.is_a?(Integer) - uid = user + # If this doesn't find anything + obj = Puppet.type(:user).find { |uobj| + uobj.should(:uid) == user || + uobj.is(:uid) == user + } + + unless obj + begin + uobj = Etc.getpwuid(user) + uid = uobj.uid + rescue ArgumentError => detail + # ignore it; we couldn't find the user + end + end else unless obj = Puppet.type(:user)[user] obj = Puppet.type(:user).create( @@ -169,11 +202,11 @@ module Util :check => [:uid, :gid] ) end + end + + if obj obj.retrieve uid = obj.is(:uid) - unless uid.is_a?(Integer) - raise Puppet::Error, "Could not find user %s" % user - end end return uid |