Build ceilometer 2015.1.0 (stable/kilo)
[openstack-build/ceilometer-build.git] / rpm / SPECS / openstack-ceilometer.spec
index 369ec4cf0ad9e148e765b5015c2db9b484584fd9..89f23cf70a946ac9377104e0f78bc4e43ac86e63 100644 (file)
@@ -3,17 +3,19 @@
 %global pypi_name ceilometer
 
 Name:             openstack-ceilometer
-Version:          2013.1.2
+Version:          2015.1.0
 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
+Source0:          http://tarballs.openstack.org/%{pypi_name}/%{pypi_name}-%{version}.tar.gz
+Source1:          %{pypi_name}-dist.conf
 Source2:          %{pypi_name}.logrotate
+Source3:          ceilometer-rootwrap-sudoers
 
+%if 0%{?rhel} && 0%{?rhel} <= 6
 Source10:         %{name}-api.init
 Source100:        %{name}-api.upstart
 Source11:         %{name}-collector.init
@@ -22,28 +24,54 @@ Source12:         %{name}-compute.init
 Source120:        %{name}-compute.upstart
 Source13:         %{name}-central.init
 Source130:        %{name}-central.upstart
+Source14:         %{name}-alarm-notifier.init
+Source140:        %{name}-alarm-notifier.upstart
+Source15:         %{name}-alarm-evaluator.init
+Source150:        %{name}-alarm-evaluator.upstart
+Source16:         %{name}-notification.init
+Source160:        %{name}-notification.upstart
+Source17:         %{name}-ipmi.init
+Source170:        %{name}-ipmi.upstart
+Source18:         %{name}-polling.init
+Source180:        %{name}-polling.upstart
+%else
+Source10:         %{name}-api.service
+Source11:         %{name}-collector.service
+Source12:         %{name}-compute.service
+Source13:         %{name}-central.service
+Source14:         %{name}-alarm-notifier.service
+Source15:         %{name}-alarm-evaluator.service
+Source16:         %{name}-notification.service
+Source17:         %{name}-ipmi.service
+Source18:         %{name}-polling.service
+%endif
 
 #
-# patches_base=2013.1.2
+# patches_base=2014.1.1
 #
-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:    python-pbr >= 0.10
+BuildRequires:    python-d2to1
 BuildRequires:    python2-devel
-
 BuildRequires:    openstack-utils
 
+# These are required to generate ceilometer configuration file
+BuildRequires:    python-tox
+BuildRequires:    python-oslo-db >= 1.7.0
+BuildRequires:    python-oslo-messaging >= 1.8.0
+BuildRequires:    python-keystonemiddleware >= 1.5.0
+
 # These are required to build due to the requirements check added
-BuildRequires:    python-sqlalchemy0.7
-BuildRequires:    python-webob1.2
+BuildRequires:    python-sqlalchemy >= 0.9.7
+BuildRequires:    python-webob >= 1.2.3
 
+%if ! (0%{?rhel} && 0%{?rhel} <= 6)
+BuildRequires: systemd-units
+%endif
 
 %description
 OpenStack ceilometer provides services to measure and
@@ -54,23 +82,53 @@ collect metrics from OpenStack components.
 Summary:          OpenStack ceilometer python libraries
 Group:            Applications/System
 
