Files
puppet-swift/spec/acceptance/basic_swift_spec.rb
Adam Vinsh 056e2579bd Add keystone to swift-proxy, use dispersion-report
The existing acceptence test configures keystone on the swift node
but does not configure the swift service to use keystone.  This change
adds the neccesary middleware to the proxy node to actually use keystone.
Further proof of keystone working is acheived by enabling the
swift-dispersion-report class which uploads test objects to swift
after first authenticating with keystone.  This change also updates the
call to keystone used by the dispersion class to an updated format.

Change-Id: Ibf97762f9b19c0ccb72178b04a1a86028bab8bcf
2016-05-23 16:44:30 +00:00

180 lines
5.8 KiB
Ruby

require 'spec_helper_acceptance'
describe 'basic swift' do
context 'default parameters' do
it 'should work with no errors' do
pp= <<-EOS
include ::openstack_integration
include ::openstack_integration::repos
include ::openstack_integration::rabbitmq
include ::openstack_integration::mysql
include ::openstack_integration::keystone
package { 'curl': ensure => present }
class { '::memcached':
listen_ip => '127.0.0.1',
}
# Swift resources
class { '::swift':
# not sure how I want to deal with this shared secret
swift_hash_suffix => 'secrete',
package_ensure => latest,
}
class { '::swift::keystone::auth':
password => 'a_big_secret',
}
# === Configure Storage
class { '::swift::storage':
storage_local_net_ip => '127.0.0.1',
}
# create xfs partitions on a loopback device and mounts them
swift::storage::loopback { '2':
seek => '200000',
require => Class['swift'],
}
# sets up storage nodes which is composed of a single
# device that contains an endpoint for an object, account, and container
swift::storage::node { '2':
mnt_base_dir => '/srv/node',
weight => 1,
manage_ring => true,
zone => '2',
storage_local_net_ip => '127.0.0.1',
require => Swift::Storage::Loopback[2] ,
}
class { '::swift::ringbuilder':
part_power => '18',
replicas => '1',
min_part_hours => 1,
require => Class['swift'],
}
class { '::swift::proxy':
proxy_local_net_ip => '127.0.0.1',
pipeline => ['healthcheck', 'proxy-logging', 'cache', 'authtoken', 'keystone', 'dlo', 'proxy-server'],
account_autocreate => true,
require => Class['swift::ringbuilder'],
}
class { '::swift::proxy::authtoken':
admin_password => 'a_big_secret',
}
class { '::swift::keystone::dispersion': } -> class { '::swift::dispersion': }
class {'::swift::objectexpirer':
interval => 600,
}
class {
[ '::swift::proxy::healthcheck', '::swift::proxy::proxy_logging', '::swift::proxy::cache',
'::swift::proxy::keystone', '::swift::proxy::dlo' ]:
}
EOS
# Need to be run 2 times because we have an exported when creating the ring.
apply_manifest(pp, :catch_failures => false)
apply_manifest(pp, :catch_failures => true)
# The third run tests idempotency
apply_manifest(pp, :catch_changes => true)
end
describe port(8080) do
it { is_expected.to be_listening.with('tcp') }
end
end
context 'Using swiftinit service provider' do
it 'should work with no errors' do
swiftinit_pp= <<-EOS
include ::openstack_integration
include ::openstack_integration::repos
include ::openstack_integration::rabbitmq
include ::openstack_integration::mysql
include ::openstack_integration::keystone
package { 'curl': ensure => present }
class { '::memcached':
listen_ip => '127.0.0.1',
}
# Swift resources
class { '::swift':
# not sure how I want to deal with this shared secret
swift_hash_suffix => 'secrete',
package_ensure => latest,
}
class { '::swift::keystone::auth':
password => 'a_big_secret',
}
# === Configure Storage
class { '::swift::storage':
storage_local_net_ip => '127.0.0.1',
}
# create xfs partitions on a loopback device and mounts them
swift::storage::loopback { '2':
seek => '200000',
require => Class['swift'],
}
# sets up storage nodes which is composed of a single
# device that contains an endpoint for an object, account, and container
swift::storage::node { '2':
mnt_base_dir => '/srv/node',
weight => 1,
manage_ring => true,
zone => '2',
storage_local_net_ip => '127.0.0.1',
require => Swift::Storage::Loopback[2] ,
}
class { '::swift::storage::account':
service_provider => 'swiftinit',
}
class { '::swift::storage::container':
service_provider => 'swiftinit',
}
class { '::swift::storage::object':
service_provider => 'swiftinit',
}
class { '::swift::ringbuilder':
part_power => '18',
replicas => '1',
min_part_hours => 1,
require => Class['swift'],
}
class { '::swift::proxy':
proxy_local_net_ip => '127.0.0.1',
pipeline => ['healthcheck', 'proxy-logging', 'cache', 'authtoken', 'keystone', 'dlo', 'proxy-server'],
account_autocreate => true,
require => Class['swift::ringbuilder'],
service_provider => 'swiftinit',
}
class { '::swift::proxy::authtoken':
admin_password => 'a_big_secret',
}
class { '::swift::keystone::dispersion': } -> class { '::swift::dispersion': }
class {'::swift::objectexpirer':
interval => 600,
service_provider => 'swiftinit',
}
class {
[ '::swift::proxy::healthcheck', '::swift::proxy::proxy_logging', '::swift::proxy::cache',
'::swift::proxy::keystone', '::swift::proxy::dlo' ]:
}
EOS
# Run one time to catch any errors upgrading to swiftinit service provider
apply_manifest(swiftinit_pp, :catch_failures => true)
# The second run tests idempotency
apply_manifest(swiftinit_pp, :catch_changes => true)
end
describe port(8080) do
it { is_expected.to be_listening.with('tcp') }
end
end
end