diff --git a/TODO b/TODO index cee26d0a..45fa3413 100644 --- a/TODO +++ b/TODO @@ -32,3 +32,28 @@ autocreate - should be set to true if tempauth is used verify uniqueness constaint of url/port across types - if it exists, they should be the same type + + +set up swauth auth adress?? + - + +[filter:keystone] +use = egg:keystone#swiftauth +auth_protocol = https +auth_host = 127.0.0.0 +auth_port = 35357 +admin_token = 999888777666 +delay_auth_decision = 0 +service_protocol = https +service_host = 127.0.0.0 +service_port = 5000 +service_pass = dTpw +cache = swift.cache + +[filter:healthcheck] + +- crowbar copies hash and ringfiles + +### important +- set up an rsync server +- and sync rings via rsync diff --git a/ext/swift.rb b/ext/swift.rb index 3ce3ca53..347e43c1 100644 --- a/ext/swift.rb +++ b/ext/swift.rb @@ -115,4 +115,3 @@ if File.exists?(expected_file) else raise(Exception, "file #{expected_file} did not exist somehow, probably b/c swift is not installed correctly") end - diff --git a/manifests/init.pp b/manifests/init.pp index d5c1b9b8..8bf97855 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -24,9 +24,12 @@ class swift( $package_ensure = 'present' ) { + include swift::params + Class['ssh::server::install'] -> Class['swift'] package { 'swift': + name => $::swift::params::package_name, ensure => $package_ensure, } diff --git a/manifests/params.pp b/manifests/params.pp new file mode 100644 index 00000000..b5c36f15 --- /dev/null +++ b/manifests/params.pp @@ -0,0 +1,31 @@ +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' + $service_provider = 'upstart' + } + '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 + } + default: { + fail("Unsupported osfamily: ${osfamily} for os ${operatingsystem}") + } + } +} diff --git a/manifests/proxy.pp b/manifests/proxy.pp index 1a731240..070cbbe8 100644 --- a/manifests/proxy.pp +++ b/manifests/proxy.pp @@ -76,6 +76,7 @@ class swift::proxy( } package { 'swift-proxy': + name => $::swift::params::proxy_package_name, ensure => $package_ensure, } @@ -127,8 +128,9 @@ post-stop exec /usr/bin/swift-init proxy-server stop', } service { 'swift-proxy': + name => $::swift::params::proxy_service_name, ensure => running, - provider => 'upstart', + provider => $::swift::params::service_provider, enable => true, subscribe => File['/etc/swift/proxy-server.conf'], } diff --git a/manifests/storage.pp b/manifests/storage.pp index 7115889c..9dd9fae4 100644 --- a/manifests/storage.pp +++ b/manifests/storage.pp @@ -27,9 +27,4 @@ class swift::storage( use_xinetd => true, address => $storage_local_net_ip, } - - # package dependencies - package { ['xfsprogs', 'parted']: - ensure => 'present' - } } diff --git a/manifests/storage/generic.pp b/manifests/storage/generic.pp index 1ee3e65b..614e7a44 100644 --- a/manifests/storage/generic.pp +++ b/manifests/storage/generic.pp @@ -22,11 +22,14 @@ define swift::storage::generic( $service_provider = 'upstart' ) { + include swift::params + Class['swift::storage'] -> Swift::Storage::Generic[$name] validate_re($name, '^object|container|account$') package { "swift-${name}": + name => inline_template("<%= scope.lookupvar('::swift::params::${name}_package_name') %>"), ensure => $package_ensure, } @@ -37,6 +40,7 @@ define swift::storage::generic( } service { "swift-${name}": + name => inline_template("<%= scope.lookupvar('::swift::params::${name}_service_name') %>"), ensure => running, enable => true, hasstatus => true, diff --git a/manifests/storage/xfs.pp b/manifests/storage/xfs.pp index 5c09cf38..d29b44a2 100644 --- a/manifests/storage/xfs.pp +++ b/manifests/storage/xfs.pp @@ -16,6 +16,7 @@ define swift::storage::xfs( $mnt_base_dir = '/srv/node' ) { + include swift::xfs # does this have to be refreshonly? # how can I know if this drive has been formatted? exec { "mkfs-${name}": diff --git a/manifests/xfs.pp b/manifests/xfs.pp new file mode 100644 index 00000000..80743007 --- /dev/null +++ b/manifests/xfs.pp @@ -0,0 +1,8 @@ +# +# package dependencies for creating +# xfs partitions +class swift::xfs { + package { ['xfsprogs', 'parted']: + ensure => 'present' + } +} diff --git a/spec/classes/swift_proxy_spec.rb b/spec/classes/swift_proxy_spec.rb index fdbca3f5..8b6f53ed 100644 --- a/spec/classes/swift_proxy_spec.rb +++ b/spec/classes/swift_proxy_spec.rb @@ -13,6 +13,7 @@ describe 'swift::proxy' do # set os so memcache will not fail let :facts do {:operatingsystem => 'Ubuntu', + :osfamily => 'Debian', :processorcount => 1 } end diff --git a/spec/classes/swift_ringbuilder_spec.rb b/spec/classes/swift_ringbuilder_spec.rb index 679c7fb1..b7bff658 100644 --- a/spec/classes/swift_ringbuilder_spec.rb +++ b/spec/classes/swift_ringbuilder_spec.rb @@ -2,8 +2,10 @@ require 'spec_helper' describe 'swift::ringbuilder' do let :facts do - {:operatingsystem => 'Ubuntu', - :processorcount => 1 + { + :operatingsystem => 'Ubuntu', + :osfamily => 'Debian', + :processorcount => 1 } end describe 'when swift class is not included' do diff --git a/spec/classes/swift_spec.rb b/spec/classes/swift_spec.rb index f084932d..a239e6ca 100644 --- a/spec/classes/swift_spec.rb +++ b/spec/classes/swift_spec.rb @@ -7,7 +7,10 @@ describe 'swift' do end let :facts do - {:operatingsystem => 'Ubuntu'} + { + :operatingsystem => 'Ubuntu', + :osfamily => 'Debian' + } end let :pre_condition do diff --git a/spec/classes/swift_storage_account_spec.rb b/spec/classes/swift_storage_account_spec.rb index 3c5a8b27..2e5a0088 100644 --- a/spec/classes/swift_storage_account_spec.rb +++ b/spec/classes/swift_storage_account_spec.rb @@ -2,7 +2,10 @@ require 'spec_helper' describe 'swift::storage::account' do let :facts do - {:operatingsystem => 'Ubuntu'} + { + :operatingsystem => 'Ubuntu', + :osfamily => 'Debian' + } end let :pre_condition do diff --git a/spec/classes/swift_storage_all_spec.rb b/spec/classes/swift_storage_all_spec.rb index dcd7224b..1f07b378 100644 --- a/spec/classes/swift_storage_all_spec.rb +++ b/spec/classes/swift_storage_all_spec.rb @@ -4,7 +4,10 @@ describe 'swift::storage::all' do # TODO I am not testing the upstart code b/c it should be temporary let :facts do - {:operatingsystem => 'Ubuntu'} + { + :operatingsystem => 'Ubuntu', + :osfamily => 'Debian' + } end let :pre_condition do @@ -49,10 +52,6 @@ describe 'swift::storage::all' do param_set end - ['xfsprogs', 'parted'].each do |present_package| - it { should contain_package(present_package).with_ensure('present') } - end - ['object', 'container', 'account'].each do |type| it { should contain_package("swift-#{type}").with_ensure('present') } it { should contain_service("swift-#{type}").with( diff --git a/spec/classes/swift_storage_container_spec.rb b/spec/classes/swift_storage_container_spec.rb index 93fce613..37ede927 100644 --- a/spec/classes/swift_storage_container_spec.rb +++ b/spec/classes/swift_storage_container_spec.rb @@ -2,7 +2,10 @@ require 'spec_helper' describe 'swift::storage::container' do let :facts do - {:operatingsystem => 'Ubuntu'} + { + :operatingsystem => 'Ubuntu', + :osfamily => 'Debian' + } end let :pre_condition do diff --git a/spec/classes/swift_storage_object_spec.rb b/spec/classes/swift_storage_object_spec.rb index 5a3b1615..7319e5b3 100644 --- a/spec/classes/swift_storage_object_spec.rb +++ b/spec/classes/swift_storage_object_spec.rb @@ -2,7 +2,10 @@ require 'spec_helper' describe 'swift::storage::object' do let :facts do - {:operatingsystem => 'Ubuntu'} + { + :operatingsystem => 'Ubuntu', + :osfamily => 'Debian' + } end let :pre_condition do diff --git a/spec/classes/swift_storage_spec.rb b/spec/classes/swift_storage_spec.rb index 2b4eea64..0518d1e2 100644 --- a/spec/classes/swift_storage_spec.rb +++ b/spec/classes/swift_storage_spec.rb @@ -4,7 +4,10 @@ describe 'swift::storage' do # TODO I am not testing the upstart code b/c it should be temporary let :facts do - {:operatingsystem => 'Ubuntu'} + { + :operatingsystem => 'Ubuntu', + :osfamily => 'Debian' + } end describe 'when required classes are specified' do @@ -21,10 +24,6 @@ describe 'swift::storage' do } end - ['xfsprogs', 'parted'].each do |present_package| - it { should contain_package(present_package).with_ensure('present') } - end - it { should contain_class('rsync::server').with( {:use_xinetd => true, :address => params[:storage_local_net_ip] diff --git a/spec/defines/swift_storage_generic_spec.rb b/spec/defines/swift_storage_generic_spec.rb index 9f291554..0e823e7c 100644 --- a/spec/defines/swift_storage_generic_spec.rb +++ b/spec/defines/swift_storage_generic_spec.rb @@ -6,7 +6,10 @@ describe 'swift::storage::generic' do end let :facts do - {:operatingsystem => 'Ubuntu'} + { + :operatingsystem => 'Ubuntu', + :osfamily => 'Debian' + } end let :pre_condition do diff --git a/spec/defines/swift_storage_server_spec.rb b/spec/defines/swift_storage_server_spec.rb index 1c24584d..4b8e50c2 100644 --- a/spec/defines/swift_storage_server_spec.rb +++ b/spec/defines/swift_storage_server_spec.rb @@ -2,7 +2,11 @@ require 'spec_helper' describe 'swift::storage::server' do let :facts do - {:operatingsystem => 'Ubuntu'} + { + :operatingsystem => 'Ubuntu', + :osfamily => 'Debian' + } + end let :pre_condition do diff --git a/templates/proxy-server.conf.erb b/templates/proxy-server.conf.erb index 9e35eabe..f8e582d5 100644 --- a/templates/proxy-server.conf.erb +++ b/templates/proxy-server.conf.erb @@ -27,6 +27,19 @@ user_admin_admin = admin .admin .reseller_admin user_test_tester = testing .admin user_test2_tester2 = testing2 .admin user_test_tester3 = testing3 +<% elsif auth_type == 'keystone' -%> +[filter:keystone] +use = egg:keystone#swiftauth +auth_protocol = https +auth_host = 127.0.0.0 +auth_port = 35357 +admin_token = 999888777666 +delay_auth_decision = 0 +service_protocol = https +service_host = 127.0.0.0 +service_port = 5000 +service_pass = dTpw +cache = swift.cache <% end -%> [filter:healthcheck]