lib/puppet/util.rb in puppet-0.13.2 vs lib/puppet/util.rb in puppet-0.13.6

- old
+ new

@@ -71,10 +71,13 @@ # Change the process to a different user def self.chuser if group = Puppet[:group] group = self.gid(group) + unless group + raise Puppet::Error, "No such group %s" % Puppet[:group] + end unless Process.gid == group begin Process.egid = group Process.gid = group rescue @@ -84,10 +87,13 @@ end end if user = Puppet[:user] user = self.uid(user) + unless user + raise Puppet::Error, "No such user %s" % Puppet[:user] + end unless Process.uid == user begin Process.euid = user Process.uid = user rescue @@ -156,20 +162,25 @@ rescue ArgumentError => detail # ignore it; we couldn't find the group end end else - unless obj = Puppet.type(:group)[group] + if obj = Puppet.type(:group)[group] + obj[:check] = [:gid] + else obj = Puppet.type(:group).create( :name => group, :check => [:gid] ) - obj.retrieve end + obj.retrieve end if obj gid = obj.should(:gid) || obj.is(:gid) + if gid == :absent + gid = nil + end end return gid end @@ -196,19 +207,22 @@ end end else unless obj = Puppet.type(:user)[user] obj = Puppet.type(:user).create( - :name => user, - :check => [:uid, :gid] + :name => user ) end + obj[:check] = [:uid, :gid] end if obj obj.retrieve - uid = obj.is(:uid) + uid = obj.should(:uid) || obj.is(:uid) + if uid == :absent + uid = nil + end end return uid end @@ -267,9 +281,20 @@ when Symbol: # nothing else raise ArgumentError, "'%s' must be a string or symbol" % value end end + + # Execute a given chunk of code with a new umask. + def self.withumask(mask) + cur = File.umask(mask) + + begin + yield + ensure + File.umask(cur) + end + end end end -# $Id: util.rb 914 2006-02-15 21:04:14Z luke $ +# $Id: util.rb 967 2006-03-02 20:28:45Z luke $