+Requires:         python-alembic >= 0.7.2
+Requires:         python-ceilometerclient >= 1.0.13
+Requires:         python-croniter >= 0.3.4
+Requires:         python-eventlet >= 0.16.1
+Requires:         python-flask >= 0.10
+Requires:         python-glanceclient >= 1:0.15.0
+Requires:         python-iso8601 >= 0.1.9
+Requires:         python-jsonpath-rw >= 1.2.0
+Requires:         python-jsonschema >= 2.0.0
+Requires:         python-kafka >= 0.9.2
+Requires:         python-keystoneclient >= 1.1.0
+Requires:         python-keystonemiddleware >= 1.5.0
+Requires:         python-lxml >= 2.3
+Requires:         python-migrate >= 0.9.5
+Requires:         python-msgpack >= 0.4.0
+Requires:         python-neutronclient >= 2.3.11
+Requires:         python-novaclient >= 1:2.22.0
+Requires:         python-oslo-concurrency >= 1.8.0
+Requires:         python-oslo-config >= 1:1.9.3
+Requires:         python-oslo-context >= 0.2.0
+Requires:         python-oslo-db >= 1.7.0
+Requires:         python-oslo-i18n >= 1.5.0
+Requires:         python-oslo-messaging >= 1.8.0
+Requires:         python-oslo-middleware >= 1.0.0
+Requires:         python-oslo-policy >= 0.3.1
+Requires:         python-oslo-rootwrap >= 1.6.0
+Requires:         python-oslo-serialization >= 1.4.0
+Requires:         python-oslo.utils >= 1.4.0
+Requires:         python-paste-deploy >= 1.5.0
+Requires:         python-pbr >= 0.10
+Requires:         python-pecan >= 0.8.0
+Requires:         python-posix_ipc
+Requires:         python-pymongo >= 2.6.3
+Requires:         python-pysnmp >= 4.2.1
+Requires:         pytz >= 2013.6
 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
+Requires:         python-requests >= 2.2.0
+Requires:         python-retrying >= 1.2.3
+Requires:         python-six >= 1.9.0
+Requires:         python-sqlalchemy >= 0.9.7
+Requires:         python-stevedore >= 1.3.0
+Requires:         python-swiftclient >= 2.2.0
+Requires:         python-tooz >= 0.13.1
+Requires:         python-werkzeug >= 0.7
+Requires:         python-webob >= 1.2.3
+Requires:         python-wsme >= 0.8
+Requires:         PyYAML >= 3.1.0
 
 %description -n   python-ceilometer
 OpenStack ceilometer provides services to measure and
@@ -86,13 +144,17 @@ Group:            Applications/System
 Requires:         python-ceilometer = %{version}-%{release}
 Requires:         openstack-utils
 
+%if 0%{?rhel} && 0%{?rhel} <= 6
 Requires(post):   chkconfig
 Requires(postun): initscripts
 Requires(preun):  chkconfig
+%else
+Requires(post):   systemd-units
+Requires(preun):  systemd-units
+Requires(postun): systemd-units
+%endif
 Requires(pre):    shadow-utils
 
-
-
 %description common
 OpenStack ceilometer provides services to measure and
 collect metrics from OpenStack components.
@@ -107,9 +169,9 @@ Group:            Applications/System
 
 Requires:         %{name}-common = %{version}-%{release}
 
-Requires:         python-novaclient
-Requires:         python-keystoneclient
 Requires:         libvirt-python
+Requires:         python-keystoneclient >= 1.1.0
+Requires:         python-novaclient >= 2.22.0
 
 %description compute
 OpenStack ceilometer provides services to measure and
@@ -125,10 +187,10 @@ Group:            Applications/System
 
 Requires:         %{name}-common = %{version}-%{release}
 
-Requires:         python-novaclient
-Requires:         python-keystoneclient
-Requires:         python-glanceclient
-Requires:         python-swiftclient
+Requires:         python-glanceclient >= 0.15.0
+Requires:         python-keystoneclient >= 1.1.0
+Requires:         python-novaclient >= 2.22.0
+Requires:         python-swiftclient >= 2.2.0
 
 %description central
 OpenStack ceilometer provides services to measure and
@@ -138,18 +200,37 @@ This package contains the central ceilometer agent.
 
 
 %package collector
-Summary:          OpenStack ceilometer collector agent
+Summary:          OpenStack ceilometer collector
 Group:            Applications/System
 
 Requires:         %{name}-common = %{version}-%{release}
 
-Requires:         pymongo
+# For compat with older provisioning tools.
+# Remove when all reference the notification package explicitly
+Requires:         %{name}-notification = %{version}-%{release}
+Requires:         python-pymongo >= 2.6.3
 
 %description collector
 OpenStack ceilometer provides services to measure and
 collect metrics from OpenStack components.
 
