Update RPM-specs to 2013.1.2 version
authorIlya Kharin <akscram@gmail.com>
Mon, 15 Jul 2013 19:55:01 +0000 (23:55 +0400)
committerDmitriy Tkachenko <dtkachenko@mirantis.com>
Tue, 6 Aug 2013 11:41:18 +0000 (15:41 +0400)
Change-Id: I9ab78572edb6fa628f62abda38bebdd9fc3763f4

14 files changed:
rpm/SOURCES/0001-Ensure-we-don-t-access-the-net-when-building-docs.patch [new file with mode: 0644]
rpm/SOURCES/0002-avoid-code-path-causing-qpid-exchange-leaks.patch [new file with mode: 0644]
rpm/SOURCES/ceilometer.conf [new file with mode: 0644]
rpm/SOURCES/ceilometer.logrotate [new file with mode: 0644]
rpm/SOURCES/openstack-ceilometer-api.init [new file with mode: 0644]
rpm/SOURCES/openstack-ceilometer-api.upstart [new file with mode: 0644]
rpm/SOURCES/openstack-ceilometer-central.init [new file with mode: 0644]
rpm/SOURCES/openstack-ceilometer-central.upstart [new file with mode: 0644]
rpm/SOURCES/openstack-ceilometer-collector.init [new file with mode: 0644]
rpm/SOURCES/openstack-ceilometer-collector.upstart [new file with mode: 0644]
rpm/SOURCES/openstack-ceilometer-compute.init [new file with mode: 0644]
rpm/SOURCES/openstack-ceilometer-compute.upstart [new file with mode: 0644]
rpm/SOURCES/openstack-ceilometer-newdeps.patch [new file with mode: 0644]
rpm/SPECS/openstack-ceilometer.spec [new file with mode: 0644]

