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 $