%{!?upstream_version: %global upstream_version %{version}%{?milestone}} #%global with_doc %{!?_without_doc:1}%{?_without_doc:0} # Currently fails on Fedora due to pbr vs sphinx error. %global with_doc 0 %global pypi_name freezer-api %global freezer_user freezer-api %global freezer_group %{freezer_user} %global service freezer-api Name: openstack-freezer-api Version: 5.0.0 Release: 1 Summary: Backup/DR service for OpenStack License: ASL 2.0 URL: https://wiki.openstack.org/wiki/Freezer Source0: https://tarballs.openstack.org/%{pypi_name}/%{pypi_name}-%{upstream_version}.tar.gz Source1: freezer-dist.conf Source2: freezer-api.logrotate Source10: openstack-freezer-api.service BuildArch: noarch BuildRequires: python-oslo-sphinx BuildRequires: python-pbr BuildRequires: python-sphinx BuildRequires: python2-devel BuildRequires: python-setuptools BuildRequires: systemd BuildRequires: git # Required to generate config file BuildRequires: python-elasticsearch BuildRequires: python-falcon BuildRequires: python-keystonemiddleware BuildRequires: python-jsonschema BuildRequires: python-oslo-config BuildRequires: python-oslo-log BuildRequires: python-oslo-policy # Required to compile translation files BuildRequires: python-babel Requires: python-freezer-api = %{version}-%{release} # we dropped the patch to remove PBR for Delorean Requires: python-pbr Requires(post): systemd Requires(preun): systemd Requires(postun): systemd Requires(pre): shadow-utils %description Freezer is a backup/restore platform for OpenStack. %package -n python-freezer-api Summary: Freezer Python libraries Group: Applications/System Requires: python-elasticsearch >= 2.0.0 Requires: python-falcon >= 1.0.0 Requires: python-jsonschema >= 2.0.0 Requires: python-six >= 1.9.0 Requires: python-sqlalchemy >= 1.0.10 Requires: python-paste Requires: python-paste-deploy >= 1.5.0 Requires: python-keystonemiddleware >= 4.12.0 Requires: python-oslo-config >= 2:4.0.0 Requires: python-oslo-context >= 2.14.0 Requires: python-oslo-db >= 4.24.0 Requires: python-oslo-i18n >= 2.1.0 Requires: python-oslo-log >= 3.22.0 Requires: python-oslo-middleware >= 3.27.0 Requires: python-oslo-policy >= 1.23.0 Requires: python-oslo-utils >= 3.18.0 %description -n python-freezer-api Freezer is a backup/restore platform for OpenStack. This package contains the freezer-api Python library. %package -n python-freezer-api-tests Summary: Freezer-api tests Requires: openstack-freezer-api = %{version}-%{release} # Added test requirements Requires: python-hacking Requires: python-fixtures Requires: python-mock >= 2.0 Requires: python-testtools Requires: python-testrepository Requires: python-testresources Requires: python-testscenarios Requires: python-os-testr Requires: python-tempest %description -n python-freezer-api-tests This package contains the Freezer API test files. %if 0%{?with_doc} %package doc Summary: Documentation for OpenStack Freezer Group: Documentation Requires: %{name} = %{version}-%{release} BuildRequires: graphviz # Required to build module documents BuildRequires: python-sqlalchemy %description doc Freezer is a backup/restore platform for OpenStack. This package contains documentation files for freezer-api. %endif %prep %autosetup -n freezer-api-%{upstream_version} -S git find . \( -name .gitignore -o -name .placeholder \) -delete find freezer_api -name \*.py -exec sed -i '/\/usr\/bin\/env python/{d;q}' {} + sed -i 's/%{version}.%{milestone}/%{version}/' PKG-INFO # 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 # Remove the tempest API plugin files, these will be built # from the separate freezer-tempest-plugin project. rm -rf freezer_api/tests/freezer_api_tempest_plugin/* # Remove tempest plugin entry point sed -i '/freezer_api_tempest_plugin/d' setup.cfg %build sed -i 's/pbr>=2.0.0/pbr/' setup.py # Generate config file PYTHONPATH=. oslo-config-generator --config-file=config-generator/freezer-api.conf # Skip git sdist to avoid detection of freezer_api_tempest_plugin # files. SKIP_GIT_SDIST=1 %{__python2} setup.py build %install %{__python2} setup.py install -O1 --skip-build --root %{buildroot} # docs generation requires everything to be installed first export PYTHONPATH="$( pwd ):$PYTHONPATH" %if 0%{?with_doc} %{__python2} setup.py build_sphinx --builder html # Fix hidden-file-or-dir warnings rm -fr doc/build/html/.buildinfo %endif # Setup directories install -d -m 755 %{buildroot}%{_sharedstatedir}/%{service} install -d -m 755 %{buildroot}%{_localstatedir}/log/%{service} # Install config files install -d -m 755 %{buildroot}%{_sysconfdir}/%{service} install -p -D -m 640 %{SOURCE1} %{buildroot}%{_datadir}/%{service}/%{service}-dist.conf install -p -D -m 640 etc/freezer/freezer-api.conf.sample %{buildroot}%{_sysconfdir}/%{service}/%{service}.conf install -p -D -m 640 etc/freezer/freezer-paste.ini %{buildroot}%{_sysconfdir}/%{service}/freezer-paste.ini # Install initscripts for services install -p -D -m 644 %{SOURCE10} %{buildroot}%{_unitdir}/openstack-freezer-api.service # Install logrotate install -p -D -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/openstack-freezer-api # Install pid directory install -d -m 755 %{buildroot}%{_localstatedir}/run/freezer-api %pre # Origin: http://fedoraproject.org/wiki/Packaging:UsersAndGroups#Dynamic_allocation USERNAME=%{freezer_user} GROUPNAME=%{freezer_group} HOMEDIR=%{_sharedstatedir}/freezer-api 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 "Freezer Daemons" $USERNAME exit 0 %post %systemd_post openstack-freezer-api %preun %systemd_preun openstack-freezer-api %postun %systemd_postun_with_restart openstack-freezer-api %files %dir %{_sysconfdir}/freezer-api %config(noreplace) %attr(-, root, %{freezer_group}) %{_sysconfdir}/%{service}/%{service}.conf %config(noreplace) %attr(-, root, %{freezer_group}) %{_sysconfdir}/%{service}/freezer-paste.ini %config(noreplace) %{_sysconfdir}/logrotate.d/openstack-%{service} %attr(-, root, %{freezer_group}) %{_datadir}/%{service}/%{service}-dist.conf %dir %attr(0750, %{freezer_user}, root) %{_localstatedir}/log/%{service} %dir %attr(0755, %{freezer_user}, root) %{_localstatedir}/run/%{service} %{_bindir}/freezer-* %{_unitdir}/*.service %{_datarootdir}/%{service} %defattr(-, %{freezer_user}, %{freezer_group}, -) %dir %{_sharedstatedir}/%{service} %files -n python-freezer-api %{?!_licensedir: %global license %%doc} %license LICENSE %{python2_sitelib}/freezer_api %{python2_sitelib}/freezer_api*.egg-info %exclude %{python2_sitelib}/freezer_api/tests %files -n python-freezer-api-tests %license LICENSE %{python2_sitelib}/freezer_api/tests %if 0%{?with_doc} %files doc %doc doc/build/html %endif %changelog