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