From c51eb5b95ec2e4b3d504b5d2d408463bd55369b9 Mon Sep 17 00:00:00 2001 From: "yolanda.robla@canonical.com" <> Date: Thu, 31 Jan 2013 13:49:40 +0100 Subject: [PATCH] first steps with hook --- hooks/amqp-relation-changed | 56 +++++++++++++++++++++++++++++++++++++ hooks/amqp-relation-joined | 56 +++++++++++++++++++++++++++++++++++++ hooks/ceilometer-hooks | 31 ++++++++++++++++++-- local.yaml | 6 ++++ metadata.yaml | 4 +-- revision | 2 +- 6 files changed, 150 insertions(+), 5 deletions(-) create mode 100755 hooks/amqp-relation-changed create mode 100755 hooks/amqp-relation-joined create mode 100644 local.yaml diff --git a/hooks/amqp-relation-changed b/hooks/amqp-relation-changed new file mode 100755 index 0000000..c9975f5 --- /dev/null +++ b/hooks/amqp-relation-changed @@ -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]() diff --git a/hooks/amqp-relation-joined b/hooks/amqp-relation-joined new file mode 100755 index 0000000..c9975f5 --- /dev/null +++ b/hooks/amqp-relation-joined @@ -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]() diff --git a/hooks/ceilometer-hooks b/hooks/ceilometer-hooks index 20eb7f2..c9975f5 100755 --- a/hooks/ceilometer-hooks +++ b/hooks/ceilometer-hooks @@ -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(): diff --git a/local.yaml b/local.yaml new file mode 100644 index 0000000..e21318d --- /dev/null +++ b/local.yaml @@ -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 diff --git a/metadata.yaml b/metadata.yaml index d4cd255..ae2faba 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -15,7 +15,7 @@ provides: api-service: interface: http requires: - shared-db: - interface: mongo shared-db: interface: mysql-shared + amqp: + interface: rabbitmq diff --git a/revision b/revision index b8626c4..7ed6ff8 100644 --- a/revision +++ b/revision @@ -1 +1 @@ -4 +5