added mongo and rabbit relationships

This commit is contained in:
yolanda.robla@canonical.com 2013-02-07 16:05:38 +01:00
parent edd83e2053
commit 68a730cec6
8 changed files with 41 additions and 40 deletions

View File

@ -1,8 +1,13 @@
import os
import uuid
RABBIT_USER="nova"
RABBIT_VHOST="nova"
CEILOMETER_CONF="/etc/ceilometer/ceilometer.conf"
SHARED_SECRET = "/etc/ceilometer/secret.txt"
CEILOMETER_SERVICES = ['ceilometer-agent-central', 'ceilometer-collector', 'ceilometer-api']
CEILOMETER_DB="ceilometer"
def get_shared_secret():
secret = None

View File

@ -6,14 +6,10 @@ import os
import utils
import ceilometer_utils
config = config_get()
service = "ceilometer"
def install():
utils.configure_source()
packages = ['python-ceilometer', 'ceilometer-common', 'ceilometer-agent-central', 'ceilometer-collector', 'ceilometer-api']
utils.install(packages)
utils.install(*packages)
def amqp_joined():
utils.relation_set(username=ceilometer_utils.RABBIT_USER, vhost=ceilometer_utils.RABBIT_VHOST)
@ -33,21 +29,45 @@ def get_rabbit_conf():
return conf
return None
def get_db_conf():
for relid in utils.relation_ids('shared-db'):
for unit in utils.relation_list(relid):
conf = {
"db_host": utils.relation_get('hostname', unit, relid),
"db_port": utils.relation_get('port', unit, relid),
"db_name": ceilometer_utils.CEILOMETER_DB
}
if None not in conf.itervalues():
return conf
return None
def render_ceilometer_conf():
context = get_rabbit_conf()
context['metering_secret'] = ceilometer_utils.get_shared_secret()
contextdb = get_db_conf()
if (context and contextdb and os.path.exists(ceilometer_utils.CEILOMETER_CONF)):
context['metering_secret'] = ceilometer_utils.get_shared_secret()
context['db_connection'] = "mongodb://"+contextdb["db_host"]+":"+contextdb["db_port"]+"/"+contextdb["db_name"]
if (context and os.path.exists(ceilometer_utils.CEILOMETER_CONF)):
with open(ceilometer_utils.CEILOMETER_CONF, "w") as conf:
conf.write(utils.render_template(os.path.basename(ceilometer_utils.CEILOMETER_CONF), context))
def amqp_changed():
render_ceilometer_conf()
utils.restart(['ceilometer-agent-central', 'ceilometer-collector'])
utils.restart(*ceilometer_utils.CEILOMETER_SERVICES)
def db_joined():
utils.relation_set(ceilometer_database=ceilometer_utils.CEILOMETER_DB)
def db_changed():
render_ceilometer_conf()
utils.restart(*ceilometer_utils.CEILOMETER_SERVICES)
utils.do_hooks({
"install": install,
"amqp-relation-joined": amqp_joined,
"amqp-relation-changed": amqp_changed
"amqp-relation-changed": amqp_changed,
"shared-db-relation-joined": db_joined,
"shared-db-relation-changed": db_changed
})
sys.exit(0)

View File

@ -0,0 +1 @@
hooks.py

View File

@ -0,0 +1 @@
hooks.py

View File

@ -213,30 +213,8 @@ def get_host_ip(hostname=unit_get('private-address')):
pass
return None
CLUSTER_RESOURCES = {
'quantum-dhcp-agent': 'res_quantum_dhcp_agent',
'quantum-l3-agent': 'res_quantum_l3_agent'
}
HAMARKER = '/var/lib/juju/haconfigured'
def _service_ctl(service, action):
if (os.path.exists(HAMARKER) and
os.path.exists(os.path.join('/etc/init/',
'{}.override'.format(service))) and
service in CLUSTER_RESOURCES):
hostname = str(subprocess.check_output(['hostname'])).strip()
service_status = \
subprocess.check_output(['crm', 'resource', 'show',
CLUSTER_RESOURCES[service]])
# Only restart if we are the node that owns the service
if hostname in service_status:
subprocess.check_call(['crm', 'resource', action,
CLUSTER_RESOURCES[service]])
else:
subprocess.check_call(['service', service, action])
subprocess.check_call(['service', service, action])
def restart(*services):

View File

@ -8,14 +8,10 @@ description: |
framework should be easily expandable to collect for other needs. To that
effect, Ceilometer should be able to share collected data with a variety of consumers.
provides:
ceilometer-agent:
interface: ceilometer-agent
ceilometer-collector:
interface: ceilometer-collector
api-service:
endpoint:
interface: http
requires:
shared-db:
interface: mysql-shared
interface: mongodb
amqp:
interface: rabbitmq

View File

@ -1 +1 @@
8
11

View File

@ -9,4 +9,4 @@ rabbit_port=5672
rabbit_userid = {{ rabbit_userid }}
rabbit_pasword = {{ rabbit_password }}
rabbit_virtual_host = {{ rabbit_virtual_host }}
database_connection= {{mysql_connection}}
database_connection= {{db_connection}}