Blob Blame History Raw
%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