diff --git a/rpm/SOURCES/0001-Ensure-we-don-t-access-the-net-when-building-docs.patch b/rpm/SOURCES/0001-Ensure-we-don-t-access-the-net-when-building-docs.patch
new file mode 100644 (file)
index 0000000..220e998
--- /dev/null
@@ -0,0 +1,24 @@
+From 995e4dac63cfaad92a8634211734a81d66f5c688 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?P=C3=A1draig=20Brady?= <pbrady@redhat.com>
+Date: Fri, 6 Jan 2012 12:16:34 +0000
+Subject: [PATCH] Ensure we don't access the net when building docs
+
+(Note, this has not been sent upstream)
+
+Change-Id: I9d02fb4053a8106672aded1614a2850e21603eb2
+---
+ doc/source/conf.py |    1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+diff --git a/doc/source/conf.py b/doc/source/conf.py
+index 7b77eb9..2b36df7 100644
+--- a/doc/source/conf.py
++++ b/doc/source/conf.py
+@@ -139,7 +139,6 @@ write_autodoc_index()
+ # They can be extensions coming with Sphinx (named 'sphinx.ext.*')
+ # or your custom ones.
+ extensions = ['sphinx.ext.autodoc',
+-              'sphinx.ext.intersphinx',
+               'sphinx.ext.todo',
+               'sphinxcontrib.autohttp.flask',
+               'wsmeext.sphinxext',
diff --git a/rpm/SOURCES/0002-avoid-code-path-causing-qpid-exchange-leaks.patch b/rpm/SOURCES/0002-avoid-code-path-causing-qpid-exchange-leaks.patch
new file mode 100644 (file)
index 0000000..62c9e3f
--- /dev/null
@@ -0,0 +1,26 @@
+From 975c75e089327bd63f9fa5c934950244f0daae42 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?P=C3=A1draig=20Brady?= <pbrady@redhat.com>
+Date: Fri, 21 Jun 2013 10:47:51 +0100
+Subject: [PATCH] avoid code path causing qpid exchange leaks
+
+Always assume amqp_rpc_single_reply_queue is True,
+so that the problematic code path is ignored.
+The issue is discussed at https://pad.lv/1178375
+---
+ ceilometer/openstack/common/rpc/amqp.py |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/ceilometer/openstack/common/rpc/amqp.py b/ceilometer/openstack/common/rpc/amqp.py
+index d8e6ba0..01f0e1f 100644
+--- a/ceilometer/openstack/common/rpc/amqp.py
++++ b/ceilometer/openstack/common/rpc/amqp.py
+@@ -590,7 +590,8 @@ def multicall(conf, context, topic, msg, timeout, connection_pool):
+     # TODO(pekowski): Remove this flag and the code under the if clause
+     #                 in Havana.
+-    if not conf.amqp_rpc_single_reply_queue:
++    # (p-draigbrady): This clause is disabled to avoid qpid exchange leaks
++    if False and not conf.amqp_rpc_single_reply_queue:
+         conn = ConnectionContext(conf, connection_pool)
+         wait_msg = MulticallWaiter(conf, conn, timeout)
+         conn.declare_direct_consumer(msg_id, wait_msg)
diff --git a/rpm/SOURCES/ceilometer.conf b/rpm/SOURCES/ceilometer.conf
new file mode 100644 (file)
index 0000000..fdf224c
--- /dev/null
@@ -0,0 +1,5 @@
+[DEFAULT]
+logdir = /var/log/ceilometer
+sql_connection = mysql://ceilometer:ceilometer@localhost/ceilometer
+rpc_backend = ceilometer.openstack.common.rpc.impl_qpid
+
diff --git a/rpm/SOURCES/ceilometer.logrotate b/rpm/SOURCES/ceilometer.logrotate
new file mode 100644 (file)
index 0000000..3424103
--- /dev/null
@@ -0,0 +1,9 @@
+compress
+
+/var/log/ceilometer/*.log {
+    weekly
+    rotate 4
+    missingok
+    compress
+    minsize 100k
+}
diff --git a/rpm/SOURCES/openstack-ceilometer-api.init b/rpm/SOURCES/openstack-ceilometer-api.init
new file mode 100644 (file)
index 0000000..913ae66
--- /dev/null
@@ -0,0 +1,102 @@
+#!/bin/sh
+#
+# openstack-ceilometer-api  OpenStack ceilometer API Server
+#
+# chkconfig:   - 98 02
+# description: OpenStack measurement and collection service API server
+
+### BEGIN INIT INFO
+# Provides:
+# Required-Start: $remote_fs $network $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Stop: 0 1 6
+# Short-Description: OpenStack ceilometer API Server
+# Description: OpenStack measurement and collection service API server
+### END INIT INFO
+
+. /etc/rc.d/init.d/functions
+
+suffix=api
+prog=openstack-ceilometer-$suffix
+exec="/usr/bin/ceilometer-$suffix"
+config="/etc/ceilometer/ceilometer.conf"
+pidfile="/var/run/ceilometer/ceilometer-$suffix.pid"
+logfile="/var/log/ceilometer/$suffix.log"
+
+[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
+
+lockfile=/var/lock/subsys/$prog
+
+start() {
+    [ -x $exec ] || exit 5
+    [ -f $config ] || exit 6
+    echo -n $"Starting $prog: "
+    daemon --user ceilometer --pidfile $pidfile "$exec --config-file $config --logfile $logfile &>/dev/null & echo \$! > $pidfile"
+    retval=$?
+    echo
+    [ $retval -eq 0 ] && touch $lockfile
+    return $retval
+}
+
+stop() {
+    echo -n $"Stopping $prog: "
+    killproc -p $pidfile $prog
+    retval=$?
+    echo
+    [ $retval -eq 0 ] && rm -f $lockfile
+    return $retval
+}
+
+restart() {
+    stop
+    start
+}
+
+reload() {
+    restart
+}
+
+force_reload() {
+    restart
+}
+
+rh_status() {
+    status -p $pidfile $prog
+}
+
+rh_status_q() {
+    rh_status >/dev/null 2>&1
+}
+
+
+case "$1" in
+    start)
+        rh_status_q && exit 0
+        $1
+        ;;
+    stop)
+        rh_status_q || exit 0
+        $1
+        ;;
+    restart)
+        $1
+        ;;
+    reload)
+        rh_status_q || exit 7
+        $1
+        ;;
+    force-reload)
+        force_reload
+        ;;
+    status)
+        rh_status
+        ;;
+    condrestart|try-restart)
+        rh_status_q || exit 0
+        restart
+        ;;
+    *)
+        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
+        exit 2
+esac
+exit $?
diff --git a/rpm/SOURCES/openstack-ceilometer-api.upstart b/rpm/SOURCES/openstack-ceilometer-api.upstart
new file mode 100644 (file)
index 0000000..7cde214
--- /dev/null
@@ -0,0 +1,8 @@
+description "OpenStack Ceilometer API Server"
+
+start on stopped rc RUNLEVEL=[2345]
+stop on runlevel [S016]
+
+respawn
+
+exec su -s /bin/sh -c "exec /usr/bin/ceilometer-api --config-file /etc/ceilometer/ceilometer.conf --logfile /var/log/ceilometer/api.log" ceilometer
diff --git a/rpm/SOURCES/openstack-ceilometer-central.init b/rpm/SOURCES/openstack-ceilometer-central.init
new file mode 100644 (file)
index 0000000..366d74a
--- /dev/null
@@ -0,0 +1,102 @@
+#!/bin/sh
+#
+# openstack-ceilometer-central  OpenStack ceilometer central agent
+#
+# chkconfig:   - 98 02
+# description: OpenStack measurement and collection service central agent
+
+### BEGIN INIT INFO
+# Provides:
+# Required-Start: $remote_fs $network $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Stop: 0 1 6
+# Short-Description: OpenStack ceilometer central agent
+# Description: OpenStack measurement and collection service central agent
+### END INIT INFO
+
+. /etc/rc.d/init.d/functions
+
+suffix=central
+prog=openstack-ceilometer-$suffix
+exec="/usr/bin/ceilometer-agent-$suffix"
+config="/etc/ceilometer/ceilometer.conf"
+pidfile="/var/run/ceilometer/ceilometer-$suffix.pid"
+logfile="/var/log/ceilometer/$suffix.log"
+
+[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
+
+lockfile=/var/lock/subsys/$prog
+
+start() {
+    [ -x $exec ] || exit 5
+    [ -f $config ] || exit 6
+    echo -n $"Starting $prog: "
+    daemon --user ceilometer --pidfile $pidfile "$exec --config-file $config --logfile $logfile &>/dev/null & echo \$! > $pidfile"
+    retval=$?
+    echo
+    [ $retval -eq 0 ] && touch $lockfile
+    return $retval
+}
+
+stop() {
+    echo -n $"Stopping $prog: "
+    killproc -p $pidfile $prog
+    retval=$?
+    echo
+    [ $retval -eq 0 ] && rm -f $lockfile
+    return $retval
+}
+
+restart() {
+    stop
+    start
+}
+
+reload() {
+    restart
+}
+
+force_reload() {
+    restart
+}
+
+rh_status() {
+    status -p $pidfile $prog
+}
+
+rh_status_q() {
+    rh_status >/dev/null 2>&1
+}
+
+
+case "$1" in
+    start)
+        rh_status_q && exit 0
+        $1
+        ;;
+    stop)
+        rh_status_q || exit 0
+        $1
+        ;;
+    restart)
+        $1
+        ;;
+    reload)
+        rh_status_q || exit 7
+        $1
+        ;;
+    force-reload)
+        force_reload
+        ;;
+    status)
+        rh_status
+        ;;
+    condrestart|try-restart)
+        rh_status_q || exit 0
+        restart
+        ;;
+    *)
+        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
+        exit 2
+esac
+exit $?
diff --git a/rpm/SOURCES/openstack-ceilometer-central.upstart b/rpm/SOURCES/openstack-ceilometer-central.upstart
new file mode 100644 (file)
index 0000000..390935c
--- /dev/null
@@ -0,0 +1,8 @@
+description "OpenStack Ceilometer central agent"
+
+start on stopped rc RUNLEVEL=[2345]
+stop on runlevel [S016]
+
+respawn
+
+exec su -s /bin/sh -c "exec /usr/bin/ceilometer-agent-central --config-file /etc/ceilometer/ceilometer.conf --logfile /var/log/ceilometer/central.log" ceilometer
diff --git a/rpm/SOURCES/openstack-ceilometer-collector.init b/rpm/SOURCES/openstack-ceilometer-collector.init
new file mode 100644 (file)
index 0000000..9dca492
--- /dev/null
@@ -0,0 +1,102 @@
+#!/bin/sh
+#
+# openstack-ceilometer-collector  OpenStack ceilometer collector Server
+#
+# chkconfig:   - 98 02
+# description: OpenStack measurement and collection service collector agent
+
+### BEGIN INIT INFO
+# Provides:
+# Required-Start: $remote_fs $network $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Stop: 0 1 6
+# Short-Description: OpenStack ceilometer collector Server
+# Description: OpenStack measurement and collection service collector agent
+### END INIT INFO
+
+. /etc/rc.d/init.d/functions
+
+suffix=collector
+prog=openstack-ceilometer-$suffix
+exec="/usr/bin/ceilometer-$suffix"
+config="/etc/ceilometer/ceilometer.conf"
+pidfile="/var/run/ceilometer/ceilometer-$suffix.pid"
+logfile="/var/log/ceilometer/$suffix.log"
+
+[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
+
+lockfile=/var/lock/subsys/$prog
+
+start() {
+    [ -x $exec ] || exit 5
+    [ -f $config ] || exit 6
+    echo -n $"Starting $prog: "
+    daemon --user ceilometer --pidfile $pidfile "$exec --config-file $config --logfile $logfile &>/dev/null & echo \$! > $pidfile"
+    retval=$?
+    echo
+    [ $retval -eq 0 ] && touch $lockfile
+    return $retval
+}
+
+stop() {
+    echo -n $"Stopping $prog: "
+    killproc -p $pidfile $prog
+    retval=$?
+    echo
+    [ $retval -eq 0 ] && rm -f $lockfile
+    return $retval
+}
+
+restart() {
+    stop
+    start
+}
+
+reload() {
+    restart
+}
+
+force_reload() {
+    restart
+}
+
+rh_status() {
+    status -p $pidfile $prog
+}
+
+rh_status_q() {
+    rh_status >/dev/null 2>&1
+}
+
+
+case "$1" in
+    start)
+        rh_status_q && exit 0
+        $1
+        ;;
+    stop)
+        rh_status_q || exit 0
+        $1
+        ;;
+    restart)
+        $1
+        ;;
+    reload)
+        rh_status_q || exit 7
+        $1
+        ;;
+    force-reload)
+        force_reload
+        ;;
+    status)
+        rh_status
+        ;;
+    condrestart|try-restart)
+        rh_status_q || exit 0
+        restart
+        ;;
+    *)
+        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
+        exit 2
+esac
+exit $?
diff --git a/rpm/SOURCES/openstack-ceilometer-collector.upstart b/rpm/SOURCES/openstack-ceilometer-collector.upstart
new file mode 100644 (file)
index 0000000..bd6ee43
--- /dev/null
@@ -0,0 +1,8 @@
+description "OpenStack Ceilometer collector agent"
+
+start on stopped rc RUNLEVEL=[2345]
+stop on runlevel [S016]
+
+respawn
+
+exec su -s /bin/sh -c "exec /usr/bin/ceilometer-collector --config-file /etc/ceilometer/ceilometer.conf --logfile /var/log/ceilometer/collector.log" ceilometer
diff --git a/rpm/SOURCES/openstack-ceilometer-compute.init b/rpm/SOURCES/openstack-ceilometer-compute.init
new file mode 100644 (file)
index 0000000..25e578a
--- /dev/null
@@ -0,0 +1,102 @@
+#!/bin/sh
+#
+# openstack-ceilometer-compute  OpenStack ceilometer compute node agent
+#
+# chkconfig:   - 98 02
+# description: OpenStack measurement and collection service for running on compute nodes
+
+### BEGIN INIT INFO
+# Provides:
+# Required-Start: $remote_fs $network $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Stop: 0 1 6
+# Short-Description: OpenStack ceilometer compute node agent
+# Description: OpenStack measurement and collection service for running on compute nodes
+### END INIT INFO
+
+. /etc/rc.d/init.d/functions
+
+suffix=compute
+prog=openstack-ceilometer-$suffix
+exec="/usr/bin/ceilometer-agent-$suffix"
+config="/etc/ceilometer/ceilometer.conf"
+pidfile="/var/run/ceilometer/ceilometer-$suffix.pid"
+logfile="/var/log/ceilometer/$suffix.log"
+
+[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
+
+lockfile=/var/lock/subsys/$prog
+
+start() {
+    [ -x $exec ] || exit 5
+    [ -f $config ] || exit 6
+    echo -n $"Starting $prog: "
+    daemon --user ceilometer --pidfile $pidfile "$exec --config-file $config --logfile $logfile &>/dev/null & echo \$! > $pidfile"
+    retval=$?
+    echo
+    [ $retval -eq 0 ] && touch $lockfile
+    return $retval
+}
+
+stop() {
+    echo -n $"Stopping $prog: "
+    killproc -p $pidfile $prog
+    retval=$?
+    echo
+    [ $retval -eq 0 ] && rm -f $lockfile
+    return $retval
+}
+
+restart() {
+    stop
+    start
+}
+
+reload() {
+    restart
+}
+
+force_reload() {
+    restart
+}
+
+rh_status() {
+    status -p $pidfile $prog
+}
+
+rh_status_q() {
+    rh_status >/dev/null 2>&1
+}
+
+
+case "$1" in
+    start)
+        rh_status_q && exit 0
+        $1
+        ;;
+    stop)
+        rh_status_q || exit 0
+        $1
+        ;;
+    restart)
+        $1
+        ;;
+    reload)
+        rh_status_q || exit 7
+        $1
+        ;;
+    force-reload)
+        force_reload
+        ;;
+    status)
+        rh_status
+        ;;
+    condrestart|try-restart)
+        rh_status_q || exit 0
+        restart
+        ;;
+    *)
+        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
+        exit 2
+esac
+exit $?
diff --git a/rpm/SOURCES/openstack-ceilometer-compute.upstart b/rpm/SOURCES/openstack-ceilometer-compute.upstart
new file mode 100644 (file)
index 0000000..7d65b2b
--- /dev/null
@@ -0,0 +1,8 @@
+description "OpenStack Ceilometer compute agent"
+
+start on stopped rc RUNLEVEL=[2345]
+stop on runlevel [S016]
+
+respawn
+
+exec su -s /bin/sh -c "exec /usr/bin/ceilometer-agent-compute --config-file /etc/ceilometer/ceilometer.conf --logfile /var/log/ceilometer/compute.log" ceilometer
diff --git a/rpm/SOURCES/openstack-ceilometer-newdeps.patch b/rpm/SOURCES/openstack-ceilometer-newdeps.patch
new file mode 100644 (file)
index 0000000..ae8994f
--- /dev/null
@@ -0,0 +1,50 @@
+diff -Naur ceilometer-2013.1.g3.orig/ceilometer/__init__.py ceilometer-2013.1.g3/ceilometer/__init__.py
+--- ceilometer-2013.1.g3.orig/ceilometer/__init__.py   2013-04-08 09:54:04.545469160 +0000
++++ ceilometer-2013.1.g3/ceilometer/__init__.py        2013-04-08 10:01:12.306302227 +0000
+@@ -14,6 +14,28 @@
+ # under the License.
+ #
++import sys
++import pkg_resources
++
++# If there is a conflicting non egg module,
++# i.e. an older standard system module installed,
++# then replace it with this requirement
++def replace_dist(requirement):
++    try:
++        return pkg_resources.require(requirement)
++    except pkg_resources.VersionConflict:
++        e = sys.exc_info()[1]
++        dist=e.args[0]
++        req=e.args[1]
++        if dist.key == req.key and not dist.location.endswith('.egg'):
++            del pkg_resources.working_set.by_key[dist.key]
++            # We assume there is no need to adjust sys.path
++            # and the associated pkg_resources.working_set.entries
++            return pkg_resources.require(requirement)
++
++replace_dist("WebOb >= 1.2")
++replace_dist("SQLAlchemy >= 0.7.3")
++
+ import gettext
+ gettext.install('ceilometer', unicode=1)
+diff -Naur ceilometer-2013.1.g3.orig/ceilometer/storage/sqlalchemy/migration.py ceilometer-2013.1.g3/ceilometer/storage/sqlalchemy/migration.py
+--- ceilometer-2013.1.g3.orig/ceilometer/storage/sqlalchemy/migration.py       2013-04-08 09:54:04.608469135 +0000
++++ ceilometer-2013.1.g3/ceilometer/storage/sqlalchemy/migration.py    2013-04-08 10:06:21.515180041 +0000
+@@ -52,7 +52,13 @@
+ # NOTE(jkoelker) Delay importing migrate until we are patched
+-from migrate import exceptions as versioning_exceptions
++try:
++    # Try the more specific path first (migrate <= 0.6)
++    from migrate.versioning import exceptions as versioning_exceptions
++except ImportError:
++    # Use the newer path (migrate >= 0.7)
++    from migrate import exceptions as versioning_exceptions
++
+ from migrate.versioning import api as versioning_api
+ from migrate.versioning.repository import Repository
diff --git a/rpm/SPECS/openstack-ceilometer.spec b/rpm/SPECS/openstack-ceilometer.spec
new file mode 100644 (file)
index 0000000..369ec4c
--- /dev/null
@@ -0,0 +1,432 @@
+%global _without_doc 1
+%global with_doc %{!?_without_doc:1}%{?_without_doc:0}
+%global pypi_name ceilometer
+
+Name:             openstack-ceilometer
+Version:          2013.1.2
+Release:          2%{?dist}
+Summary:          OpenStack measurement collection service
+
+Group:            Applications/System
+License:          ASL 2.0
+URL:              https://wiki.openstack.org/wiki/Ceilometer
+Source0:          ceilometer-%{version}.tar.gz
+Source1:          %{pypi_name}.conf
+Source2:          %{pypi_name}.logrotate
+
+Source10:         %{name}-api.init
+Source100:        %{name}-api.upstart
+Source11:         %{name}-collector.init
+Source110:        %{name}-collector.upstart
+Source12:         %{name}-compute.init
+Source120:        %{name}-compute.upstart
+Source13:         %{name}-central.init
+Source130:        %{name}-central.upstart
+
+#
+# patches_base=2013.1.2
+#
+Patch0001: 0001-Ensure-we-don-t-access-the-net-when-building-docs.patch
+Patch0002: 0002-avoid-code-path-causing-qpid-exchange-leaks.patch
+
+# This is EL6 specific and not upstream
+Patch100:         openstack-ceilometer-newdeps.patch
+
+BuildArch:        noarch
+BuildRequires:    intltool
+BuildRequires:    python-sphinx10
+BuildRequires:    python-setuptools
+BuildRequires:    python2-devel
+
+BuildRequires:    openstack-utils
+
+# These are required to build due to the requirements check added
+BuildRequires:    python-sqlalchemy0.7
+BuildRequires:    python-webob1.2
+
+
+%description
+OpenStack ceilometer provides services to measure and
+collect metrics from OpenStack components.
+
+
+%package -n       python-ceilometer
+Summary:          OpenStack ceilometer python libraries
+Group:            Applications/System
+
+Requires:         python-qpid
+Requires:         python-kombu
+Requires:         python-amqplib
+
+Requires:         python-eventlet
+Requires:         python-greenlet
+Requires:         python-iso8601
+Requires:         python-lxml
+Requires:         python-anyjson
+Requires:         python-stevedore
+
+Requires:         python-sqlalchemy0.7
+Requires:         python-migrate
+
+Requires:         python-webob >= 1.2
+Requires:         python-oslo-config
+Requires:         PyYAML
+
+%description -n   python-ceilometer
+OpenStack ceilometer provides services to measure and
+collect metrics from OpenStack components.
+
+This package contains the ceilometer python library.
+
+
+%package common
+Summary:          Components common to all OpenStack ceilometer services
+Group:            Applications/System
+
+Requires:         python-ceilometer = %{version}-%{release}
+Requires:         openstack-utils
+
+Requires(post):   chkconfig
+Requires(postun): initscripts
+Requires(preun):  chkconfig
+Requires(pre):    shadow-utils
+
+
+
+%description common
+OpenStack ceilometer provides services to measure and
+collect metrics from OpenStack components.
+
+This package contains components common to all OpenStack
+ceilometer services.
+
+
+%package compute
+Summary:          OpenStack ceilometer compute agent
+Group:            Applications/System
+
+Requires:         %{name}-common = %{version}-%{release}
+
+Requires:         python-novaclient
+Requires:         python-keystoneclient
+Requires:         libvirt-python
+
+%description compute
+OpenStack ceilometer provides services to measure and
+collect metrics from OpenStack components.
+
+This package contains the ceilometer agent for
+running on OpenStack compute nodes.
+
+
+%package central
+Summary:          OpenStack ceilometer central agent
+Group:            Applications/System
+
+Requires:         %{name}-common = %{version}-%{release}
+
+Requires:         python-novaclient
+Requires:         python-keystoneclient
+Requires:         python-glanceclient
+Requires:         python-swiftclient
+
+%description central
+OpenStack ceilometer provides services to measure and
+collect metrics from OpenStack components.
+
+This package contains the central ceilometer agent.
+
+
+%package collector
+Summary:          OpenStack ceilometer collector agent
+Group:            Applications/System
+
+Requires:         %{name}-common = %{version}-%{release}
+
+Requires:         pymongo
+
+%description collector
+OpenStack ceilometer provides services to measure and
+collect metrics from OpenStack components.
+
+This package contains the ceilometer collector agent.
+
+
+%package api
+Summary:          OpenStack ceilometer API service
+Group:            Applications/System
+
+Requires:         %{name}-common = %{version}-%{release}
+
+Requires:         pymongo
+Requires:         python-flask
+Requires:         python-pecan
+Requires:         python-wsme
+
+%description api
+OpenStack ceilometer provides services to measure and
+collect metrics from OpenStack components.
+
+This package contains the ceilometer API service.
+
+
+%if 0%{?with_doc}
+%package doc
+Summary:          Documentation for OpenStack ceilometer
+Group:            Documentation
+
+# Required to build module documents
+BuildRequires:    python-eventlet
+BuildRequires:    python-sqlalchemy0.7
+BuildRequires:    python-webob
+# while not strictly required, quiets the build down when building docs.
+BuildRequires:    python-migrate, python-iso8601
+
+%description      doc
+OpenStack ceilometer provides services to measure and
+collect metrics from OpenStack components.
+
+This package contains documentation files for ceilometer.
+%endif
+
+%prep
+%setup -q -n ceilometer-%{version}
+
+%patch0001 -p1
+%patch0002 -p1
+
+# Apply EL6 patch
+%patch100 -p1
+
+find . \( -name .gitignore -o -name .placeholder \) -delete
+
+find ceilometer -name \*.py -exec sed -i '/\/usr\/bin\/env python/{d;q}' {} +
+
+# TODO: Have the following handle multi line entries
+sed -i '/setup_requires/d; /install_requires/d; /dependency_links/d' setup.py
+
+%build
+%{__python} setup.py build
+
+%install
+%{__python} setup.py install -O1 --skip-build --root %{buildroot}
+
+# docs generation requires everything to be installed first
+export PYTHONPATH="$( pwd ):$PYTHONPATH"
+
+pushd doc
+
+%if 0%{?with_doc}
+SPHINX_DEBUG=1 sphinx-1.0-build -b html source build/html
+# Fix hidden-file-or-dir warnings
+rm -fr build/html/.doctrees build/html/.buildinfo
+%endif
+
+popd
+
+# Setup directories
+install -d -m 755 %{buildroot}%{_sharedstatedir}/ceilometer
+install -d -m 755 %{buildroot}%{_sharedstatedir}/ceilometer/tmp
+install -d -m 755 %{buildroot}%{_localstatedir}/log/ceilometer
+
+# Install config files
+install -d -m 755 %{buildroot}%{_sysconfdir}/ceilometer
+install -p -D -m 640 %{SOURCE1} %{buildroot}%{_sysconfdir}/ceilometer/ceilometer.conf
+install -p -D -m 640 etc/ceilometer/policy.json %{buildroot}%{_sysconfdir}/ceilometer/policy.json
+install -p -D -m 640 etc/ceilometer/sources.json %{buildroot}%{_sysconfdir}/ceilometer/sources.json
+install -p -D -m 640 etc/ceilometer/pipeline.yaml %{buildroot}%{_sysconfdir}/ceilometer/pipeline.yaml
+
+# Install initscripts for services
+install -p -D -m 755 %{SOURCE10} %{buildroot}%{_initrddir}/%{name}-api
+install -p -D -m 755 %{SOURCE11} %{buildroot}%{_initrddir}/%{name}-collector
+install -p -D -m 755 %{SOURCE12} %{buildroot}%{_initrddir}/%{name}-compute
+install -p -D -m 755 %{SOURCE13} %{buildroot}%{_initrddir}/%{name}-central
+
+# Install upstart jobs examples
+install -d -m 755 %{buildroot}%{_datadir}/ceilometer
+install -p -m 644 %{SOURCE100} %{buildroot}%{_datadir}/ceilometer/
+install -p -m 644 %{SOURCE110} %{buildroot}%{_datadir}/ceilometer/
+install -p -m 644 %{SOURCE120} %{buildroot}%{_datadir}/ceilometer/
+install -p -m 644 %{SOURCE130} %{buildroot}%{_datadir}/ceilometer/
+
+# Install logrotate
+install -p -D -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
+
+# Install pid directory
+install -d -m 755 %{buildroot}%{_localstatedir}/run/ceilometer
+
+# Remove unneeded in production stuff
+rm -f %{buildroot}%{_bindir}/ceilometer-debug
+rm -fr %{buildroot}%{python_sitelib}/tests/
+rm -fr %{buildroot}%{python_sitelib}/run_tests.*
+rm -f %{buildroot}/usr/share/doc/ceilometer/README*
+rm -f %{buildroot}/%{python_sitelib}/ceilometer/api/v1/static/LICENSE.*
+
+
+%pre common
+getent group ceilometer >/dev/null || groupadd -r ceilometer --gid 166
+if ! getent passwd ceilometer >/dev/null; then
+  # Id reservation request: https://bugzilla.redhat.com/923891
+  useradd -u 166 -r -g ceilometer -G ceilometer,nobody -d %{_sharedstatedir}/ceilometer -s /sbin/nologin -c "OpenStack ceilometer Daemons" ceilometer
+fi
+exit 0
+
+%post compute
+if [ $1 -eq 1 ] ; then
+    # Initial installation
+    /sbin/chkconfig --add %{name}-compute
+fi
+
+%post collector
+if [ $1 -eq 1 ] ; then
+    # Initial installation
+    /sbin/chkconfig --add %{name}-collector
+fi
+
+%post api
+if [ $1 -eq 1 ] ; then
+    # Initial installation
+    /sbin/chkconfig --add %{name}-api
+fi
+
+%post central
+if [ $1 -eq 1 ] ; then
+    # Initial installation
+    /sbin/chkconfig --add %{name}-central
+fi
+
+%preun compute
+if [ $1 -eq 0 ] ; then
+    for svc in compute; do
+        /sbin/service %{name}-${svc} stop > /dev/null 2>&1
+        /sbin/chkconfig --del %{name}-${svc}
+    done
+fi
+
+%preun collector
+if [ $1 -eq 0 ] ; then
+    for svc in collector; do
+        /sbin/service %{name}-${svc} stop > /dev/null 2>&1
+        /sbin/chkconfig --del %{name}-${svc}
+    done
+fi
+
+%preun api
+if [ $1 -eq 0 ] ; then
+    for svc in api; do
+        /sbin/service %{name}-${svc} stop > /dev/null 2>&1
+        /sbin/chkconfig --del %{name}-${svc}
+    done
+fi
+
+%preun central
+if [ $1 -eq 0 ] ; then
+    for svc in central; do
+        /sbin/service %{name}-${svc} stop > /dev/null 2>&1
+        /sbin/chkconfig --del %{name}-${svc}
+    done
+fi
+
+%postun compute
+if [ $1 -ge 1 ] ; then
+    # Package upgrade, not uninstall
+    for svc in compute; do
+        /sbin/service %{name}-${svc} condrestart > /dev/null 2>&1 || :
+    done
+fi
+
+%postun collector
+if [ $1 -ge 1 ] ; then
+    # Package upgrade, not uninstall
+    for svc in collector; do
+        /sbin/service %{name}-${svc} condrestart > /dev/null 2>&1 || :
+    done
+fi
+
+%postun api
+if [ $1 -ge 1 ] ; then
+    # Package upgrade, not uninstall
+    for svc in api; do
+        /sbin/service %{name}-${svc} condrestart > /dev/null 2>&1 || :
+    done
+fi
+
+%postun central
+if [ $1 -ge 1 ] ; then
+    # Package upgrade, not uninstall
+    for svc in central; do
+        /sbin/service %{name}-${svc} condrestart > /dev/null 2>&1 || :
+    done
+fi
+
+
+%files common
+%doc LICENSE
+%dir %{_sysconfdir}/ceilometer
+%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/ceilometer.conf
+%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/policy.json
+%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/sources.json
+%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/pipeline.yaml
+%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
+
+%dir %attr(0755, ceilometer, root) %{_localstatedir}/log/ceilometer
+%dir %attr(0755, ceilometer, root) %{_localstatedir}/run/ceilometer
+
+%{_bindir}/ceilometer-*
+
+%defattr(-, ceilometer, ceilometer, -)
+%dir %{_sharedstatedir}/ceilometer
+%dir %{_sharedstatedir}/ceilometer/tmp
+
+
+%files -n python-ceilometer
+%{python_sitelib}/ceilometer
+%{python_sitelib}/ceilometer-%{version}*.egg-info
+
+
+%if 0%{?with_doc}
+%files doc
+%doc doc/build/html
+%endif
+
+
+%files compute
+%{_bindir}/ceilometer-agent-compute
+%{_initrddir}/%{name}-compute
+%{_datarootdir}/ceilometer/%{name}-compute.upstart
+
+
+%files collector
+%{_bindir}/ceilometer-collector
+%{_initrddir}/%{name}-collector
+%{_datarootdir}/ceilometer/%{name}-collector.upstart
+
+
+%files api
+%doc ceilometer/api/v1/static/LICENSE.*
+%{_bindir}/ceilometer-api
+%{_initrddir}/%{name}-api
+%{_datarootdir}/ceilometer/%{name}-api.upstart
+
+
+%files central
+%{_bindir}/ceilometer-agent-central
+%{_initrddir}/%{name}-central
+%{_datarootdir}/ceilometer/%{name}-central.upstart
+
+
+%changelog
+* Fri Jun 21 2013 Pádraig Brady <P@draigBrady.com> - 2013.1.2-2
+- Avoid qpid exchange leaks
+
+* Thu Jun  6 2013 Pádraig Brady <P@draigBrady.com> - 2013.1.2-1
+- Update to stable/grizzly release 2013.1.2
+
+* Thu Jun  6 2013 Pádraig Brady <P@draigBrady.com> - 2013.1-3
+- Fix uninstall for openstack-ceilometer-central
+
+* Mon Apr  8 2013 Pádraig Brady <P@draigBrady.com> - 2013.1-2
+- Grizzly release
+
+* Tue Mar 26 2013 Pádraig Brady <P@draigBrady.com> - 2013.1-0.5.g3
+- Initial package