diff --git a/deployment/puppet/openstack/manifests/ceilometer.pp b/deployment/puppet/openstack/manifests/ceilometer.pp index d1ef4856c6..8bd94e7c5b 100644 --- a/deployment/puppet/openstack/manifests/ceilometer.pp +++ b/deployment/puppet/openstack/manifests/ceilometer.pp @@ -101,7 +101,7 @@ class openstack::ceilometer ( } if $swift { - class {'::swift::notify::ceilometer': + class {'::openstack::swift::notify::ceilometer': enable_ceilometer => true, } } diff --git a/deployment/puppet/openstack/manifests/swift/notify/ceilometer.pp b/deployment/puppet/openstack/manifests/swift/notify/ceilometer.pp new file mode 100644 index 0000000000..ed66efebf7 --- /dev/null +++ b/deployment/puppet/openstack/manifests/swift/notify/ceilometer.pp @@ -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', + } + } +} diff --git a/deployment/puppet/openstack/manifests/swift/proxy.pp b/deployment/puppet/openstack/manifests/swift/proxy.pp index 659a68116d..890827d2dd 100644 --- a/deployment/puppet/openstack/manifests/swift/proxy.pp +++ b/deployment/puppet/openstack/manifests/swift/proxy.pp @@ -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' } } diff --git a/deployment/puppet/openstack/manifests/swift/storage_node.pp b/deployment/puppet/openstack/manifests/swift/storage_node.pp index 9a16933ea0..4aba6a903b 100644 --- a/deployment/puppet/openstack/manifests/swift/storage_node.pp +++ b/deployment/puppet/openstack/manifests/swift/storage_node.pp @@ -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) diff --git a/deployment/puppet/openstack/templates/swift/ceilometer.conf.erb b/deployment/puppet/openstack/templates/swift/ceilometer.conf.erb new file mode 100644 index 0000000000..cb60adee44 --- /dev/null +++ b/deployment/puppet/openstack/templates/swift/ceilometer.conf.erb @@ -0,0 +1,4 @@ + +[filter:ceilometer] +use = egg:ceilometer#swift + diff --git a/deployment/puppet/osnailyfacter/lib/puppet/type/ring_devices.rb b/deployment/puppet/osnailyfacter/lib/puppet/type/ring_devices.rb new file mode 100644 index 0000000000..f5af0b4047 --- /dev/null +++ b/deployment/puppet/osnailyfacter/lib/puppet/type/ring_devices.rb @@ -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 diff --git a/deployment/puppet/osnailyfacter/manifests/cluster_ha.pp b/deployment/puppet/osnailyfacter/manifests/cluster_ha.pp index 0a58e159ce..0886dfeefd 100644 --- a/deployment/puppet/osnailyfacter/manifests/cluster_ha.pp +++ b/deployment/puppet/osnailyfacter/manifests/cluster_ha.pp @@ -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', } } diff --git a/deployment/puppet/swift/manifests/proxy.pp b/deployment/puppet/swift/manifests/proxy.pp index 41b1463bda..ff7405cb6d 100644 --- a/deployment/puppet/swift/manifests/proxy.pp +++ b/deployment/puppet/swift/manifests/proxy.pp @@ -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, diff --git a/deployment/puppet/swift/manifests/storage/server.pp b/deployment/puppet/swift/manifests/storage/server.pp index 80f85db1db..06d68aa7fa 100644 --- a/deployment/puppet/swift/manifests/storage/server.pp +++ b/deployment/puppet/swift/manifests/storage/server.pp @@ -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" ) { diff --git a/deployment/puppet/swift/spec/classes/swift_proxy_s3token_spec.rb b/deployment/puppet/swift/spec/classes/swift_proxy_s3token_spec.rb index 85d05b2a79..5ef214aa03 100644 --- a/deployment/puppet/swift/spec/classes/swift_proxy_s3token_spec.rb +++ b/deployment/puppet/swift/spec/classes/swift_proxy_s3token_spec.rb @@ -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' diff --git a/deployment/puppet/swift/spec/classes/swift_proxy_spec.rb b/deployment/puppet/swift/spec/classes/swift_proxy_spec.rb index 7fcd9d52b4..a0b6f64b8c 100644 --- a/deployment/puppet/swift/spec/classes/swift_proxy_spec.rb +++ b/deployment/puppet/swift/spec/classes/swift_proxy_spec.rb @@ -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', diff --git a/deployment/puppet/swift/spec/defines/swift_storage_server_spec.rb b/deployment/puppet/swift/spec/defines/swift_storage_server_spec.rb index fd78ef6023..2376e7673b 100644 --- a/deployment/puppet/swift/spec/defines/swift_storage_server_spec.rb +++ b/deployment/puppet/swift/spec/defines/swift_storage_server_spec.rb @@ -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*$/) } diff --git a/deployment/puppet/swift/templates/account-server.conf.erb b/deployment/puppet/swift/templates/account-server.conf.erb index d6adaa05e8..ae625f293c 100644 --- a/deployment/puppet/swift/templates/account-server.conf.erb +++ b/deployment/puppet/swift/templates/account-server.conf.erb @@ -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 diff --git a/deployment/puppet/swift/templates/container-server.conf.erb b/deployment/puppet/swift/templates/container-server.conf.erb index 23f2998cd6..f5bd84466a 100644 --- a/deployment/puppet/swift/templates/container-server.conf.erb +++ b/deployment/puppet/swift/templates/container-server.conf.erb @@ -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 diff --git a/deployment/puppet/swift/templates/object-server.conf.erb b/deployment/puppet/swift/templates/object-server.conf.erb index 2a47c990bc..47ce5e32c6 100644 --- a/deployment/puppet/swift/templates/object-server.conf.erb +++ b/deployment/puppet/swift/templates/object-server.conf.erb @@ -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 diff --git a/deployment/puppet/swift/templates/proxy-server.conf.erb b/deployment/puppet/swift/templates/proxy-server.conf.erb index 08454b8f94..d59cb22ef6 100644 --- a/deployment/puppet/swift/templates/proxy-server.conf.erb +++ b/deployment/puppet/swift/templates/proxy-server.conf.erb @@ -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 %> diff --git a/deployment/puppet/swift/templates/proxy/s3token.conf.erb b/deployment/puppet/swift/templates/proxy/s3token.conf.erb index 82e1f46595..7fda508bb2 100644 --- a/deployment/puppet/swift/templates/proxy/s3token.conf.erb +++ b/deployment/puppet/swift/templates/proxy/s3token.conf.erb @@ -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 %>