upstream/openstack/python-heat/openstack-heat/centos/openstack-heat.spec

556 lines
16 KiB
RPMSpec

%{!?upstream_version: %global upstream_version %{version}%{?milestone}}
%global with_doc %{!?_without_doc:1}%{?_without_doc:0}
Name: openstack-heat
Summary: OpenStack Orchestration (heat)
# Liberty semver reset
# https://review.openstack.org/#/q/I6a35fa0dda798fad93b804d00a46af80f08d475c,n,z
Epoch: 1
Version: 9.0.0
Release: 1%{?_tis_dist}.%{tis_patch_ver}
License: ASL 2.0
URL: http://www.openstack.org
Source0: openstack-heat-%{version}.tar.gz
#
Obsoletes: heat < 7-9
Provides: heat
Source2: openstack-heat-api.service
Source3: openstack-heat-api-cfn.service
Source4: openstack-heat-engine.service
Source5: openstack-heat-api-cloudwatch.service
Source6: openstack-heat-all.service
Source20: heat-dist.conf
Source22: heat-purge-deleted-active
BuildArch: noarch
BuildRequires: git
BuildRequires: openstack-macros
BuildRequires: python2-devel
BuildRequires: python-stevedore >= 1.20.0
BuildRequires: python-oslo-cache
BuildRequires: python-oslo-context
BuildRequires: python-oslo-middleware
BuildRequires: python-oslo-policy
BuildRequires: python-oslo-messaging
BuildRequires: python-setuptools
BuildRequires: python2-pip
BuildRequires: python2-wheel
BuildRequires: python-openstackdocstheme
BuildRequires: python-oslo-i18n
BuildRequires: python-oslo-db
BuildRequires: python-oslo-utils
BuildRequires: python-oslo-log
BuildRequires: python-oslo-versionedobjects
BuildRequires: python-eventlet
BuildRequires: python-kombu
BuildRequires: python-lxml
BuildRequires: python-netaddr
BuildRequires: python-migrate
BuildRequires: python-osprofiler
BuildRequires: python-six
BuildRequires: PyYAML
BuildRequires: python-sphinx
BuildRequires: m2crypto
BuildRequires: python-paramiko
BuildRequires: python-yaql
# These are required to build due to the requirements check added
BuildRequires: python-paste-deploy
BuildRequires: python-routes
BuildRequires: python-sqlalchemy
BuildRequires: python-webob
BuildRequires: python-pbr
BuildRequires: python-d2to1
BuildRequires: python-cryptography
# These are required to build the config file
BuildRequires: python-oslo-config
BuildRequires: python-redis
BuildRequires: crudini
BuildRequires: python-crypto
BuildRequires: python-keystoneauth1
BuildRequires: python-keystoneclient
# Required to compile translation files
BuildRequires: python-babel
BuildRequires: systemd-units
BuildRequires: systemd-devel
BuildRequires: cgts-client
BuildRequires: python-keyring
BuildRequires: tsconfig
%if 0%{?with_doc}
BuildRequires: python-cinderclient
BuildRequires: python-novaclient
BuildRequires: python-saharaclient
BuildRequires: python-neutronclient
BuildRequires: python-swiftclient
BuildRequires: python-heatclient
BuildRequires: python-ceilometerclient
BuildRequires: python-glanceclient
BuildRequires: python-troveclient
BuildRequires: python-aodhclient
BuildRequires: python-barbicanclient
BuildRequires: python-designateclient
BuildRequires: python-magnumclient
BuildRequires: python-monascaclient
BuildRequires: python-manilaclient
BuildRequires: python-zaqarclient
BuildRequires: python-croniter
BuildRequires: python-gabbi
BuildRequires: python-testscenarios
BuildRequires: python-tempest
BuildRequires: python2-pycodestyle
# NOTE(ykarel) zunclient are not packaged yet.
BuildRequires: python-senlinclient
#BuildRequires: python-zunclient
%endif
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires: %{name}-engine = %{epoch}:%{version}-%{release}
Requires: %{name}-api = %{epoch}:%{version}-%{release}
Requires: %{name}-api-cfn = %{epoch}:%{version}-%{release}
Requires: %{name}-api-cloudwatch = %{epoch}:%{version}-%{release}
%package -n python-heat-tests
Summary: Heat tests
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires: python-mox3
Requires: python-oslotest
Requires: python-testresources
Requires: python-oslotest
Requires: python-oslo-log
Requires: python-oslo-utils
Requires: python-heatclient
Requires: python-cinderclient
Requires: python-zaqarclient
Requires: python-keystoneclient
Requires: python-swiftclient
Requires: python-paramiko
Requires: python-kombu
Requires: python-oslo-config
Requires: python-oslo-concurrency
Requires: python-requests
Requires: python-eventlet
Requires: PyYAML
Requires: python-six
Requires: python-gabbi
%description -n python-heat-tests
Heat is a service to orchestrate composite cloud applications using a
declarative template format through an OpenStack-native REST API.
This package contains the Heat test files.
%prep
# WRS: The tarball is packaged as openstack-heat rather than heat
%setup -q -n openstack-heat-%{version}
# 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 tests in contrib
find contrib -name tests -type d | xargs rm -r
%build
export PBR_VERSION=%{version}
%{__python} setup.py build
# Generate i18n files
%{__python2} setup.py compile_catalog -d build/lib/heat/locale
# Generate sample config and add the current directory to PYTHONPATH so
# oslo-config-generator doesn't skip heat's entry points.
PYTHONPATH=. oslo-config-generator --config-file=config-generator.conf
%py2_build_wheel
%install
export PBR_VERSION=%{version}
%{__python} setup.py install -O1 --skip-build --root=%{buildroot}
mkdir -p $RPM_BUILD_ROOT/wheels
install -m 644 dist/*.whl $RPM_BUILD_ROOT/wheels/
sed -i -e '/^#!/,1 d' %{buildroot}/%{python_sitelib}/heat/db/sqlalchemy/migrate_repo/manage.py
# Create fake egg-info for the tempest plugin
# TODO switch to %{service} everywhere as in openstack-example.spec
%global service heat
%py2_entrypoint %{service} %{service}
mkdir -p %{buildroot}/%{_localstatedir}/log/heat/
mkdir -p %{buildroot}/%{_localstatedir}/run/heat/
# install systemd unit files
install -p -D -m 644 %{SOURCE2} %{buildroot}%{_unitdir}/openstack-heat-api.service
install -p -D -m 644 %{SOURCE3} %{buildroot}%{_unitdir}/openstack-heat-api-cfn.service
install -p -D -m 644 %{SOURCE4} %{buildroot}%{_unitdir}/openstack-heat-engine.service
install -p -D -m 644 %{SOURCE5} %{buildroot}%{_unitdir}/openstack-heat-api-cloudwatch.service
install -p -D -m 644 %{SOURCE2} %{buildroot}%{_unitdir}/openstack-heat-all.service
mkdir -p %{buildroot}/%{_sharedstatedir}/heat/
mkdir -p %{buildroot}/%{_sysconfdir}/heat/
%if 0%{?with_doc}
export PBR_VERSION=%{version}
%{__python2} setup.py build_sphinx -b html
%{__python2} setup.py build_sphinx -b man
mkdir -p %{buildroot}%{_mandir}/man1
install -p -D -m 644 doc/build/man/*.1 %{buildroot}%{_mandir}/man1/
%endif
rm -f %{buildroot}/%{_bindir}/heat-db-setup
rm -f %{buildroot}/%{_mandir}/man1/heat-db-setup.*
rm -rf %{buildroot}/var/lib/heat/.dummy
rm -f %{buildroot}/usr/bin/cinder-keystone-setup
install -p -D -m 640 etc/heat/heat.conf.sample %{buildroot}/%{_sysconfdir}/heat/heat.conf
install -p -D -m 640 %{SOURCE20} %{buildroot}%{_datadir}/heat/heat-dist.conf
crudini --set %{buildroot}%{_datadir}/heat/heat-dist.conf revision heat_revision %{version}
install -p -D -m 640 etc/heat/api-paste.ini %{buildroot}/%{_datadir}/heat/api-paste-dist.ini
install -p -D -m 640 etc/heat/policy.json %{buildroot}/%{_sysconfdir}/heat
# TODO: move this to setup.cfg
cp -vr etc/heat/templates %{buildroot}/%{_sysconfdir}/heat
cp -vr etc/heat/environment.d %{buildroot}/%{_sysconfdir}/heat
# WRS Manually stage non-code files
install -p -D -m 640 etc/heat/api-paste.ini %{buildroot}/%{_sysconfdir}/heat/api-paste.ini
install -p -D -m 755 %{SOURCE22} %{buildroot}/%{_bindir}/heat-purge-deleted-active
chmod 750 %{buildroot}/%{_sysconfdir}/heat
install -p -D -m 644 heat/db/sqlalchemy/migrate_repo/migrate.cfg %{buildroot}%{python_sitelib}/heat/db/sqlalchemy/migrate_repo/migrate.cfg
install -p -D -m 755 heat/cloudinit/boothook.sh %{buildroot}%{python_sitelib}/heat/cloudinit/boothook.sh
install -p -D -m 644 heat/cloudinit/config %{buildroot}%{python_sitelib}/heat/cloudinit/config
# Install i18n .mo files (.po and .pot are not required)
install -d -m 755 %{buildroot}%{_datadir}
rm -f %{buildroot}%{python2_sitelib}/heat/locale/*/LC_*/heat*po
rm -f %{buildroot}%{python2_sitelib}/heat/locale/*pot
mv %{buildroot}%{python2_sitelib}/heat/locale %{buildroot}%{_datadir}/locale
# Find language files
%find_lang heat --all-name
%description
Heat is a service to orchestrate composite cloud applications using a
declarative template format through an OpenStack-native REST API.
%package common
Summary: Heat common
Group: System Environment/Base
Requires: python-pbr
Requires: python-croniter
Requires: python-eventlet
Requires: python-stevedore >= 1.20.0
Requires: python-lxml
Requires: python-netaddr
Requires: python-osprofiler
Requires: python-paste-deploy
Requires: python-requests
Requires: python-routes
Requires: python-sqlalchemy
Requires: python-migrate
Requires: python-webob
Requires: python-six >= 1.9.0
Requires: PyYAML
Requires: python-paramiko
Requires: python-babel >= 2.3.4
Requires: python-cryptography >= 1.6
Requires: python-yaql >= 1.1.0
Requires: python-oslo-cache
Requires: python-oslo-concurrency
Requires: python-oslo-config
Requires: python-oslo-context
Requires: python-oslo-utils
Requires: python-oslo-db
Requires: python-oslo-i18n
Requires: python-oslo-middleware
Requires: python-oslo-messaging
Requires: python-oslo-policy
Requires: python-oslo-reports
Requires: python-oslo-serialization
Requires: python-oslo-service
Requires: python-oslo-log
Requires: python-oslo-versionedobjects
Requires: python-ceilometerclient
Requires: python-cinderclient
Requires: python-glanceclient
Requires: python-heatclient
Requires: python-keystoneclient
Requires: python-keystonemiddleware
Requires: python-neutronclient
Requires: python-novaclient
#Requires: python-saharaclient
Requires: python-swiftclient
#Requires: python-troveclient
Requires: python-debtcollector >= 1.2.0
Requires: python-keystoneauth1 >= 3.1.0
Requires: python-crypto >= 2.6
#Requires: python-barbicanclient
#Requires: python-designateclient
#Requires: python-manilaclient
#Requires: python-mistralclient
Requires: python-openstackclient
Requires: python-zaqarclient
Requires: python-aodhclient
Requires: python-magnumclient
#Requires: python-senlinclient
Requires: python-openstacksdk
Requires: pytz
Requires: python-tenacity >= 3.2.1
Requires(pre): shadow-utils
%description common
Components common to all OpenStack Heat services
%files common -f heat.lang
%doc LICENSE
%{_bindir}/heat-manage
%{_bindir}/heat-keystone-setup
%{_bindir}/heat-keystone-setup-domain
%{_bindir}/heat-purge-deleted-active
%{python2_sitelib}/heat
%{python2_sitelib}/heat-%{upstream_version}-*.egg-info
%exclude %{python2_sitelib}/heat/tests
%attr(-, root, heat) %{_datadir}/heat/heat-dist.conf
%attr(-, root, heat) %{_datadir}/heat/api-paste-dist.ini
%dir %attr(0750,heat,root) %{_localstatedir}/log/heat
%dir %attr(0750,heat,root) %{_localstatedir}/run/heat
%dir %attr(0750,heat,root) %{_sharedstatedir}/heat
%dir %attr(0755,heat,root) %{_sysconfdir}/heat
%config(noreplace) %attr(-, root, heat) %{_sysconfdir}/heat/heat.conf
%config(noreplace) %attr(-, root, heat) %{_sysconfdir}/heat/api-paste.ini
%config(noreplace) %attr(-, root, heat) %{_sysconfdir}/heat/policy.json
%config(noreplace) %attr(-,root,heat) %{_sysconfdir}/heat/environment.d/*
%config(noreplace) %attr(-,root,heat) %{_sysconfdir}/heat/templates/*
%if 0%{?with_doc}
%{_mandir}/man1/heat-keystone-setup.1.gz
%{_mandir}/man1/heat-keystone-setup-domain.1.gz
%{_mandir}/man1/heat-manage.1.gz
%endif
%files -n python-heat-tests
%license LICENSE
%{python2_sitelib}/heat/tests
%{python2_sitelib}/heat_integrationtests
%{python2_sitelib}/%{service}_tests.egg-info
%pre common
# 187:187 for heat - rhbz#845078
getent group heat >/dev/null || groupadd -r --gid 187 heat
getent passwd heat >/dev/null || \
useradd --uid 187 -r -g heat -d %{_sharedstatedir}/heat -s /sbin/nologin \
-c "OpenStack Heat Daemons" heat
exit 0
%package engine
Summary: The Heat engine
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
%description engine
Heat is a service to orchestrate composite cloud applications using a
declarative template format through an OpenStack-native REST API.
The heat-engine's main responsibility is to orchestrate the launching of
templates and provide events back to the API consumer.
%files engine
%doc README.rst LICENSE
%if 0%{?with_doc}
%doc doc/build/html/man/heat-engine.html
%endif
%{_bindir}/heat-engine
%{_unitdir}/openstack-heat-engine.service
%if 0%{?with_doc}
%{_mandir}/man1/heat-engine.1.gz
%endif
%post engine
%systemd_post openstack-heat-engine.service
%preun engine
%systemd_preun openstack-heat-engine.service
%postun engine
%systemd_postun_with_restart openstack-heat-engine.service
%package api
Summary: The Heat API
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
%description api
Heat is a service to orchestrate composite cloud applications using a
declarative template format through an OpenStack-native REST API.
The heat-api component provides an OpenStack-native REST API that processes API
requests by sending them to the heat-engine over RPC.
%files api
%doc README.rst LICENSE
%if 0%{?with_doc}
%doc doc/build/html/man/heat-api.html
%endif
%{_bindir}/heat-api
%{_bindir}/heat-wsgi-api
%{_unitdir}/openstack-heat-api.service
%if 0%{?with_doc}
%{_mandir}/man1/heat-api.1.gz
%endif
%post api
%systemd_post openstack-heat-api.service
%preun api
%systemd_preun openstack-heat-api.service
%postun api
%systemd_postun_with_restart openstack-heat-api.service
%package api-cfn
Summary: Heat CloudFormation API
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
%description api-cfn
Heat is a service to orchestrate composite cloud applications using a
declarative template format through an OpenStack-native REST API.
The heat-api-cfn component provides an AWS Query API that is compatible with
AWS CloudFormation and processes API requests by sending them to the
heat-engine over RPC.
%files api-cfn
%doc README.rst LICENSE
%if 0%{?with_doc}
%doc doc/build/html/man/heat-api-cfn.html
%endif
%{_bindir}/heat-api-cfn
%{_bindir}/heat-wsgi-api-cfn
%{_unitdir}/openstack-heat-api-cfn.service
%if 0%{?with_doc}
%{_mandir}/man1/heat-api-cfn.1.gz
%endif
%post api-cfn
%systemd_post openstack-heat-api-cloudwatch.service
%preun api-cfn
%systemd_preun openstack-heat-api-cloudwatch.service
%postun api-cfn
%systemd_postun_with_restart openstack-heat-api-cloudwatch.service
%package api-cloudwatch
Summary: Heat CloudWatch API
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
%description api-cloudwatch
Heat is a service to orchestrate composite cloud applications using a
declarative template format through an OpenStack-native REST API.
AWS CloudWatch-compatible API to the Heat Engine
%files api-cloudwatch
%doc README.rst LICENSE
%if 0%{?with_doc}
%doc doc/build/html/man/heat-api-cloudwatch.html
%endif
%{_bindir}/heat-api-cloudwatch
%{_bindir}/heat-wsgi-api-cloudwatch
%{_unitdir}/openstack-heat-api-cloudwatch.service
%if 0%{?with_doc}
%{_mandir}/man1/heat-api-cloudwatch.1.gz
%endif
%post api-cloudwatch
%systemd_post openstack-heat-api-cfn.service
%preun api-cloudwatch
%systemd_preun openstack-heat-api-cfn.service
%postun api-cloudwatch
%systemd_postun_with_restart openstack-heat-api-cfn.service
%package monolith
Summary: The combined Heat engine/API
Requires: %{name}-common = %{epoch}:%{version}-%{release}
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
%description monolith
Heat is a service to orchestrate composite cloud applications using a
declarative template format through an OpenStack-native REST API.
The heat-all process bundles together any (or all) of heat-engine, heat-api,
heat-cfn-api, and heat-cloudwatch-api into a single process. This can be used
to bootstrap a minimal TripleO deployment, but is not the recommended way of
running the Heat service in general.
%files monolith
%doc README.rst LICENSE
%{_bindir}/heat-all
%{_unitdir}/openstack-heat-all.service
%post monolith
%systemd_post openstack-heat-all.service
%preun monolith
%systemd_preun openstack-heat-all.service
%postun monolith
%systemd_postun_with_restart openstack-heat-all.service
%package wheels
Summary: %{name} wheels
%description wheels
Contains python wheels for %{name}
%files wheels
/wheels/*
%changelog
* Wed Aug 30 2017 rdo-trunk <javier.pena@redhat.com> 1:9.0.0-1
- Update to 9.0.0
* Fri Aug 25 2017 rdo-trunk <javier.pena@redhat.com> 1:9.0.0-0.2.0rc2
- Update to 9.0.0.0rc2
* Tue Aug 22 2017 Alfredo Moralejo <amoralej@redhat.com> 1:9.0.0-0.1.0rc1
- Update to 9.0.0.0rc1