summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-03-19 23:04:32 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-03-19 23:04:32 +0000
commit474b86c921e3fa17ffd48c3b846b2e5f3dc70640 (patch)
treec72e2021c49fcb6bd8930eefca5ed6f00b24775e
parent90d8b2dfb123b42a2b1fc6104ae5d63be635bdb5 (diff)
downloadpuppet-474b86c921e3fa17ffd48c3b846b2e5f3dc70640.tar.gz
puppet-474b86c921e3fa17ffd48c3b846b2e5f3dc70640.tar.xz
puppet-474b86c921e3fa17ffd48c3b846b2e5f3dc70640.zip
Hopefully the last batch of commits before I release 0.22.2. Mostly just get tests to pass.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2334 980ebf18-57e1-0310-9a29-db15c13687c0
-rw-r--r--lib/puppet/network/handler/master.rb9
-rw-r--r--lib/puppet/provider.rb8
-rw-r--r--lib/puppet/provider/user/useradd.rb9
-rw-r--r--lib/puppet/type/service.rb3
-rwxr-xr-xlib/puppet/type/user.rb21
-rwxr-xr-xtest/language/interpreter.rb2
-rwxr-xr-xtest/ral/providers/cron/crontab.rb16
-rwxr-xr-xtest/ral/providers/package/apt.rb2
-rwxr-xr-xtest/ral/providers/package/aptitude.rb2
-rwxr-xr-xtest/ral/providers/user.rb15
-rwxr-xr-xtest/ral/providers/user/useradd.rb65
11 files changed, 143 insertions, 9 deletions
diff --git a/lib/puppet/network/handler/master.rb b/lib/puppet/network/handler/master.rb
index c728638b2..1082d3aaa 100644
--- a/lib/puppet/network/handler/master.rb
+++ b/lib/puppet/network/handler/master.rb
@@ -33,6 +33,15 @@ class Puppet::Network::Handler
Puppet.warning "Could not retrieve fact %s" % fact
end
end
+
+ if facts["servername"].nil?
+ host = Facter.value(:hostname)
+ if domain = Facter.value(:domain)
+ facts["servername"] = [host, domain].join(".")
+ else
+ facts["servername"] = host
+ end
+ end
end
# Manipulate the client name as appropriate.
diff --git a/lib/puppet/provider.rb b/lib/puppet/provider.rb
index d02868d86..922cf490c 100644
--- a/lib/puppet/provider.rb
+++ b/lib/puppet/provider.rb
@@ -19,7 +19,7 @@ class Puppet::Provider
def self.command(name)
name = symbolize(name)
- if command = @commands[name]
+ if defined?(@commands) and command = @commands[name]
# nothing
elsif superclass.respond_to? :command and command = superclass.command(name)
# nothing
@@ -89,7 +89,11 @@ class Puppet::Provider
return false if @defaults.empty?
if @defaults.find do |fact, values|
values = [values] unless values.is_a? Array
- fval = Facter.value(fact).to_s.downcase.intern
+ if fval = Facter.value(fact).to_s and fval != ""
+ fval = fval.to_s.downcase.intern
+ else
+ return false
+ end
# If any of the values match, we're a default.
if values.find do |value| fval == value.to_s.downcase.intern end
diff --git a/lib/puppet/provider/user/useradd.rb b/lib/puppet/provider/user/useradd.rb
index 8ed0a9bd1..d88417216 100644
--- a/lib/puppet/provider/user/useradd.rb
+++ b/lib/puppet/provider/user/useradd.rb
@@ -19,6 +19,15 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
has_features :manages_homedir, :allows_duplicates
+# if case Facter.value(:kernel)
+# when "Linux": true
+# else
+# false
+# end
+#
+# has_features :manages_passwords
+# end
+
def addcmd
cmd = [command(:add)]
@model.class.validproperties.each do |property|
diff --git a/lib/puppet/type/service.rb b/lib/puppet/type/service.rb
index 4f0b1aa74..d568fa109 100644
--- a/lib/puppet/type/service.rb
+++ b/lib/puppet/type/service.rb
@@ -22,6 +22,9 @@ module Puppet
service depends on the platform. You can provide a special command
for restarting with the ``restart`` attribute."
+ feature :enableable, "The provider can enable and disalbe the service",
+ :methods => [:disable, :enable, :enabled?]
+
attr_reader :stat
newproperty(:enable) do
diff --git a/lib/puppet/type/user.rb b/lib/puppet/type/user.rb
index c4ca0d18a..405a0b7a8 100755
--- a/lib/puppet/type/user.rb
+++ b/lib/puppet/type/user.rb
@@ -22,9 +22,9 @@ module Puppet
feature :manages_homedir,
"The provider can create and remove home directories."
- feature :manages_passwords,
- "The provider can modify user passwords, by accepting a password
- hash."
+# feature :manages_passwords,
+# "The provider can modify user passwords, by accepting a password
+# hash."
newproperty(:ensure) do
newvalue(:present, :event => :user_created) do
@@ -180,6 +180,21 @@ module Puppet
executable."
end
+# newproperty(:password) do
+# desc "The user's password, in whatever format the local machine requires
+# (usually crypt)."
+#
+# validate do |val|
+# unless val.to_s == "absent"
+# unless provider.class.feature?(:manages_passwords)
+# raise ArgumentError,
+# "The %s provider can not manage passwords on %s" %
+# [provider.class.name, Facter.value(:operatingsystem)]
+# end
+# end
+# end
+# end
+
newproperty(:groups) do
desc "The groups of which the user is a member. The primary
group should not be listed. Multiple groups should be
diff --git a/test/language/interpreter.rb b/test/language/interpreter.rb
index 2122d5a30..d4ecbd563 100755
--- a/test/language/interpreter.rb
+++ b/test/language/interpreter.rb
@@ -1024,7 +1024,7 @@ class TestInterpreter < Test::Unit::TestCase
# Make a fake gennode method
class << interp
- def gennode(name, args)
+ def gennode(name, args, source)
args[:name] = name
return args
end
diff --git a/test/ral/providers/cron/crontab.rb b/test/ral/providers/cron/crontab.rb
index c28b12ffd..df70cef36 100755
--- a/test/ral/providers/cron/crontab.rb
+++ b/test/ral/providers/cron/crontab.rb
@@ -64,6 +64,22 @@ class TestCronParsedProvider < Test::Unit::TestCase
assert_nothing_raised("could not load %s" % file) do
str, args = YAML.load(File.read(file))
end
+
+ # Stupid old yaml
+ args.each do |hash|
+ hash.each do |param, value|
+ if param.is_a?(String) and param =~ /^:/
+ hash.delete(param)
+ param = param.sub(/^:/,'').intern
+ hash[param] = value
+ end
+
+ if value.is_a?(String) and value =~ /^:/
+ value = value.sub(/^:/,'').intern
+ hash[param] = value
+ end
+ end
+ end
target.write(str)
assert_nothing_raised("could not parse %s" % file) do
@provider.prefetch_target(@me)
diff --git a/test/ral/providers/package/apt.rb b/test/ral/providers/package/apt.rb
index c1bdcd1ca..78e13e382 100755
--- a/test/ral/providers/package/apt.rb
+++ b/test/ral/providers/package/apt.rb
@@ -37,7 +37,7 @@ class AptPackageProviderTest < PuppetTest::TestCase
'-y',
'-o',
'DPkg::Options::=--force-confold',
- 'install',
+ :install,
'faff'
).returns(0)
diff --git a/test/ral/providers/package/aptitude.rb b/test/ral/providers/package/aptitude.rb
index 24865931d..a8ab6f7b7 100755
--- a/test/ral/providers/package/aptitude.rb
+++ b/test/ral/providers/package/aptitude.rb
@@ -36,7 +36,7 @@ class AptitudePackageProviderTest < PuppetTest::TestCase
'-y',
'-o',
'DPkg::Options::=--force-confold',
- 'install',
+ :install,
'faff'
).returns(0)
diff --git a/test/ral/providers/user.rb b/test/ral/providers/user.rb
index 319db0a5f..af4530c7b 100755
--- a/test/ral/providers/user.rb
+++ b/test/ral/providers/user.rb
@@ -128,6 +128,21 @@ class TestUserProvider < Test::Unit::TestCase
end
end
+ def fakemodel(*args)
+ model = super
+
+ # Set boolean methods as necessary.
+ class << model
+ def allowdupe?
+ self[:allowdupe]
+ end
+ def managehome?
+ self[:managehome]
+ end
+ end
+ model
+ end
+
def mkuser(name)
fakemodel = fakemodel(:user, name)
user = nil
diff --git a/test/ral/providers/user/useradd.rb b/test/ral/providers/user/useradd.rb
index 1ababecb7..48a110446 100755
--- a/test/ral/providers/user/useradd.rb
+++ b/test/ral/providers/user/useradd.rb
@@ -136,7 +136,7 @@ class UserAddProviderTest < PuppetTest::TestCase
@vals[:allowdupe] = true
setup_user
- assert(@user.provider.respond_to?(:manages_homedir?),
+ assert(@user.provider.respond_to?(:allows_duplicates?),
"provider did not get allowdupe test set")
assert(@user.allowdupe?, "provider did not get allowdupe")
@@ -174,6 +174,69 @@ class UserAddProviderTest < PuppetTest::TestCase
@user.provider.create
end
+
+ def disabled_test_manages_password
+ if Facter.value(:kernel) != "Linux"
+ assert(! @provider.feature?(:manages_passwords),
+ "Defaulted to managing passwords on %s" %
+ Facter.value(:kernel))
+
+ # Now just make sure it's not allowed, and return
+ setup_user
+ assert_raise(Puppet::Error, "allowed passwd mgmt on failing host") do
+ @user[:password] = "yayness"
+ end
+ return
+ end
+
+ # Now, test that it works correctly.
+ assert(@provider.manages_passwords?,
+ "Defaulted to not managing passwords on %s" %
+ Facter.value(:kernel))
+ @vals[:password] = "somethingorother"
+ setup_user
+
+ @user.provider.expects(:execute).with do |params|
+ assert_equal(params[0], @provider.command(:add),
+ "useradd was not called")
+ params.shift
+ options = {}
+ params.each_with_index do |p, i|
+ if p =~ /^-/ and p != "-M"
+ options[p] = params[i + 1]
+ end
+ end
+ assert_equal(options["-p"], @vals[:password],
+ "Did not set password in useradd call")
+ true
+ end
+
+ @user.provider.create
+ @user.class.clear
+
+ # Now mark the user made, and make sure the right command is called
+ setup_user
+ @user.is = [:ensure, :present]
+ @user.is = [:password, :present]
+ @vals[:password] = "somethingelse"
+
+ @user.provider.expects(:execute).with do |params|
+ assert_equal(params[0], @provider.command(:modify),
+ "usermod was not called")
+
+ options = {}
+ params.each_with_index do |p, i|
+ if p =~ /^-/ and p != "-M"
+ options[p] = params[i + 1]
+ end
+ end
+ assert_equal(options["-p"], @vals[:password],
+ "Did not set password in useradd call")
+ true
+ end
+
+ @user.provider.password = @vals[:password]
+ end
end
# $Id$