Adapt synced swift module

- Moved device_dirs out of swift module to openstack::storage_node
- Removed some unused parameters
- 'ring_devices' type moved to 'osnailyfacter' module
- Moved log settings from hardcoded templates to class params
  Upstream Change-Id: I173652ec5bbe8d4382e10db4510d91aebceacab5
- Moved swift::notify::ceilometer to 'openstack' module
- Included fix for upstream bug #1384149
  Upstream Change-Id: I97da480fcf5ce62da99c31481b181b8b61375db5

Implements: blueprint merge-openstack-puppet-modules

Change-Id: I36ca6d4e1215a0b788d08d2f2a4c25c8ab851bf2
This commit is contained in:
Aleksandr Didenko 2014-10-09 18:24:10 +03:00
parent 97d958098c
commit 22c3e85dcb
17 changed files with 212 additions and 49 deletions

View File

@ -101,7 +101,7 @@ class openstack::ceilometer (
}
if $swift {
class {'::swift::notify::ceilometer':
class {'::openstack::swift::notify::ceilometer':
enable_ceilometer => true,
}
}

View File

@ -0,0 +1,12 @@
class openstack::swift::notify::ceilometer (
$enable_ceilometer = false,
)
{
if $enable_ceilometer {
concat::fragment { 'swift_ceilometer':
target => '/etc/swift/proxy-server.conf',
content => template('openstack/swift/ceilometer.conf.erb'),
order => '10',
}
}
}

View File

@ -39,6 +39,7 @@ class openstack::swift::proxy (
$rings = ['account', 'object', 'container'],
$debug = false,
$verbose = true,
$log_facility = 'LOG_LOCAL1',
) {
if !defined(Class['swift']) {
class { 'swift':
@ -47,6 +48,17 @@ class openstack::swift::proxy (
}
}
# calculate log_level
if $debug {
$log_level = 'DEBUG'
}
elsif $verbose {
$log_level = 'INFO'
}
else {
$log_level = 'WARNING'
}
if $memcached and !defined(Class['memcached']) {
class { 'memcached': }
}
@ -59,8 +71,9 @@ class openstack::swift::proxy (
allow_account_management => $proxy_allow_account_management,
account_autocreate => $proxy_account_autocreate,
package_ensure => $package_ensure,
debug => $debug,
verbose => $verbose,
log_facility => $log_facility,
log_level => $log_level,
log_name => 'swift-proxy-server',
}
# configure all of the middlewares
@ -119,9 +132,12 @@ class openstack::swift::proxy (
local_net_ip => $swift_local_net_ip,
}
# anchors
Anchor <| title == 'rebalance_end' |> -> Service['swift-proxy']
Anchor <| title == 'rebalance_end' |> -> Swift::Storage::Generic <| |>
# resource ordering
Swift::Ringbuilder::Rebalance <||> -> Service['swift-proxy']
Swift::Ringbuilder::Rebalance <||> -> Swift::Storage::Generic <| |>
Swift::Ringbuilder::Create<||> ->
Ring_devices<||> ~>
Swift::Ringbuilder::Rebalance <||>
} else {
validate_string($master_swift_proxy_ip)
@ -140,7 +156,4 @@ class openstack::swift::proxy (
Swift::Ringsync <| |> ~> Service["swift-proxy"]
}
# deploy a script that can be used for testing
file { '/tmp/swift_keystone_test.rb': source => 'puppet:///modules/swift/swift_keystone_test.rb' }
}

View File

@ -45,6 +45,7 @@ class openstack::swift::storage_node (
$qpid_password = 'qpid_pw',
$qpid_user = 'nova',
$qpid_nodes = ['127.0.0.1'],
$log_facility = 'LOG_LOCAL2',
) {
if !defined(Class['swift']) {
class { 'swift':
@ -63,14 +64,41 @@ class openstack::swift::storage_node (
}
}
# create dirs for devices
define device_directory($devices) {
if(!defined(File[$devices])) {
file { $devices:
ensure => 'directory',
owner => 'swift',
group => 'swift',
recurse => true,
recurselimit => 1,
}
}
}
if ($storage_devices != undef) {
anchor {'swift-device-directories-start': } ->
device_directory { $storage_devices:
devices => $storage_mnt_base_dir,
}
}
# install all swift storage servers together
class { 'swift::storage::all':
storage_local_net_ip => $swift_local_net_ip,
devices => $storage_mnt_base_dir,
devices_dirs => $storage_devices,
swift_zone => $swift_zone,
debug => $debug,
verbose => $verbose,
log_facility => $log_facility,
}
# override log_name defaults for Swift::Storage::Server
# TODO (adidenko) move this into Hiera when it's ready
Swift::Storage::Server <| title == '6000' |> {
log_name => 'swift-object-server',
}
Swift::Storage::Server <| title == '6001' |> {
log_name => 'swift-container-server',
}
Swift::Storage::Server <| title == '6002' |> {
log_name => 'swift-account-server',
}
validate_string($master_swift_proxy_ip)

View File

@ -0,0 +1,4 @@
[filter:ceilometer]
use = egg:ceilometer#swift

View File

@ -0,0 +1,88 @@
Puppet::Type.newtype(:ring_devices) do
newparam(:name, :namevar => true) do
end
newparam(:storages) do
desc 'list of all swift storages'
validate do |value|
if value.is_a? Hash
fail(Puppet::Error, "#{value} should be a Hash and include ip address") unless value['storage_address']
else
value.each do |element|
fail(Puppet::Error, "#{element} should be a Hash and include ip address") unless element.is_a?(Hash) && element['storage_address']
end
end
end
munge do |value|
value.is_a?(Hash) ? [value] : value
end
end
autorequire(:ring_account_device) do
autos = []
catalog.resources.find_all { |r| r.is_a?(Puppet::Type.type("ring_account_device".to_sym)) }.each do |r|
autos << r
end
autos
end
autorequire(:ring_object_device) do
autos = []
catalog.resources.find_all { |r| r.is_a?(Puppet::Type.type("ring_object_device".to_sym)) }.each do |r|
autos << r
end
autos
end
autorequire(:ring_container_device) do
autos = []
catalog.resources.find_all { |r| r.is_a?(Puppet::Type.type("ring_container_device".to_sym)) }.each do |r|
autos << r
end
autos
end
# Default resources for swift ring builder
def resources
resources = []
default_storage = {
'swift_zone' => 100,
'object_port'=>6000,
'container_port'=>6001,
'account_port'=>6002,
'mountpoints'=> "1 1\n2 1",
'weight'=> 1,
'types'=>['container', 'object', 'account'],
}
self[:storages].each do |storage|
merged_storage = default_storage.merge(storage)
merged_storage['types'].collect do |type|
merged_storage['mountpoints'].each do |mountpoint|
port = merged_storage["#{type}_port"]
device = mountpoint.split[0]
options = {
:name=>"#{merged_storage['storage_address']}:#{port}/#{device}",
:zone => merged_storage['swift_zone'],
:weight => merged_storage['weight'],
}
resources += [Puppet::Type.type("ring_#{type}_device".to_sym).new(options)]
end
end
end
resources
end
def eval_generate
resources
end
end

View File

@ -285,7 +285,7 @@ class osnailyfacter::cluster_ha {
$swift_proxies = $controllers
$swift_local_net_ip = $::storage_address
$master_swift_proxy_nodes = filter_nodes($nodes_hash,'role','primary-controller')
$master_swift_proxy_ip = $master_swift_proxy_nodes[0]['internal_address']
$master_swift_proxy_ip = $master_swift_proxy_nodes[0]['storage_address']
#$master_hostname = $master_swift_proxy_nodes[0]['name']
$swift_loopback = false
if $primary_controller {
@ -477,9 +477,13 @@ class osnailyfacter::cluster_ha {
sync_rings => ! $primary_proxy,
debug => $::debug,
verbose => $::verbose,
log_facility => 'LOG_SYSLOG',
}
if $primary_proxy {
ring_devices {'all': storages => $controllers }
ring_devices {'all':
storages => $controllers,
require => Class['swift'],
}
}
if !$swift_hash['resize_value']
@ -499,6 +503,7 @@ class osnailyfacter::cluster_ha {
master_swift_proxy_ip => $master_swift_proxy_ip,
debug => $::debug,
verbose => $::verbose,
log_facility => 'LOG_SYSLOG',
}
class { 'swift::keystone::auth':
password => $swift_hash[user_password],
@ -933,33 +938,34 @@ class osnailyfacter::cluster_ha {
$swift_zone = $node[0]['swift_zone']
class { 'openstack::swift::storage_node':
storage_type => $swift_loopback,
loopback_size => '5243780',
storage_mnt_base_dir => $swift_partition,
storage_devices => $mountpoints,
swift_zone => $swift_zone,
swift_local_net_ip => $swift_local_net_ip,
master_swift_proxy_ip => $master_swift_proxy_ip,
cinder => $cinder,
cinder_iscsi_bind_addr => $cinder_iscsi_bind_addr,
cinder_volume_group => "cinder",
manage_volumes => $cinder ? { false => $manage_volumes, default =>$is_cinder_node },
db_host => $::fuel_settings['management_vip'],
service_endpoint => $::fuel_settings['management_vip'],
cinder_rate_limits => $cinder_rate_limits,
queue_provider => $::queue_provider,
rabbit_nodes => $controller_nodes,
rabbit_password => $rabbit_hash[password],
rabbit_user => $rabbit_hash[user],
rabbit_ha_virtual_ip => $::fuel_settings['management_vip'],
qpid_password => $rabbit_hash[password],
qpid_user => $rabbit_hash[user],
qpid_nodes => [$::fuel_settings['management_vip']],
sync_rings => ! $primary_proxy,
syslog_log_level => $syslog_log_level,
debug => $debug,
verbose => $verbose,
storage_type => $swift_loopback,
loopback_size => '5243780',
storage_mnt_base_dir => $swift_partition,
storage_devices => $mountpoints,
swift_zone => $swift_zone,
swift_local_net_ip => $swift_local_net_ip,
master_swift_proxy_ip => $master_swift_proxy_ip,
cinder => $cinder,
cinder_iscsi_bind_addr => $cinder_iscsi_bind_addr,
cinder_volume_group => "cinder",
manage_volumes => $cinder ? { false => $manage_volumes, default =>$is_cinder_node },
db_host => $::fuel_settings['management_vip'],
service_endpoint => $::fuel_settings['management_vip'],
cinder_rate_limits => $cinder_rate_limits,
queue_provider => $::queue_provider,
rabbit_nodes => $controller_nodes,
rabbit_password => $rabbit_hash[password],
rabbit_user => $rabbit_hash[user],
rabbit_ha_virtual_ip => $::fuel_settings['management_vip'],
qpid_password => $rabbit_hash[password],
qpid_user => $rabbit_hash[user],
qpid_nodes => [$::fuel_settings['management_vip']],
sync_rings => ! $primary_proxy,
syslog_log_level => $syslog_log_level,
debug => $debug,
verbose => $verbose,
syslog_log_facility_cinder => $syslog_log_facility_cinder,
log_facility => 'LOG_SYSLOG',
}
# TODO(bogdando) add monit swift-storage services monitoring, if required
@ -974,7 +980,8 @@ class osnailyfacter::cluster_ha {
if $primary_proxy {
ring_devices {'all':
storages => $swift_storages
storages => $swift_storages,
require => Class['swift'],
}
}
@ -988,6 +995,7 @@ class osnailyfacter::cluster_ha {
syslog_log_level => $syslog_log_level,
debug => $debug,
verbose => $verbose,
log_facility => 'LOG_SYSLOG',
}
}

View File

@ -34,6 +34,9 @@
# Optional but requires write_affinity to be set. Defaults to undef.
# [*package_ensure*] Ensure state of the swift proxy package.
# Optional. Defaults to present.
# [*log_name*]
# Configures log_name for swift proxy-server.
# Optional. Defaults to proxy-server
#
# == Examples
#
@ -59,6 +62,7 @@ class swift::proxy(
$log_level = 'INFO',
$log_facility = 'LOG_LOCAL1',
$log_handoffs = true,
$log_name = 'proxy-server',
$read_affinity = undef,
$write_affinity = undef,
$write_affinity_node_count = undef,

View File

@ -21,6 +21,7 @@ define swift::storage::server(
$log_facility = 'LOG_LOCAL2',
$log_level = 'INFO',
$log_address = '/dev/log',
$log_name = "${type}-server",
# this parameters needs to be specified after type and name
$config_file_path = "${type}-server/${name}.conf"
) {

View File

@ -24,7 +24,7 @@ describe 'swift::proxy::s3token' do
verify_contents(subject, fragment_file,
[
'[filter:s3token]',
'paste.filter_factory = keystone.middleware.s3_token:filter_factory',
'paste.filter_factory = keystoneclient.middleware.s3_token:filter_factory',
'auth_port = 35357',
'auth_protocol = http',
'auth_host = 127.0.0.1'
@ -45,7 +45,7 @@ describe 'swift::proxy::s3token' do
verify_contents(subject, fragment_file,
[
'[filter:s3token]',
'paste.filter_factory = keystone.middleware.s3_token:filter_factory',
'paste.filter_factory = keystoneclient.middleware.s3_token:filter_factory',
'auth_port = 4212',
'auth_protocol = https',
'auth_host = 1.2.3.4'

View File

@ -99,6 +99,7 @@ describe 'swift::proxy' do
:allow_account_management => false,
:account_autocreate => false,
:log_level => 'DEBUG',
:log_name => 'swift-proxy-server',
:read_affinity => 'r1z1=100, r1=200',
:write_affinity => 'r1',
:write_affinity_node_count => '2 * replicas',
@ -116,6 +117,7 @@ describe 'swift::proxy' do
'pipeline = swauth proxy-server',
'[app:proxy-server]',
'use = egg:swift#proxy',
'set log_name = swift-proxy-server',
'allow_account_management = false',
'account_autocreate = false',
'read_affinity = r1z1=100, r1=200',

View File

@ -151,6 +151,9 @@ describe 'swift::storage::server' do
it { should contain_file(fragment_file) \
.with_content(/^user\s*=\s*swift\s*$/)
}
it { should contain_file(fragment_file) \
.with_content(/^set log_name\s*=\s*#{t}-server\s*$/)
}
it { should contain_file(fragment_file) \
.with_content(/^set log_facility\s*=\s*LOG_LOCAL2\s*$/)
}

View File

@ -12,7 +12,7 @@ pipeline = <%= @pipeline.to_a.join(' ') %>
[app:account-server]
use = egg:swift#account
set log_name = account-server
set log_name = <%= @log_name %>
set log_facility = <%= @log_facility %>
set log_level = <%= @log_level %>
set log_requests = True

View File

@ -14,7 +14,7 @@ pipeline = <%= @pipeline.to_a.join(' ') %>
[app:container-server]
allow_versions = <%= @allow_versions %>
use = egg:swift#container
set log_name = @container-server
set log_name = <%= @log_name %>
set log_facility = <%= @log_facility %>
set log_level = <%= @log_level %>
set log_requests = True

View File

@ -12,7 +12,7 @@ pipeline = <%= @pipeline.to_a.join(' ') %>
[app:object-server]
use = egg:swift#object
set log_name = object-server
set log_name = <%= @log_name %>
set log_facility = <%= @log_facility %>
set log_level = <%= @log_level %>
set log_requests = True

View File

@ -25,7 +25,7 @@ pipeline = <%= @pipeline.to_a.join(' ') %>
[app:proxy-server]
use = egg:swift#proxy
set log_name = proxy-server
set log_name = <%= @log_name %>
set log_facility = <%= @log_facility %>
set log_level = <%= @log_level %>
set log_address = <%= @log_address %>

View File

@ -1,5 +1,5 @@
[filter:s3token]
paste.filter_factory = keystone.middleware.s3_token:filter_factory
paste.filter_factory = keystoneclient.middleware.s3_token:filter_factory
auth_port = <%= @auth_port %>
auth_protocol = <%= @auth_protocol %>
auth_host = <%= @auth_host %>