Files
charm-ceilometer-agent/hooks/ceilometer_hooks.py
Alex Kavanagh ed5416c6b8 Enhanced pause and resume for maintenance mode
Adds improved pause and resume unit to the charm such tha the
charm stays paused during maintenance operations.
Sync latest version of charm-helpers for maintenance mode.
Amulet test for pause/resume actions

Change-Id: I3ec090fb9eb85561834b79003606c4d4b38dc84c
2016-03-18 16:31:17 +00:00

93 lines
2.5 KiB
Python
Executable File

#!/usr/bin/python
import sys
import json
from charmhelpers.fetch import (
apt_install, filter_installed_packages,
apt_update
)
from charmhelpers.core.hookenv import (
config,
Hooks, UnregisteredHookError,
log,
is_relation_made,
relation_set,
status_set,
)
from charmhelpers.contrib.openstack.utils import (
configure_installation_source,
openstack_upgrade_available,
pausable_restart_on_change as restart_on_change,
)
from ceilometer_utils import (
restart_map,
services,
register_configs,
CEILOMETER_AGENT_PACKAGES,
NOVA_SETTINGS,
do_openstack_upgrade,
assess_status,
)
from charmhelpers.contrib.charmsupport import nrpe
hooks = Hooks()
CONFIGS = register_configs()
@hooks.hook()
def install():
origin = config('openstack-origin')
configure_installation_source(origin)
status_set('maintenance', 'Installing apt packages')
apt_update(fatal=True)
apt_install(
filter_installed_packages(CEILOMETER_AGENT_PACKAGES),
fatal=True)
@hooks.hook('nova-ceilometer-relation-joined')
def nova_ceilometer_joined():
relation_set(subordinate_configuration=json.dumps(NOVA_SETTINGS))
@hooks.hook("ceilometer-service-relation-changed",
"upgrade-charm")
@restart_on_change(restart_map())
def ceilometer_changed():
CONFIGS.write_all()
if is_relation_made('nrpe-external-master'):
update_nrpe_config()
@hooks.hook('config-changed')
@restart_on_change(restart_map(), stopstart=True)
def config_changed():
if not config('action-managed-upgrade'):
if openstack_upgrade_available('ceilometer-common'):
status_set('maintenance', 'Running openstack upgrade')
do_openstack_upgrade(CONFIGS)
if is_relation_made('nrpe-external-master'):
update_nrpe_config()
CONFIGS.write_all()
@hooks.hook('nrpe-external-master-relation-joined',
'nrpe-external-master-relation-changed')
def update_nrpe_config():
# python-dbus is used by check_upstart_job
apt_install('python-dbus')
hostname = nrpe.get_nagios_hostname()
current_unit = nrpe.get_nagios_unit_name()
nrpe_setup = nrpe.NRPE(hostname=hostname)
nrpe.add_init_service_checks(nrpe_setup, services(), current_unit)
nrpe_setup.write()
if __name__ == '__main__':
try:
hooks.execute(sys.argv)
except UnregisteredHookError as e:
log('Unknown hook {} - skipping.'.format(e))
# set_os_workload_status(CONFIGS, REQUIRED_INTERFACES)
assess_status(CONFIGS)