%define project marconi
Name: openstack-%{project}
Version: 2014.1
Release: 2%{?dist}.2
Summary: OpenStack Message Queuing Service (%{project})
Group: Applications/System
License: ASL 2.0
URL: https://wiki.openstack.org/wiki/Marconi
Source0: https://launchpad.net/%{project}/icehouse/%{version}/+download/%{project}-%{version}.tar.gz
Source1: %{project}-dist.conf
Source10: %{name}.service
Source11: %{name}.logrotate
#
# patches_base=2014.1
#
Patch0001: 0001-Remove-runtime-dependency-on-PBR.patch
BuildArch: noarch
BuildRequires: python2-devel
BuildRequires: systemd
BuildRequires: python-setuptools
BuildRequires: python-pbr
BuildRequires: openstack-utils
Requires(pre): shadow-utils
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
Requires: python-six
Requires: python-stevedore
Requires: python-jsonschema
Requires: python-oslo-config
Requires: python-falcon
Requires: python-pymongo
Requires: python-sqlite3dbm
Requires: python-memcached
Requires: python-babel
Requires: python-bson
Requires: python-sqlalchemy
Requires: python-keystoneclient
Requires: python-netaddr
Requires: python-iso8601
Requires: python-msgpack
Requires: python-webob
Requires: python-posix_ipc
%description
Marconi is a messaging and notifications service for the OpenStack product
portfolio, supporting point-to-point, producer-consumer, publisher-subscriber
models. Marconi is designed to perform and scale in a multi-tenant environment.
%prep
%setup -q -n %{project}-%{version}
%patch0001 -p1
sed -i 's/REDHATVERSION/%{version}/; s/REDHATRELEASE/%{release}/' %{project}/version.py
# Remove the requirements file so that pbr hooks don't add it
# to distutils requires_dist config
rm -rf {test-,}requirements.txt
%build
%{__python2} setup.py build
# Programmatically update defaults in sample configs
# First we ensure all values are commented in appropriate format.
# Since icehouse, there was an uncommented keystone_authtoken section
# at the end of the file which mimics but also conflicted with our
# distro editing that had been done for many releases.
sed -i '/^[^#[]/{s/^/#/; s/ //g}; /^#[^ ]/s/ = /=/' etc/%{project}.conf.sample etc/logging.conf.sample
# TODO: Make this more robust
# Note it only edits the first occurance, so assumes a section ordering in sample
# and also doesn't support multi-valued variables like dhcpbridge_flagfile.
while read name eq value; do
test "$name" && test "$value" || continue
sed -i "0,/^# *$name=/{s!^# *$name=.*!#$name=$value!}" etc/%{project}.conf.sample
done < %{SOURCE1}
%install
%{__python2} setup.py install -O1 --skip-build --root %{buildroot}
# Setup directories
install -d -m 755 %{buildroot}%{_unitdir}
install -d -m 755 %{buildroot}%{_datadir}/%{project}
install -d -m 755 %{buildroot}%{_sharedstatedir}/%{project}
install -d -m 755 %{buildroot}%{_localstatedir}/log/%{project}
# Install config files
install -p -D -m 644 %{SOURCE1} %{buildroot}%{_datadir}/%{project}/%{project}-dist.conf
install -d -m 755 %{buildroot}%{_sysconfdir}/%{project}
install -p -D -m 640 etc/%{project}.conf.sample %{buildroot}%{_sysconfdir}/%{project}/%{project}.conf
install -p -D -m 640 etc/logging.conf.sample %{buildroot}%{_sysconfdir}/%{project}/logging.conf
# Install logrotate
install -p -D -m 644 %{SOURCE11} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
# Install initscripts
install -p -m 644 %{SOURCE10} %{buildroot}%{_unitdir}
%pre
USERNAME=%{project}
GROUPNAME=$USERNAME
HOMEDIR=%{_sharedstatedir}/$USERNAME
getent group $GROUPNAME >/dev/null || groupadd -r $GROUPNAME
getent passwd $USERNAME >/dev/null || \
useradd -r -g $GROUPNAME -G $GROUPNAME -d $HOMEDIR -s /sbin/nologin \
-c "OpenStack Marconi Daemon" $USERNAME
exit 0
%post
%systemd_post openstack-marconi.service
%preun
%systemd_preun openstack-marconi.service
%postun
%systemd_postun_with_restart openstack-marconi.service
%files
%doc LICENSE README.rst
%dir %{_sysconfdir}/%{project}
%config(noreplace) %attr(0640, root, %{project}) %{_sysconfdir}/%{project}/%{project}.conf
%config(noreplace) %attr(0640, root, %{project}) %{_sysconfdir}/%{project}/logging.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%dir %attr(0755, %{project}, root) %{_localstatedir}/log/%{project}
%{_bindir}/%{project}-server
%{_datarootdir}/%{project}
%defattr(-, %{project}, %{project}, -)
%dir %{_sharedstatedir}/%{project}
%defattr(-,root,root,-)
%{_unitdir}/%{name}.service
%{python_sitelib}/%{project}
%{python_sitelib}/%{project}-%{version}*.egg-info
%changelog
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2014.1-2.2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Tue Apr 29 2014 Jon Bernard <jobernar@redhat.com> - 2014.1-2
- Added dist config file overrides
- Various cleanups
* Tue Apr 22 2014 Jon Bernard <jobernar@redhat.com> - 2014.1-1.1
- Add missing runtime dependency on python-posix_ipc
- Remove runtime dependency on PBR
* Thu Apr 17 2014 Jon Bernard <jobernar@redhat.com> - 2014.1-1
- Initial package