summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2008-05-21 00:33:42 -0500
committerLuke Kanies <luke@madstop.com>2008-05-21 00:33:42 -0500
commit65c61b99ffb2069205a37f5daa17444984b11ec5 (patch)
tree7e2ee7ab6619d1e2ec8b33cc5939c6e55dcb0358 /lib/puppet
parent84a787a2a764a5035f7cbb8d30f94fc601bed154 (diff)
parent4434072c7f51e4720b40aaea0637cb94dc6aefe5 (diff)
downloadpuppet-65c61b99ffb2069205a37f5daa17444984b11ec5.tar.gz
puppet-65c61b99ffb2069205a37f5daa17444984b11ec5.tar.xz
puppet-65c61b99ffb2069205a37f5daa17444984b11ec5.zip
Merge branch 'ldap_fixes' into 0.24.x
Conflicts: CHANGELOG
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/provider/confine/variable.rb (renamed from lib/puppet/provider/confine/facter.rb)25
-rw-r--r--lib/puppet/provider/confine_collection.rb4
-rw-r--r--lib/puppet/provider/group/ldap.rb16
-rw-r--r--lib/puppet/provider/user/ldap.rb16
-rw-r--r--lib/puppet/reference/providers.rb8
5 files changed, 41 insertions, 28 deletions
diff --git a/lib/puppet/provider/confine/facter.rb b/lib/puppet/provider/confine/variable.rb
index 9bb66c058..84d17367a 100644
--- a/lib/puppet/provider/confine/facter.rb
+++ b/lib/puppet/provider/confine/variable.rb
@@ -1,32 +1,27 @@
require 'puppet/provider/confine'
-class Puppet::Provider::Confine::Facter < Puppet::Provider::Confine
+class Puppet::Provider::Confine::Variable < Puppet::Provider::Confine
def self.summarize(confines)
result = Hash.new { |hash, key| hash[key] = [] }
confines.inject(result) { |total, confine| total[confine.fact] += confine.values unless confine.valid?; total }
end
- attr_accessor :fact
-
- # Are we a facter comparison?
- def facter?
- defined?(@facter)
- end
+ attr_accessor :name
# Retrieve the value from facter
def facter_value
unless defined?(@facter_value) and @facter_value
- @facter_value = ::Facter.value(@fact).to_s.downcase
+ @facter_value = ::Facter.value(name).to_s.downcase
end
@facter_value
end
def message(value)
- "facter value '%s' for '%s' not in required list '%s'" % [value, self.fact, values.join(",")]
+ "facter value '%s' for '%s' not in required list '%s'" % [value, self.name, values.join(",")]
end
def pass?(value)
- facter_value == value.to_s.downcase
+ test_value.downcase.to_s == value.to_s.downcase
end
def reset
@@ -34,4 +29,14 @@ class Puppet::Provider::Confine::Facter < Puppet::Provider::Confine
# run, but across runs.
@facter_value = nil
end
+
+ private
+
+ def setting?
+ Puppet.settings.valid?(name)
+ end
+
+ def test_value
+ setting? ? Puppet.settings[name] : facter_value
+ end
end
diff --git a/lib/puppet/provider/confine_collection.rb b/lib/puppet/provider/confine_collection.rb
index 0c80086c9..35f461acb 100644
--- a/lib/puppet/provider/confine_collection.rb
+++ b/lib/puppet/provider/confine_collection.rb
@@ -15,8 +15,8 @@ class Puppet::Provider::ConfineCollection
@confines << klass.new(values)
@confines[-1].for_binary = true if for_binary
else
- confine = Puppet::Provider::Confine.test(:facter).new(values)
- confine.fact = test
+ confine = Puppet::Provider::Confine.test(:variable).new(values)
+ confine.name = test
@confines << confine
end
end
diff --git a/lib/puppet/provider/group/ldap.rb b/lib/puppet/provider/group/ldap.rb
index 632358ff1..a4870fc68 100644
--- a/lib/puppet/provider/group/ldap.rb
+++ b/lib/puppet/provider/group/ldap.rb
@@ -12,7 +12,7 @@ Puppet::Type.type(:group).provide :ldap, :parent => Puppet::Provider::Ldap do
as it iterates across all existing groups to pick the appropriate next
one."
- confine :true => Puppet.features.ldap?
+ confine :true => Puppet.features.ldap?, :false => (Puppet[:ldapuser] == "")
# We're mapping 'members' here because we want to make it
# easy for the ldap user provider to manage groups. This
@@ -23,12 +23,14 @@ Puppet::Type.type(:group).provide :ldap, :parent => Puppet::Provider::Ldap do
# Find the next gid after the current largest gid.
provider = self
manager.generates(:gidNumber).with do
- largest = 0
- provider.manager.search.each do |hash|
- next unless value = hash[:gid]
- num = value[0].to_i
- if num > largest
- largest = num
+ largest = 500
+ if existing = provider.manager.search
+ existing.each do |hash|
+ next unless value = hash[:gid]
+ num = value[0].to_i
+ if num > largest
+ largest = num
+ end
end
end
largest + 1
diff --git a/lib/puppet/provider/user/ldap.rb b/lib/puppet/provider/user/ldap.rb
index ba91a871e..0d149ac9a 100644
--- a/lib/puppet/provider/user/ldap.rb
+++ b/lib/puppet/provider/user/ldap.rb
@@ -12,7 +12,7 @@ Puppet::Type.type(:user).provide :ldap, :parent => Puppet::Provider::Ldap do
as it iterates across all existing users to pick the appropriate next
one."
- confine :true => Puppet.features.ldap?
+ confine :feature => :ldap, :false => (Puppet[:ldapuser] == "")
manages(:posixAccount, :person).at("ou=People").named_by(:uid).and.maps :name => :uid,
:password => :userPassword,
@@ -32,12 +32,14 @@ Puppet::Type.type(:user).provide :ldap, :parent => Puppet::Provider::Ldap do
# Find the next uid after the current largest uid.
provider = self
manager.generates(:uidNumber).with do
- largest = 0
- provider.manager.search.each do |hash|
- next unless value = hash[:uid]
- num = value[0].to_i
- if num > largest
- largest = num
+ largest = 500
+ if existing = provider.manager.search
+ existing.each do |hash|
+ next unless value = hash[:uid]
+ num = value[0].to_i
+ if num > largest
+ largest = num
+ end
end
end
largest + 1
diff --git a/lib/puppet/reference/providers.rb b/lib/puppet/reference/providers.rb
index 610c7550d..8fd2dbadc 100644
--- a/lib/puppet/reference/providers.rb
+++ b/lib/puppet/reference/providers.rb
@@ -63,9 +63,13 @@ providers = Puppet::Util::Reference.newreference :providers, :title => "Provider
case test
when :exists:
details += " - Missing files %s\n" % values.join(", ")
- when :facter:
+ when :variable:
values.each do |name, facts|
- details += " - Fact %s (currently %s) not in list %s\n" % [name, Facter.value(name).inspect, facts.join(", ")]
+ if Puppet.settings.valid?(name)
+ details += " - Setting %s (currently %s) not in list %s\n" % [name, Puppet.settings.value(name).inspect, facts.join(", ")]
+ else
+ details += " - Fact %s (currently %s) not in list %s\n" % [name, Facter.value(name).inspect, facts.join(", ")]
+ end
end
when :true:
details += " - Got %s true tests that should have been false\n" % values