-This package contains the ceilometer collector agent.
+This package contains the ceilometer collector service
+which collects metrics from the various agents.
+
+
+%package notification
+Summary:          OpenStack ceilometer notification agent
+Group:            Applications/System
+
+Requires:         %{name}-common = %{version}-%{release}
+
+%description notification
+OpenStack ceilometer provides services to measure and
+collect metrics from OpenStack components.
+
+This package contains the ceilometer notification agent
+which pushes metrics to the collector service from the
+various OpenStack services.
 
 
 %package api
@@ -158,10 +239,13 @@ Group:            Applications/System
 
 Requires:         %{name}-common = %{version}-%{release}
 
-Requires:         pymongo
-Requires:         python-flask
-Requires:         python-pecan
-Requires:         python-wsme
+Requires:         python-flask >= 0.10
+Requires:         python-keystonemiddleware >= 1.5.0
+Requires:         python-oslo-db >= 1.7.0
+Requires:         python-paste-deploy >= 1.5.0
+Requires:         python-pecan >= 0.8.0
+Requires:         python-pymongo >= 2.6.3
+Requires:         python-wsme >= 0.6
 
 %description api
 OpenStack ceilometer provides services to measure and
@@ -170,17 +254,78 @@ collect metrics from OpenStack components.
 This package contains the ceilometer API service.
 
 
+%package alarm
+Summary:          OpenStack ceilometer alarm services
+Group:            Applications/System
+
+Requires:         %{name}-common = %{version}-%{release}
+Requires:         python-ceilometerclient >= 1.0.13
+
+%description alarm
+OpenStack ceilometer provides services to measure and
+collect metrics from OpenStack components.
+
+This package contains the ceilometer alarm notification
+and evaluation services.
+
+
+%package ipmi
+Summary:          OpenStack ceilometer ipmi agent
+Group:            Applications/System
+
+Requires:         %{name}-common = %{version}-%{release}
+
+Requires:         ipmitool
+Requires:         python-keystoneclient >= 1.1.0
+Requires:         python-neutronclient >= 2.3.11
+Requires:         python-novaclient >= 2.22.0
+Requires:         python-oslo-rootwrap >= 1.6.0
+Requires:         python-tooz >= 0.13.1
+
+%description ipmi
+OpenStack ceilometer provides services to measure and
+collect metrics from OpenStack components.
+
+This package contains the ipmi agent to be run on OpenStack
+nodes from which IPMI sensor data is to be collected directly,
+by-passing Ironic's management of baremetal.
+
+
+%package polling
+Summary:          OpenStack ceilometer polling agent
+Group:            Applications/System
+
+Requires:         %{name}-common = %{version}-%{release}
+
+Requires:         libvirt-python
+Requires:         python-glanceclient >= 0.15.0
+Requires:         python-keystoneclient >= 1.1.0
+Requires:         python-novaclient >= 2.22.0
+Requires:         python-swiftclient >= 2.2.0
+
+%description polling
+Ceilometer aims to deliver a unique point of contact for billing systems to
+aquire all counters they need to establish customer billing, across all
+current and future OpenStack components. The delivery of counters must
+be tracable and auditable, the counters must be easily extensible to support
+new projects, and agents doing data collections should be
+independent of the overall system.
+
+This package contains the polling 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
+BuildRequires:    python-eventlet >= 0.16.1
+BuildRequires:    python-sqlalchemy >= 0.9.7
+BuildRequires:    python-webob >= 1.2.3
 # while not strictly required, quiets the build down when building docs.
-BuildRequires:    python-migrate, python-iso8601
+BuildRequires:    python-migrate >= 0.9.5
+BuildRequires:    python-iso8601 >= 0.1.9
 
 %description      doc
 OpenStack ceilometer provides services to measure and
@@ -192,12 +337,6 @@ This package contains documentation files for ceilometer.
 %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}' {} +
@@ -205,6 +344,10 @@ 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
 
+# Remove the requirements file so that pbr hooks don't add it
+# to distutils requires_dist config
+rm -rf {test-,}requirements.txt tools/{pip,test}-requires
+
 %build
 %{__python} setup.py build
 
