214 lines
5.8 KiB
RPMSpec
214 lines
5.8 KiB
RPMSpec
#encoding UTF-8
|
|
|
|
%global python_name ironic
|
|
%global daemon_prefix openstack-ironic
|
|
%global os_version ${version}
|
|
|
|
%global with_doc %{!?_without_doc:1}%{?_without_doc:0}
|
|
|
|
%if 0%{?rhel} && 0%{?rhel} <= 6
|
|
%{!?__python2: %global __python2 /usr/bin/python2}
|
|
%{!?python2_sitelib: %global python2_sitelib %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
|
|
%{!?python2_sitearch: %global python2_sitearch %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
|
|
%endif
|
|
|
|
%if ! 0%{?overwrite_configs}
|
|
%global configfile %config(noreplace)
|
|
%else
|
|
%global configfile %verify(mode)
|
|
%endif
|
|
|
|
Name: openstack-ironic
|
|
Summary: OpenStack Baremetal Hypervisor API (ironic)
|
|
Version: %{os_version}$version_suffix
|
|
Release: $release%{?dist}
|
|
License: ASL 2.0
|
|
Group: System Environment/Base
|
|
URL: http://www.openstack.org
|
|
|
|
Source0: %{python_name}-%{os_version}.tar.gz
|
|
%if ! (0%{?rhel} > 6)
|
|
Source10: openstack-ironic-api.init
|
|
Source11: openstack-ironic-conductor.init
|
|
%else
|
|
Source10: openstack-ironic-api.service
|
|
Source11: openstack-ironic-conductor.service
|
|
%endif
|
|
|
|
Source20: ironic.logrotate
|
|
Source53: ironic-sudoers
|
|
|
|
#for $idx, $fn in enumerate($patches)
|
|
Patch$idx: $fn
|
|
#end for
|
|
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}
|
|
BuildArch: noarch
|
|
|
|
# Requirements needed to build this thing
|
|
BuildRequires: python-devel
|
|
BuildRequires: python-pbr
|
|
BuildRequires: python-setuptools
|
|
BuildRequires: python-sphinx
|
|
|
|
%prep
|
|
%setup -q -n %{python_name}-%{os_version}
|
|
|
|
#for $idx, $fn in enumerate($patches)
|
|
%patch$idx -p1
|
|
#end for
|
|
|
|
%build
|
|
|
|
export PBR_VERSION=$version
|
|
%{__python2} setup.py build
|
|
|
|
%install
|
|
|
|
export PBR_VERSION=$version
|
|
%{__python2} setup.py install -O1 --skip-build --root=%{buildroot}
|
|
|
|
# install init files
|
|
%if ! (0%{?rhel} > 6)
|
|
install -p -D -m 755 %{SOURCE10} %{buildroot}%{_initrddir}/openstack-ironic-api
|
|
install -p -D -m 755 %{SOURCE11} %{buildroot}%{_initrddir}/openstack-ironic-conductor
|
|
%else
|
|
mkdir -p %{buildroot}%{_unitdir}
|
|
install -p -D -m 755 %{SOURCE10} %{buildroot}%{_unitdir}/openstack-ironic-api.service
|
|
install -p -D -m 755 %{SOURCE11} %{buildroot}%{_unitdir}/openstack-ironic-conductor.service
|
|
%endif
|
|
|
|
install -d -m 755 %{buildroot}%{_sharedstatedir}/ironic/
|
|
install -d -m 755 %{buildroot}%{_sysconfdir}/ironic/rootwrap.d
|
|
|
|
#Populate the conf dir
|
|
install -p -D -m 640 etc/ironic/ironic.conf.sample %{buildroot}/%{_sysconfdir}/ironic/ironic.conf
|
|
install -p -D -m 640 etc/ironic/policy.json %{buildroot}/%{_sysconfdir}/ironic/policy.json
|
|
install -p -D -m 640 etc/ironic/rootwrap.conf %{buildroot}/%{_sysconfdir}/ironic/rootwrap.conf
|
|
install -p -D -m 640 etc/ironic/rootwrap.d/* %{buildroot}/%{_sysconfdir}/ironic/rootwrap.d/
|
|
|
|
# Install logrotate
|
|
install -p -D -m 644 %{SOURCE20} %{buildroot}%{_sysconfdir}/logrotate.d/openstack-ironic
|
|
|
|
# Install sudoers
|
|
install -p -D -m 440 %{SOURCE53} %{buildroot}%{_sysconfdir}/sudoers.d/ironic
|
|
|
|
# Runtime directories
|
|
install -d -m 755 %{buildroot}%{_sharedstatedir}/ironic
|
|
install -p -D -m 644 ironic/drivers/modules/pxe_config.template %{buildroot}%{_sharedstatedir}/ironic
|
|
|
|
# Other runtime directories
|
|
install -d -m 755 %{buildroot}%{_localstatedir}/log/ironic
|
|
install -d -m 755 %{buildroot}%{_localstatedir}/run/ironic
|
|
|
|
|
|
%description
|
|
Ironic provides an API for management and provisioning of physical machines
|
|
|
|
%package -n python-%{python_name}
|
|
Summary: Ironic Python libraries
|
|
Group: Applications/System
|
|
|
|
#for $i in $requires
|
|
Requires: ${i}
|
|
#end for
|
|
|
|
#for $i in $conflicts
|
|
Conflicts: ${i}
|
|
#end for
|
|
|
|
%description -n python-%{python_name}
|
|
This package contains the %{name} Python library.
|
|
|
|
%files -n python-%{python_name}
|
|
%defattr(-,root,root,-)
|
|
%doc LICENSE
|
|
%{python_sitelib}/ironic*
|
|
%exclude %{python_sitelib}/%{python_name}/tests
|
|
|
|
%package common
|
|
Summary: Ironic common
|
|
Group: System Environment/Base
|
|
|
|
#for $i in $requires
|
|
Requires: ${i}
|
|
#end for
|
|
|
|
%description common
|
|
Components common to all OpenStack Ironic services
|
|
|
|
%files common
|
|
%doc README.rst LICENSE
|
|
%{_bindir}/ironic-dbsync
|
|
%{_bindir}/ironic-rootwrap
|
|
|
|
#if $newer_than_eq('2014.2')
|
|
#if $older_than_eq('2015.1')
|
|
%{_bindir}/ironic-nova-bm-migrate
|
|
#end if
|
|
#end if
|
|
|
|
%attr(-,ironic,ironic) %{_sharedstatedir}/ironic
|
|
%configfile %{_sharedstatedir}/ironic/pxe_config.template
|
|
%dir %attr(0755, ironic, ironic) %{_localstatedir}/log/ironic
|
|
%dir %attr(0755, ironic, ironic) %{_localstatedir}/run/ironic
|
|
|
|
%configfile %attr(-,root,ironic) %{_sysconfdir}/ironic
|
|
%configfile %attr(0640, root, ironic) %{_sysconfdir}/ironic/policy.json
|
|
%configfile %attr(0640, root, ironic) %{_sysconfdir}/ironic/ironic.conf
|
|
|
|
%configfile %{_sysconfdir}/ironic/rootwrap.conf
|
|
%configfile %{_sysconfdir}/ironic/rootwrap.d/*
|
|
%configfile %{_sysconfdir}/logrotate.d/*
|
|
%configfile %{_sysconfdir}/sudoers.d/ironic
|
|
|
|
%pre common
|
|
#raw
|
|
getent group ironic >/dev/null || groupadd -r ironic
|
|
getent passwd ironic >/dev/null || \
|
|
useradd -r -g ironic -d %{_sharedstatedir}/ironic -s /sbin/nologin \
|
|
-c "OpenStack Ironic Daemons" ironic
|
|
exit 0
|
|
#end raw
|
|
|
|
%package api
|
|
Summary: The Ironic API
|
|
Group: System Environment/Base
|
|
|
|
Requires: %{name}-common = %{version}-%{release}
|
|
Requires: python-%{python_name} = %{version}-%{release}
|
|
|
|
%description api
|
|
Ironic API for management and provisioning of physical machines
|
|
|
|
%files api
|
|
%doc LICENSE
|
|
%{_bindir}/ironic-api
|
|
%if ! (0%{?rhel} > 6)
|
|
%{_initrddir}/openstack-ironic-api
|
|
%else
|
|
%{_unitdir}/openstack-ironic-api.service
|
|
%endif
|
|
|
|
%package conductor
|
|
Summary: The Ironic Conductor
|
|
Group: System Environment/Base
|
|
|
|
Requires: %{name}-common = %{version}-%{release}
|
|
Requires: python-%{python_name} = %{version}-%{release}
|
|
|
|
Requires: ipmitool
|
|
|
|
%description conductor
|
|
Ironic Conductor for management and provisioning of physical machines
|
|
|
|
%files conductor
|
|
%doc LICENSE
|
|
%{_bindir}/ironic-conductor
|
|
%if ! (0%{?rhel} > 6)
|
|
%{_initrddir}/openstack-ironic-conductor
|
|
%else
|
|
%{_unitdir}/openstack-ironic-conductor.service
|
|
%endif
|
|
%changelog
|