diff options
| -rwxr-xr-x | lib/puppet/type/filebucket.rb | 54 | ||||
| -rw-r--r-- | spec/unit/type/filebucket.rb | 30 | ||||
| -rw-r--r-- | test/lib/puppettest/testcase.rb | 1 |
3 files changed, 62 insertions, 23 deletions
diff --git a/lib/puppet/type/filebucket.rb b/lib/puppet/type/filebucket.rb index 6e8e38adc..f0d2c8e82 100755 --- a/lib/puppet/type/filebucket.rb +++ b/lib/puppet/type/filebucket.rb @@ -34,9 +34,10 @@ module Puppet end newparam(:server) do - desc "The server providing the filebucket. If this is - not specified, then the bucket is local and *path* must be - specified." + desc "The server providing the remote filebucket. If this is not + specified then *path* is checked. If it is set, then the + bucket is local. Otherwise the puppetmaster server specified + in the config or at the commandline is used." end newparam(:port) do @@ -48,8 +49,8 @@ module Puppet newparam(:path) do desc "The path to the local filebucket. If this is - not specified, then the bucket is remote and *server* must be - specified." + unset, then the bucket is remote. The parameter *server* must + can be specified to set the remote server." defaultto { Puppet[:clientbucketdir] } end @@ -72,30 +73,37 @@ module Puppet end def mkbucket + # Default is a local filebucket, if no server is given. + # If the default path has been removed, too, then + # the puppetmaster is used as default server + + type = "local" if self[:server] - begin - @bucket = Puppet::Network::Client.client(:Dipper).new( - :Server => self[:server], - :Port => self[:port] - ) - rescue => detail - self.fail( - "Could not create remote filebucket: %s" % detail - ) - end - else - begin + type = "remote" + server = self[:server] + elsif not self[:path] + type = "remote" + server = Puppet[:server] + end + + begin + if type == "local" @bucket = Puppet::Network::Client.client(:Dipper).new( :Path => self[:path] ) - rescue => detail - if Puppet[:trace] - puts detail.backtrace - end - self.fail( - "Could not create local filebucket: %s" % detail + else + @bucket = Puppet::Network::Client.client(:Dipper).new( + :Server => server, + :Port => self[:port] ) end + rescue => detail + if Puppet[:trace] + puts detail.backtrace + end + self.fail( + "Could not create %s filebucket: %s" % [type, detail] + ) end @bucket.name = self.name diff --git a/spec/unit/type/filebucket.rb b/spec/unit/type/filebucket.rb new file mode 100644 index 000000000..9a635d517 --- /dev/null +++ b/spec/unit/type/filebucket.rb @@ -0,0 +1,30 @@ +#!/usr/bin/env ruby + +require File.dirname(__FILE__) + '/../../spec_helper' + +describe Puppet::Type.type(:filebucket) do + it "be local by default" do + bucket = Puppet::Type.type(:filebucket).new :name => "main" + + bucket.name.should == "main" + bucket.bucket.should be_instance_of(Puppet::Network::Client::Dipper) + bucket.bucket.local.should == true + end + + it "not be local if path is false" do + bucket = Puppet::Type.type(:filebucket).new :name => "main", :path => false + + bucket.name.should == "main" + bucket.bucket.should be_instance_of(Puppet::Network::Client::Dipper) + bucket.bucket.local.should_not == true + end + + it "not be local if a server is specified" do + bucket = Puppet::Type.type(:filebucket).new :name => "main", :server => "puppet" + + bucket.name.should == "main" + bucket.bucket.should be_instance_of(Puppet::Network::Client::Dipper) + bucket.bucket.local.should_not == true + end + +end diff --git a/test/lib/puppettest/testcase.rb b/test/lib/puppettest/testcase.rb index 9af0292b4..bd566dff2 100644 --- a/test/lib/puppettest/testcase.rb +++ b/test/lib/puppettest/testcase.rb @@ -5,6 +5,7 @@ require 'puppettest' require 'puppettest/runnable_test' +require 'test/unit' class PuppetTest::TestCase < Test::Unit::TestCase include PuppetTest |
