Fix service subscriptions and definitions, add package overrides

Some things were a little off wrt. the way we usually do stuff.  This
change fixes the following:

- package resources take the override settings from node attributes
- all services subscribe to their config file
- the service definitions include restart and status actions, and
  enable services

Change-Id: I3d4a2f9247dda34a35897fdfe08d9e8cf27556b8
Closes-Bug: #1303777
This commit is contained in:
Stephan Renatus 2014-04-07 14:51:28 +02:00
parent 0bc923e107
commit 5c557b7153
17 changed files with 134 additions and 37 deletions

View File

@ -69,7 +69,8 @@ when 'suse' # :pragma-foodcritic: ~FC024 - won't fix this
'api_service' => 'openstack-ceilometer-api',
'client_packages' => ['python-ceilometerclient'],
'collector_packages' => ['openstack-ceilometer-collector'],
'collector_service' => 'openstack-ceilometer-collector'
'collector_service' => 'openstack-ceilometer-collector',
'package_overrides' => ''
}
when 'fedora', 'redhat', 'centos'
@ -92,7 +93,8 @@ when 'fedora', 'redhat', 'centos'
'api_service' => 'openstack-ceilometer-api',
'client_packages' => ['python-ceilometerclient'],
'collector_packages' => ['openstack-ceilometer-collector'],
'collector_service' => 'openstack-ceilometer-collector'
'collector_service' => 'openstack-ceilometer-collector',
'package_overrides' => ''
}
when 'ubuntu'
@ -114,6 +116,7 @@ when 'ubuntu'
'api_service' => 'ceilometer-api',
'client_packages' => ['python-ceilometerclient'],
'collector_packages' => ['ceilometer-collector', 'python-mysqldb'],
'collector_service' => 'ceilometer-collector'
'collector_service' => 'ceilometer-collector',
'package_overrides' => "-o Dpkg::Options::='--force-confold' -o Dpkg::Options::='--force-confdef'"
}
end

View File

@ -23,9 +23,15 @@ include_recipe 'openstack-telemetry::common'
platform = node['openstack']['telemetry']['platform']
platform['agent_central_packages'].each do |pkg|
package pkg
package pkg do
options platform['package_overrides']
end
end
service platform['agent_central_service'] do
action :start
service 'ceilometer-agent-central' do
service_name platform['agent_central_service']
supports status: true, restart: true
subscribes :restart, "template[#{node['openstack']['telemetry']['conf']}]"
action [:enable, :start]
end

View File

@ -23,7 +23,9 @@ include_recipe 'openstack-telemetry::common'
platform = node['openstack']['telemetry']['platform']
platform['agent_compute_packages'].each do |pkg|
package pkg
package pkg do
options platform['package_overrides']
end
end
# temp fix for compute-agent init not installing properly ubuntu
@ -36,6 +38,10 @@ if node['platform'] == 'ubuntu'
end
end
service platform['agent_compute_service'] do
action :start
service 'ceilometer-agent-compute' do
service_name platform['agent_compute_service']
supports status: true, restart: true
subscribes :restart, "template[#{node['openstack']['telemetry']['conf']}]"
action [:enable, :start]
end

View File

@ -22,10 +22,15 @@ include_recipe 'openstack-telemetry::common'
platform = node['openstack']['telemetry']['platform']
platform['agent_notification_packages'].each do |pkg|
package pkg
package pkg do
options platform['package_overrides']
end
end
service platform['agent_notification_service'] do
service 'ceilometer-agent-notification' do
service_name platform['agent_notification_service']
supports status: true, restart: true
action :start
subscribes :restart, "template[#{node['openstack']['telemetry']['conf']}]"
action [:enable, :start]
end

View File

@ -22,10 +22,15 @@ include_recipe 'openstack-telemetry::common'
platform = node['openstack']['telemetry']['platform']
platform['alarm_evaluator_packages'].each do |pkg|
package pkg
package pkg do
options platform['package_overrides']
end
end
service platform['alarm_evaluator_service'] do
service 'ceilometer-agent-evaluator' do
service_name platform['alarm_evaluator_service']
supports status: true, restart: true
action :start
subscribes :restart, "template[#{node['openstack']['telemetry']['conf']}]"
action [:enable, :start]
end

View File

@ -22,10 +22,15 @@ include_recipe 'openstack-telemetry::common'
platform = node['openstack']['telemetry']['platform']
platform['alarm_notifier_packages'].each do |pkg|
package pkg
package pkg do
options platform['package_overrides']
end
end
service platform['alarm_notifier_service'] do
service 'ceilometer-alarm-notifier' do
service_name platform['alarm_notifier_service']
supports status: true, restart: true
action :start
subscribes :restart, "template[#{node['openstack']['telemetry']['conf']}]"
action [:enable, :start]
end

View File

@ -30,9 +30,15 @@ end
platform = node['openstack']['telemetry']['platform']
platform['api_packages'].each do |pkg|
package pkg
package pkg do
options platform['package_overrides']
end
end
service platform['api_service'] do
action :start
service 'ceilometer-api' do
service_name platform['api_service']
supports status: true, restart: true
subscribes :restart, "template[#{node['openstack']['telemetry']['conf']}]"
action [:enable, :start]
end

View File

@ -22,10 +22,10 @@ class ::Chef::Recipe # rubocop:disable Documentation
include ::Openstack
end
platform_options = node['openstack']['telemetry']['platform']
platform_options['client_packages'].each do |pkg|
platform = node['openstack']['telemetry']['platform']
platform['client_packages'].each do |pkg|
package pkg do
options platform_options['package_overrides']
options platform['package_overrides']
action :upgrade
end

View File

