%{!?upstream_version: %global upstream_version %{version}%{?milestone}} %global with_doc %{!?_without_doc:1}%{?_without_doc:0} %global pypi_name cinder # WRS: Keep service name - used by build scripts #%global service cinder # WRS: remove docs - for now %global with_doc 0 %global common_desc \ OpenStack Volume (codename Cinder) provides services to manage and \ access block storage volumes for use by Virtual Machine instances. Name: openstack-cinder # Liberty semver reset # https://review.openstack.org/#/q/I6a35fa0dda798fad93b804d00a46af80f08d475c,n,z Epoch: 1 Version: 11.0.0 Release: 1%{?_tis_dist}.%{tis_patch_ver} Summary: OpenStack Volume service License: ASL 2.0 URL: http://www.openstack.org/software/openstack-storage/ Source0: https://tarballs.openstack.org/%{pypi_name}/%{pypi_name}-%{upstream_version}.tar.gz # Source1: cinder-dist.conf Source2: cinder.logrotate # WRS: Adding pre-built config file (via: tox -egenconfig) as this is not # getting generated correctly in our build system. Might be due to partial # rebase env w/ mitaka+newton. We need to re-evaluate once rebase is # complete. Source3: cinder.conf.sample Source10: openstack-cinder-api.service Source11: openstack-cinder-scheduler.service Source12: openstack-cinder-volume.service Source13: openstack-cinder-backup.service Source20: cinder-sudoers Source21: restart-cinder Source22: cinder-purge-deleted-active BuildArch: noarch BuildRequires: intltool BuildRequires: python-d2to1 BuildRequires: python-openstackdocstheme BuildRequires: python-pbr BuildRequires: python-reno BuildRequires: python-sphinx BuildRequires: python2-devel BuildRequires: python-setuptools BuildRequires: python2-pip BuildRequires: python2-wheel BuildRequires: python-netaddr BuildRequires: systemd BuildRequires: git BuildRequires: openstack-macros BuildRequires: os-brick BuildRequires: pyparsing BuildRequires: pytz BuildRequires: python-decorator BuildRequires: openstack-macros # Required to build cinder.conf BuildRequires: python-google-api-client >= 1.4.2 BuildRequires: python-keystonemiddleware BuildRequires: python-glanceclient >= 1:2.8.0 #BuildRequires: python-novaclient >= 1:9.0.0 BuildRequires: python-novaclient >= 2.29.0 BuildRequires: python-swiftclient >= 3.2.0 BuildRequires: python-oslo-db BuildRequires: python-oslo-config >= 2:4.0.0 BuildRequires: python-oslo-policy BuildRequires: python-oslo-reports BuildRequires: python-oslotest BuildRequires: python-oslo-utils BuildRequires: python-oslo-versionedobjects BuildRequires: python-oslo-vmware BuildRequires: python-os-win BuildRequires: python-castellan BuildRequires: python-cryptography BuildRequires: python-lxml BuildRequires: python-osprofiler BuildRequires: python-paramiko BuildRequires: python-suds BuildRequires: python-taskflow BuildRequires: python-tooz BuildRequires: python-oslo-log BuildRequires: python-oslo-i18n BuildRequires: python-barbicanclient BuildRequires: python-requests BuildRequires: python-retrying # Required to compile translation files BuildRequires: python-babel # Needed for unit tests BuildRequires: python-ddt BuildRequires: python-fixtures BuildRequires: python-mock BuildRequires: python-oslotest BuildRequires: python-subunit BuildRequires: python-testtools BuildRequires: python-testrepository BuildRequires: python-testresources BuildRequires: python-testscenarios BuildRequires: python-os-testr BuildRequires: python-rtslib Requires: python-cinder = %{epoch}:%{version}-%{release} # we dropped the patch to remove PBR for Delorean Requires: python-pbr # as convenience Requires: python-cinderclient Requires(post): systemd Requires(preun): systemd Requires(postun): systemd Requires(pre): shadow-utils Requires: lvm2 Requires: python-osprofiler Requires: python-rtslib # Required for EMC VNX driver Requires: python2-storops %description %{common_desc} %package -n python-cinder Summary: OpenStack Volume Python libraries Group: Applications/System Requires: sudo Requires: qemu-img Requires: sysfsutils Requires: os-brick >= 1.15.2 Requires: python-paramiko >= 2.0 Requires: python-simplejson >= 2.2.0 Requires: python-castellan >= 0.7.0 Requires: python-eventlet >= 0.18.2 Requires: python-greenlet >= 0.3.2 Requires: python-iso8601 >= 0.1.11 Requires: python-lxml >= 2.3 Requires: python-stevedore >= 1.20.0 Requires: python-suds Requires: python-tooz >= 1.47.0 Requires: python-sqlalchemy >= 1.0.10 Requires: python-migrate >= 0.11.0 Requires: python-paste-deploy Requires: python-routes >= 2.3.1 Requires: python-webob >= 1.7.1 Requires: python-glanceclient >= 1:2.8.0 Requires: python-swiftclient >= 3.2.0 Requires: python-keystoneclient >= 3.8.0 #Requires: python-novaclient >= 1:9.0.0 Requires: python-novaclient >= 2.29.0 Requires: python-oslo-config >= 2:4.0.0 Requires: python-six >= 1.9.0 Requires: python-psutil >= 3.2.2 Requires: python-babel Requires: python-google-api-client >= 1.4.2 Requires: python-oslo-rootwrap >= 5.0.0 Requires: python-oslo-utils >= 3.20.0 Requires: python-oslo-serialization >= 1.10.0 Requires: python-oslo-db >= 4.24.0 Requires: python-oslo-context >= 2.14.0 Requires: python-oslo-concurrency >= 3.8.0 Requires: python-oslo-middleware >= 3.27.0 Requires: python-taskflow >= 2.7.0 Requires: python-oslo-messaging >= 5.24.2 Requires: python-oslo-policy >= 1.23.0 Requires: python-oslo-reports >= 0.6.0 Requires: python-oslo-service >= 1.10.0 Requires: python-oslo-versionedobjects >= 1.19.0 Requires: iscsi-initiator-utils Requires: python-osprofiler >= 1.4.0 Requires: python-httplib2 >= 0.7.5 Requires: python-oauth2client >= 1.5.0 Requires: python-oslo-log >= 3.22.0 Requires: python-oslo-i18n >= 2.1.0 Requires: python-barbicanclient >= 4.0.0 Requires: python-requests >= 2.10.0 Requires: python-retrying >= 1.2.3 Requires: pyparsing >= 2.0.7 Requires: pytz Requires: python-decorator Requires: python-enum34 Requires: python-ipaddress Requires: python-keystonemiddleware >= 4.12.0 Requires: python-keystoneauth1 >= 3.1.0 Requires: python-oslo-privsep >= 1.9.0 Requires: python-cryptography >= 1.6 %description -n python-cinder %{common_desc} This package contains the cinder Python library. %package -n python-cinder-tests Summary: Cinder tests Requires: openstack-cinder = %{epoch}:%{version}-%{release} # Added test requirements Requires: python-hacking Requires: python-anyjson Requires: python-coverage Requires: python-ddt Requires: python-fixtures Requires: python-mock Requires: python-mox3 Requires: python-oslotest Requires: python-subunit Requires: python-testtools Requires: python-testrepository Requires: python-testresources Requires: python-testscenarios Requires: python-os-testr Requires: python-tempest %description -n python-cinder-tests %{common_desc} This package contains the Cinder test files. %if 0%{?with_doc} %package doc Summary: Documentation for OpenStack Volume Group: Documentation Requires: %{name} = %{epoch}:%{version}-%{release} BuildRequires: graphviz # Required to build module documents BuildRequires: python-eventlet BuildRequires: python-routes BuildRequires: python-sqlalchemy BuildRequires: python-webob BuildRequires: python-stevedore # while not strictly required, quiets the build down when building docs. BuildRequires: python-migrate BuildRequires: python-iso8601 >= 0.1.9 %description doc %{common_desc} This package contains documentation files for cinder. %endif %prep %autosetup -n cinder-%{upstream_version} -S git find . \( -name .gitignore -o -name .placeholder \) -delete find cinder -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 %py_req_cleanup %build # Generate config file PYTHONPATH=. oslo-config-generator --config-file=cinder/config/cinder-config-generator.conf # WRS: Put this pre-built config file in place of the generated one as it's not # being built correctly currently cp %{SOURCE3} etc/cinder/cinder.conf.sample # Build export PBR_VERSION=%{version} %{__python2} setup.py build # Generate i18n files # (amoralej) we can remove '-D cinder' once https://review.openstack.org/#/c/439501/ is merged %{__python2} setup.py compile_catalog -d build/lib/%{pypi_name}/locale -D cinder %py2_build_wheel %install export PBR_VERSION=%{version} %{__python2} setup.py install -O1 --skip-build --root %{buildroot} mkdir -p $RPM_BUILD_ROOT/wheels install -m 644 dist/*.whl $RPM_BUILD_ROOT/wheels/ # Create fake egg-info for the tempest plugin # TODO switch to %{service} everywhere as in openstack-example.spec %global service cinder %py2_entrypoint %{service} %{service} # 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 %{__python2} setup.py build_sphinx --builder man mkdir -p %{buildroot}%{_mandir}/man1 install -p -D -m 644 doc/build/man/*.1 %{buildroot}%{_mandir}/man1/ # Setup directories install -d -m 755 %{buildroot}%{_sharedstatedir}/cinder install -d -m 755 %{buildroot}%{_sharedstatedir}/cinder/tmp install -d -m 755 %{buildroot}%{_localstatedir}/log/cinder # Install config files install -d -m 755 %{buildroot}%{_sysconfdir}/cinder install -p -D -m 640 %{SOURCE1} %{buildroot}%{_datadir}/cinder/cinder-dist.conf install -d -m 755 %{buildroot}%{_sysconfdir}/cinder/volumes install -p -D -m 640 etc/cinder/rootwrap.conf %{buildroot}%{_sysconfdir}/cinder/rootwrap.conf install -p -D -m 640 etc/cinder/api-paste.ini %{buildroot}%{_sysconfdir}/cinder/api-paste.ini install -p -D -m 640 etc/cinder/policy.json %{buildroot}%{_sysconfdir}/cinder/policy.json install -p -D -m 640 etc/cinder/cinder.conf.sample %{buildroot}%{_sysconfdir}/cinder/cinder.conf # Install initscripts for services install -p -D -m 644 %{SOURCE10} %{buildroot}%{_unitdir}/openstack-cinder-api.service install -p -D -m 644 %{SOURCE11} %{buildroot}%{_unitdir}/openstack-cinder-scheduler.service install -p -D -m 644 %{SOURCE12} %{buildroot}%{_unitdir}/openstack-cinder-volume.service install -p -D -m 644 %{SOURCE13} %{buildroot}%{_unitdir}/openstack-cinder-backup.service # Install sudoers install -p -D -m 440 %{SOURCE20} %{buildroot}%{_sysconfdir}/sudoers.d/cinder # Install pid directory install -d -m 755 %{buildroot}%{_localstatedir}/run/cinder # Install rootwrap files in /usr/share/cinder/rootwrap mkdir -p %{buildroot}%{_datarootdir}/cinder/rootwrap/ install -p -D -m 644 etc/cinder/rootwrap.d/* %{buildroot}%{_datarootdir}/cinder/rootwrap/ # Symlinks to rootwrap config files mkdir -p %{buildroot}%{_sysconfdir}/cinder/rootwrap.d for filter in %{_datarootdir}/os-brick/rootwrap/*.filters; do ln -s $filter %{buildroot}%{_sysconfdir}/cinder/rootwrap.d/ done # Install i18n .mo files (.po and .pot are not required) install -d -m 755 %{buildroot}%{_datadir} rm -f %{buildroot}%{python2_sitelib}/%{pypi_name}/locale/*/LC_*/%{pypi_name}*po rm -f %{buildroot}%{python2_sitelib}/%{pypi_name}/locale/*pot mv %{buildroot}%{python2_sitelib}/%{pypi_name}/locale %{buildroot}%{_datadir}/locale # Find language files %find_lang %{pypi_name} --all-name # Remove unneeded in production stuff rm -f %{buildroot}%{_bindir}/cinder-all rm -f %{buildroot}%{_bindir}/cinder-debug rm -fr %{buildroot}%{python2_sitelib}/run_tests.* rm -f %{buildroot}/usr/share/doc/cinder/README* # FIXME(jpena): unit tests are taking too long in the current DLRN infra # Until we have a better architecture, let's not run them when under DLRN %if 0%{!?dlrn} %check OS_TEST_PATH=./cinder/tests/unit ostestr --concurrency=2 %endif # WRS: in-service restarts install -p -D -m 700 %{SOURCE21} %{buildroot}%{_bindir}/restart-cinder # WRS: purge cron install -p -D -m 755 %{SOURCE22} %{buildroot}%{_bindir}/cinder-purge-deleted-active %pre getent group cinder >/dev/null || groupadd -r cinder --gid 165 if ! getent passwd cinder >/dev/null; then useradd -u 165 -r -g cinder -G cinder,nobody -d %{_sharedstatedir}/cinder -s /sbin/nologin -c "OpenStack Cinder Daemons" cinder fi exit 0 %post %systemd_post openstack-cinder-volume %systemd_post openstack-cinder-api %systemd_post openstack-cinder-scheduler %systemd_post openstack-cinder-backup %preun %systemd_preun openstack-cinder-volume %systemd_preun openstack-cinder-api %systemd_preun openstack-cinder-scheduler %systemd_preun openstack-cinder-backup %postun %systemd_postun_with_restart openstack-cinder-volume %systemd_postun_with_restart openstack-cinder-api %systemd_postun_with_restart openstack-cinder-scheduler %systemd_postun_with_restart openstack-cinder-backup %files %dir %{_sysconfdir}/cinder %config(noreplace) %attr(-, root, cinder) %{_sysconfdir}/cinder/cinder.conf %config(noreplace) %attr(-, root, cinder) %{_sysconfdir}/cinder/api-paste.ini %config(noreplace) %attr(-, root, cinder) %{_sysconfdir}/cinder/rootwrap.conf %config(noreplace) %attr(-, root, cinder) %{_sysconfdir}/cinder/policy.json %config(noreplace) %{_sysconfdir}/sudoers.d/cinder %{_sysconfdir}/cinder/rootwrap.d/ %attr(-, root, cinder) %{_datadir}/cinder/cinder-dist.conf %dir %attr(0750, cinder, root) %{_localstatedir}/log/cinder %dir %attr(0755, cinder, root) %{_localstatedir}/run/cinder %dir %attr(0755, cinder, root) %{_sysconfdir}/cinder/volumes %{_bindir}/cinder-* %{_unitdir}/*.service %{_datarootdir}/cinder %{_mandir}/man1/cinder*.1.gz #WRS: in-service patching %{_bindir}/restart-cinder #WRS: purge cron %{_bindir}/cinder-purge-deleted-active %defattr(-, cinder, cinder, -) %dir %{_sharedstatedir}/cinder %dir %{_sharedstatedir}/cinder/tmp %files -n python-cinder -f %{pypi_name}.lang %{?!_licensedir: %global license %%doc} %license LICENSE %{python2_sitelib}/cinder %{python2_sitelib}/cinder-*.egg-info %exclude %{python2_sitelib}/cinder/tests %files -n python-cinder-tests %license LICENSE %{python2_sitelib}/cinder/tests %{python2_sitelib}/%{service}_tests.egg-info %if 0%{?with_doc} %files doc %doc doc/build/html %endif %package wheels Summary: %{name} wheels %description wheels Contains python wheels for %{name} %files wheels /wheels/* %changelog * Wed Aug 30 2017 rdo-trunk 1:11.0.0-1 - Update to 11.0.0 * Fri Aug 25 2017 Alfredo Moralejo 1:11.0.0-0.2.0rc2 - Update to 11.0.0.0rc2 * Tue Aug 22 2017 Alfredo Moralejo 1:11.0.0-0.1.0rc1 - Update to 11.0.0.0rc1