diff --git a/manifests/params.pp b/manifests/params.pp index 8b144c00..2a597d81 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -1,15 +1,18 @@ class swift::params { case $osfamily { 'Debian': { - $package_name = 'swift' - $proxy_package_name = 'swift-proxy' - $proxy_service_name = 'swift-proxy' - $object_package_name = 'swift-object' - $object_service_name = 'swift-object' - $container_package_name = 'swift-container' - $container_service_name = 'swift-container' - $account_package_name = 'swift-account' - $account_service_name = 'swift-account' + $package_name = 'swift' + $proxy_package_name = 'swift-proxy' + $proxy_service_name = 'swift-proxy' + $object_package_name = 'swift-object' + $object_service_name = 'swift-object' + $object_replicator_service_name = 'swift-object-replicator' + $container_package_name = 'swift-container' + $container_service_name = 'swift-container' + $container_replicator_service_name = 'swift-container-replicator' + $account_package_name = 'swift-account' + $account_service_name = 'swift-account' + $account_replicator_service_name = 'swift-account-replicator' if $::operatingsystem == 'Debian' { $service_proivider = 'debian' } else { @@ -17,16 +20,19 @@ class swift::params { } } 'RedHat': { - $package_name = 'openstack-swift' - $proxy_package_name = 'openstack-swift-proxy' - $proxy_service_name = 'openstack-swift-proxy' - $object_package_name = 'openstack-swift-object' - $object_service_name = 'openstack-swift-object' - $container_package_name = 'openstack-swift-container' - $container_service_name = 'openstack-swift-container' - $account_package_name = 'openstack-swift-account' - $account_service_name = 'openstack-swift-account' - $service_provider = undef + $package_name = 'openstack-swift' + $proxy_package_name = 'openstack-swift-proxy' + $proxy_service_name = 'openstack-swift-proxy' + $object_package_name = 'openstack-swift-object' + $object_service_name = 'openstack-swift-object' + $object_replicator_service_name = undef + $container_package_name = 'openstack-swift-container' + $container_service_name = 'openstack-swift-container' + $container_replicator_service_name = undef + $account_package_name = 'openstack-swift-account' + $account_service_name = 'openstack-swift-account' + $account_replicator_service_name = undef + $service_provider = undef } default: { fail("Unsupported osfamily: ${osfamily} for os ${operatingsystem}") diff --git a/manifests/storage/generic.pp b/manifests/storage/generic.pp index 07b8e4ba..ace0b2c5 100644 --- a/manifests/storage/generic.pp +++ b/manifests/storage/generic.pp @@ -51,4 +51,13 @@ define swift::storage::generic( subscribe => Package["swift-${name}"], } + service { "swift-${name}-replicator": + name => inline_template("<%= scope.lookupvar('::swift::params::${name}_replicator_service_name') %>"), + ensure => running, + enable => true, + hasstatus => true, + provider => $service_provider, + subscribe => Package["swift-${name}"], + } + } diff --git a/spec/classes/swift_storage_all_spec.rb b/spec/classes/swift_storage_all_spec.rb index 1f07b378..a2f5ae5c 100644 --- a/spec/classes/swift_storage_all_spec.rb +++ b/spec/classes/swift_storage_all_spec.rb @@ -60,6 +60,13 @@ describe 'swift::storage::all' do :enable => true, :hasstatus => true })} + it { should contain_service("swift-#{type}-replicator").with( + {:provider => 'upstart', + :ensure => 'running', + :enable => true, + :hasstatus => true + } + )} it { should contain_file("/etc/swift/#{type}-server/").with( {:ensure => 'directory', :owner => 'swift', @@ -94,4 +101,49 @@ describe 'swift::storage::all' do end end + + describe "when installed on Debian" do + let :facts do + { + :operatingsystem => 'Debian', + :osfamily => 'Debian' + } + end + + [{ :storage_local_net_ip => '127.0.0.1' }, + { + :devices => '/tmp/node', + :storage_local_net_ip => '10.0.0.1', + :object_port => '7000', + :container_port => '7001', + :account_port => '7002' + } + ].each do |param_set| + describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do + let :param_hash do + default_params.merge(param_set) + end + + let :params do + param_set + end + ['object', 'container', 'account'].each do |type| + it { should contain_package("swift-#{type}").with_ensure('present') } + it { should contain_service("swift-#{type}").with( + {:provider => nil, + :ensure => 'running', + :enable => true, + :hasstatus => true + })} + it { should contain_service("swift-#{type}-replicator").with( + {:provider => nil, + :ensure => 'running', + :enable => true, + :hasstatus => true + } + )} + end + end + end + end end