diff options
| author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-03-19 23:04:32 +0000 |
|---|---|---|
| committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-03-19 23:04:32 +0000 |
| commit | 474b86c921e3fa17ffd48c3b846b2e5f3dc70640 (patch) | |
| tree | c72e2021c49fcb6bd8930eefca5ed6f00b24775e | |
| parent | 90d8b2dfb123b42a2b1fc6104ae5d63be635bdb5 (diff) | |
| download | puppet-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.rb | 9 | ||||
| -rw-r--r-- | lib/puppet/provider.rb | 8 | ||||
| -rw-r--r-- | lib/puppet/provider/user/useradd.rb | 9 | ||||
| -rw-r--r-- | lib/puppet/type/service.rb | 3 | ||||
| -rwxr-xr-x | lib/puppet/type/user.rb | 21 | ||||
| -rwxr-xr-x | test/language/interpreter.rb | 2 | ||||
| -rwxr-xr-x | test/ral/providers/cron/crontab.rb | 16 | ||||
| -rwxr-xr-x | test/ral/providers/package/apt.rb | 2 | ||||
| -rwxr-xr-x | test/ral/providers/package/aptitude.rb | 2 | ||||
| -rwxr-xr-x | test/ral/providers/user.rb | 15 | ||||
| -rwxr-xr-x | test/ral/providers/user/useradd.rb | 65 |
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$ |