@@ -224,23 +367,43 @@ rm -fr build/html/.doctrees build/html/.buildinfo
 
 popd
 
+# Genenrate ceilometer.conf.sample
+oslo-config-generator --output-file etc/ceilometer/ceilometer.conf.sample \
+             --namespace ceilometer \
+             --namespace oslo.db \
+             --namespace oslo.messaging \
+             --namespace keystonemiddleware.auth_token
+
 # 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 -d -m 775 %{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 -d -m 755 %{buildroot}%{_sysconfdir}/ceilometer/rootwrap.d
+install -d -m 755 %{buildroot}%{_sysconfdir}/sudoers.d
+install -p -D -m 640 %{SOURCE1} %{buildroot}%{_datadir}/ceilometer/ceilometer-dist.conf
+install -p -D -m 640 %{SOURCE3} %{buildroot}%{_sysconfdir}/sudoers.d/ceilometer
+install -p -D -m 640 etc/ceilometer/ceilometer.conf.sample %{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 -p -D -m 640 etc/ceilometer/event_definitions.yaml %{buildroot}%{_sysconfdir}/ceilometer/event_definitions.yaml
+install -p -D -m 640 etc/ceilometer/api_paste.ini %{buildroot}%{_sysconfdir}/ceilometer/api_paste.ini
+install -p -D -m 640 etc/ceilometer/rootwrap.conf %{buildroot}%{_sysconfdir}/ceilometer/rootwrap.conf
+install -p -D -m 640 etc/ceilometer/rootwrap.d/ipmi.filters %{buildroot}/%{_sysconfdir}/ceilometer/rootwrap.d/ipmi.filters
 
 # Install initscripts for services
+%if 0%{?rhel} && 0%{?rhel} <= 6
 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 -p -D -m 755 %{SOURCE14} %{buildroot}%{_initrddir}/%{name}-alarm-notifier
+install -p -D -m 755 %{SOURCE15} %{buildroot}%{_initrddir}/%{name}-alarm-evaluator
+install -p -D -m 755 %{SOURCE16} %{buildroot}%{_initrddir}/%{name}-notification
+install -p -D -m 755 %{SOURCE17} %{buildroot}%{_initrddir}/%{name}-ipmi
+install -p -D -m 755 %{SOURCE18} %{buildroot}%{_initrddir}/%{name}-polling
 
 # Install upstart jobs examples
 install -d -m 755 %{buildroot}%{_datadir}/ceilometer
@@ -248,19 +411,36 @@ 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 -p -m 644 %{SOURCE140} %{buildroot}%{_datadir}/ceilometer/
+install -p -m 644 %{SOURCE150} %{buildroot}%{_datadir}/ceilometer/
+install -p -m 644 %{SOURCE160} %{buildroot}%{_datadir}/ceilometer/
+install -p -m 644 %{SOURCE170} %{buildroot}%{_datadir}/ceilometer/
+install -p -m 644 %{SOURCE180} %{buildroot}%{_datadir}/ceilometer/
+%else
+install -p -D -m 644 %{SOURCE10} %{buildroot}%{_unitdir}/%{name}-api.service
+install -p -D -m 644 %{SOURCE11} %{buildroot}%{_unitdir}/%{name}-collector.service
+install -p -D -m 644 %{SOURCE12} %{buildroot}%{_unitdir}/%{name}-compute.service
+install -p -D -m 644 %{SOURCE13} %{buildroot}%{_unitdir}/%{name}-central.service
+install -p -D -m 644 %{SOURCE14} %{buildroot}%{_unitdir}/%{name}-alarm-notifier.service
+install -p -D -m 644 %{SOURCE15} %{buildroot}%{_unitdir}/%{name}-alarm-evaluator.service
+install -p -D -m 644 %{SOURCE16} %{buildroot}%{_unitdir}/%{name}-notification.service
+install -p -D -m 644 %{SOURCE17} %{buildroot}%{_unitdir}/%{name}-ipmi.service
+install -p -D -m 644 %{SOURCE18} %{buildroot}%{_unitdir}/%{name}-polling.service
+%endif
 
 # Install logrotate
 install -p -D -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
 
+%if 0%{?rhel} && 0%{?rhel} <= 6
 # Install pid directory
 install -d -m 755 %{buildroot}%{_localstatedir}/run/ceilometer
+%endif
 
 # 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
@@ -272,107 +452,302 @@ fi
 exit 0
 
 %post compute
+%if 0%{?rhel} && 0%{?rhel} <= 6
 if [ $1 -eq 1 ] ; then
     # Initial installation
     /sbin/chkconfig --add %{name}-compute
 fi
+%else
+%systemd_post %{name}-compute.service
+%endif
 
 %post collector
+%if 0%{?rhel} && 0%{?rhel} <= 6
 if [ $1 -eq 1 ] ; then
     # Initial installation
     /sbin/chkconfig --add %{name}-collector
 fi
+%else
+%systemd_post %{name}-collector.service
+%endif
+
+%post notification
+%if 0%{?rhel} && 0%{?rhel} <= 6
+if [ $1 -eq 1 ] ; then
+    # Initial installation
+    /sbin/chkconfig --add %{name}-notification
+fi
+%else
+%systemd_post %{name}-notification.service
+%endif
 
 %post api
+%if 0%{?rhel} && 0%{?rhel} <= 6
 if [ $1 -eq 1 ] ; then
     # Initial installation
     /sbin/chkconfig --add %{name}-api
 fi
+%else
+%systemd_post %{name}-api.service
+%endif
 
 %post central
+%if 0%{?rhel} && 0%{?rhel} <= 6
 if [ $1 -eq 1 ] ; then
     # Initial installation
     /sbin/chkconfig --add %{name}-central
 fi
+%else
+%systemd_post %{name}-central.service
+%endif
+
+
+%post alarm
+%if 0%{?rhel} && 0%{?rhel} <= 6
+if [ $1 -eq 1 ] ; then
+    # Initial installation
+    for svc in alarm-notifier alarm-evaluator; do
+        /sbin/chkconfig --add %{name}-${svc}
+    done
+fi
+%else
+%systemd_post %{name}-alarm-notifier.service %{name}-alarm-evaluator.service
+%endif
+
+%post ipmi
+%if 0%{?rhel} && 0%{?rhel} <= 6
+if [ $1 -eq 1 ] ; then
+    # Initial installation
+    /sbin/chkconfig --add %{name}-ipmi
+fi
+%else
+%systemd_post %{name}-alarm-ipmi.service
+%endif
+
+%post polling
+%if 0%{?rhel} && 0%{?rhel} <= 6
+if [ $1 -eq 1 ] ; then
+    # Initial installation
+    /sbin/chkconfig --add %{name}-polling
+fi
+%else
+%systemd_post %{name}-polling.service
+%endif
 
 %preun compute
+%if 0%{?rhel} && 0%{?rhel} <= 6
 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
+%else
+%systemd_preun %{name}-compute.service
+%endif
 
 %preun collector
+%if 0%{?rhel} && 0%{?rhel} <= 6
 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
+%else
+%systemd_preun %{name}-collector.service
+%endif
+
+%preun notification
+%if 0%{?rhel} && 0%{?rhel} <= 6
+if [ $1 -eq 0 ] ; then
+    for svc in notification; do
+        /sbin/service %{name}-${svc} stop > /dev/null 2>&1
+        /sbin/chkconfig --del %{name}-${svc}
+    done
+fi
+%else
+%systemd_preun %{name}-notification.service
+%endif
 
 %preun api
+%if 0%{?rhel} && 0%{?rhel} <= 6
 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
+%else
+%systemd_preun %{name}-api.service
+%endif
 
 %preun central
+%if 0%{?rhel} && 0%{?rhel} <= 6
 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
+%else
+%systemd_preun %{name}-central.service
+%endif
+
+
+%preun alarm
+%if 0%{?rhel} && 0%{?rhel} <= 6
+if [ $1 -eq 0 ] ; then
+    for svc in alarm-notifier alarm-evaluator; do
+        /sbin/service %{name}-${svc} stop > /dev/null 2>&1
+        /sbin/chkconfig --del %{name}-${svc}
+    done
+fi
+%else
+%systemd_preun %{name}-alarm-notifier.service %{name}-alarm-evaluator.service
+%endif
+
+%preun ipmi
+%if 0%{?rhel} && 0%{?rhel} <= 6
+if [ $1 -eq 0 ] ; then
+    for svc in ipmi; do
+        /sbin/service %{name}-${svc} stop > /dev/null 2>&1
+        /sbin/chkconfig --del %{name}-${svc}
+    done
+fi
+%else
+%systemd_preun %{name}-ipmi.service
+%endif
+
+%preun polling
+%if 0%{?rhel} && 0%{?rhel} <= 6
+if [ $1 -eq 0 ] ; then
+    for svc in polling; do
+        /sbin/service %{name}-${svc} stop > /dev/null 2>&1
+        /sbin/chkconfig --del %{name}-${svc}
+    done
+fi
+%else
+%systemd_preun %{name}-polling.service
+%endif
 
 %postun compute
+%if 0%{?rhel} && 0%{?rhel} <= 6
 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
+%else
+%systemd_postun_with_restart %{name}-compute.service
+%endif
 
 %postun collector
+%if 0%{?rhel} && 0%{?rhel} <= 6
 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
+%else
+%systemd_postun_with_restart %{name}-collector.service
+%endif
+
+%postun notification
+%if 0%{?rhel} && 0%{?rhel} <= 6
+if [ $1 -ge 1 ] ; then
+    # Package upgrade, not uninstall
+    for svc in notification; do
+        /sbin/service %{name}-${svc} condrestart > /dev/null 2>&1 || :
+    done
+fi
+%else
+%systemd_postun_with_restart %{name}-notification.service
+%endif
 
 %postun api
+%if 0%{?rhel} && 0%{?rhel} <= 6
 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
+%else
+%systemd_postun_with_restart %{name}-api.service
+%endif
 
 %postun central
+%if 0%{?rhel} && 0%{?rhel} <= 6
 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
+%else
+%systemd_postun_with_restart %{name}-central.service
+%endif
+
 
+%postun alarm
+%if 0%{?rhel} && 0%{?rhel} <= 6
+if [ $1 -ge 1 ] ; then
+    # Package upgrade, not uninstall
+    for svc in alarm-notifier alarm-evaluator; do
+        /sbin/service %{name}-${svc} condrestart > /dev/null 2>&1 || :
+    done
+fi
+%else
+%systemd_postun_with_restart %{name}-alarm-notifier.service %{name}-alarm-evaluator.service
+%endif
+
+%postun ipmi
+%if 0%{?rhel} && 0%{?rhel} <= 6
+if [ $1 -ge 1 ] ; then
+    # Package upgrade, not uninstall
+    for svc in ipmi; do
+        /sbin/service %{name}-${svc} condrestart > /dev/null 2>&1 || :
+    done
+fi
+%else
+%systemd_postun_with_restart %{name}-ipmi.service
+%endif
+
+%postun polling
+%if 0%{?rhel} && 0%{?rhel} <= 6
+if [ $1 -ge 1 ] ; then
+    # Package upgrade, not uninstall
+    for svc in polling; do
+        /sbin/service %{name}-${svc} condrestart > /dev/null 2>&1 || :
+    done
+fi
+%else
+%systemd_postun_with_restart %{name}-polling.service
+%endif
 
 %files common
 %doc LICENSE
 %dir %{_sysconfdir}/ceilometer
+%attr(-, root, ceilometer) %{_datadir}/ceilometer/ceilometer-dist.conf
 %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) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/api_paste.ini
