7
5
import ceilometer_utils
6
import socket.gethostname as get_host_name
8
from charmhelpers.fetch import (
9
apt_install, filter_installed_packages,
13
from charmhelpers.core.hookenv import (
18
Hooks, UnregisteredHookError,
21
from charmhelpers.core.host import (
25
from charmhelpers.contrib.openstack.utils import configure_installation_source
11
utils.configure_source()
12
utils.install(*ceilometer_utils.CEILOMETER_AGENT_PACKAGES)
13
ceilometer_utils.modify_config_file(ceilometer_utils.NOVA_CONF,
14
ceilometer_utils.NOVA_SETTINGS)
32
configure_installation_source(config('openstack-origin'))
33
apt_update(fatal=True)
34
apt_install(filter_installed_packages(ceilometer_utils.CEILOMETER_AGENT_PACKAGES),
16
port = ceilometer_utils.CEILOMETER_PORT
37
# TODO(jamespage): Locally scoped relation for nova and others
38
#ceilometer_utils.modify_config_file(ceilometer_utils.NOVA_CONF,
39
# ceilometer_utils.NOVA_SETTINGS)
21
for relid in utils.relation_ids('ceilometer-service'):
22
for unit in utils.relation_list(relid):
43
for relid in relation_ids('ceilometer-service'):
44
for unit in related_units(relid):
24
"rabbit_host": utils.relation_get('rabbit_host', unit, relid),
46
"rabbit_host": relation_get('rabbit_host', unit, relid),
25
47
"rabbit_virtual_host": ceilometer_utils.RABBIT_VHOST,
26
48
"rabbit_userid": ceilometer_utils.RABBIT_USER,
27
"rabbit_password": utils.relation_get('rabbit_password', unit, relid),
28
"keystone_os_username": utils.relation_get('keystone_os_username', unit, relid),
29
"keystone_os_password": utils.relation_get('keystone_os_password', unit, relid),
30
"keystone_os_tenant": utils.relation_get('keystone_os_tenant', unit, relid),
31
"keystone_host": utils.relation_get('keystone_host', unit, relid),
32
"keystone_port": utils.relation_get('keystone_port', unit, relid),
33
"metering_secret": utils.relation_get('metering_secret', unit, relid)
49
"rabbit_password": relation_get('rabbit_password',
51
"keystone_os_username": relation_get('keystone_os_username',
53
"keystone_os_password": relation_get('keystone_os_password',
55
"keystone_os_tenant": relation_get('keystone_os_tenant',
57
"keystone_host": relation_get('keystone_host', unit, relid),
58
"keystone_port": relation_get('keystone_port', unit, relid),
59
"metering_secret": relation_get('metering_secret', unit, relid)
35
61
if None not in conf.itervalues():
39
66
def render_ceilometer_conf(context):
40
67
if (context and os.path.exists(ceilometer_utils.CEILOMETER_CONF)):
42
68
context['service_port'] = ceilometer_utils.CEILOMETER_PORT
43
context['ceilometer_host'] = utils.get_unit_hostname()
69
context['ceilometer_host'] = get_host_name()
45
71
with open(ceilometer_utils.CEILOMETER_CONF, "w") as conf:
46
conf.write(utils.render_template(
72
conf.write(ceilometer_utils.render_template(
47
73
os.path.basename(ceilometer_utils.CEILOMETER_CONF), context))
49
utils.restart(*ceilometer_utils.CEILOMETER_COMPUTE_SERVICES)
75
for svc in ceilometer_utils.CEILOMETER_COMPUTE_SERVICES:
81
@hooks.hook("ceilometer-service-relation-changed")
54
82
def ceilometer_changed():
55
83
# check if we have rabbit and keystone already set
56
84
context = get_conf()
58
render_ceilometer_conf(context)
86
render_ceilometer_conf(context)
61
utils.juju_log("INFO", "ceilometer: rabbit and keystone " +
89
log("ceilometer: rabbit and keystone "
62
90
"credentials not yet received from peer.")
67
"ceilometer-service-relation-changed": ceilometer_changed
93
if __name__ == '__main__':
95
hooks.execute(sys.argv)
96
except UnregisteredHookError as e:
97
log('Unknown hook {} - skipping.'.format(e))