default server in remote filebuckets
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
This commit is contained in:
Родитель
1f8ef6086c
Коммит
266aafa6ef
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
require 'puppettest'
|
||||
require 'puppettest/runnable_test'
|
||||
require 'test/unit'
|
||||
|
||||
class PuppetTest::TestCase < Test::Unit::TestCase
|
||||
include PuppetTest
|
||||
|
|
Загрузка…
Ссылка в новой задаче