+%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/event_definitions.yaml
 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
 
-%dir %attr(0755, ceilometer, root) %{_localstatedir}/log/ceilometer
+%dir %attr(0775, ceilometer, ceilometer) %{_localstatedir}/log/ceilometer
+%if 0%{?rhel} && 0%{?rhel} <= 6
 %dir %attr(0755, ceilometer, root) %{_localstatedir}/run/ceilometer
+%endif
+
+%{_bindir}/ceilometer-dbsync
+%{_bindir}/ceilometer-expirer
+%{_bindir}/ceilometer-send-sample
 
-%{_bindir}/ceilometer-*
 
 %defattr(-, ceilometer, ceilometer, -)
 %dir %{_sharedstatedir}/ceilometer
@@ -392,41 +767,188 @@ fi
 
 %files compute
 %{_bindir}/ceilometer-agent-compute
+%if 0%{?rhel} && 0%{?rhel} <= 6
 %{_initrddir}/%{name}-compute
 %{_datarootdir}/ceilometer/%{name}-compute.upstart
+%else
+%{_unitdir}/%{name}-compute.service
+%endif
 
 
 %files collector
-%{_bindir}/ceilometer-collector
+%{_bindir}/ceilometer-collector*
+%if 0%{?rhel} && 0%{?rhel} <= 6
 %{_initrddir}/%{name}-collector
 %{_datarootdir}/ceilometer/%{name}-collector.upstart
