From: Till Maas <[email protected]>
With the path parameter set to false, the server defaults
to Puppet[:server]. This allows to use a remote filebucket without
syncing the servername there with the one used on the config file.
To use the default server, this manifest can be used:
filebucket { main: path => false }
A related bug report is:
http://projects.reductivelabs.com/issues/2456
Signed-off-by: Luke Kanies <[email protected]>
---
lib/puppet/type/filebucket.rb | 54 ++++++++++++++++++++++----------------
spec/unit/type/filebucket.rb | 30 +++++++++++++++++++++
test/lib/puppettest/testcase.rb | 1 +
3 files changed, 62 insertions(+), 23 deletions(-)
create mode 100644 spec/unit/type/filebucket.rb
diff --git a/lib/puppet/type/filebucket.rb b/lib/puppet/type/filebucket.rb
index 6e8e38a..f0d2c8e 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 0000000..9a635d5
--- /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 9af0292..bd566df 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
--
1.6.1
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Puppet Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/puppet-dev?hl=en
-~----------~----~----~----~------~----~------~--~---