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 os
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
NOVA_CONF="/etc/nova/nova.conf"
|
NOVA_CONF = "/etc/nova/nova.conf"
|
||||||
CEILOMETER_CONF="/etc/ceilometer/ceilometer.conf"
|
CEILOMETER_CONF = "/etc/ceilometer/ceilometer.conf"
|
||||||
CEILOMETER_COMPUTE_SERVICES = ['ceilometer-agent-compute']
|
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 utils
|
||||||
import ceilometer_utils
|
import ceilometer_utils
|
||||||
|
|
||||||
|
|
||||||
def install():
|
def install():
|
||||||
utils.configure_source()
|
utils.configure_source()
|
||||||
packages = ['ceilometer-common', 'ceilometer-agent-compute']
|
utils.install(*ceilometer_utils.CEILOMETER_PACKAGES)
|
||||||
utils.install(*packages)
|
utils.modify_config_file(ceilometer_utils.NOVA_CONF,
|
||||||
|
*ceilometer_utils.NOVA_SETTINGS)
|
||||||
def container_joined():
|
|
||||||
utils.modify_config_file(ceilometer_utils.NOVA_CONF)
|
|
||||||
utils.restart(*ceilometer_utils.CEILOMETER_COMPUTE_SERVICES)
|
utils.restart(*ceilometer_utils.CEILOMETER_COMPUTE_SERVICES)
|
||||||
|
|
||||||
def ceilometer_joined():
|
|
||||||
pass
|
|
||||||
|
|
||||||
def get_ceilometer_conf():
|
def get_ceilometer_conf():
|
||||||
for relid in utils.relation_ids('ceilometer-service'):
|
for relid in utils.relation_ids('ceilometer-service'):
|
||||||
for unit in utils.relation_list(relid):
|
for unit in utils.relation_list(relid):
|
||||||
conf = {
|
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_host': utils.relation_get('rabbit_host', unit, relid),
|
||||||
'rabbit_virtual_host': utils.relation_get('rabbit_virtual_host', unit, relid),
|
'rabbit_virtual_host': utils.relation_get(
|
||||||
'rabbit_userid': utils.relation_get('rabbit_userid', unit, relid),
|
'rabbit_virtual_host', unit, relid),
|
||||||
'rabbit_password': utils.relation_get('rabbit_password', unit, relid),
|
'rabbit_userid': utils.relation_get('rabbit_userid',
|
||||||
'keystone_os_username': utils.relation_get('keystone_os_username', unit, relid),
|
unit, relid),
|
||||||
'keystone_os_password': utils.relation_get('keystone_os_password', unit, relid),
|
'rabbit_password': utils.relation_get('rabbit_password',
|
||||||
'keystone_os_tenant': utils.relation_get('keystone_os_tenant', unit, relid),
|
unit, relid),
|
||||||
'keystone_host': utils.relation_get('keystone_host', unit, relid),
|
'keystone_os_username': utils.relation_get(
|
||||||
'keystone_port': utils.relation_get('keystone_port', unit, relid)
|
'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():
|
if None not in conf.itervalues():
|
||||||
return conf
|
return conf
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def ceilometer_changed():
|
def ceilometer_changed():
|
||||||
# read settings
|
# read settings
|
||||||
context = get_ceilometer_conf()
|
context = get_ceilometer_conf()
|
||||||
if context:
|
if context:
|
||||||
with open(ceilometer_utils.CEILOMETER_CONF, "w") as conf:
|
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.restart(*ceilometer_utils.CEILOMETER_COMPUTE_SERVICES)
|
||||||
|
|
||||||
utils.do_hooks({
|
utils.do_hooks({
|
||||||
"install": install,
|
"install": install,
|
||||||
"container-relation-joined": container_joined,
|
|
||||||
"ceilometer-service-relation-joined": ceilometer_joined,
|
|
||||||
"ceilometer-service-relation-changed": ceilometer_changed
|
"ceilometer-service-relation-changed": ceilometer_changed
|
||||||
})
|
})
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
|
@ -11,7 +11,7 @@ ubuntu_openstack_release = {
|
||||||
'oneiric': 'diablo',
|
'oneiric': 'diablo',
|
||||||
'precise': 'essex',
|
'precise': 'essex',
|
||||||
'quantal': 'folsom',
|
'quantal': 'folsom',
|
||||||
'raring' : 'grizzly'
|
'raring': 'grizzly'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -67,6 +67,7 @@ def get_os_codename_install_source(src):
|
||||||
if v in src:
|
if v in src:
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
|
||||||
def get_os_codename_version(vers):
|
def get_os_codename_version(vers):
|
||||||
'''Determine OpenStack codename from version number.'''
|
'''Determine OpenStack codename from version number.'''
|
||||||
try:
|
try:
|
||||||
|
@ -142,7 +143,7 @@ def configure_installation_source(rel):
|
||||||
subprocess.check_call(["add-apt-repository", "-y", src])
|
subprocess.check_call(["add-apt-repository", "-y", src])
|
||||||
elif rel[:3] == "deb":
|
elif rel[:3] == "deb":
|
||||||
l = len(rel.split('|'))
|
l = len(rel.split('|'))
|
||||||
if l == 2:
|
if l == 2:
|
||||||
src, key = rel.split('|')
|
src, key = rel.split('|')
|
||||||
juju_log("Importing PPA key from keyserver for %s" % src)
|
juju_log("Importing PPA key from keyserver for %s" % src)
|
||||||
_import_key(key)
|
_import_key(key)
|
||||||
|
@ -166,7 +167,8 @@ def configure_installation_source(rel):
|
||||||
|
|
||||||
if ca_rel == 'folsom/staging':
|
if ca_rel == 'folsom/staging':
|
||||||
# staging is just a regular PPA.
|
# 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(' '))
|
subprocess.check_call(cmd.split(' '))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
@ -134,26 +134,21 @@ def get_os_version(package=None):
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def modify_config_file(nova_conf):
|
def modify_config_file(nova_conf, values):
|
||||||
f = open(nova_conf, 'r')
|
try:
|
||||||
data = f.readlines()
|
config = ConfigParser.ConfigParser()
|
||||||
f.close()
|
f = open(nova_conf, "r+")
|
||||||
|
config.readfp(f)
|
||||||
|
|
||||||
# if lines are not in the script, add there
|
# add needed config lines - tuple with section,key,value
|
||||||
contents = ['instance_usage_audit=True', 'instance_usage_audit_period=hour', 'notification_driver=nova.openstack.common.notifier.rabbit_notifier',
|
for value in values:
|
||||||
'notification_driver=ceilometer.compute.nova_notifier']
|
config.set(value[0], value[1], value[2])
|
||||||
for content in contents:
|
config.write()
|
||||||
found = False
|
|
||||||
for line in data:
|
|
||||||
if content in line:
|
|
||||||
found = True
|
|
||||||
break
|
|
||||||
|
|
||||||
# not found it, write and continue
|
f.close()
|
||||||
if not found:
|
except IOError as e:
|
||||||
f1 = open(nova_conf, 'a')
|
juju_log('ERROR', 'nova config file must exist at this point')
|
||||||
f1.write(content+"\n")
|
sys.exit(1)
|
||||||
f1.close()
|
|
||||||
|
|
||||||
def relation_ids(relation):
|
def relation_ids(relation):
|
||||||
cmd = [
|
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