@ -32,7 +32,9 @@ end
platform = node['openstack']['telemetry']['platform']
platform['collector_packages'].each do |pkg|
package pkg
package pkg do
options platform['package_overrides']
end
end
# temp fix for collector init not installing properly ubuntu
@ -45,6 +47,10 @@ if node['platform'] == 'ubuntu'
end
end
service platform['collector_service'] do
action :start
service 'ceilometer-collector' do
service_name platform['collector_service']
supports status: true, restart: true
subscribes :restart, "template[#{node['openstack']['telemetry']['conf']}]"
action [:enable, :start]
end

View File

@ -38,7 +38,9 @@ platform["#{db_type}_python_packages"].each do |pkg|
end
platform['common_packages'].each do |pkg|
package pkg
package pkg do
options platform['package_overrides']
end
end
mq_service_type = node['openstack']['mq']['telemetry']['service_type']

View File

@ -15,8 +15,15 @@ describe 'openstack-telemetry::agent-central' do
expect(chef_run).to install_package 'ceilometer-agent-central'
end
it 'starts agent-central service' do
it 'starts and enables the agent-central service' do
expect(chef_run).to enable_service('ceilometer-agent-central')
expect(chef_run).to start_service('ceilometer-agent-central')
end
describe 'ceilometer-agent-central' do
it 'subscribes to its config file' do
expect(chef_run.service('ceilometer-agent-central')).to subscribe_to('template[/etc/ceilometer/ceilometer.conf]').delayed
end
end
end
end

View File

@ -15,8 +15,15 @@ describe 'openstack-telemetry::agent-compute' do
expect(chef_run).to install_package 'ceilometer-agent-compute'
end
it 'starts ceilometer-agent-compute service' do
it 'enables and starts the ceilometer-agent-compute service' do
expect(chef_run).to enable_service('ceilometer-agent-compute')
expect(chef_run).to start_service('ceilometer-agent-compute')
end
describe 'ceilometer-agent-compute' do
it 'subscribes to its config file' do
expect(chef_run.service('ceilometer-agent-compute')).to subscribe_to('template[/etc/ceilometer/ceilometer.conf]').delayed
end
end
end
end

View File

@ -15,8 +15,15 @@ describe 'openstack-telemetry::agent-notification' do
expect(chef_run).to install_package 'ceilometer-agent-notification'
end
it 'starts ceilometer-agent-notification service' do
it 'enables and starts ceilometer-agent-notification service' do
expect(chef_run).to enable_service('ceilometer-agent-notification')
expect(chef_run).to start_service('ceilometer-agent-notification')
end
describe 'ceilometer-agent-notification' do
it 'subscribes to its config file' do
expect(chef_run.service('ceilometer-agent-notification')).to subscribe_to('template[/etc/ceilometer/ceilometer.conf]').delayed
end
end
end
end

View File

@ -15,8 +15,15 @@ describe 'openstack-telemetry::alarm-evaluator' do
expect(chef_run).to install_package 'ceilometer-alarm-evaluator'
end
it 'starts alarm-evaluator service' do
it 'starts and enables the alarm-evaluator service' do
expect(chef_run).to enable_service('ceilometer-alarm-evaluator')
expect(chef_run).to start_service('ceilometer-alarm-evaluator')
end
describe 'ceilometer-alarm-evaluator' do
it 'subscribes to its config file' do
expect(chef_run.service('ceilometer-alarm-evaluator')).to subscribe_to('template[/etc/ceilometer/ceilometer.conf]').delayed
end
end
end
end

View File

@ -15,8 +15,15 @@ describe 'openstack-telemetry::alarm-notifier' do
expect(chef_run).to install_package 'ceilometer-alarm-notifier'
end
it 'starts alarm-notifier service' do
it 'starts and enables the alarm-notifier service' do
expect(chef_run).to enable_service('ceilometer-alarm-notifier')
expect(chef_run).to start_service('ceilometer-alarm-notifier')
end
describe 'ceilometer-alarm-notifier' do
it 'subscribes to its config file' do
expect(chef_run.service('ceilometer-alarm-notifier')).to subscribe_to('template[/etc/ceilometer/ceilometer.conf]').delayed
end
end
end
end

View File

@ -19,12 +19,19 @@ describe 'openstack-telemetry::api' do
)
end
it 'starts api service' do
it 'installs the api package' do
expect(chef_run).to install_package 'ceilometer-api'
end
it 'enables and starts the api service' do
expect(chef_run).to enable_service('ceilometer-api')
expect(chef_run).to start_service('ceilometer-api')
end
it 'starts api service' do
expect(chef_run).to start_service('ceilometer-api')
describe 'ceilometer-api' do
it 'subscribes to its config file' do
expect(chef_run.service('ceilometer-api')).to subscribe_to('template[/etc/ceilometer/ceilometer.conf]').delayed
end
end
end
end

View File

@ -11,6 +11,10 @@ describe 'openstack-telemetry::collector' do
include_context 'telemetry-stubs'
include_examples 'expect-runs-common-recipe'
it 'installs the collector package' do
expect(chef_run).to install_package 'ceilometer-collector'
end
it 'executes ceilometer dbsync' do
command = 'ceilometer-dbsync --config-file /etc/ceilometer/ceilometer.conf'
expect(chef_run).to run_execute command
@ -26,8 +30,15 @@ describe 'openstack-telemetry::collector' do
expect(chef_run).to install_package('python-mysqldb')
end
it 'starts collector service' do
it 'starts and enables the collector service' do
expect(chef_run).to enable_service('ceilometer-collector')
expect(chef_run).to start_service('ceilometer-collector')
end
describe 'ceilometer-collector' do
it 'subscribes to its config file' do
expect(chef_run.service('ceilometer-collector')).to subscribe_to('template[/etc/ceilometer/ceilometer.conf]').delayed
end
end
end
end