fixes due to review

This commit is contained in:
yolanda.robla@canonical.com 2013-02-14 13:58:43 +01:00
parent 55e8a0214a
commit 824c4219c9
6 changed files with 57 additions and 59 deletions

7
README.md Normal file
View File

@ -0,0 +1,7 @@
Overview
--------
This charm provides the Ceilometer Compute Agent for OpenStack.
It must be deployed in each nova-compute node.
See Ceilometer charm (lp:~yolanda.robla/charms/precise/ceilometer/trunk)
for usage details.

View File

@ -1,6 +1,11 @@
import os
import uuid
NOVA_CONF="/etc/nova/nova.conf"
CEILOMETER_CONF="/etc/ceilometer/ceilometer.conf"
NOVA_CONF = "/etc/nova/nova.conf"
CEILOMETER_CONF = "/etc/ceilometer/ceilometer.conf"
CEILOMETER_COMPUTE_SERVICES = ['ceilometer-agent-compute']
CEILOMETER_PACKAGES = ['ceilometer-common', 'ceilometer-agent-compute']
NOVA_SETTINGS = ['instance_usage_audit=True',
'instance_usage_audit_period=hour',
'notification_driver=nova.openstack.common.notifier.rabbit_notifier',
'notification_driver=ceilometer.compute.nova_notifier']

View File

@ -6,50 +6,56 @@ import os
import utils
import ceilometer_utils
def install():
utils.configure_source()
packages = ['ceilometer-common', 'ceilometer-agent-compute']
utils.install(*packages)
def container_joined():
utils.modify_config_file(ceilometer_utils.NOVA_CONF)
utils.install(*ceilometer_utils.CEILOMETER_PACKAGES)
utils.modify_config_file(ceilometer_utils.NOVA_CONF,
*ceilometer_utils.NOVA_SETTINGS)
utils.restart(*ceilometer_utils.CEILOMETER_COMPUTE_SERVICES)
def ceilometer_joined():
pass
def get_ceilometer_conf():
for relid in utils.relation_ids('ceilometer-service'):
for unit in utils.relation_list(relid):
conf = {
'metering_secret': utils.relation_get('metering_secret', unit, relid),
'metering_secret': utils.relation_get('metering_secret',
unit, relid),
'rabbit_host': utils.relation_get('rabbit_host', unit, relid),
'rabbit_virtual_host': utils.relation_get('rabbit_virtual_host', unit, relid),
'rabbit_userid': utils.relation_get('rabbit_userid', unit, relid),
'rabbit_password': utils.relation_get('rabbit_password', unit, relid),
'keystone_os_username': utils.relation_get('keystone_os_username', unit, relid),
'keystone_os_password': utils.relation_get('keystone_os_password', unit, relid),
'keystone_os_tenant': utils.relation_get('keystone_os_tenant', unit, relid),
'keystone_host': utils.relation_get('keystone_host', unit, relid),
'keystone_port': utils.relation_get('keystone_port', unit, relid)
'rabbit_virtual_host': utils.relation_get(
'rabbit_virtual_host', unit, relid),
'rabbit_userid': utils.relation_get('rabbit_userid',
unit, relid),
'rabbit_password': utils.relation_get('rabbit_password',
unit, relid),
'keystone_os_username': utils.relation_get(
'keystone_os_username', unit, relid),
'keystone_os_password': utils.relation_get(
'keystone_os_password', unit, relid),
'keystone_os_tenant': utils.relation_get('keystone_os_tenant',
unit, relid),
'keystone_host': utils.relation_get('keystone_host',
unit, relid),
'keystone_port': utils.relation_get('keystone_port',
unit, relid)
}
if None not in conf.itervalues():
return conf
return None
def ceilometer_changed():
# read settings
context = get_ceilometer_conf()
if context:
with open(ceilometer_utils.CEILOMETER_CONF, "w") as conf:
conf.write(utils.render_template(os.path.basename(ceilometer_utils.CEILOMETER_CONF), context))
conf.write(utils.render_template(os.path.basename(
ceilometer_utils.CEILOMETER_CONF), context))
utils.restart(*ceilometer_utils.CEILOMETER_COMPUTE_SERVICES)
utils.do_hooks({
"install": install,
"container-relation-joined": container_joined,
"ceilometer-service-relation-joined": ceilometer_joined,
"ceilometer-service-relation-changed": ceilometer_changed
})
sys.exit(0)

View File

@ -11,7 +11,7 @@ ubuntu_openstack_release = {
'oneiric': 'diablo',
'precise': 'essex',
'quantal': 'folsom',
'raring' : 'grizzly'
'raring': 'grizzly'
}
@ -67,6 +67,7 @@ def get_os_codename_install_source(src):
if v in src:
return v
def get_os_codename_version(vers):
'''Determine OpenStack codename from version number.'''
try:
@ -142,7 +143,7 @@ def configure_installation_source(rel):
subprocess.check_call(["add-apt-repository", "-y", src])
elif rel[:3] == "deb":
l = len(rel.split('|'))
if l == 2:
if l == 2:
src, key = rel.split('|')
juju_log("Importing PPA key from keyserver for %s" % src)
_import_key(key)
@ -166,7 +167,8 @@ def configure_installation_source(rel):
if ca_rel == 'folsom/staging':
# staging is just a regular PPA.
cmd = 'add-apt-repository -y ppa:ubuntu-cloud-archive/folsom-staging'
cmd = 'add-apt-repository -y '\
'ppa:ubuntu-cloud-archive/folsom-staging'
subprocess.check_call(cmd.split(' '))
return

View File

@ -134,26 +134,21 @@ def get_os_version(package=None):
else:
return None
def modify_config_file(nova_conf):
f = open(nova_conf, 'r')
data = f.readlines()
f.close()
def modify_config_file(nova_conf, values):
try:
config = ConfigParser.ConfigParser()
f = open(nova_conf, "r+")
config.readfp(f)
# if lines are not in the script, add there
contents = ['instance_usage_audit=True', 'instance_usage_audit_period=hour', 'notification_driver=nova.openstack.common.notifier.rabbit_notifier',
'notification_driver=ceilometer.compute.nova_notifier']
for content in contents:
found = False
for line in data:
if content in line:
found = True
break
# add needed config lines - tuple with section,key,value
for value in values:
config.set(value[0], value[1], value[2])
config.write()
# not found it, write and continue
if not found:
f1 = open(nova_conf, 'a')
f1.write(content+"\n")
f1.close()
f.close()
except IOError as e:
juju_log('ERROR', 'nova config file must exist at this point')
sys.exit(1)
def relation_ids(relation):
cmd = [

17
readme
View File

@ -1,17 +0,0 @@
Overview
--------
This charm provides the Ceilometer service for OpenStack. It is intended to
be used alongside the other OpenStack components, starting with the Folsom
release.
Ceilometer is made up of 2 separate services: an API service, and a collector
service. This charm allows them to be deployed in different
combination, depending on user preference and requirements.
This charm was developed to support deploying Folsom on both
Ubuntu Quantal and Ubuntu Precise. Since Ceilometer is only available for
Ubuntu 12.04 via the Ubuntu Cloud Archive, deploying this charm to a
Precise machine will by default install Ceilometer and its dependencies from
the Cloud Archive.