first steps with hook

This commit is contained in:
yolanda.robla@canonical.com 2013-01-31 13:49:40 +01:00
parent bbd63210bc
commit c51eb5b95e
6 changed files with 150 additions and 5 deletions

56
hooks/amqp-relation-changed Executable file
View File

@ -0,0 +1,56 @@
#!/usr/bin/python
import sys
import time
from utils import *
from lib.openstack_common import *
config = config_get()
packages = "python-ceilometer ceilometer-common ceilometer-agent-central ceilometer-collector ceilometer-api"
service = "ceilometer"
def install_hook():
if config["openstack-origin"]!="distro":
configure_installation_source(config["openstack-origin"])
# determine package depending on virt type
execute("apt-get update", die=True)
execute("apt-get -y install %s" % packages, die=True, echo=True)
def amqp_joined():
relation_data = {
}
relation_set(relation_data)
def amqp_changed():
relation_data = relation_get_dict()
if ('rabbit-host' not in relation_data or 'rabbit-password' not in relation_data):
juju_log('Missing rabbit_host || rabbit_passwd, peer not ready? Will retry.')
exit(0)
update_config_block('DEFAULT', rabbit_host=relation_data["rabbit-host"])
update_config_block('DEFAULT', rabbit_userid=config["rabbit-user"])
update_config_block('DEFAULT', rabbit_password=relation_data["rabbit-password"])
update_config_block('DEFAULT', rabbit_virtual_host=config["rabbit-vhost"])
# restart services
execute("service ceilometer-agent-central stop", echo=True)
execute("service ceilometer-agent-central start", echo=True)
execute("service ceilometer-collector stop", echo=True)
execute("service ceilometer-collector start", echo=True)
time.sleep(5)
hooks = {
"install": install_hook,
"amqp-relation-joined": amqp_joined,
"amqp-relation-changed": amqp_changed
}
# ceilometer-hooks gets called by symlink corresponding to the requested relation
# hook.
arg0 = sys.argv[0].split("/").pop()
if arg0 not in hooks.keys():
error_out("Unsupported hook: %s" % arg0)
hooks[arg0]()

56
hooks/amqp-relation-joined Executable file
View File

@ -0,0 +1,56 @@
#!/usr/bin/python
import sys
import time
from utils import *
from lib.openstack_common import *
config = config_get()
packages = "python-ceilometer ceilometer-common ceilometer-agent-central ceilometer-collector ceilometer-api"
service = "ceilometer"
def install_hook():
if config["openstack-origin"]!="distro":
configure_installation_source(config["openstack-origin"])
# determine package depending on virt type
execute("apt-get update", die=True)
execute("apt-get -y install %s" % packages, die=True, echo=True)
def amqp_joined():
relation_data = {
}
relation_set(relation_data)
def amqp_changed():
relation_data = relation_get_dict()
if ('rabbit-host' not in relation_data or 'rabbit-password' not in relation_data):
juju_log('Missing rabbit_host || rabbit_passwd, peer not ready? Will retry.')
exit(0)
update_config_block('DEFAULT', rabbit_host=relation_data["rabbit-host"])
update_config_block('DEFAULT', rabbit_userid=config["rabbit-user"])
update_config_block('DEFAULT', rabbit_password=relation_data["rabbit-password"])
update_config_block('DEFAULT', rabbit_virtual_host=config["rabbit-vhost"])
# restart services
execute("service ceilometer-agent-central stop", echo=True)
execute("service ceilometer-agent-central start", echo=True)
execute("service ceilometer-collector stop", echo=True)
execute("service ceilometer-collector start", echo=True)
time.sleep(5)
hooks = {
"install": install_hook,
"amqp-relation-joined": amqp_joined,
"amqp-relation-changed": amqp_changed
}
# ceilometer-hooks gets called by symlink corresponding to the requested relation
# hook.
arg0 = sys.argv[0].split("/").pop()
if arg0 not in hooks.keys():
error_out("Unsupported hook: %s" % arg0)
hooks[arg0]()

View File

@ -8,20 +8,47 @@ from lib.openstack_common import *
config = config_get()
packages = "ceilometer"
packages = "python-ceilometer ceilometer-common ceilometer-agent-central ceilometer-collector ceilometer-api"
service = "ceilometer"
def install_hook():
if config["openstack-origin"]!="distro":
configure_installation_source(config["openstack-origin"])
# determine package depending on virt type
execute("apt-get update", die=True)
execute("apt-get -y install %s" % packages, die=True, echo=True)
def amqp_joined():
relation_data = {
}
relation_set(relation_data)
def amqp_changed():
relation_data = relation_get_dict()
if ('rabbit-host' not in relation_data or 'rabbit-password' not in relation_data):
juju_log('Missing rabbit_host || rabbit_passwd, peer not ready? Will retry.')
exit(0)
update_config_block('DEFAULT', rabbit_host=relation_data["rabbit-host"])
update_config_block('DEFAULT', rabbit_userid=config["rabbit-user"])
update_config_block('DEFAULT', rabbit_password=relation_data["rabbit-password"])
update_config_block('DEFAULT', rabbit_virtual_host=config["rabbit-vhost"])
# restart services
execute("service ceilometer-agent-central stop", echo=True)
execute("service ceilometer-agent-central start", echo=True)
execute("service ceilometer-collector stop", echo=True)
execute("service ceilometer-collector start", echo=True)
time.sleep(5)
hooks = {
"install": install_hook,
"amqp-relation-joined": amqp_joined,
"amqp-relation-changed": amqp_changed
}
# ceiloemter-hooks gets called by symlink corresponding to the requested relation
# ceilometer-hooks gets called by symlink corresponding to the requested relation
# hook.
arg0 = sys.argv[0].split("/").pop()
if arg0 not in hooks.keys():

6
local.yaml Normal file
View File

@ -0,0 +1,6 @@
ceilometer:
debug: "true"
verbose: "true"
openstack-origin: "ppa:openstack-ubuntu-testing/grizzly-trunk-testing"
config-file: "/etc/ceilometer/ceilometer.conf"
service-port: 8777

View File

@ -15,7 +15,7 @@ provides:
api-service:
interface: http
requires:
shared-db:
interface: mongo
shared-db:
interface: mysql-shared
amqp:
interface: rabbitmq

View File

@ -1 +1 @@
4
5