Ceilometer task
* Compute and controller parts * Fixes typo in openstack-network-compute.pp * Pre/Post tests require I8769748ae79d5a1597eb0f320e0a0ed9581d5a0b Related-blueprint: fuel-library-modularization Change-Id: Id4b44549bf66b7df9034ae2556a2fd4b45f99f29
This commit is contained in:
parent
a530233a11
commit
79d34b5763
@ -28,7 +28,6 @@ class openstack::ceilometer (
|
||||
$on_controller = false,
|
||||
$on_compute = false,
|
||||
$ha_mode = false,
|
||||
$primary_controller = false,
|
||||
$ext_mongo = false,
|
||||
# ttl is 1 week (3600*24*7)
|
||||
$time_to_live = '604800',
|
||||
@ -38,7 +37,7 @@ class openstack::ceilometer (
|
||||
# This class is required by ceilometer agents & api classes
|
||||
# The metering_secret parameter is mandatory
|
||||
class { '::ceilometer':
|
||||
package_ensure => $::openstack_version['ceilometer'],
|
||||
package_ensure => 'present',
|
||||
rabbit_hosts => split($amqp_hosts, ','),
|
||||
rabbit_userid => $amqp_user,
|
||||
rabbit_password => $amqp_password,
|
||||
|
@ -450,21 +450,4 @@ on packages update": }
|
||||
content => "Host *\n StrictHostKeyChecking no\n UserKnownHostsFile=/dev/null\n",
|
||||
}
|
||||
|
||||
# configure ceilometer compute agent
|
||||
if ($ceilometer) {
|
||||
class { 'openstack::ceilometer':
|
||||
verbose => $verbose,
|
||||
debug => $debug,
|
||||
use_syslog => $use_syslog,
|
||||
syslog_log_facility => $syslog_log_facility_ceilometer,
|
||||
amqp_hosts => $amqp_hosts,
|
||||
amqp_user => $amqp_user,
|
||||
amqp_password => $amqp_password,
|
||||
keystone_host => $service_endpoint,
|
||||
keystone_password => $ceilometer_user_password,
|
||||
on_compute => true,
|
||||
metering_secret => $ceilometer_metering_secret,
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -314,36 +314,6 @@ class openstack::controller (
|
||||
neutron_metadata_proxy_shared_secret => $network_provider ? {'nova'=>undef, 'neutron'=>$neutron_metadata_proxy_secret },
|
||||
}
|
||||
|
||||
######## Ceilometer ########
|
||||
|
||||
if ($ceilometer) {
|
||||
class { 'openstack::ceilometer':
|
||||
verbose => $verbose,
|
||||
debug => $debug,
|
||||
use_syslog => $use_syslog,
|
||||
syslog_log_facility => $syslog_log_facility_ceilometer,
|
||||
db_type => $ceilometer_db_type,
|
||||
db_host => $ceilometer_db_host,
|
||||
db_user => $ceilometer_db_user,
|
||||
db_password => $ceilometer_db_password,
|
||||
db_dbname => $ceilometer_db_dbname,
|
||||
swift_rados_backend => $swift_rados_backend,
|
||||
metering_secret => $ceilometer_metering_secret,
|
||||
amqp_hosts => $amqp_hosts,
|
||||
amqp_user => $amqp_user,
|
||||
amqp_password => $amqp_password,
|
||||
rabbit_ha_queues => $rabbit_ha_queues,
|
||||
keystone_host => $internal_address,
|
||||
keystone_password => $ceilometer_user_password,
|
||||
host => $api_bind_address,
|
||||
ha_mode => $ha_mode,
|
||||
primary_controller => $primary_controller,
|
||||
on_controller => true,
|
||||
ext_mongo => $ceilometer_ext_mongo,
|
||||
mongo_replicaset => $mongo_replicaset,
|
||||
}
|
||||
}
|
||||
|
||||
####### Disable upstart startup on install #######
|
||||
if($::operatingsystem == 'Ubuntu') {
|
||||
tweaks::ubuntu_service_override { 'nova-cert':
|
||||
|
@ -0,0 +1,48 @@
|
||||
notice('ceilometer/compute.pp')
|
||||
|
||||
$verbose = hiera('verbose', true)
|
||||
$debug = hiera('debug', false)
|
||||
$use_syslog = hiera('use_syslog', true)
|
||||
$syslog_log_facility = hiera('syslog_log_facility_ceilometer', 'LOG_LOCAL0')
|
||||
$amqp_hosts = hiera('amqp_hosts')
|
||||
$rabbit_hash = hiera('rabbit_hash')
|
||||
$management_vip = hiera('management_vip')
|
||||
|
||||
$default_ceilometer_hash = {
|
||||
'enabled' => false,
|
||||
'db_password' => 'ceilometer',
|
||||
'user_password' => 'ceilometer',
|
||||
'metering_secret' => 'ceilometer',
|
||||
}
|
||||
|
||||
$ceilometer_hash = hiera('ceilometer', $default_ceilometer_hash)
|
||||
|
||||
$ceilometer_enabled = $ceilometer_hash['enabled']
|
||||
$amqp_password = $rabbit_hash['password']
|
||||
$amqp_user = $rabbit_hash['user']
|
||||
$service_endpoint = $management_vip
|
||||
$ceilometer_user_password = $ceilometer_hash['user_password']
|
||||
$ceilometer_metering_secret = $ceilometer_hash['metering_secret']
|
||||
|
||||
if ($ceilometer_enabled) {
|
||||
class { 'openstack::ceilometer':
|
||||
verbose => $verbose,
|
||||
debug => $debug,
|
||||
use_syslog => $use_syslog,
|
||||
syslog_log_facility => $syslog_log_facility,
|
||||
amqp_hosts => $amqp_hosts,
|
||||
amqp_user => $amqp_user,
|
||||
amqp_password => $amqp_password,
|
||||
keystone_host => $service_endpoint,
|
||||
keystone_password => $ceilometer_user_password,
|
||||
on_compute => true,
|
||||
metering_secret => $ceilometer_metering_secret,
|
||||
}
|
||||
|
||||
# We need to restart nova-compute service in orderto apply new settings
|
||||
include ::nova::params
|
||||
service { 'nova-compute':
|
||||
ensure => 'running',
|
||||
name => $::nova::params::compute_service_name,
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
require File.join File.dirname(__FILE__), '../test_common.rb'
|
||||
|
||||
PORT = 8777
|
||||
|
||||
PROCESSES = %w(
|
||||
ceilometer-agent-compute
|
||||
)
|
||||
|
||||
class CeilometerComputePostTest < Test::Unit::TestCase
|
||||
|
||||
def test_ceilometer_processes_running
|
||||
PROCESSES.each do |process|
|
||||
assert TestCommon::Process.running?(process), "'#{process}' is not running!"
|
||||
end
|
||||
end
|
||||
|
||||
end
|
@ -0,0 +1,12 @@
|
||||
require File.join File.dirname(__FILE__), '../test_common.rb'
|
||||
|
||||
class CeilometerComputePreTest < Test::Unit::TestCase
|
||||
|
||||
def test_amqp_accessible
|
||||
host = TestCommon::Settings.amqp_hosts.split(':').first
|
||||
user = TestCommon::Settings.rabbit['user']
|
||||
password = TestCommon::Settings.rabbit['password']
|
||||
assert TestCommon::AMQP.connection?(user, password, host), 'Cannot connect to AMQP server!'
|
||||
end
|
||||
|
||||
end
|
@ -0,0 +1,99 @@
|
||||
notice('ceilometer/controller.pp')
|
||||
|
||||
$verbose = hiera('verbose', true)
|
||||
$debug = hiera('debug', false)
|
||||
$use_syslog = hiera('use_syslog', true)
|
||||
$syslog_log_facility = hiera('syslog_log_facility_ceilometer', 'LOG_LOCAL0')
|
||||
$nodes_hash = hiera('nodes')
|
||||
$storage_hash = hiera('storage')
|
||||
$amqp_hosts = hiera('amqp_hosts')
|
||||
$rabbit_hash = hiera('rabbit_hash')
|
||||
$management_vip = hiera('management_vip')
|
||||
$internal_address = hiera('internal_address')
|
||||
|
||||
$default_ceilometer_hash = {
|
||||
'enabled' => false,
|
||||
'db_password' => 'ceilometer',
|
||||
'user_password' => 'ceilometer',
|
||||
'metering_secret' => 'ceilometer',
|
||||
}
|
||||
|
||||
$default_mongo_hash = {
|
||||
'enabled' => false,
|
||||
}
|
||||
|
||||
$ceilometer_hash = hiera('ceilometer', $default_ceilometer_hash)
|
||||
$mongo_hash = hiera('mongo', $default_mongo_hash)
|
||||
|
||||
if $mongo_hash['enabled'] and $ceilometer_hash['enabled'] {
|
||||
$exteranl_mongo_hash = hiera('external_mongo')
|
||||
$ceilometer_db_user = $exteranl_mongo_hash['mongo_user']
|
||||
$ceilometer_db_password = $exteranl_mongo_hash['mongo_password']
|
||||
$ceilometer_db_dbname = $exteranl_mongo_hash['mongo_db_name']
|
||||
$external_mongo = true
|
||||
} else {
|
||||
$ceilometer_db_user = 'ceilometer'
|
||||
$ceilometer_db_password = $ceilometer_hash['db_password']
|
||||
$ceilometer_db_dbname = 'ceilometer'
|
||||
$external_mongo = false
|
||||
$exteranl_mongo_hash = {}
|
||||
}
|
||||
|
||||
$ceilometer_enabled = $ceilometer_hash['enabled']
|
||||
$ceilometer_user_password = $ceilometer_hash['user_password']
|
||||
$ceilometer_metering_secret = $ceilometer_hash['metering_secret']
|
||||
$ceilometer_db_type = 'mongodb'
|
||||
$swift_rados_backend = $storage_hash['objects_ceph']
|
||||
$amqp_password = $rabbit_hash['password']
|
||||
$amqp_user = $rabbit_hash['user']
|
||||
$rabbit_ha_queues = true
|
||||
$service_endpoint = $management_vip
|
||||
$api_bind_address = $internal_address
|
||||
$ha_mode = true
|
||||
|
||||
if $ceilometer_hash['enabled'] {
|
||||
if $external_mongo {
|
||||
$mongo_hosts = $exteranl_mongo_hash['hosts_ip']
|
||||
if $exteranl_mongo_hash['mongo_replset'] {
|
||||
$mongo_replicaset = $exteranl_mongo_hash['mongo_replset']
|
||||
} else {
|
||||
$mongo_replicaset = undef
|
||||
}
|
||||
} else {
|
||||
$mongo_hosts = mongo_hosts($nodes_hash)
|
||||
if size(mongo_hosts($nodes_hash, 'array', 'mongo')) > 1 {
|
||||
$mongo_replicaset = 'ceilometer'
|
||||
} else {
|
||||
$mongo_replicaset = undef
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
|
||||
if ($ceilometer_enabled) {
|
||||
class { 'openstack::ceilometer':
|
||||
verbose => $verbose,
|
||||
debug => $debug,
|
||||
use_syslog => $use_syslog,
|
||||
syslog_log_facility => $syslog_log_facility,
|
||||
db_type => $ceilometer_db_type,
|
||||
db_host => $mongo_hosts,
|
||||
db_user => $ceilometer_db_user,
|
||||
db_password => $ceilometer_db_password,
|
||||
db_dbname => $ceilometer_db_dbname,
|
||||
swift_rados_backend => $swift_rados_backend,
|
||||
metering_secret => $ceilometer_metering_secret,
|
||||
amqp_hosts => $amqp_hosts,
|
||||
amqp_user => $amqp_user,
|
||||
amqp_password => $amqp_password,
|
||||
rabbit_ha_queues => $rabbit_ha_queues,
|
||||
keystone_host => $service_endpoint,
|
||||
keystone_password => $ceilometer_user_password,
|
||||
host => $api_bind_address,
|
||||
ha_mode => $ha_mode,
|
||||
on_controller => true,
|
||||
ext_mongo => $external_mongo,
|
||||
mongo_replicaset => $mongo_replicaset,
|
||||
}
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
require File.join File.dirname(__FILE__), '../test_common.rb'
|
||||
|
||||
PORT = 8777
|
||||
|
||||
PROCESSES = %w(
|
||||
ceilometer-collector
|
||||
ceilometer-agent-central
|
||||
ceilometer-agent-notification
|
||||
ceilometer-alarm-notifier
|
||||
ceilometer-alarm-evaluator
|
||||
ceilometer-api
|
||||
)
|
||||
|
||||
if TestCommon::Facts.osfamily == 'RedHat'
|
||||
PACEMAKER_SERVICES = %w(
|
||||
p_openstack-ceilometer-central
|
||||
p_openstack-ceilometer-alarm-evaluator
|
||||
)
|
||||
elsif TestCommon::Facts.osfamily == 'Debian'
|
||||
PACEMAKER_SERVICES = %w(
|
||||
p_ceilometer-agent-central
|
||||
p_ceilometer-alarm-evaluator
|
||||
)
|
||||
end
|
||||
|
||||
class CeilometerControllerPostTest < Test::Unit::TestCase
|
||||
|
||||
def test_ceilometer_processes_running
|
||||
PROCESSES.each do |process|
|
||||
assert TestCommon::Process.running?(process), "'#{process}' is not running!"
|
||||
end
|
||||
end
|
||||
|
||||
def test_haproxy_ceilometer_backend_online
|
||||
assert TestCommon::HAProxy.backend_up?('ceilometer'), "HAProxy backend 'ceilometer' is not online!"
|
||||
end
|
||||
|
||||
def test_ceilometer_meter_list_run
|
||||
cmd = '. /root/openrc && ceilometer meter-list'
|
||||
assert TestCommon::Process.run_successful?(cmd), "Could not run '#{cmd}'!"
|
||||
end
|
||||
|
||||
def test_pacemaker_services_running
|
||||
return unless PACEMAKER_SERVICES
|
||||
PACEMAKER_SERVICES.each do |service|
|
||||
assert TestCommon::Pacemaker.primitive_started?(service), "Pacemaker service '#{service}' is not running!"
|
||||
end
|
||||
end
|
||||
|
||||
end
|
@ -0,0 +1,15 @@
|
||||
require File.join File.dirname(__FILE__), '../test_common.rb'
|
||||
|
||||
BACKEND = 'ceilometer'
|
||||
|
||||
class CeilometerControllerPreTest < Test::Unit::TestCase
|
||||
|
||||
def test_ceilometer_backend_present
|
||||
assert TestCommon::HAProxy.backend_present?(BACKEND), "There is no '#{BACKEND}' HAProxy backend!"
|
||||
end
|
||||
|
||||
def test_amqp_accessible
|
||||
assert TestCommon::AMQP.connection?, 'Cannot connect to AMQP server!'
|
||||
end
|
||||
|
||||
end
|
@ -0,0 +1,27 @@
|
||||
- id: ceilometer-controller
|
||||
type: puppet
|
||||
groups: [primary-controller, controller]
|
||||
required_for: [openstack-controller, swift]
|
||||
requires: [mongo, primary-mongo, openstack-haproxy, database]
|
||||
parameters:
|
||||
puppet_manifest: /etc/puppet/modules/osnailyfacter/modular/ceilometer/controller.pp
|
||||
puppet_modules: /etc/puppet/modules
|
||||
timeout: 3600
|
||||
test_pre:
|
||||
cmd: ruby /etc/puppet/modules/osnailyfacter/modular/ceilometer/controller_pre.rb
|
||||
test_post:
|
||||
cmd: ruby /etc/puppet/modules/osnailyfacter/modular/ceilometer/controller_post.rb
|
||||
|
||||
- id: ceilometer-compute
|
||||
type: puppet
|
||||
groups: [compute]
|
||||
required_for: [deploy_end]
|
||||
requires: [ceilometer-controller, top-role-compute]
|
||||
parameters:
|
||||
puppet_manifest: /etc/puppet/modules/osnailyfacter/modular/ceilometer/compute.pp
|
||||
puppet_modules: /etc/puppet/modules
|
||||
timeout: 3600
|
||||
test_pre:
|
||||
cmd: ruby /etc/puppet/modules/osnailyfacter/modular/ceilometer/compute_pre.rb
|
||||
test_post:
|
||||
cmd: ruby /etc/puppet/modules/osnailyfacter/modular/ceilometer/compute_post.rb
|
@ -224,7 +224,7 @@ if $network_provider == 'nova' {
|
||||
# We need to restart nova-compute service in orderto apply new settings
|
||||
service { 'nova-compute':
|
||||
ensure => 'running',
|
||||
name => $::nova::params::compute_package_name,
|
||||
name => $::nova::params::compute_service_name,
|
||||
}
|
||||
Nova_config<| |> ~> Service['nova-compute']
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user