added mongo and rabbit relationships
This commit is contained in:
parent
edd83e2053
commit
68a730cec6
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
hooks.py
|
|
@ -0,0 +1 @@
|
|||
hooks.py
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}}
|
||||
|
|
Loading…
Reference in New Issue