+%else
+%{_unitdir}/%{name}-collector.service
+%endif
+
+
+%files notification
+%{_bindir}/ceilometer-agent-notification
+%if 0%{?rhel} && 0%{?rhel} <= 6
+%{_initrddir}/%{name}-notification
+%{_datarootdir}/ceilometer/%{name}-notification.upstart
+%else
+%{_unitdir}/%{name}-notification.service
+%endif
 
 
 %files api
-%doc ceilometer/api/v1/static/LICENSE.*
 %{_bindir}/ceilometer-api
+%if 0%{?rhel} && 0%{?rhel} <= 6
 %{_initrddir}/%{name}-api
 %{_datarootdir}/ceilometer/%{name}-api.upstart
+%else
+%{_unitdir}/%{name}-api.service
+%endif
 
 
 %files central
 %{_bindir}/ceilometer-agent-central
+%if 0%{?rhel} && 0%{?rhel} <= 6
 %{_initrddir}/%{name}-central
 %{_datarootdir}/ceilometer/%{name}-central.upstart
+%else
+%{_unitdir}/%{name}-central.service
+%endif
+
+
+%files ipmi
+%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/rootwrap.conf
+%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/rootwrap.d/ipmi.filters
+%{_bindir}/ceilometer-rootwrap
+%{_bindir}/ceilometer-agent-ipmi
+%{_sysconfdir}/sudoers.d/ceilometer
+%if 0%{?rhel} && 0%{?rhel} <= 6
+%{_initrddir}/%{name}-ipmi
+%{_datarootdir}/ceilometer/%{name}-ipmi.upstart
+%else
+%{_unitdir}/%{name}-ipmi.service
+%endif
+
+
+%files polling
+%{_bindir}/ceilometer-polling
+%if 0%{?rhel} && 0%{?rhel} <= 6
+%{_initrddir}/%{name}-polling
+%{_datarootdir}/ceilometer/%{name}-polling.upstart
+%else
+%{_unitdir}/%{name}-polling.service
+%endif
+
+
+%files alarm
+%{_bindir}/ceilometer-alarm-notifier
+%{_bindir}/ceilometer-alarm-evaluator
+%if 0%{?rhel} && 0%{?rhel} <= 6
+%{_initrddir}/%{name}-alarm-notifier
+%{_datarootdir}/ceilometer/%{name}-alarm-notifier.upstart
+%{_initrddir}/%{name}-alarm-evaluator
+%{_datarootdir}/ceilometer/%{name}-alarm-evaluator.upstart
+%else
+%{_unitdir}/%{name}-alarm-notifier.service
+%{_unitdir}/%{name}-alarm-evaluator.service
+%endif
 
 
 %changelog
