Add Aodh event-alarm support
'alarm-listener' in Aodh would be deployed if you use charm-aodh. It expects that ceilometer publish events with 'alarm.all' topic, then it can evaluate alarm criteria pre-configured by users. This patch makes ceilometer publish events for event-driven alarm evaluation in Aodh. Change-Id: Id536c9d847ac9c08b9d7d309b4639606e6860a17
This commit is contained in:
parent
f3226f8dde
commit
3838010aaf
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
sources:
|
||||
- name: event_source
|
||||
events:
|
||||
- "*"
|
||||
sinks:
|
||||
- event_sink
|
||||
sinks:
|
||||
- name: event_sink
|
||||
transformers:
|
||||
publishers:
|
||||
- notifier://
|
||||
- notifier://?topic=alarm.all
|
|
@ -184,6 +184,7 @@ def config_changed():
|
|||
if openstack_upgrade_available('ceilometer-common'):
|
||||
status_set('maintenance', 'Upgrading to new OpenStack release')
|
||||
do_openstack_upgrade(CONFIGS)
|
||||
install_event_pipeline_setting()
|
||||
update_nrpe_config()
|
||||
CONFIGS.write_all()
|
||||
# NOTE(jamespage): Drop when charm switches to apache2+mod_wsgi
|
||||
|
@ -204,6 +205,14 @@ def config_changed():
|
|||
ha_joined(rid)
|
||||
|
||||
|
||||
def install_event_pipeline_setting():
|
||||
src_file = 'files/event_pipeline_alarm.yaml'
|
||||
dest_file = '/etc/ceilometer/event_pipeline_alarm.yaml'
|
||||
if not os.path.isdir(os.path.dirname(dest_file)):
|
||||
os.makedirs(os.path.dirname(dest_file))
|
||||
shutil.copy(src_file, dest_file)
|
||||
|
||||
|
||||
@hooks.hook('upgrade-charm')
|
||||
@harden()
|
||||
def upgrade_charm():
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
debug = {{ debug }}
|
||||
verbose = {{ verbose }}
|
||||
use_syslog = {{ use_syslog }}
|
||||
event_pipeline_cfg_file = /etc/ceilometer/event_pipeline_alarm.yaml
|
||||
|
||||
[api]
|
||||
port = {{ port }}
|
||||
|
|
|
@ -147,44 +147,51 @@ class CeilometerHooksTest(CharmTestCase):
|
|||
self.assertTrue(changed.called)
|
||||
self.assertTrue(install.called)
|
||||
|
||||
@patch.object(hooks, 'install_event_pipeline_setting')
|
||||
@patch('charmhelpers.core.hookenv.config')
|
||||
@patch.object(hooks, 'ceilometer_joined')
|
||||
@patch.object(hooks, 'install_ceilometer_ocf')
|
||||
def test_config_changed_no_upgrade(self, ocf,
|
||||
joined, mock_config):
|
||||
joined, mock_config, event_pipe):
|
||||
self.openstack_upgrade_available.return_value = False
|
||||
hooks.hooks.execute(['hooks/config-changed'])
|
||||
self.openstack_upgrade_available.\
|
||||
assert_called_with('ceilometer-common')
|
||||
self.assertFalse(self.do_openstack_upgrade.called)
|
||||
self.assertTrue(event_pipe.called)
|
||||
self.assertTrue(self.CONFIGS.write_all.called)
|
||||
self.assertTrue(joined.called)
|
||||
self.assertTrue(self.reload_systemd.called)
|
||||
self.assertTrue(ocf.called)
|
||||
|
||||
@patch.object(hooks, 'install_event_pipeline_setting')
|
||||
@patch('charmhelpers.core.hookenv.config')
|
||||
@patch.object(hooks, 'ceilometer_joined')
|
||||
@patch.object(hooks, 'install_ceilometer_ocf')
|
||||
def test_config_changed_upgrade(self, ocf,
|
||||
joined, mock_config):
|
||||
joined, mock_config, event_pipe):
|
||||
self.openstack_upgrade_available.return_value = True
|
||||
hooks.hooks.execute(['hooks/config-changed'])
|
||||
self.openstack_upgrade_available.\
|
||||
assert_called_with('ceilometer-common')
|
||||
self.assertTrue(self.do_openstack_upgrade.called)
|
||||
self.assertTrue(event_pipe.called)
|
||||
self.assertTrue(self.CONFIGS.write_all.called)
|
||||
self.assertTrue(joined.called)
|
||||
self.assertTrue(self.reload_systemd.called)
|
||||
self.assertTrue(ocf.called)
|
||||
|
||||
@patch.object(hooks, 'install_event_pipeline_setting')
|
||||
@patch.object(hooks, 'install_ceilometer_ocf')
|
||||
def test_config_changed_with_openstack_upgrade_action(self, ocf):
|
||||
def test_config_changed_with_openstack_upgrade_action(self, ocf,
|
||||
event_pipe):
|
||||
self.openstack_upgrade_available.return_value = True
|
||||
self.test_config.set('action-managed-upgrade', True)
|
||||
|
||||
hooks.hooks.execute(['hooks/config-changed'])
|
||||
|
||||
self.assertFalse(self.do_openstack_upgrade.called)
|
||||
self.assertTrue(event_pipe.called)
|
||||
self.assertTrue(ocf.called)
|
||||
|
||||
@patch.object(hooks, 'canonical_url')
|
||||
|
|
Loading…
Reference in New Issue