summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorJames Turnbull <james@lovedthanlost.net>2008-07-08 08:43:54 +1000
committerJames Turnbull <james@lovedthanlost.net>2008-07-08 08:43:54 +1000
commit1fe0660f6b468b8637ac60cd73a033e7726ef838 (patch)
treecd015e5876b91f9f6ac002df0c3e2013ade2c510 /lib/puppet
parent0922c3b0217e1723e1dfc968a7c8de2860361369 (diff)
parentc751e4eef508ab3cf9466dcb45479fced5d3e4be (diff)
downloadpuppet-1fe0660f6b468b8637ac60cd73a033e7726ef838.tar.gz
puppet-1fe0660f6b468b8637ac60cd73a033e7726ef838.tar.xz
puppet-1fe0660f6b468b8637ac60cd73a033e7726ef838.zip
Merge branch 'tickets/0.24.x/1272' of git://github.com/lak/puppet into 0.24.x
Conflicts: CHANGELOG spec/unit/provider/user/ldap.rb
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/provider/group/ldap.rb9
-rw-r--r--lib/puppet/provider/user/ldap.rb14
2 files changed, 23 insertions, 0 deletions
diff --git a/lib/puppet/provider/group/ldap.rb b/lib/puppet/provider/group/ldap.rb
index a4870fc68..37a7e7343 100644
--- a/lib/puppet/provider/group/ldap.rb
+++ b/lib/puppet/provider/group/ldap.rb
@@ -36,4 +36,13 @@ Puppet::Type.type(:group).provide :ldap, :parent => Puppet::Provider::Ldap do
largest + 1
end
+ # Convert a group name to an id.
+ def self.name2id(group)
+ return nil unless result = manager.search("cn=%s" % group) and result.length > 0
+
+ # Only use the first result.
+ group = result[0]
+ gid = group[:gid][0]
+ return gid
+ end
end
diff --git a/lib/puppet/provider/user/ldap.rb b/lib/puppet/provider/user/ldap.rb
index 57f926da8..2e200a88e 100644
--- a/lib/puppet/provider/user/ldap.rb
+++ b/lib/puppet/provider/user/ldap.rb
@@ -47,6 +47,15 @@ Puppet::Type.type(:user).provide :ldap, :parent => Puppet::Provider::Ldap do
largest + 1
end
+ # Convert our gid to a group name, if necessary.
+ def gid=(value)
+ unless [Fixnum, Bignum].include?(value.class)
+ value = group2id(value)
+ end
+
+ @property_hash[:gid] = value
+ end
+
# Find all groups this user is a member of in ldap.
def groups
# We want to cache the current result, so we know if we
@@ -103,6 +112,11 @@ Puppet::Type.type(:user).provide :ldap, :parent => Puppet::Provider::Ldap do
end
end
+ # Convert a gropu name to an id.
+ def group2id(group)
+ Puppet::Type.type(:group).provider(:ldap).name2id(group)
+ end
+
private
def group_manager