-* Fri Jun 21 2013 Pádraig Brady <P@draigBrady.com> - 2013.1.2-2
-- Avoid qpid exchange leaks
+* Fri Jan 23 2015 Ivan Berezovskiy <iberezovskiy@mirantis.com> - 2015.1.0
+- Create own package for polling agent
+- Update requirements and version to 2015.1.0
+
+* Wed Jan 21 2015 Ivan Berezovskiy <iberezovskiy@mirantis.com> - 2015.1.0b1
+- Update version to 2015.1.0b1
+
+* Wed Nov 19 2014 Daniil Trishkin <dtrishkin@mirantis.com> - 2014.2
+- Update to upstream 2014.2
+- Update requirements
+
+* Fri Jul 4 2014 Ivan Berezovskiy <iberezovskiy@mirantis.com> - 2014.2.b1
+- Update to upstream 2014.2.b1
+- Update requirements
 
-* Thu Jun  6 2013 Pádraig Brady <P@draigBrady.com> - 2013.1.2-1
-- Update to stable/grizzly release 2013.1.2
+* Wed Jun 11 2014 Steve Linabery <slinaber@redhat.com> - 2014.1.1-2
+- Update to upstream 2014.1.1
+- fix message routing with newer QPID (rhbz#1103800)
 
-* Thu Jun  6 2013 Pádraig Brady <P@draigBrady.com> - 2013.1-3
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2014.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Wed May 07 2014 Pádraig Brady <pbrady@redhat.com> - 2014.1-2
+- Avoid dependency issues with distributed installs (#1095414)
+
+* Thu Apr 17 2014 Pádraig Brady <pbrady@redhat.com> - 2014.1-1
+- Update to Icehouse release
+
+* Fri Apr 11 2014 Pádraig Brady <pbrady@redhat.com> - 2014.1-0.7.rc2
+- Update to upstream 2014.1.rc2
+- Remove qpid as default rpc backend
+- Split out openstack-ceilometer-notification subpackage from collector
+
+* Mon Mar 31 2014 Pádraig Brady <P@draigBrady.com> 2014.1-0.6.rc1
+- Update to upstream 2014.1.rc1
+
+* Fri Mar 14 2014 Pádraig Brady <pbrady@redhat.com> - 2014.1-0.5.b3
+- Update to Icehouse milestone 3
+
+* Tue Feb 04 2014 Pádraig Brady <pbrady@redhat.com> - 2014.1-0.4.b2
+- Fix missing dependency on python-babel
+
+* Mon Jan 27 2014 Pádraig Brady <pbrady@redhat.com> - 2014.1-0.3.b2
+- Update to Icehouse milestone 2
+
+* Mon Jan 06 2014 Pádraig Brady <pbrady@redhat.com> - 2014.1-0.2.b1
+- Set python-six min version to ensure updated
+
+* Mon Dec 23 2013 Pádraig Brady <pbrady@redhat.com> - 2014.1-0.1.b1
+- Update to Icehouse milestone 1
+
+* Tue Dec 17 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2.1-1
+- Update to Havana stable release 2013.2.1
+
+* Thu Oct 17 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2-1
+- Update to Havana release
+
+* Tue Oct 15 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2-0.12.rc2
+- Update to Havana rc2
+- openstack-ceilometer-alarm now depends on python-ceilometerclient
+
+* Thu Oct 03 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2-0.12.rc1
+- Update to Havana rc1
+- Separate out the new alarm services to the 'alarm' subpackage
+
+* Fri Sep 13 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2-0.10.b3
+- Depend on python-oslo-config >= 1:1.2.0 so it upgraded automatically
+
+* Mon Sep 10 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2-0.8.b3
+- Depend on python-pymongo rather than pymongo to avoid a puppet bug
+
+* Mon Sep 9 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2-0.7.b3
+- Depend on python-alembic
+
+* Mon Sep 9 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2-0.6.b3
+- Distribute dist defaults in ceilometer-dist.conf separate to user ceilometer.conf
+
+* Mon Sep 9 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2-0.5.b3
+- Update to Havana milestone 3
+
+* Tue Aug 27 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2-0.4.b1
+- Avoid python runtime dependency management
+
+* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2013.2-0.3.b1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
+* Thu Jun  6 2013 Pádraig Brady <P@draigBrady.com> - 2013.2-0.2.b1
 - Fix uninstall for openstack-ceilometer-central
 
+* Fri May 31 2013 Pádraig Brady <P@draigBrady.com> - 2013.2-0.1.b1
+- Havana milestone 1
+
 * 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
+