fixes due to review
This commit is contained in:
parent
55e8a0214a
commit
824c4219c9
|
@ -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.
|
|
@ -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']
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
17
readme
|
@ -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.
|
||||
|
Loading…
Reference in New Issue