From c71c5ddf4319536f55656263f3321de5265cf016 Mon Sep 17 00:00:00 2001 From: Chris Dent Date: Sun, 28 Jun 2015 14:56:25 +0000 Subject: [PATCH] Grenade plugin using devstack plugin for ceilometer This is barebones for now, simply doing the upgrade and checking services are still running. There is no checking of resources. Being able to easily add those resources checks is part of the reason for making this change. The other reason is to explore and resolve conflicts when extracting an existing integrated project from both devstack and grenade. Note that grenade's ensure_services_started and _stopped struggles to work with processes that contain spaces so distinguishing amongst ceilometer-polling processes with different namespaces is hard, so we'll just use the older agent names. Change-Id: If7bb809743ab0c475a1844c79e552d8b6892a18f --- devstack/plugin.sh | 8 ++-- devstack/upgrade/settings | 7 +++ devstack/upgrade/shutdown.sh | 21 +++++++++ devstack/upgrade/upgrade.sh | 88 ++++++++++++++++++++++++++++++++++++ 4 files changed, 120 insertions(+), 4 deletions(-) create mode 100644 devstack/upgrade/settings create mode 100755 devstack/upgrade/shutdown.sh create mode 100755 devstack/upgrade/upgrade.sh diff --git a/devstack/plugin.sh b/devstack/plugin.sh index 8d3268f5ac..67f0d887f7 100644 --- a/devstack/plugin.sh +++ b/devstack/plugin.sh @@ -340,9 +340,9 @@ function install_ceilometerclient { # start_ceilometer() - Start running processes, including screen function start_ceilometer { - run_process ceilometer-acentral "$CEILOMETER_BIN_DIR/ceilometer-polling --polling-namespaces central --config-file $CEILOMETER_CONF" + run_process ceilometer-acentral "$CEILOMETER_BIN_DIR/ceilometer-agent-central --config-file $CEILOMETER_CONF" run_process ceilometer-anotification "$CEILOMETER_BIN_DIR/ceilometer-agent-notification --config-file $CEILOMETER_CONF" - run_process ceilometer-aipmi "$CEILOMETER_BIN_DIR/ceilometer-polling --polling-namespaces ipmi --config-file $CEILOMETER_CONF" + run_process ceilometer-aipmi "$CEILOMETER_BIN_DIR/ceilometer-agent-ipmi --config-file $CEILOMETER_CONF" if [[ "$CEILOMETER_USE_MOD_WSGI" == "False" ]]; then run_process ceilometer-api "$CEILOMETER_BIN_DIR/ceilometer-api -d -v --log-dir=$CEILOMETER_API_LOG_DIR --config-file $CEILOMETER_CONF" @@ -360,10 +360,10 @@ function start_ceilometer { # Start the compute agent late to allow time for the collector to # fully wake up and connect to the message bus. See bug #1355809 if [[ "$VIRT_DRIVER" = 'libvirt' ]]; then - run_process ceilometer-acompute "$CEILOMETER_BIN_DIR/ceilometer-polling --polling-namespaces compute --config-file $CEILOMETER_CONF" $LIBVIRT_GROUP + run_process ceilometer-acompute "$CEILOMETER_BIN_DIR/ceilometer-agent-compute --config-file $CEILOMETER_CONF" $LIBVIRT_GROUP fi if [[ "$VIRT_DRIVER" = 'vsphere' ]]; then - run_process ceilometer-acompute "$CEILOMETER_BIN_DIR/ceilometer-polling --polling-namespace compute --config-file $CEILOMETER_CONF" + run_process ceilometer-acompute "$CEILOMETER_BIN_DIR/ceilometer-agent-compute --config-file $CEILOMETER_CONF" fi # Only die on API if it was actually intended to be turned on diff --git a/devstack/upgrade/settings b/devstack/upgrade/settings new file mode 100644 index 0000000000..4a02b5038c --- /dev/null +++ b/devstack/upgrade/settings @@ -0,0 +1,7 @@ +register_project_for_upgrade ceilometer + +devstack_localrc base enable_plugin ceilometer git://git.openstack.org/openstack/ceilometer +devstack_localrc base enable_service ceilometer-acompute ceilometer-acentral ceilometer-aipmi ceilometer-anotification ceilometer-collector ceilometer-api ceilometer-alarm-notifier ceilometer-alarm-evaluator tempest + +devstack_localrc target enable_plugin ceilometer git://git.openstack.org/openstack/ceilometer +devstack_localrc target enable_service ceilometer-acompute ceilometer-acentral ceilometer-aipmi ceilometer-anotification ceilometer-collector ceilometer-api ceilometer-alarm-notifier ceilometer-alarm-evaluator tempest diff --git a/devstack/upgrade/shutdown.sh b/devstack/upgrade/shutdown.sh new file mode 100755 index 0000000000..6db134e29b --- /dev/null +++ b/devstack/upgrade/shutdown.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# +# + +set -o errexit + +source $GRENADE_DIR/grenaderc +source $GRENADE_DIR/functions + +# We need base DevStack functions for this. +# TODO(chdent): This relies on the fact that for now base devstack is +# hosting ceilometer itself. Once M* starts this will need to be smarter. +source $BASE_DEVSTACK_DIR/functions +source $BASE_DEVSTACK_DIR/stackrc # needed for status directory +source $BASE_DEVSTACK_DIR/lib/tls +source $BASE_DEVSTACK_DIR/lib/apache +source $BASE_DEVSTACK_DIR/lib/ceilometer + +set -o xtrace + +stop_ceilometer diff --git a/devstack/upgrade/upgrade.sh b/devstack/upgrade/upgrade.sh new file mode 100755 index 0000000000..6f8260117a --- /dev/null +++ b/devstack/upgrade/upgrade.sh @@ -0,0 +1,88 @@ +#!/usr/bin/env bash + +# ``upgrade-ceilometer`` + +echo "*********************************************************************" +echo "Begin $0" +echo "*********************************************************************" + +# Clean up any resources that may be in use +cleanup() { + set +o errexit + + echo "*********************************************************************" + echo "ERROR: Abort $0" + echo "*********************************************************************" + + # Kill ourselves to signal any calling process + trap 2; kill -2 $$ +} + +trap cleanup SIGHUP SIGINT SIGTERM + +# Keep track of the grenade directory +RUN_DIR=$(cd $(dirname "$0") && pwd) + +# Source params +source $GRENADE_DIR/grenaderc + +# Import common functions +source $GRENADE_DIR/functions + +# This script exits on an error so that errors don't compound and you see +# only the first error that occurred. +set -o errexit + +# Save mongodb state (replace with snapshot) +# TODO(chdent): There used to be a 'register_db_to_save ceilometer' +# which may wish to consider putting back in. +if grep -q 'connection *= *mongo' /etc/ceilometer/ceilometer.conf; then + mongodump --db ceilometer --out $SAVE_DIR/ceilometer-dump.$BASE_RELEASE +fi + +# Upgrade Ceilometer +# ================== +# Locate ceilometer devstack plugin, the directory above the +# grenade plugin. +CEILOMETER_DEVSTACK_DIR=$(dirname $(dirname $0)) + +# Get functions from current DevStack +source $TARGET_DEVSTACK_DIR/functions +source $TARGET_DEVSTACK_DIR/stackrc +source $TARGET_DEVSTACK_DIR/lib/apache + +# Get ceilometer functions from devstack plugin +source $CEILOMETER_DEVSTACK_DIR/settings + +# Print the commands being run so that we can see the command that triggers +# an error. +set -o xtrace + +# Install the target ceilometer +source $CEILOMETER_DEVSTACK_DIR/plugin.sh stack install + +# calls upgrade-ceilometer for specific release +upgrade_project ceilometer $RUN_DIR $BASE_DEVSTACK_BRANCH $TARGET_DEVSTACK_BRANCH + +# Migrate the database +# NOTE(chdent): As we evolve BIN_DIR is likely to be defined, but +# currently it is not. +CEILOMETER_BIN_DIR=$(dirname $(which ceilometer-dbsync)) +$CEILOMETER_BIN_DIR/ceilometer-dbsync || die $LINENO "DB sync error" + +# Start Ceilometer +start_ceilometer + +# Note these are process names, not service names +ensure_services_started ceilometer-agent-ipmi ceilometer-agent-compute ceilometer-agent-central ceilometer-agent-notification ceilometer-alarm-evaluator ceilometer-alarm-notifier ceilometer-api ceilometer-collector + +# Save mongodb state (replace with snapshot) +if grep -q 'connection *= *mongo' /etc/ceilometer/ceilometer.conf; then + mongodump --db ceilometer --out $SAVE_DIR/ceilometer-dump.$TARGET_RELEASE +fi + + +set +o xtrace +echo "*********************************************************************" +echo "SUCCESS: End $0" +echo "*********************************************************************"