dd3b5f2b2b1695b6c05269b4e7685b60be4294b8
[openstack-build/ceilometer-build.git] / rpm / SPECS / openstack-ceilometer.spec
1 %global _without_doc 1
2 %global with_doc %{!?_without_doc:1}%{?_without_doc:0}
3 %global pypi_name ceilometer
4
5 Name:             openstack-ceilometer
6 Version:          2013.2
7 Release:          0.8.b3%{?dist}
8 Summary:          OpenStack measurement collection service
9
10 Group:            Applications/System
11 License:          ASL 2.0
12 URL:              https://wiki.openstack.org/wiki/Ceilometer
13 Source0:          http://tarballs.openstack.org/%{pypi_name}/%{pypi_name}-%{version}.b3.tar.gz
14 Source1:          %{pypi_name}-dist.conf
15 Source2:          %{pypi_name}.logrotate
16
17 Source10:         %{name}-api.init
18 Source100:        %{name}-api.upstart
19 Source11:         %{name}-collector.init
20 Source110:        %{name}-collector.upstart
21 Source12:         %{name}-compute.init
22 Source120:        %{name}-compute.upstart
23 Source13:         %{name}-central.init
24 Source130:        %{name}-central.upstart
25
26 #
27 # patches_base=2013.2.b3
28 #
29 Patch0001: 0001-Ensure-we-don-t-access-the-net-when-building-docs.patch
30
31 # This is EL6 specific and not upstream
32 Patch100:         openstack-ceilometer-newdeps.patch
33
34 BuildArch:        noarch
35 BuildRequires:    intltool
36 BuildRequires:    python-sphinx10
37 BuildRequires:    python-setuptools
38 BuildRequires:    python-pbr
39 BuildRequires:    python-d2to1
40 BuildRequires:    python2-devel
41
42 BuildRequires:    openstack-utils
43
44 # These are required to build due to the requirements check added
45 BuildRequires:    python-sqlalchemy0.7
46 BuildRequires:    python-webob1.2
47
48
49 %description
50 OpenStack ceilometer provides services to measure and
51 collect metrics from OpenStack components.
52
53
54 %package -n       python-ceilometer
55 Summary:          OpenStack ceilometer python libraries
56 Group:            Applications/System
57
58 Requires:         python-qpid
59 Requires:         python-kombu
60 Requires:         python-amqplib
61
62 Requires:         python-eventlet
63 Requires:         python-greenlet
64 Requires:         python-iso8601
65 Requires:         python-lxml
66 Requires:         python-anyjson
67 Requires:         python-stevedore
68 Requires:         python-msgpack
69 Requires:         python-netaddr
70 Requires:         python-six
71
72 Requires:         python-sqlalchemy0.7
73 Requires:         python-alembic
74 Requires:         python-migrate
75
76 Requires:         python-webob >= 1.2
77 Requires:         python-oslo-config
78 Requires:         PyYAML
79
80 %description -n   python-ceilometer
81 OpenStack ceilometer provides services to measure and
82 collect metrics from OpenStack components.
83
84 This package contains the ceilometer python library.
85
86
87 %package common
88 Summary:          Components common to all OpenStack ceilometer services
89 Group:            Applications/System
90
91 Requires:         python-ceilometer = %{version}-%{release}
92 Requires:         openstack-utils
93
94 Requires(post):   chkconfig
95 Requires(postun): initscripts
96 Requires(preun):  chkconfig
97 Requires(pre):    shadow-utils
98
99
100
101 %description common
102 OpenStack ceilometer provides services to measure and
103 collect metrics from OpenStack components.
104
105 This package contains components common to all OpenStack
106 ceilometer services.
107
108
109 %package compute
110 Summary:          OpenStack ceilometer compute agent
111 Group:            Applications/System
112
113 Requires:         %{name}-common = %{version}-%{release}
114
115 Requires:         python-novaclient
116 Requires:         python-keystoneclient
117 Requires:         libvirt-python
118
119 %description compute
120 OpenStack ceilometer provides services to measure and
121 collect metrics from OpenStack components.
122
123 This package contains the ceilometer agent for
124 running on OpenStack compute nodes.
125
126
127 %package central
128 Summary:          OpenStack ceilometer central agent
129 Group:            Applications/System
130
131 Requires:         %{name}-common = %{version}-%{release}
132
133 Requires:         python-novaclient
134 Requires:         python-keystoneclient
135 Requires:         python-glanceclient
136 Requires:         python-swiftclient
137
138 %description central
139 OpenStack ceilometer provides services to measure and
140 collect metrics from OpenStack components.
141
142 This package contains the central ceilometer agent.
143
144
145 %package collector
146 Summary:          OpenStack ceilometer collector agent
147 Group:            Applications/System
148
149 Requires:         %{name}-common = %{version}-%{release}
150
151 Requires:         python-pymongo
152
153 %description collector
154 OpenStack ceilometer provides services to measure and
155 collect metrics from OpenStack components.
156
157 This package contains the ceilometer collector agent.
158
159
160 %package api
161 Summary:          OpenStack ceilometer API service
162 Group:            Applications/System
163
164 Requires:         %{name}-common = %{version}-%{release}
165
166 Requires:         python-pymongo
167 Requires:         python-flask
168 Requires:         python-pecan
169 Requires:         python-wsme
170
171 %description api
172 OpenStack ceilometer provides services to measure and
173 collect metrics from OpenStack components.
174
175 This package contains the ceilometer API service.
176
177
178 %if 0%{?with_doc}
179 %package doc
180 Summary:          Documentation for OpenStack ceilometer
181 Group:            Documentation
182
183 # Required to build module documents
184 BuildRequires:    python-eventlet
185 BuildRequires:    python-sqlalchemy0.7
186 BuildRequires:    python-webob
187 # while not strictly required, quiets the build down when building docs.
188 BuildRequires:    python-migrate, python-iso8601
189
190 %description      doc
191 OpenStack ceilometer provides services to measure and
192 collect metrics from OpenStack components.
193
194 This package contains documentation files for ceilometer.
195 %endif
196
197 %prep
198 %setup -q -n ceilometer-%{version}
199
200 %patch0001 -p1
201
202 # Apply EL6 patch
203 %patch100 -p1
204
205 find . \( -name .gitignore -o -name .placeholder \) -delete
206
207 find ceilometer -name \*.py -exec sed -i '/\/usr\/bin\/env python/{d;q}' {} +
208
209 # TODO: Have the following handle multi line entries
210 sed -i '/setup_requires/d; /install_requires/d; /dependency_links/d' setup.py
211
212 # Remove the requirements file so that pbr hooks don't add it
213 # to distutils requires_dist config
214 rm -rf {test-,}requirements.txt tools/{pip,test}-requires
215
216 # Programmatically update defaults in sample config
217 # which is installed at /etc/ceilometer/ceilometer.conf
218 # TODO: Make this more robust
219 # Note it only edits the first occurance, so assumes a section ordering in sample
220 # and also doesn't support multi-valued variables.
221 while read name eq value; do
222   test "$name" && test "$value" || continue
223   sed -i "0,/^# *$name=/{s!^# *$name=.*!#$name=$value!}" etc/ceilometer/ceilometer.conf.sample
224 done < %{SOURCE1}
225
226 %build
227 %{__python} setup.py build
228
229 %install
230 %{__python} setup.py install -O1 --skip-build --root %{buildroot}
231
232 # docs generation requires everything to be installed first
233 export PYTHONPATH="$( pwd ):$PYTHONPATH"
234
235 pushd doc
236
237 %if 0%{?with_doc}
238 SPHINX_DEBUG=1 sphinx-1.0-build -b html source build/html
239 # Fix hidden-file-or-dir warnings
240 rm -fr build/html/.doctrees build/html/.buildinfo
241 %endif
242
243 popd
244
245 # Setup directories
246 install -d -m 755 %{buildroot}%{_sharedstatedir}/ceilometer
247 install -d -m 755 %{buildroot}%{_sharedstatedir}/ceilometer/tmp
248 install -d -m 755 %{buildroot}%{_localstatedir}/log/ceilometer
249
250 # Install config files
251 install -d -m 755 %{buildroot}%{_sysconfdir}/ceilometer
252 install -p -D -m 640 %{SOURCE1} %{buildroot}%{_datadir}/ceilometer/ceilometer-dist.conf
253 install -p -D -m 640 etc/ceilometer/ceilometer.conf.sample %{buildroot}%{_sysconfdir}/ceilometer/ceilometer.conf
254 install -p -D -m 640 etc/ceilometer/policy.json %{buildroot}%{_sysconfdir}/ceilometer/policy.json
255 install -p -D -m 640 etc/ceilometer/sources.json %{buildroot}%{_sysconfdir}/ceilometer/sources.json
256 install -p -D -m 640 etc/ceilometer/pipeline.yaml %{buildroot}%{_sysconfdir}/ceilometer/pipeline.yaml
257
258 # Install initscripts for services
259 install -p -D -m 755 %{SOURCE10} %{buildroot}%{_initrddir}/%{name}-api
260 install -p -D -m 755 %{SOURCE11} %{buildroot}%{_initrddir}/%{name}-collector
261 install -p -D -m 755 %{SOURCE12} %{buildroot}%{_initrddir}/%{name}-compute
262 install -p -D -m 755 %{SOURCE13} %{buildroot}%{_initrddir}/%{name}-central
263
264 # Install upstart jobs examples
265 install -d -m 755 %{buildroot}%{_datadir}/ceilometer
266 install -p -m 644 %{SOURCE100} %{buildroot}%{_datadir}/ceilometer/
267 install -p -m 644 %{SOURCE110} %{buildroot}%{_datadir}/ceilometer/
268 install -p -m 644 %{SOURCE120} %{buildroot}%{_datadir}/ceilometer/
269 install -p -m 644 %{SOURCE130} %{buildroot}%{_datadir}/ceilometer/
270
271 # Install logrotate
272 install -p -D -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
273
274 # Install pid directory
275 install -d -m 755 %{buildroot}%{_localstatedir}/run/ceilometer
276
277 # Remove unneeded in production stuff
278 rm -f %{buildroot}%{_bindir}/ceilometer-debug
279 rm -fr %{buildroot}%{python_sitelib}/tests/
280 rm -fr %{buildroot}%{python_sitelib}/run_tests.*
281 rm -f %{buildroot}/usr/share/doc/ceilometer/README*
282 rm -f %{buildroot}/%{python_sitelib}/ceilometer/api/v1/static/LICENSE.*
283
284
285 %pre common
286 getent group ceilometer >/dev/null || groupadd -r ceilometer --gid 166
287 if ! getent passwd ceilometer >/dev/null; then
288   # Id reservation request: https://bugzilla.redhat.com/923891
289   useradd -u 166 -r -g ceilometer -G ceilometer,nobody -d %{_sharedstatedir}/ceilometer -s /sbin/nologin -c "OpenStack ceilometer Daemons" ceilometer
290 fi
291 exit 0
292
293 %post compute
294 if [ $1 -eq 1 ] ; then
295     # Initial installation
296     /sbin/chkconfig --add %{name}-compute
297 fi
298
299 %post collector
300 if [ $1 -eq 1 ] ; then
301     # Initial installation
302     /sbin/chkconfig --add %{name}-collector
303 fi
304
305 %post api
306 if [ $1 -eq 1 ] ; then
307     # Initial installation
308     /sbin/chkconfig --add %{name}-api
309 fi
310
311 %post central
312 if [ $1 -eq 1 ] ; then
313     # Initial installation
314     /sbin/chkconfig --add %{name}-central
315 fi
316
317 %preun compute
318 if [ $1 -eq 0 ] ; then
319     for svc in compute; do
320         /sbin/service %{name}-${svc} stop > /dev/null 2>&1
321         /sbin/chkconfig --del %{name}-${svc}
322     done
323 fi
324
325 %preun collector
326 if [ $1 -eq 0 ] ; then
327     for svc in collector; do
328         /sbin/service %{name}-${svc} stop > /dev/null 2>&1
329         /sbin/chkconfig --del %{name}-${svc}
330     done
331 fi
332
333 %preun api
334 if [ $1 -eq 0 ] ; then
335     for svc in api; do
336         /sbin/service %{name}-${svc} stop > /dev/null 2>&1
337         /sbin/chkconfig --del %{name}-${svc}
338     done
339 fi
340
341 %preun central
342 if [ $1 -eq 0 ] ; then
343     for svc in central; do
344         /sbin/service %{name}-${svc} stop > /dev/null 2>&1
345         /sbin/chkconfig --del %{name}-${svc}
346     done
347 fi
348
349 %postun compute
350 if [ $1 -ge 1 ] ; then
351     # Package upgrade, not uninstall
352     for svc in compute; do
353         /sbin/service %{name}-${svc} condrestart > /dev/null 2>&1 || :
354     done
355 fi
356
357 %postun collector
358 if [ $1 -ge 1 ] ; then
359     # Package upgrade, not uninstall
360     for svc in collector; do
361         /sbin/service %{name}-${svc} condrestart > /dev/null 2>&1 || :
362     done
363 fi
364
365 %postun api
366 if [ $1 -ge 1 ] ; then
367     # Package upgrade, not uninstall
368     for svc in api; do
369         /sbin/service %{name}-${svc} condrestart > /dev/null 2>&1 || :
370     done
371 fi
372
373 %postun central
374 if [ $1 -ge 1 ] ; then
375     # Package upgrade, not uninstall
376     for svc in central; do
377         /sbin/service %{name}-${svc} condrestart > /dev/null 2>&1 || :
378     done
379 fi
380
381
382 %files common
383 %doc LICENSE
384 %dir %{_sysconfdir}/ceilometer
385 %attr(-, root, ceilometer) %{_datadir}/ceilometer/ceilometer-dist.conf
386 %config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/ceilometer.conf
387 %config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/policy.json
388 %config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/sources.json
389 %config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/pipeline.yaml
390 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
391
392 %dir %attr(0755, ceilometer, root) %{_localstatedir}/log/ceilometer
393 %dir %attr(0755, ceilometer, root) %{_localstatedir}/run/ceilometer
394
395 %{_bindir}/ceilometer-*
396
397 %defattr(-, ceilometer, ceilometer, -)
398 %dir %{_sharedstatedir}/ceilometer
399 %dir %{_sharedstatedir}/ceilometer/tmp
400
401
402 %files -n python-ceilometer
403 %{python_sitelib}/ceilometer
404 %{python_sitelib}/ceilometer-%{version}*.egg-info
405
406
407 %if 0%{?with_doc}
408 %files doc
409 %doc doc/build/html
410 %endif
411
412
413 %files compute
414 %{_bindir}/ceilometer-agent-compute
415 %{_initrddir}/%{name}-compute
416 %{_datarootdir}/ceilometer/%{name}-compute.upstart
417
418
419 %files collector
420 %{_bindir}/ceilometer-collector
421 %{_initrddir}/%{name}-collector
422 %{_datarootdir}/ceilometer/%{name}-collector.upstart
423
424
425 %files api
426 %doc ceilometer/api/v1/static/LICENSE.*
427 %{_bindir}/ceilometer-api
428 %{_initrddir}/%{name}-api
429 %{_datarootdir}/ceilometer/%{name}-api.upstart
430
431
432 %files central
433 %{_bindir}/ceilometer-agent-central
434 %{_initrddir}/%{name}-central
435 %{_datarootdir}/ceilometer/%{name}-central.upstart
436
437
438 %changelog
439 * Mon Sep 10 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2-0.8.b3
440 - Depend on python-pymongo rather than pymongo to avoid a puppet bug
441
442 * Mon Sep 9 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2-0.7.b3
443 - Depend on python-alembic
444
445 * Mon Sep 9 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2-0.6.b3
446 - Distribute dist defaults in ceilometer-dist.conf separate to user ceilometer.conf
447
448 * Mon Sep 9 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2-0.5.b3
449 - Update to Havana milestone 3
450
451 * Tue Aug 27 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2-0.4.b1
452 - Avoid python runtime dependency management
453
454 * Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2013.2-0.3.b1
455 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
456
457 * Thu Jun  6 2013 Pádraig Brady <P@draigBrady.com> - 2013.2-0.2.b1
458 - Fix uninstall for openstack-ceilometer-central
459
460 * Fri May 31 2013 Pádraig Brady <P@draigBrady.com> - 2013.2-0.1.b1
461 - Havana milestone 1
462
463 * Mon Apr  8 2013 Pádraig Brady <P@draigBrady.com> - 2013.1-2
464 - Grizzly release
465
466 * Tue Mar 26 2013 Pádraig Brady <P@draigBrady.com> - 2013.1-0.5.g3
467 - Initial package