Seed code for ironic
[ta/ironic.git] / ironic.spec
1 %global full_release ironic-%{version}
2
3 %{!?upstream_version: %global upstream_version %{version}%{?milestone}}
4 %global rdo_hash 399a4ca416f838d6fdc7f6c3bdbc28dd31058635
5
6 Name:           openstack-ironic
7 # Liberty semver reset
8 # https://review.openstack.org/#/q/I1a161b2c1d1e27268065b6b4be24c8f7a5315afb,n,z
9 Epoch:          1
10 Summary:        OpenStack Baremetal Hypervisor API (ironic)
11 Version:        10.1.4
12 Release:        1%{?dist}.2
13 License:        %{_platform_licence}
14 Vendor:         Nokia and Openstack modified
15 URL:            http://www.openstack.org
16 Source0:        https://tarballs.openstack.org/ironic/ironic-%{version}.tar.gz
17 Source1:        https://github.com/rdo-packages/ironic-distgit/archive/%{rdo_hash}.zip
18
19 Patch0:         nokia/patches/0001-floppy-support.patch
20
21 BuildArch:      noarch
22 BuildRequires:  openstack-macros
23 BuildRequires:  python2-setuptools
24 BuildRequires:  python2-devel
25 BuildRequires:  python2-pbr
26 BuildRequires:  openssl-devel
27 BuildRequires:  libxml2-devel
28 BuildRequires:  libxslt-devel
29 BuildRequires:  gmp-devel
30 BuildRequires:  python2-sphinx
31 BuildRequires:  systemd
32 # Required to compile translation files
33 BuildRequires:  python2-babel
34 # Required to run unit tests
35 BuildRequires:  pysendfile
36 BuildRequires:  python2-alembic
37 BuildRequires:  python2-automaton
38 BuildRequires:  python2-cinderclient
39 BuildRequires:  python-dracclient
40 BuildRequires:  python2-eventlet
41 BuildRequires:  python2-futurist
42 BuildRequires:  python2-glanceclient
43 BuildRequires:  python-ironic-inspector-client
44 BuildRequires:  python-ironic-lib
45 BuildRequires:  python2-jinja2
46 BuildRequires:  python2-jsonpatch
47 BuildRequires:  python2-jsonschema
48 BuildRequires:  python2-keystoneauth1
49 BuildRequires:  python2-keystonemiddleware
50 BuildRequires:  python2-mock
51 BuildRequires:  python2-neutronclient
52 BuildRequires:  python2-oslo-concurrency
53 BuildRequires:  python2-oslo-config
54 BuildRequires:  python2-oslo-context
55 BuildRequires:  python2-oslo-db
56 BuildRequires:  python2-oslo-db-tests
57 BuildRequires:  python2-oslo-i18n
58 BuildRequires:  python2-oslo-log
59 BuildRequires:  python2-oslo-messaging
60 BuildRequires:  python2-oslo-middleware
61 BuildRequires:  python2-oslo-policy
62 BuildRequires:  python2-oslo-reports
63 BuildRequires:  python2-oslo-rootwrap
64 BuildRequires:  python2-oslo-serialization
65 BuildRequires:  python2-oslo-service
66 BuildRequires:  python2-oslo-utils
67 BuildRequires:  python2-oslo-versionedobjects
68 BuildRequires:  python2-oslotest
69 BuildRequires:  python2-osprofiler
70 BuildRequires:  /usr/bin/ostestr
71 BuildRequires:  python2-os-traits
72 BuildRequires:  python2-pbr
73 BuildRequires:  python2-pecan
74 BuildRequires:  python-proliantutils
75 BuildRequires:  python2-psutil
76 BuildRequires:  python2-requests
77 BuildRequires:  python-retrying
78 BuildRequires:  python2-scciclient
79 BuildRequires:  python2-six
80 BuildRequires:  python2-sqlalchemy
81 BuildRequires:  python2-stevedore
82 BuildRequires:  python2-sushy
83 BuildRequires:  python2-swiftclient
84 BuildRequires:  python2-testresources
85 BuildRequires:  python2-testscenarios
86 BuildRequires:  python2-testtools
87 BuildRequires:  python2-tooz
88 BuildRequires:  python-UcsSdk
89 BuildRequires:  python-webob
90 BuildRequires:  python2-wsme
91 BuildRequires:  python2-pysnmp
92 BuildRequires:  python2-pytz
93
94 %prep
95 %setup -q -n ironic-%{upstream_version}
96 %setup -T -D -a 1 -q -n ironic-%{upstream_version}
97 %patch0 -p1
98 # Let RPM handle the requirements
99 %py_req_cleanup
100 # Remove tempest plugin entrypoint as a workaround
101 sed -i '/tempest/d' setup.cfg
102 rm -rf ironic_tempest_plugin
103 %build
104 %{__python2} setup.py build
105 # Generate i18n files
106 %{__python2} setup.py compile_catalog -d build/lib/ironic/locale
107
108 %install
109 %{__python2} setup.py install -O1 --skip-build --root=%{buildroot}
110
111 install -p -D -m 644 ironic-distgit-%{rdo_hash}/ironic.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/openstack-ironic
112
113 # install systemd scripts
114 mkdir -p %{buildroot}%{_unitdir}
115 install -p -D -m 644 ironic-distgit-%{rdo_hash}/openstack-ironic-api.service %{buildroot}%{_unitdir}
116 install -p -D -m 644 ironic-distgit-%{rdo_hash}/openstack-ironic-conductor.service %{buildroot}%{_unitdir}
117
118 # install sudoers file
119 mkdir -p %{buildroot}%{_sysconfdir}/sudoers.d
120 install -p -D -m 440 ironic-distgit-%{rdo_hash}/ironic-rootwrap-sudoers %{buildroot}%{_sysconfdir}/sudoers.d/ironic
121
122 mkdir -p %{buildroot}%{_sharedstatedir}/ironic/
123 mkdir -p %{buildroot}%{_localstatedir}/log/ironic/
124 mkdir -p %{buildroot}%{_sysconfdir}/ironic/rootwrap.d
125
126 #Populate the conf dir
127 export PYTHONPATH=.
128 oslo-config-generator --config-file tools/config/ironic-config-generator.conf --output-file %{buildroot}/%{_sysconfdir}/ironic/ironic.conf
129 oslopolicy-sample-generator --config-file tools/policy/ironic-policy-generator.conf --output-file %{buildroot}/%{_sysconfdir}/ironic/policy.json
130 mv %{buildroot}%{_prefix}/etc/ironic/rootwrap.conf %{buildroot}/%{_sysconfdir}/ironic/rootwrap.conf
131 mv %{buildroot}%{_prefix}/etc/ironic/rootwrap.d/* %{buildroot}/%{_sysconfdir}/ironic/rootwrap.d/
132 # Remove duplicate config files under /usr/etc/ironic
133 rmdir %{buildroot}%{_prefix}/etc/ironic/rootwrap.d
134 rmdir %{buildroot}%{_prefix}/etc/ironic
135
136 # Install distribution config
137 install -p -D -m 640 ironic-distgit-%{rdo_hash}/ironic-dist.conf %{buildroot}/%{_datadir}/ironic/ironic-dist.conf
138
139 # Install i18n .mo files (.po and .pot are not required)
140 install -d -m 755 %{buildroot}%{_datadir}
141 rm -f %{buildroot}%{python2_sitelib}/ironic/locale/*/LC_*/ironic*po
142 rm -f %{buildroot}%{python2_sitelib}/ironic/locale/*pot
143 mv %{buildroot}%{python2_sitelib}/ironic/locale %{buildroot}%{_datadir}/locale
144
145 # Find language files
146 %find_lang ironic --all-name
147
148 %check
149 ostestr --path ironic/tests/unit
150
151 %description
152 Ironic provides an API for management and provisioning of physical machines
153
154 %package common
155 Summary: Ironic common
156
157 Requires:   ipmitool
158 Requires:   pysendfile
159 Requires:   python2-alembic
160 Requires:   python2-automaton >= 1.9.0
161 Requires:   python2-cinderclient >= 3.3.0
162 Requires:   python-dracclient >= 1.3.0
163 Requires:   python2-eventlet
164 Requires:   python2-futurist >= 1.2.0
165 Requires:   python2-glanceclient >= 2.8.0
166 Requires:   python-ironic-inspector-client >= 1.5.0
167 Requires:   python-ironic-lib >= 2.5.0
168 Requires:   python2-jinja2
169 Requires:   python2-jsonpatch
170 Requires:   python2-jsonschema
171 Requires:   python2-keystoneauth1 >= 3.3.0
172 Requires:   python2-keystonemiddleware >= 4.17.0
173 Requires:   python2-neutronclient >= 6.3.0
174 Requires:   python2-oslo-concurrency >= 3.25.0
175 Requires:   python2-oslo-config >= 2:5.1.0
176 Requires:   python2-oslo-context >= 2.19.2
177 Requires:   python2-oslo-db >= 4.27.0
178 Requires:   python2-oslo-i18n >= 3.15.3
179 Requires:   python2-oslo-log >= 3.36.0
180 Requires:   python2-oslo-messaging >= 5.29.0
181 Requires:   python2-oslo-middleware >= 3.31.0
182 Requires:   python2-oslo-policy >= 1.30.0
183 Requires:   python2-oslo-reports >= 1.18.0
184 Requires:   python2-oslo-rootwrap >= 5.8.0
185 Requires:   python2-oslo-serialization >= 2.18.0
186 Requires:   python2-oslo-service >= 1.24.0
187 Requires:   python2-oslo-utils >= 3.33.0
188 Requires:   python2-oslo-versionedobjects >= 1.31.2
189 Requires:   python2-osprofiler >= 1.4.0
190 Requires:   python2-os-traits
191 Requires:   python2-pbr
192 Requires:   python2-pecan
193 Requires:   python-proliantutils >= 2.4.0
194 Requires:   python2-psutil
195 Requires:   python2-requests
196 Requires:   python-retrying
197 Requires:   python2-rfc3986 >= 0.3.1
198 Requires:   python2-scciclient >= 0.5.0
199 Requires:   python2-six
200 Requires:   python2-sqlalchemy
201 Requires:   python2-stevedore >= 1.20.0
202 Requires:   python2-sushy
203 Requires:   python2-swiftclient >= 3.2.0
204 Requires:   python2-tooz >= 1.58.0
205 Requires:   python-UcsSdk >= 0.8.2.2
206 Requires:   python-webob >= 1.7.1
207 Requires:   python2-wsme
208 Requires:   python2-pysnmp
209 Requires:   python2-pytz
210
211
212 Requires(pre):  shadow-utils
213
214 %description common
215 Components common to all OpenStack Ironic services
216
217
218 %files common -f ironic.lang
219 %doc README.rst
220 %license LICENSE
221 %{_bindir}/ironic-dbsync
222 %{_bindir}/ironic-rootwrap
223 %{python2_sitelib}/ironic
224 %{python2_sitelib}/ironic-*.egg-info
225 %exclude %{python2_sitelib}/ironic/tests
226 %{_sysconfdir}/sudoers.d/ironic
227 %config(noreplace) %{_sysconfdir}/logrotate.d/openstack-ironic
228 %config(noreplace) %attr(-,root,ironic) %{_sysconfdir}/ironic
229 %attr(-,ironic,ironic) %{_sharedstatedir}/ironic
230 %attr(0750,ironic,ironic) %{_localstatedir}/log/ironic
231 %attr(-, root, ironic) %{_datadir}/ironic/ironic-dist.conf
232 %exclude %{python2_sitelib}/ironic_tests.egg_info
233
234 %pre common
235 getent group ironic >/dev/null || groupadd -r ironic
236 getent passwd ironic >/dev/null || \
237     useradd -r -g ironic -d %{_sharedstatedir}/ironic -s /sbin/nologin \
238 -c "OpenStack Ironic Daemons" ironic
239 exit 0
240
241 %package api
242 Summary: The Ironic API
243
244 Requires: %{name}-common = %{epoch}:%{version}-%{release}
245
246 %{?systemd_requires}
247
248 %description api
249 Ironic API for management and provisioning of physical machines
250
251
252 %files api
253 %{_bindir}/ironic-api
254 %{_bindir}/ironic-api-wsgi
255 %{_unitdir}/openstack-ironic-api.service
256
257 %post api
258 %systemd_post openstack-ironic-api.service
259
260 %preun api
261 %systemd_preun openstack-ironic-api.service
262
263 %postun api
264 %systemd_postun_with_restart openstack-ironic-api.service
265
266 %package conductor
267 Summary: The Ironic Conductor
268
269 Requires: %{name}-common = %{epoch}:%{version}-%{release}
270
271 %{?systemd_requires}
272
273 %description conductor
274 Ironic Conductor for management and provisioning of physical machines
275
276 %files conductor
277 %{_bindir}/ironic-conductor
278 %{_unitdir}/openstack-ironic-conductor.service
279
280 %post conductor
281 %systemd_post openstack-ironic-conductor.service
282
283 %preun conductor
284 %systemd_preun openstack-ironic-conductor.service
285
286 %postun conductor
287 %systemd_postun_with_restart openstack-ironic-conductor.service
288
289 %package -n python-ironic-tests
290 Summary:        Ironic unit tests
291 Requires:       %{name}-common = %{epoch}:%{version}-%{release}
292 Requires:       python2-mock
293 Requires:       python2-oslotest
294 Requires:       /usr/bin/ostestr
295 Requires:       python2-testresources
296 Requires:       python2-testscenarios
297 Requires:       python2-testtools
298
299
300 %description -n python-ironic-tests
301 This package contains the Ironic test files.
302
303 %files -n python-ironic-tests
304 %{python2_sitelib}/ironic/tests
305
306 #%changelog
307 #* Mon Jun 18 2018 RDO <dev@lists.rdoproject.org> 1:10.1.3-1
308 #- Update to 10.1.3
309 #
310 #* Mon Apr 09 2018 RDO <dev@lists.rdoproject.org> 1:10.1.2-1
311 #- Update to 10.1.2
312 #
313 #* Thu Feb 22 2018 RDO <dev@lists.rdoproject.org> 1:10.1.1-1
314 #- Update to 10.1.1
315 #
316 #* Thu Feb 15 2018 RDO <dev@lists.rdoproject.org> 1:10.1.0-1
317 #- Update to 10.1.0
318 #