]> git.proxmox.com Git - ceph.git/blame - ceph/ceph.spec.in
import 15.2.1 Octopus source
[ceph.git] / ceph / ceph.spec.in
CommitLineData
7c673cae
FG
1#
2# spec file for package ceph
3#
11fdf7f2 4# Copyright (C) 2004-2019 The Ceph Project Developers. See COPYING file
7c673cae
FG
5# at the top-level directory of this distribution and at
6# https://github.com/ceph/ceph/blob/master/COPYING
7#
8# All modifications and additions to the file contributed by third parties
9# remain the property of their copyright owners, unless otherwise agreed
10# upon.
11#
12# This file is under the GNU Lesser General Public License, version 2.1
13#
14# Please submit bugfixes or comments via http://tracker.ceph.com/
d2e6a577 15#
11fdf7f2
TL
16
17#################################################################################
18# conditional build section
19#
20# please read http://rpm.org/user_doc/conditional_builds.html for explanation of
21# bcond syntax!
22#################################################################################
7c673cae 23%bcond_with make_check
9f95a23c 24%bcond_with cmake_verbose_logging
eafe8130 25%bcond_without ceph_test_package
31f18b77 26%ifarch s390 s390x
7c673cae 27%bcond_with tcmalloc
31f18b77
FG
28%else
29%bcond_without tcmalloc
7c673cae 30%endif
7c673cae
FG
31%if 0%{?fedora} || 0%{?rhel}
32%bcond_without selinux
9f95a23c
TL
33%if 0%{?rhel} >= 8
34%bcond_with cephfs_java
35%else
11fdf7f2 36%bcond_without cephfs_java
9f95a23c
TL
37%endif
38%bcond_without amqp_endpoint
39%bcond_without kafka_endpoint
11fdf7f2
TL
40%bcond_without lttng
41%bcond_without libradosstriper
42%bcond_without ocf
11fdf7f2 43%global _remote_tarball_prefix https://download.ceph.com/tarballs/
7c673cae
FG
44%endif
45%if 0%{?suse_version}
46%bcond_with selinux
11fdf7f2
TL
47%bcond_with cephfs_java
48%bcond_with amqp_endpoint
9f95a23c 49%bcond_with kafka_endpoint
11fdf7f2
TL
50#Compat macro for new _fillupdir macro introduced in Nov 2017
51%if ! %{defined _fillupdir}
52%global _fillupdir /var/adm/fillup-templates
7c673cae 53%endif
11fdf7f2
TL
54%if 0%{?is_opensuse}
55%bcond_without libradosstriper
56%bcond_without ocf
57%else
58%bcond_with libradosstriper
59%bcond_with ocf
60%endif
61%ifarch x86_64 aarch64 ppc64le
7c673cae 62%bcond_without lttng
11fdf7f2
TL
63%else
64%bcond_with lttng
65%endif
66%endif
67%bcond_with seastar
11fdf7f2
TL
68%if 0%{?fedora} || 0%{?suse_version} >= 1500
69# distros that ship cmd2 and/or colorama
70%bcond_without cephfs_shell
71%else
72# distros that do _not_ ship cmd2/colorama
73%bcond_with cephfs_shell
74%endif
9f95a23c
TL
75%if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} >= 8
76%global weak_deps 1
7c673cae 77%endif
7c673cae
FG
78%if %{with selinux}
79# get selinux policy version
9f95a23c
TL
80# Force 0.0.0 policy version for centos builds to avoid repository sync issues between rhel and centos
81%if 0%{?centos}
82%global _selinux_policy_version 0.0.0
83%else
91327a77 84%{!?_selinux_policy_version: %global _selinux_policy_version 0.0.0}
7c673cae 85%endif
9f95a23c 86%endif
7c673cae
FG
87
88%{!?_udevrulesdir: %global _udevrulesdir /lib/udev/rules.d}
89%{!?tmpfiles_create: %global tmpfiles_create systemd-tmpfiles --create}
90%{!?python3_pkgversion: %global python3_pkgversion 3}
eafe8130 91%{!?python3_version_nodots: %global python3_version_nodots 3}
11fdf7f2 92%{!?python3_version: %global python3_version 3}
9f95a23c
TL
93%if 0%{?rhel} == 7
94%define __python %{__python3}
95%endif
7c673cae
FG
96# unify libexec for all targets
97%global _libexecdir %{_exec_prefix}/lib
98
99# disable dwz which compresses the debuginfo
100%global _find_debuginfo_dwz_opts %{nil}
31f18b77 101
7c673cae
FG
102#################################################################################
103# main package definition
104#################################################################################
105Name: ceph
9f95a23c 106Version: @PROJECT_VERSION@
7c673cae 107Release: @RPM_RELEASE@%{?dist}
31f18b77 108%if 0%{?fedora} || 0%{?rhel}
224ce89b 109Epoch: 2
31f18b77
FG
110%endif
111
3efd9988
FG
112# define _epoch_prefix macro which will expand to the empty string if epoch is
113# undefined
31f18b77
FG
114%global _epoch_prefix %{?epoch:%{epoch}:}
115
7c673cae 116Summary: User space components of the Ceph file system
9f95a23c 117License: LGPL-2.1 and LGPL-3.0 and CC-BY-SA-3.0 and GPL-2.0 and BSL-1.0 and BSD-3-Clause and MIT
7c673cae
FG
118%if 0%{?suse_version}
119Group: System/Filesystems
120%endif
121URL: http://ceph.com/
11fdf7f2 122Source0: %{?_remote_tarball_prefix}@TARBALL_BASENAME@.tar.bz2
7c673cae 123%if 0%{?suse_version}
11fdf7f2 124# _insert_obs_source_lines_here
31f18b77 125ExclusiveArch: x86_64 aarch64 ppc64le s390x
7c673cae 126%endif
7c673cae
FG
127#################################################################################
128# dependencies that apply across all distro families
129#################################################################################
31f18b77
FG
130Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release}
131Requires: ceph-mds = %{_epoch_prefix}%{version}-%{release}
132Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
133Requires: ceph-mon = %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
134Requires(post): binutils
135%if 0%{with cephfs_java}
136BuildRequires: java-devel
137BuildRequires: sharutils
138%endif
139%if 0%{with selinux}
140BuildRequires: checkpolicy
141BuildRequires: selinux-policy-devel
7c673cae 142%endif
31f18b77 143BuildRequires: gperf
11fdf7f2
TL
144%if 0%{?rhel} == 7
145BuildRequires: cmake3 > 3.5
146%else
147BuildRequires: cmake > 3.5
148%endif
7c673cae
FG
149BuildRequires: cryptsetup
150BuildRequires: fuse-devel
11fdf7f2
TL
151%if 0%{?rhel} == 7
152# devtoolset offers newer make and valgrind-devel, but the old ones are good
153# enough.
9f95a23c 154BuildRequires: devtoolset-8-gcc-c++ >= 8.3.1-3.1
eafe8130 155%else
7c673cae 156BuildRequires: gcc-c++
11fdf7f2 157%endif
7c673cae
FG
158BuildRequires: gdbm
159%if 0%{with tcmalloc}
91327a77
AA
160%if 0%{?fedora} || 0%{?rhel}
161BuildRequires: gperftools-devel >= 2.6.1
162%endif
163%if 0%{?suse_version}
7c673cae
FG
164BuildRequires: gperftools-devel >= 2.4
165%endif
91327a77 166%endif
7c673cae
FG
167BuildRequires: leveldb-devel > 1.2
168BuildRequires: libaio-devel
7c673cae
FG
169BuildRequires: libblkid-devel >= 2.17
170BuildRequires: libcurl-devel
eafe8130 171BuildRequires: libcap-ng-devel
9f95a23c 172BuildRequires: pkgconfig(libudev)
eafe8130 173BuildRequires: libnl3-devel
11fdf7f2 174BuildRequires: liboath-devel
7c673cae
FG
175BuildRequires: libtool
176BuildRequires: libxml2-devel
177BuildRequires: make
11fdf7f2 178BuildRequires: ncurses-devel
7c673cae 179BuildRequires: parted
eafe8130 180BuildRequires: patch
7c673cae
FG
181BuildRequires: perl
182BuildRequires: pkgconfig
11fdf7f2 183BuildRequires: procps
9f95a23c
TL
184BuildRequires: python%{python3_pkgversion}
185BuildRequires: python%{python3_pkgversion}-devel
7c673cae 186BuildRequires: snappy-devel
11fdf7f2 187BuildRequires: sudo
9f95a23c 188BuildRequires: pkgconfig(udev)
7c673cae
FG
189BuildRequires: util-linux
190BuildRequires: valgrind-devel
31f18b77 191BuildRequires: which
7c673cae
FG
192BuildRequires: xfsprogs
193BuildRequires: xfsprogs-devel
194BuildRequires: xmlstarlet
195BuildRequires: yasm
11fdf7f2
TL
196%if 0%{with amqp_endpoint}
197BuildRequires: librabbitmq-devel
198%endif
9f95a23c
TL
199%if 0%{with kafka_endpoint}
200BuildRequires: librdkafka-devel
201%endif
11fdf7f2
TL
202%if 0%{with make_check}
203BuildRequires: jq
eafe8130 204BuildRequires: libuuid-devel
11fdf7f2 205%if 0%{?rhel} == 7
9f95a23c
TL
206BuildRequires: python%{python3_version_nodots}-bcrypt
207BuildRequires: python%{python3_version_nodots}-nose
208BuildRequires: python%{python3_version_nodots}-requests
209BuildRequires: python%{python3_version_nodots}-dateutil
11fdf7f2 210%else
9f95a23c
TL
211BuildRequires: python%{python3_pkgversion}-bcrypt
212BuildRequires: python%{python3_pkgversion}-nose
213BuildRequires: python%{python3_pkgversion}-pecan
214BuildRequires: python%{python3_pkgversion}-requests
215BuildRequires: python%{python3_pkgversion}-dateutil
216%endif
217%if 0%{?rhel} == 7
218BuildRequires: python%{python3_version_nodots}-six
219BuildRequires: python%{python3_version_nodots}-virtualenv
220%else
221BuildRequires: python%{python3_pkgversion}-six
222BuildRequires: python%{python3_pkgversion}-virtualenv
223%endif
224%if 0%{?rhel} == 7
225BuildRequires: python%{python3_version_nodots}-coverage
226%else
227BuildRequires: python%{python3_pkgversion}-coverage
228%endif
229%if 0%{?rhel} == 7
230BuildRequires: python%{python3_version_nodots}-pyOpenSSL
231%else
232BuildRequires: python%{python3_pkgversion}-pyOpenSSL
11fdf7f2
TL
233%endif
234BuildRequires: socat
235%endif
236%if 0%{with seastar}
237BuildRequires: c-ares-devel
238BuildRequires: gnutls-devel
239BuildRequires: hwloc-devel
240BuildRequires: libpciaccess-devel
241BuildRequires: lksctp-tools-devel
242BuildRequires: protobuf-devel
243BuildRequires: ragel
244BuildRequires: systemtap-sdt-devel
245BuildRequires: yaml-cpp-devel
246%endif
7c673cae
FG
247#################################################################################
248# distro-conditional dependencies
249#################################################################################
250%if 0%{?suse_version}
251BuildRequires: pkgconfig(systemd)
252BuildRequires: systemd-rpm-macros
7c673cae
FG
253%{?systemd_requires}
254PreReq: %fillup_prereq
eafe8130 255BuildRequires: fdupes
7c673cae
FG
256BuildRequires: net-tools
257BuildRequires: libbz2-devel
7c673cae
FG
258BuildRequires: mozilla-nss-devel
259BuildRequires: keyutils-devel
260BuildRequires: libopenssl-devel
261BuildRequires: lsb-release
262BuildRequires: openldap2-devel
11fdf7f2
TL
263#BuildRequires: krb5
264#BuildRequires: krb5-devel
265BuildRequires: cunit-devel
9f95a23c
TL
266BuildRequires: python%{python3_pkgversion}-setuptools
267BuildRequires: python%{python3_pkgversion}-Cython
268BuildRequires: python%{python3_pkgversion}-PrettyTable
269BuildRequires: python%{python3_pkgversion}-Sphinx
31f18b77 270BuildRequires: rdma-core-devel
11fdf7f2 271BuildRequires: liblz4-devel >= 1.7
81eedcae
TL
272# for prometheus-alerts
273BuildRequires: golang-github-prometheus-prometheus
7c673cae 274%endif
d2e6a577 275%if 0%{?fedora} || 0%{?rhel}
7c673cae
FG
276Requires: systemd
277BuildRequires: boost-random
7c673cae
FG
278BuildRequires: nss-devel
279BuildRequires: keyutils-libs-devel
31f18b77 280BuildRequires: libibverbs-devel
11fdf7f2 281BuildRequires: librdmacm-devel
7c673cae 282BuildRequires: openldap-devel
11fdf7f2 283#BuildRequires: krb5-devel
7c673cae 284BuildRequires: openssl-devel
11fdf7f2 285BuildRequires: CUnit-devel
7c673cae 286BuildRequires: redhat-lsb-core
11fdf7f2
TL
287BuildRequires: python%{python3_pkgversion}-devel
288BuildRequires: python%{python3_pkgversion}-setuptools
9f95a23c 289%if 0%{?rhel} == 7
eafe8130
TL
290BuildRequires: python%{python3_version_nodots}-Cython
291%else
11fdf7f2 292BuildRequires: python%{python3_pkgversion}-Cython
eafe8130 293%endif
9f95a23c
TL
294BuildRequires: python%{python3_pkgversion}-prettytable
295BuildRequires: python%{python3_pkgversion}-sphinx
11fdf7f2
TL
296BuildRequires: lz4-devel >= 1.7
297%endif
298# distro-conditional make check dependencies
299%if 0%{with make_check}
300%if 0%{?fedora} || 0%{?rhel}
9f95a23c
TL
301BuildRequires: libtool-ltdl-devel
302BuildRequires: xmlsec1
303BuildRequires: xmlsec1-devel
304%ifarch x86_64
305BuildRequires: xmlsec1-nss
306%endif
307BuildRequires: xmlsec1-openssl
308BuildRequires: xmlsec1-openssl-devel
309%if 0%{?rhel} == 7
310BuildRequires: python%{python3_version_nodots}-jwt
311BuildRequires: python%{python3_version_nodots}-scipy
312%else
313BuildRequires: python%{python3_pkgversion}-cherrypy
314BuildRequires: python%{python3_pkgversion}-jwt
315BuildRequires: python%{python3_pkgversion}-routes
316BuildRequires: python%{python3_pkgversion}-scipy
317BuildRequires: python%{python3_pkgversion}-werkzeug
318%endif
319%if 0%{?rhel} == 7
320BuildRequires: python%{python3_version_nodots}-pyOpenSSL
321%else
322BuildRequires: python%{python3_pkgversion}-pyOpenSSL
323%endif
11fdf7f2
TL
324%endif
325%if 0%{?suse_version}
9f95a23c
TL
326BuildRequires: libxmlsec1-1
327BuildRequires: libxmlsec1-nss1
328BuildRequires: libxmlsec1-openssl1
329BuildRequires: python%{python3_pkgversion}-CherryPy
330BuildRequires: python%{python3_pkgversion}-PyJWT
331BuildRequires: python%{python3_pkgversion}-Routes
332BuildRequires: python%{python3_pkgversion}-Werkzeug
333BuildRequires: python%{python3_pkgversion}-numpy-devel
334BuildRequires: xmlsec1-devel
335BuildRequires: xmlsec1-openssl-devel
11fdf7f2 336%endif
7c673cae
FG
337%endif
338# lttng and babeltrace for rbd-replay-prep
339%if %{with lttng}
340%if 0%{?fedora} || 0%{?rhel}
341BuildRequires: lttng-ust-devel
342BuildRequires: libbabeltrace-devel
343%endif
344%if 0%{?suse_version}
345BuildRequires: lttng-ust-devel
346BuildRequires: babeltrace-devel
347%endif
348%endif
7c673cae
FG
349%if 0%{?suse_version}
350BuildRequires: libexpat-devel
7c673cae
FG
351%endif
352%if 0%{?rhel} || 0%{?fedora}
353BuildRequires: expat-devel
7c673cae
FG
354%endif
355#hardened-cc1
356%if 0%{?fedora} || 0%{?rhel}
357BuildRequires: redhat-rpm-config
358%endif
11fdf7f2
TL
359%if 0%{with seastar}
360%if 0%{?fedora} || 0%{?rhel}
361BuildRequires: cryptopp-devel
362BuildRequires: numactl-devel
363BuildRequires: protobuf-compiler
364%endif
365%if 0%{?suse_version}
366BuildRequires: libcryptopp-devel
367BuildRequires: libnuma-devel
368%endif
369%endif
9f95a23c
TL
370%if 0%{?rhel} >= 8
371BuildRequires: /usr/bin/pathfix.py
372%endif
7c673cae
FG
373
374%description
375Ceph is a massively scalable, open-source, distributed storage system that runs
376on commodity hardware and delivers object, block and file system storage.
377
378
379#################################################################################
380# subpackages
381#################################################################################
382%package base
383Summary: Ceph Base Package
384%if 0%{?suse_version}
385Group: System/Filesystems
386%endif
11fdf7f2 387Provides: ceph-test:/usr/bin/ceph-kvstore-tool
31f18b77
FG
388Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
389Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
390Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
391Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
392Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
7c673cae 393%if 0%{with selinux}
31f18b77 394Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release}
7c673cae 395%endif
11fdf7f2 396Requires: cryptsetup
91327a77 397Requires: e2fsprogs
11fdf7f2
TL
398Requires: findutils
399Requires: grep
7c673cae 400Requires: logrotate
91327a77 401Requires: parted
7c673cae 402Requires: psmisc
9f95a23c 403Requires: python%{python3_pkgversion}-setuptools
11fdf7f2
TL
404Requires: util-linux
405Requires: xfsprogs
7c673cae 406Requires: which
91327a77 407%if 0%{?fedora} || 0%{?rhel}
91327a77
AA
408# The following is necessary due to tracker 36508 and can be removed once the
409# associated upstream bugs are resolved.
410%if 0%{with tcmalloc}
411Requires: gperftools-libs >= 2.6.1
412%endif
413%endif
9f95a23c 414%if 0%{?weak_deps}
11fdf7f2 415Recommends: chrony
7c673cae 416%endif
7c673cae
FG
417%description base
418Base is the package that includes all the files shared amongst ceph servers
419
9f95a23c
TL
420%package -n cephadm
421Summary: Utility to bootstrap Ceph clusters
422Requires: lvm2
423%if 0%{?suse_version}
424Requires: apparmor-abstractions
425%endif
426Requires: python%{python3_pkgversion}
427%if 0%{?weak_deps}
428Recommends: podman
429%endif
430%description -n cephadm
431Utility to bootstrap a Ceph cluster and manage Ceph daemons deployed
432with systemd and podman.
433
7c673cae
FG
434%package -n ceph-common
435Summary: Ceph Common
436%if 0%{?suse_version}
437Group: System/Filesystems
438%endif
31f18b77
FG
439Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
440Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
441Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
9f95a23c
TL
442Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
443Requires: python%{python3_pkgversion}-rbd = %{_epoch_prefix}%{version}-%{release}
444Requires: python%{python3_pkgversion}-cephfs = %{_epoch_prefix}%{version}-%{release}
445Requires: python%{python3_pkgversion}-rgw = %{_epoch_prefix}%{version}-%{release}
446Requires: python%{python3_pkgversion}-ceph-argparse = %{_epoch_prefix}%{version}-%{release}
447Requires: python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release}
31f18b77 448%if 0%{?fedora} || 0%{?rhel}
9f95a23c 449Requires: python%{python3_pkgversion}-prettytable
31f18b77
FG
450%endif
451%if 0%{?suse_version}
9f95a23c 452Requires: python%{python3_pkgversion}-PrettyTable
11fdf7f2
TL
453%endif
454%if 0%{with libradosstriper}
455Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release}
31f18b77 456%endif
7c673cae
FG
457%{?systemd_requires}
458%if 0%{?suse_version}
459Requires(pre): pwdutils
460%endif
7c673cae
FG
461%description -n ceph-common
462Common utilities to mount and interact with a ceph storage cluster.
463Comprised of files that are common to Ceph clients and servers.
464
465%package mds
466Summary: Ceph Metadata Server Daemon
467%if 0%{?suse_version}
468Group: System/Filesystems
469%endif
31f18b77 470Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
471%description mds
472ceph-mds is the metadata server daemon for the Ceph distributed file system.
473One or more instances of ceph-mds collectively manage the file system
474namespace, coordinating access to the shared OSD cluster.
475
476%package mon
477Summary: Ceph Monitor Daemon
478%if 0%{?suse_version}
479Group: System/Filesystems
480%endif
11fdf7f2 481Provides: ceph-test:/usr/bin/ceph-monstore-tool
31f18b77 482Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
483%description mon
484ceph-mon is the cluster monitor daemon for the Ceph distributed file
485system. One or more instances of ceph-mon form a Paxos part-time
486parliament cluster that provides extremely reliable and durable storage
487of cluster membership, configuration, and state.
488
489%package mgr
490Summary: Ceph Manager Daemon
7c673cae
FG
491%if 0%{?suse_version}
492Group: System/Filesystems
493%endif
31f18b77 494Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
9f95a23c
TL
495Requires: ceph-mgr-modules-core = %{_epoch_prefix}%{version}-%{release}
496%if 0%{?rhel} == 7
497Requires: python%{python3_version_nodots}-six
498%else
499Requires: python%{python3_pkgversion}-six
31f18b77 500%endif
9f95a23c 501%if 0%{?weak_deps}
11fdf7f2
TL
502Recommends: ceph-mgr-dashboard = %{_epoch_prefix}%{version}-%{release}
503Recommends: ceph-mgr-diskprediction-local = %{_epoch_prefix}%{version}-%{release}
504Recommends: ceph-mgr-diskprediction-cloud = %{_epoch_prefix}%{version}-%{release}
eafe8130 505Recommends: ceph-mgr-k8sevents = %{_epoch_prefix}%{version}-%{release}
9f95a23c
TL
506Recommends: ceph-mgr-cephadm = %{_epoch_prefix}%{version}-%{release}
507Recommends: python%{python3_pkgversion}-influxdb
31f18b77 508%endif
7c673cae
FG
509%description mgr
510ceph-mgr enables python modules that provide services (such as the REST
511module derived from Calamari) and expose CLI hooks. ceph-mgr gathers
512the cluster maps, the daemon metadata, and performance counters, and
513exposes all these to the python modules.
514
11fdf7f2
TL
515%package mgr-dashboard
516Summary: Ceph Dashboard
517BuildArch: noarch
518%if 0%{?suse_version}
519Group: System/Filesystems
520%endif
521Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
494da23a 522Requires: ceph-grafana-dashboards = %{_epoch_prefix}%{version}-%{release}
801d1391 523Requires: ceph-prometheus-alerts = %{_epoch_prefix}%{version}-%{release}
11fdf7f2 524%if 0%{?fedora} || 0%{?rhel}
9f95a23c
TL
525Requires: python%{python3_pkgversion}-cherrypy
526Requires: python%{python3_pkgversion}-jwt
527Requires: python%{python3_pkgversion}-routes
528Requires: python%{python3_pkgversion}-werkzeug
11fdf7f2
TL
529%endif
530%if 0%{?suse_version}
9f95a23c
TL
531Requires: python%{python3_pkgversion}-CherryPy
532Requires: python%{python3_pkgversion}-PyJWT
533Requires: python%{python3_pkgversion}-Routes
534Requires: python%{python3_pkgversion}-Werkzeug
11fdf7f2
TL
535%endif
536%description mgr-dashboard
9f95a23c 537ceph-mgr-dashboard is a manager module, providing a web-based application
11fdf7f2
TL
538to monitor and manage many aspects of a Ceph cluster and related components.
539See the Dashboard documentation at http://docs.ceph.com/ for details and a
540detailed feature overview.
541
542%package mgr-diskprediction-local
9f95a23c 543Summary: Ceph Manager module for predicting disk failures
11fdf7f2
TL
544BuildArch: noarch
545%if 0%{?suse_version}
546Group: System/Filesystems
547%endif
548Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
9f95a23c 549Requires: python%{python3_pkgversion}-numpy
11fdf7f2 550Requires: python3-scipy
11fdf7f2
TL
551%if 0%{?rhel} == 7
552Requires: numpy
553Requires: scipy
554%endif
555%description mgr-diskprediction-local
9f95a23c 556ceph-mgr-diskprediction-local is a ceph-mgr module that tries to predict
11fdf7f2
TL
557disk failures using local algorithms and machine-learning databases.
558
559%package mgr-diskprediction-cloud
9f95a23c 560Summary: Ceph Manager module for cloud-based disk failure prediction
11fdf7f2
TL
561BuildArch: noarch
562%if 0%{?suse_version}
563Group: System/Filesystems
564%endif
565Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
9f95a23c
TL
566%if 0%{without python2}
567Requires: python3-grpcio
568Requires: python3-protobuf
569%else
570Requires: python2-grpcio
571Requires: python2-protobuf
572%endif
11fdf7f2 573%description mgr-diskprediction-cloud
9f95a23c 574ceph-mgr-diskprediction-cloud is a ceph-mgr module that tries to predict
11fdf7f2
TL
575disk failures using services in the Google cloud.
576
9f95a23c
TL
577%package mgr-modules-core
578Summary: Ceph Manager modules which are always enabled
579BuildArch: noarch
580%if 0%{?suse_version}
581Group: System/Filesystems
582%endif
583%if 0%{?rhel} == 7
584Requires: python%{python3_version_nodots}-bcrypt
585Requires: python%{python3_version_nodots}-pyOpenSSL
586Requires: python%{python3_version_nodots}-requests
587Requires: python%{python3_version_nodots}-PyYAML
588Requires: python%{python3_version_nodots}-dateutil
589%else
590Requires: python%{python3_pkgversion}-bcrypt
591Requires: python%{python3_pkgversion}-pecan
592Requires: python%{python3_pkgversion}-pyOpenSSL
593Requires: python%{python3_pkgversion}-requests
594Requires: python%{python3_pkgversion}-dateutil
595%endif
596%if 0%{?fedora} || 0%{?rhel} >= 8
597Requires: python%{python3_pkgversion}-cherrypy
598Requires: python%{python3_pkgversion}-pyyaml
599Requires: python%{python3_pkgversion}-werkzeug
600%endif
601%if 0%{?suse_version}
602Requires: python%{python3_pkgversion}-CherryPy
603Requires: python%{python3_pkgversion}-PyYAML
604Requires: python%{python3_pkgversion}-Werkzeug
605%endif
606%if 0%{?weak_deps}
607Recommends: ceph-mgr-rook = %{_epoch_prefix}%{version}-%{release}
608%endif
609%description mgr-modules-core
610ceph-mgr-modules-core provides a set of modules which are always
611enabled by ceph-mgr.
612
11fdf7f2
TL
613%package mgr-rook
614BuildArch: noarch
9f95a23c 615Summary: Ceph Manager module for Rook-based orchestration
11fdf7f2
TL
616%if 0%{?suse_version}
617Group: System/Filesystems
618%endif
619Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
9f95a23c
TL
620Requires: python%{python3_pkgversion}-kubernetes
621Requires: python%{python3_pkgversion}-jsonpatch
11fdf7f2 622%description mgr-rook
9f95a23c 623ceph-mgr-rook is a ceph-mgr module for orchestration functions using
11fdf7f2
TL
624a Rook backend.
625
eafe8130
TL
626%package mgr-k8sevents
627BuildArch: noarch
9f95a23c 628Summary: Ceph Manager module to orchestrate ceph-events to kubernetes' events API
eafe8130
TL
629%if 0%{?suse_version}
630Group: System/Filesystems
631%endif
632Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
9f95a23c 633Requires: python%{python3_pkgversion}-kubernetes
eafe8130 634%description mgr-k8sevents
9f95a23c 635ceph-mgr-k8sevents is a ceph-mgr module that sends every ceph-events
eafe8130
TL
636to kubernetes' events API
637
9f95a23c
TL
638%package mgr-cephadm
639Summary: Ceph Manager module for cephadm-based orchestration
11fdf7f2
TL
640BuildArch: noarch
641%if 0%{?suse_version}
642Group: System/Filesystems
643%endif
644Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
9f95a23c
TL
645Requires: python%{python3_pkgversion}-remoto
646Requires: cephadm = %{_epoch_prefix}%{version}-%{release}
647%if 0%{?suse_version}
648Requires: openssh
649%endif
650%if 0%{?rhel} || 0%{?fedora}
651Requires: openssh-clients
652%endif
653%description mgr-cephadm
654ceph-mgr-cephadm is a ceph-mgr module for orchestration functions using
655the integrated cephadm deployment tool management operations.
11fdf7f2 656
7c673cae
FG
657%package fuse
658Summary: Ceph fuse-based client
659%if 0%{?suse_version}
660Group: System/Filesystems
661%endif
181888fb 662Requires: fuse
11fdf7f2 663Requires: python%{python3_pkgversion}
7c673cae
FG
664%description fuse
665FUSE based client for Ceph distributed network file system
666
667%package -n rbd-fuse
668Summary: Ceph fuse-based client
669%if 0%{?suse_version}
670Group: System/Filesystems
671%endif
31f18b77
FG
672Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
673Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
674%description -n rbd-fuse
675FUSE based client to map Ceph rbd images to files
676
677%package -n rbd-mirror
678Summary: Ceph daemon for mirroring RBD images
679%if 0%{?suse_version}
680Group: System/Filesystems
681%endif
a8e16298 682Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
31f18b77 683Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
11fdf7f2 684Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
685%description -n rbd-mirror
686Daemon for mirroring RBD images between Ceph clusters, streaming
687changes asynchronously.
688
9f95a23c
TL
689%package immutable-object-cache
690Summary: Ceph daemon for immutable object cache
691%if 0%{?suse_version}
692Group: System/Filesystems
693%endif
694Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
695%description immutable-object-cache
696Daemon for immutable object cache.
697
7c673cae
FG
698%package -n rbd-nbd
699Summary: Ceph RBD client base on NBD
700%if 0%{?suse_version}
701Group: System/Filesystems
702%endif
31f18b77
FG
703Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
704Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
705%description -n rbd-nbd
706NBD based client to map Ceph rbd images to local device
707
708%package radosgw
709Summary: Rados REST gateway
710%if 0%{?suse_version}
711Group: System/Filesystems
712%endif
a8e16298 713Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
7c673cae 714%if 0%{with selinux}
31f18b77 715Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release}
7c673cae 716%endif
31f18b77
FG
717Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
718Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
719%if 0%{?rhel} || 0%{?fedora}
720Requires: mailcap
721%endif
722%description radosgw
723RADOS is a distributed object store used by the Ceph distributed
724storage system. This package provides a REST gateway to the
725object store that aims to implement a superset of Amazon's S3
726service as well as the OpenStack Object Storage ("Swift") API.
727
728%if %{with ocf}
729%package resource-agents
730Summary: OCF-compliant resource agents for Ceph daemons
731%if 0%{?suse_version}
732Group: System/Filesystems
733%endif
31f18b77 734Requires: ceph-base = %{_epoch_prefix}%{version}
7c673cae
FG
735Requires: resource-agents
736%description resource-agents
737Resource agents for monitoring and managing Ceph daemons
738under Open Cluster Framework (OCF) compliant resource
739managers such as Pacemaker.
740%endif
741
742%package osd
743Summary: Ceph Object Storage Daemon
744%if 0%{?suse_version}
745Group: System/Filesystems
746%endif
11fdf7f2 747Provides: ceph-test:/usr/bin/ceph-osdomap-tool
31f18b77 748Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
b32b8144 749Requires: lvm2
11fdf7f2 750Requires: sudo
9f95a23c 751Requires: libstoragemgmt
7c673cae
FG
752%description osd
753ceph-osd is the object storage daemon for the Ceph distributed file
754system. It is responsible for storing objects on a local file system
755and providing access to them over the network.
756
9f95a23c
TL
757%if 0%{with seastar}
758%package crimson-osd
759Summary: Ceph Object Storage Daemon (crimson)
760%if 0%{?suse_version}
761Group: System/Filesystems
762%endif
763Requires: ceph-osd = %{_epoch_prefix}%{version}-%{release}
764%description crimson-osd
765crimson-osd is the object storage daemon for the Ceph distributed file
766system. It is responsible for storing objects on a local file system
767and providing access to them over the network.
768%endif
769
7c673cae
FG
770%package -n librados2
771Summary: RADOS distributed object store client library
772%if 0%{?suse_version}
773Group: System/Libraries
774%endif
7c673cae 775%if 0%{?rhel} || 0%{?fedora}
31f18b77 776Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
777%endif
778%description -n librados2
779RADOS is a reliable, autonomic distributed object storage cluster
780developed as part of the Ceph distributed storage system. This is a
781shared library allowing applications to access the distributed object
782store using a simple file-like interface.
783
784%package -n librados-devel
785Summary: RADOS headers
786%if 0%{?suse_version}
787Group: Development/Libraries/C and C++
788%endif
31f18b77
FG
789Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
790Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
791Provides: librados2-devel = %{_epoch_prefix}%{version}-%{release}
792Obsoletes: librados2-devel < %{_epoch_prefix}%{version}-%{release}
7c673cae 793%description -n librados-devel
11fdf7f2
TL
794This package contains C libraries and headers needed to develop programs
795that use RADOS object store.
796
797%package -n libradospp-devel
798Summary: RADOS headers
799%if 0%{?suse_version}
800Group: Development/Libraries/C and C++
801%endif
802Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
803Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
804%description -n libradospp-devel
805This package contains C++ libraries and headers needed to develop programs
7c673cae
FG
806that use RADOS object store.
807
808%package -n librgw2
809Summary: RADOS gateway client library
810%if 0%{?suse_version}
811Group: System/Libraries
812%endif
31f18b77 813Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
814%description -n librgw2
815This package provides a library implementation of the RADOS gateway
816(distributed object store with S3 and Swift personalities).
817
818%package -n librgw-devel
819Summary: RADOS gateway client library
820%if 0%{?suse_version}
821Group: Development/Libraries/C and C++
822%endif
31f18b77
FG
823Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
824Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
825Provides: librgw2-devel = %{_epoch_prefix}%{version}-%{release}
826Obsoletes: librgw2-devel < %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
827%description -n librgw-devel
828This package contains libraries and headers needed to develop programs
829that use RADOS gateway client library.
830
7c673cae
FG
831%package -n python%{python3_pkgversion}-rgw
832Summary: Python 3 libraries for the RADOS gateway
833%if 0%{?suse_version}
11fdf7f2 834Group: Development/Libraries/Python
7c673cae 835%endif
31f18b77
FG
836Requires: librgw2 = %{_epoch_prefix}%{version}-%{release}
837Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
eafe8130 838%{?python_provide:%python_provide python%{python3_pkgversion}-rgw}
81eedcae
TL
839Provides: python-rgw = %{_epoch_prefix}%{version}-%{release}
840Obsoletes: python-rgw < %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
841%description -n python%{python3_pkgversion}-rgw
842This package contains Python 3 libraries for interacting with Cephs RADOS
843gateway.
844
7c673cae
FG
845%package -n python%{python3_pkgversion}-rados
846Summary: Python 3 libraries for the RADOS object store
847%if 0%{?suse_version}
11fdf7f2 848Group: Development/Libraries/Python
7c673cae 849%endif
7c673cae 850Requires: python%{python3_pkgversion}
31f18b77 851Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
eafe8130 852%{?python_provide:%python_provide python%{python3_pkgversion}-rados}
81eedcae 853Provides: python-rados = %{_epoch_prefix}%{version}-%{release}
9f95a23c 854Obsoletes: python-rados < %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
855%description -n python%{python3_pkgversion}-rados
856This package contains Python 3 libraries for interacting with Cephs RADOS
857object store.
858
11fdf7f2 859%if 0%{with libradosstriper}
7c673cae
FG
860%package -n libradosstriper1
861Summary: RADOS striping interface
862%if 0%{?suse_version}
863Group: System/Libraries
864%endif
31f18b77 865Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
866%description -n libradosstriper1
867Striping interface built on top of the rados library, allowing
868to stripe bigger objects onto several standard rados objects using
869an interface very similar to the rados one.
870
871%package -n libradosstriper-devel
872Summary: RADOS striping interface headers
873%if 0%{?suse_version}
874Group: Development/Libraries/C and C++
875%endif
31f18b77
FG
876Requires: libradosstriper1 = %{_epoch_prefix}%{version}-%{release}
877Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
11fdf7f2 878Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release}
31f18b77
FG
879Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
880Provides: libradosstriper1-devel = %{_epoch_prefix}%{version}-%{release}
881Obsoletes: libradosstriper1-devel < %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
882%description -n libradosstriper-devel
883This package contains libraries and headers needed to develop programs
884that use RADOS striping interface.
11fdf7f2 885%endif
7c673cae
FG
886
887%package -n librbd1
888Summary: RADOS block device client library
889%if 0%{?suse_version}
890Group: System/Libraries
891%endif
31f18b77
FG
892Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
893%if 0%{?suse_version}
894Requires(post): coreutils
895%endif
7c673cae 896%if 0%{?rhel} || 0%{?fedora}
31f18b77 897Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
898%endif
899%description -n librbd1
900RBD is a block device striped across multiple distributed objects in
901RADOS, a reliable, autonomic distributed object storage cluster
902developed as part of the Ceph distributed storage system. This is a
903shared library allowing applications to manage these block devices.
904
905%package -n librbd-devel
906Summary: RADOS block device headers
907%if 0%{?suse_version}
908Group: Development/Libraries/C and C++
909%endif
31f18b77
FG
910Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
911Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
11fdf7f2 912Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release}
31f18b77
FG
913Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
914Provides: librbd1-devel = %{_epoch_prefix}%{version}-%{release}
915Obsoletes: librbd1-devel < %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
916%description -n librbd-devel
917This package contains libraries and headers needed to develop programs
918that use RADOS block device.
919
7c673cae
FG
920%package -n python%{python3_pkgversion}-rbd
921Summary: Python 3 libraries for the RADOS block device
922%if 0%{?suse_version}
11fdf7f2 923Group: Development/Libraries/Python
7c673cae 924%endif
31f18b77
FG
925Requires: librbd1 = %{_epoch_prefix}%{version}-%{release}
926Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
eafe8130 927%{?python_provide:%python_provide python%{python3_pkgversion}-rbd}
81eedcae
TL
928Provides: python-rbd = %{_epoch_prefix}%{version}-%{release}
929Obsoletes: python-rbd < %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
930%description -n python%{python3_pkgversion}-rbd
931This package contains Python 3 libraries for interacting with Cephs RADOS
932block device.
933
934%package -n libcephfs2
935Summary: Ceph distributed file system client library
936%if 0%{?suse_version}
937Group: System/Libraries
938%endif
224ce89b 939Obsoletes: libcephfs1
7c673cae 940%if 0%{?rhel} || 0%{?fedora}
31f18b77 941Obsoletes: ceph-libs < %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
942Obsoletes: ceph-libcephfs
943%endif
944%description -n libcephfs2
945Ceph is a distributed network file system designed to provide excellent
946performance, reliability, and scalability. This is a shared library
947allowing applications to access a Ceph distributed file system via a
948POSIX-like interface.
949
950%package -n libcephfs-devel
951Summary: Ceph distributed file system headers
952%if 0%{?suse_version}
953Group: Development/Libraries/C and C++
954%endif
31f18b77
FG
955Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
956Requires: librados-devel = %{_epoch_prefix}%{version}-%{release}
957Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
958Provides: libcephfs2-devel = %{_epoch_prefix}%{version}-%{release}
959Obsoletes: libcephfs2-devel < %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
960%description -n libcephfs-devel
961This package contains libraries and headers needed to develop programs
962that use Cephs distributed file system.
963
7c673cae
FG
964%package -n python%{python3_pkgversion}-cephfs
965Summary: Python 3 libraries for Ceph distributed file system
966%if 0%{?suse_version}
11fdf7f2 967Group: Development/Libraries/Python
7c673cae 968%endif
31f18b77
FG
969Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
970Requires: python%{python3_pkgversion}-rados = %{_epoch_prefix}%{version}-%{release}
11fdf7f2 971Requires: python%{python3_pkgversion}-ceph-argparse = %{_epoch_prefix}%{version}-%{release}
eafe8130 972%{?python_provide:%python_provide python%{python3_pkgversion}-cephfs}
81eedcae
TL
973Provides: python-cephfs = %{_epoch_prefix}%{version}-%{release}
974Obsoletes: python-cephfs < %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
975%description -n python%{python3_pkgversion}-cephfs
976This package contains Python 3 libraries for interacting with Cephs distributed
977file system.
978
979%package -n python%{python3_pkgversion}-ceph-argparse
980Summary: Python 3 utility libraries for Ceph CLI
981%if 0%{?suse_version}
11fdf7f2 982Group: Development/Libraries/Python
7c673cae 983%endif
eafe8130 984%{?python_provide:%python_provide python%{python3_pkgversion}-ceph-argparse}
7c673cae
FG
985%description -n python%{python3_pkgversion}-ceph-argparse
986This package contains types and routines for Python 3 used by the Ceph CLI as
987well as the RESTful interface. These have to do with querying the daemons for
988command-description information, validating user command input against those
989descriptions, and submitting the command to the appropriate daemon.
990
9f95a23c
TL
991%package -n python%{python3_pkgversion}-ceph-common
992Summary: Python 3 utility libraries for Ceph
993%if 0%{?suse_version}
994Group: Development/Libraries/Python
995%endif
996%{?python_provide:%python_provide python%{python3_pkgversion}-ceph-common}
997%description -n python%{python3_pkgversion}-ceph-common
998This package contains data structures, classes and functions used by Ceph.
999It also contains utilities used for the cephadm orchestrator.
1000
11fdf7f2
TL
1001%if 0%{with cephfs_shell}
1002%package -n cephfs-shell
1003Summary: Interactive shell for Ceph file system
1004Requires: python%{python3_pkgversion}-cmd2
1005Requires: python%{python3_pkgversion}-colorama
1006Requires: python%{python3_pkgversion}-cephfs
1007%description -n cephfs-shell
1008This package contains an interactive tool that allows accessing a Ceph
1009file system without mounting it by providing a nice pseudo-shell which
1010works like an FTP client.
1011%endif
1012
7c673cae
FG
1013%if 0%{with ceph_test_package}
1014%package -n ceph-test
1015Summary: Ceph benchmarks and test tools
1016%if 0%{?suse_version}
1017Group: System/Benchmark
1018%endif
b32b8144 1019Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
7c673cae 1020Requires: xmlstarlet
31f18b77 1021Requires: jq
c07f9fc5 1022Requires: socat
7c673cae
FG
1023%description -n ceph-test
1024This package contains Ceph benchmarks and test tools.
1025%endif
1026
1027%if 0%{with cephfs_java}
1028
1029%package -n libcephfs_jni1
1030Summary: Java Native Interface library for CephFS Java bindings
1031%if 0%{?suse_version}
1032Group: System/Libraries
1033%endif
7c673cae 1034Requires: java
31f18b77 1035Requires: libcephfs2 = %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
1036%description -n libcephfs_jni1
1037This package contains the Java Native Interface library for CephFS Java
1038bindings.
1039
1040%package -n libcephfs_jni-devel
1041Summary: Development files for CephFS Java Native Interface library
1042%if 0%{?suse_version}
1043Group: Development/Libraries/Java
1044%endif
7c673cae 1045Requires: java
31f18b77
FG
1046Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release}
1047Obsoletes: ceph-devel < %{_epoch_prefix}%{version}-%{release}
1048Provides: libcephfs_jni1-devel = %{_epoch_prefix}%{version}-%{release}
1049Obsoletes: libcephfs_jni1-devel < %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
1050%description -n libcephfs_jni-devel
1051This package contains the development files for CephFS Java Native Interface
1052library.
1053
1054%package -n cephfs-java
1055Summary: Java libraries for the Ceph File System
1056%if 0%{?suse_version}
1057Group: System/Libraries
1058%endif
7c673cae 1059Requires: java
31f18b77 1060Requires: libcephfs_jni1 = %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
1061Requires: junit
1062BuildRequires: junit
1063%description -n cephfs-java
1064This package contains the Java libraries for the Ceph File System.
1065
1066%endif
1067
1068%package -n rados-objclass-devel
1069Summary: RADOS object class development kit
11fdf7f2
TL
1070%if 0%{?suse_version}
1071Group: Development/Libraries/C and C++
1072%endif
1073Requires: libradospp-devel = %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
1074%description -n rados-objclass-devel
1075This package contains libraries and headers needed to develop RADOS object
1076class plugins.
1077
1078%if 0%{with selinux}
1079
1080%package selinux
1081Summary: SELinux support for Ceph MON, OSD and MDS
1082%if 0%{?suse_version}
1083Group: System/Filesystems
1084%endif
31f18b77 1085Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
7c673cae 1086Requires: policycoreutils, libselinux-utils
31f18b77 1087Requires(post): ceph-base = %{_epoch_prefix}%{version}-%{release}
7c673cae
FG
1088Requires(post): selinux-policy-base >= %{_selinux_policy_version}, policycoreutils, gawk
1089Requires(postun): policycoreutils
1090%description selinux
1091This package contains SELinux support for Ceph MON, OSD and MDS. The package
1092also performs file-system relabelling which can take a long time on heavily
1093populated file-systems.
1094
1095%endif
1096
11fdf7f2
TL
1097%package grafana-dashboards
1098Summary: The set of Grafana dashboards for monitoring purposes
1099BuildArch: noarch
1100%if 0%{?suse_version}
1101Group: System/Filesystems
1102%endif
1103%description grafana-dashboards
1104This package provides a set of Grafana dashboards for monitoring of
1105Ceph clusters. The dashboards require a Prometheus server setup
1106collecting data from Ceph Manager "prometheus" module and Prometheus
1107project "node_exporter" module. The dashboards are designed to be
1108integrated with the Ceph Manager Dashboard web UI.
7c673cae 1109
81eedcae
TL
1110%package prometheus-alerts
1111Summary: Prometheus alerts for a Ceph deplyoment
1112BuildArch: noarch
1113Group: System/Monitoring
1114%description prometheus-alerts
1115This package provides Ceph’s default alerts for Prometheus.
81eedcae 1116
7c673cae
FG
1117#################################################################################
1118# common
1119#################################################################################
1120%prep
1121%autosetup -p1 -n @TARBALL_BASENAME@
1122
1123%build
81eedcae
TL
1124# LTO can be enabled as soon as the following GCC bug is fixed:
1125# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48200
1126%define _lto_cflags %{nil}
11fdf7f2
TL
1127
1128%if 0%{?rhel} == 7
eafe8130 1129. /opt/rh/devtoolset-8/enable
11fdf7f2
TL
1130%endif
1131
7c673cae
FG
1132%if 0%{with cephfs_java}
1133# Find jni.h
1134for i in /usr/{lib64,lib}/jvm/java/include{,/linux}; do
1135 [ -d $i ] && java_inc="$java_inc -I$i"
1136done
1137%endif
1138
11fdf7f2
TL
1139%if 0%{?suse_version}
1140# the following setting fixed an OOM condition we once encountered in the OBS
7c673cae
FG
1141RPM_OPT_FLAGS="$RPM_OPT_FLAGS --param ggc-min-expand=20 --param ggc-min-heapsize=32768"
1142%endif
7c673cae
FG
1143
1144export CPPFLAGS="$java_inc"
1145export CFLAGS="$RPM_OPT_FLAGS"
1146export CXXFLAGS="$RPM_OPT_FLAGS"
f64942e4 1147export LDFLAGS="$RPM_LD_FLAGS"
7c673cae 1148
11fdf7f2
TL
1149# Parallel build settings ...
1150CEPH_MFLAGS_JOBS="%{?_smp_mflags}"
1151CEPH_SMP_NCPUS=$(echo "$CEPH_MFLAGS_JOBS" | sed 's/-j//')
1152%if 0%{?__isa_bits} == 32
1153# 32-bit builds can use 3G memory max, which is not enough even for -j2
1154CEPH_SMP_NCPUS="1"
1155%endif
1156# do not eat all memory
1157echo "Available memory:"
1158free -h
1159echo "System limits:"
1160ulimit -a
1161if test -n "$CEPH_SMP_NCPUS" -a "$CEPH_SMP_NCPUS" -gt 1 ; then
eafe8130 1162 mem_per_process=2500
11fdf7f2
TL
1163 max_mem=$(LANG=C free -m | sed -n "s|^Mem: *\([0-9]*\).*$|\1|p")
1164 max_jobs="$(($max_mem / $mem_per_process))"
1165 test "$CEPH_SMP_NCPUS" -gt "$max_jobs" && CEPH_SMP_NCPUS="$max_jobs" && echo "Warning: Reducing build parallelism to -j$max_jobs because of memory limits"
1166 test "$CEPH_SMP_NCPUS" -le 0 && CEPH_SMP_NCPUS="1" && echo "Warning: Not using parallel build at all because of memory limits"
1167fi
1168export CEPH_SMP_NCPUS
1169export CEPH_MFLAGS_JOBS="-j$CEPH_SMP_NCPUS"
7c673cae 1170
11fdf7f2 1171env | sort
7c673cae
FG
1172
1173mkdir build
1174cd build
11fdf7f2
TL
1175%if 0%{?rhel} == 7
1176CMAKE=cmake3
1177%else
1178CMAKE=cmake
1179%endif
1180${CMAKE} .. \
7c673cae
FG
1181 -DCMAKE_INSTALL_PREFIX=%{_prefix} \
1182 -DCMAKE_INSTALL_LIBDIR=%{_libdir} \
1183 -DCMAKE_INSTALL_LIBEXECDIR=%{_libexecdir} \
1184 -DCMAKE_INSTALL_LOCALSTATEDIR=%{_localstatedir} \
1185 -DCMAKE_INSTALL_SYSCONFDIR=%{_sysconfdir} \
1186 -DCMAKE_INSTALL_MANDIR=%{_mandir} \
1187 -DCMAKE_INSTALL_DOCDIR=%{_docdir}/ceph \
c07f9fc5 1188 -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
7c673cae 1189 -DWITH_MANPAGE=ON \
11fdf7f2
TL
1190 -DWITH_PYTHON3=%{python3_version} \
1191 -DWITH_MGR_DASHBOARD_FRONTEND=OFF \
7c673cae
FG
1192%if 0%{without ceph_test_package}
1193 -DWITH_TESTS=OFF \
1194%endif
1195%if 0%{with cephfs_java}
1196 -DWITH_CEPHFS_JAVA=ON \
1197%endif
1198%if 0%{with selinux}
1199 -DWITH_SELINUX=ON \
1200%endif
1201%if %{with lttng}
1202 -DWITH_LTTNG=ON \
c07f9fc5 1203 -DWITH_BABELTRACE=ON \
7c673cae
FG
1204%else
1205 -DWITH_LTTNG=OFF \
c07f9fc5 1206 -DWITH_BABELTRACE=OFF \
7c673cae
FG
1207%endif
1208 $CEPH_EXTRA_CMAKE_ARGS \
1209%if 0%{with ocf}
1210 -DWITH_OCF=ON \
31f18b77
FG
1211%endif
1212%ifarch aarch64 armv7hl mips mipsel ppc ppc64 ppc64le %{ix86} x86_64
b32b8144 1213 -DWITH_BOOST_CONTEXT=ON \
31f18b77 1214%else
b32b8144 1215 -DWITH_BOOST_CONTEXT=OFF \
7c673cae 1216%endif
11fdf7f2
TL
1217%if 0%{with cephfs_shell}
1218 -DWITH_CEPHFS_SHELL=ON \
1219%endif
1220%if 0%{with libradosstriper}
1221 -DWITH_LIBRADOSSTRIPER=ON \
1222%else
1223 -DWITH_LIBRADOSSTRIPER=OFF \
1224%endif
1225%if 0%{with amqp_endpoint}
1226 -DWITH_RADOSGW_AMQP_ENDPOINT=ON \
1227%else
1228 -DWITH_RADOSGW_AMQP_ENDPOINT=OFF \
9f95a23c
TL
1229%endif
1230%if 0%{with kafka_endpoint}
1231 -DWITH_RADOSGW_KAFKA_ENDPOINT=ON \
1232%else
1233 -DWITH_RADOSGW_KAFKA_ENDPOINT=OFF \
1234%endif
1235%if 0%{with cmake_verbose_logging}
1236 -DCMAKE_VERBOSE_MAKEFILE=ON \
11fdf7f2
TL
1237%endif
1238 -DBOOST_J=$CEPH_SMP_NCPUS \
1239 -DWITH_GRAFANA=ON
7c673cae 1240
9f95a23c
TL
1241%if %{with cmake_verbose_logging}
1242cat ./CMakeFiles/CMakeOutput.log
1243cat ./CMakeFiles/CMakeError.log
1244%endif
1245
11fdf7f2 1246make "$CEPH_MFLAGS_JOBS"
7c673cae
FG
1247
1248
1249%if 0%{with make_check}
1250%check
1251# run in-tree unittests
1252cd build
11fdf7f2 1253ctest "$CEPH_MFLAGS_JOBS"
7c673cae
FG
1254%endif
1255
1256
7c673cae
FG
1257%install
1258pushd build
1259make DESTDIR=%{buildroot} install
1260# we have dropped sysvinit bits
1261rm -f %{buildroot}/%{_sysconfdir}/init.d/ceph
1262popd
1263install -m 0644 -D src/etc-rbdmap %{buildroot}%{_sysconfdir}/ceph/rbdmap
1264%if 0%{?fedora} || 0%{?rhel}
1265install -m 0644 -D etc/sysconfig/ceph %{buildroot}%{_sysconfdir}/sysconfig/ceph
1266%endif
1267%if 0%{?suse_version}
11fdf7f2 1268install -m 0644 -D etc/sysconfig/ceph %{buildroot}%{_fillupdir}/sysconfig.%{name}
7c673cae
FG
1269%endif
1270install -m 0644 -D systemd/ceph.tmpfiles.d %{buildroot}%{_tmpfilesdir}/ceph-common.conf
7c673cae
FG
1271install -m 0644 -D systemd/50-ceph.preset %{buildroot}%{_libexecdir}/systemd/system-preset/50-ceph.preset
1272mkdir -p %{buildroot}%{_sbindir}
1273install -m 0644 -D src/logrotate.conf %{buildroot}%{_sysconfdir}/logrotate.d/ceph
1274chmod 0644 %{buildroot}%{_docdir}/ceph/sample.ceph.conf
31f18b77 1275install -m 0644 -D COPYING %{buildroot}%{_docdir}/ceph/COPYING
b32b8144 1276install -m 0644 -D etc/sysctl/90-ceph-osd.conf %{buildroot}%{_sysctldir}/90-ceph-osd.conf
7c673cae 1277
9f95a23c
TL
1278install -m 0755 src/cephadm/cephadm %{buildroot}%{_sbindir}/cephadm
1279mkdir -p %{buildroot}%{_sharedstatedir}/cephadm
1280chmod 0700 %{buildroot}%{_sharedstatedir}/cephadm
1281mkdir -p %{buildroot}%{_sharedstatedir}/cephadm/.ssh
1282chmod 0700 %{buildroot}%{_sharedstatedir}/cephadm/.ssh
1283touch %{buildroot}%{_sharedstatedir}/cephadm/.ssh/authorized_keys
1284chmod 0600 %{buildroot}%{_sharedstatedir}/cephadm/.ssh/authorized_keys
1285
7c673cae
FG
1286# firewall templates and /sbin/mount.ceph symlink
1287%if 0%{?suse_version}
7c673cae
FG
1288mkdir -p %{buildroot}/sbin
1289ln -sf %{_sbindir}/mount.ceph %{buildroot}/sbin/mount.ceph
1290%endif
1291
1292# udev rules
1293install -m 0644 -D udev/50-rbd.rules %{buildroot}%{_udevrulesdir}/50-rbd.rules
11fdf7f2
TL
1294
1295# sudoers.d
1296install -m 0600 -D sudoers.d/ceph-osd-smartctl %{buildroot}%{_sysconfdir}/sudoers.d/ceph-osd-smartctl
9f95a23c
TL
1297install -m 0600 -D sudoers.d/cephadm %{buildroot}%{_sysconfdir}/sudoers.d/cephadm
1298
1299%if 0%{?rhel} >= 8
1300pathfix.py -pni "%{__python3} %{py3_shbang_opts}" %{buildroot}%{_bindir}/*
1301pathfix.py -pni "%{__python3} %{py3_shbang_opts}" %{buildroot}%{_sbindir}/*
1302%endif
7c673cae
FG
1303
1304#set up placeholder directories
1305mkdir -p %{buildroot}%{_sysconfdir}/ceph
1306mkdir -p %{buildroot}%{_localstatedir}/run/ceph
1307mkdir -p %{buildroot}%{_localstatedir}/log/ceph
1308mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/tmp
1309mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mon
1310mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/osd
1311mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mds
1312mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/mgr
11fdf7f2
TL
1313mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/crash
1314mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/crash/posted
7c673cae
FG
1315mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/radosgw
1316mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-osd
1317mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-mds
1318mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rgw
1319mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-mgr
d2e6a577 1320mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd
11fdf7f2 1321mkdir -p %{buildroot}%{_localstatedir}/lib/ceph/bootstrap-rbd-mirror
7c673cae 1322
801d1391
TL
1323# prometheus alerts
1324install -m 644 -D monitoring/prometheus/alerts/ceph_default_alerts.yml %{buildroot}/etc/prometheus/ceph/ceph_default_alerts.yml
1325
7c673cae
FG
1326%if 0%{?suse_version}
1327# create __pycache__ directories and their contents
1328%py3_compile %{buildroot}%{python3_sitelib}
eafe8130
TL
1329# hardlink duplicate files under /usr to save space
1330%fdupes %{buildroot}%{_prefix}
7c673cae 1331%endif
eafe8130 1332
11fdf7f2
TL
1333%if 0%{?rhel} == 8
1334%py_byte_compile %{__python3} %{buildroot}%{python3_sitelib}
1335%endif
7c673cae
FG
1336
1337%clean
1338rm -rf %{buildroot}
1339
1340#################################################################################
1341# files and systemd scriptlets
1342#################################################################################
1343%files
1344
1345%files base
11fdf7f2 1346%{_bindir}/ceph-crash
7c673cae
FG
1347%{_bindir}/crushtool
1348%{_bindir}/monmaptool
1349%{_bindir}/osdmaptool
b32b8144 1350%{_bindir}/ceph-kvstore-tool
7c673cae 1351%{_bindir}/ceph-run
7c673cae
FG
1352%{_libexecdir}/systemd/system-preset/50-ceph.preset
1353%{_sbindir}/ceph-create-keys
7c673cae
FG
1354%dir %{_libexecdir}/ceph
1355%{_libexecdir}/ceph/ceph_common.sh
1356%dir %{_libdir}/rados-classes
1357%{_libdir}/rados-classes/*
1358%dir %{_libdir}/ceph
1359%dir %{_libdir}/ceph/erasure-code
1360%{_libdir}/ceph/erasure-code/libec_*.so*
1361%dir %{_libdir}/ceph/compressor
1362%{_libdir}/ceph/compressor/libceph_*.so*
11fdf7f2 1363%{_unitdir}/ceph-crash.service
7c673cae
FG
1364%dir %{_libdir}/ceph/crypto
1365%{_libdir}/ceph/crypto/libceph_*.so*
7c673cae
FG
1366%if %{with lttng}
1367%{_libdir}/libos_tp.so*
1368%{_libdir}/libosd_tp.so*
1369%endif
7c673cae
FG
1370%config(noreplace) %{_sysconfdir}/logrotate.d/ceph
1371%if 0%{?fedora} || 0%{?rhel}
1372%config(noreplace) %{_sysconfdir}/sysconfig/ceph
1373%endif
1374%if 0%{?suse_version}
11fdf7f2 1375%{_fillupdir}/sysconfig.*
7c673cae
FG
1376%endif
1377%{_unitdir}/ceph.target
11fdf7f2
TL
1378%dir %{python3_sitelib}/ceph_volume
1379%{python3_sitelib}/ceph_volume/*
1380%{python3_sitelib}/ceph_volume-*
7c673cae 1381%{_mandir}/man8/ceph-deploy.8*
7c673cae
FG
1382%{_mandir}/man8/ceph-create-keys.8*
1383%{_mandir}/man8/ceph-run.8*
1384%{_mandir}/man8/crushtool.8*
1385%{_mandir}/man8/osdmaptool.8*
1386%{_mandir}/man8/monmaptool.8*
b32b8144 1387%{_mandir}/man8/ceph-kvstore-tool.8*
7c673cae 1388#set up placeholder directories
11fdf7f2
TL
1389%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/crash
1390%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/crash/posted
7c673cae
FG
1391%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/tmp
1392%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-osd
1393%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-mds
1394%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rgw
1395%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-mgr
d2e6a577 1396%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rbd
11fdf7f2 1397%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rbd-mirror
7c673cae
FG
1398
1399%post base
1400/sbin/ldconfig
1401%if 0%{?suse_version}
1402%fillup_only
1403if [ $1 -eq 1 ] ; then
11fdf7f2 1404/usr/bin/systemctl preset ceph.target ceph-crash.service >/dev/null 2>&1 || :
7c673cae
FG
1405fi
1406%endif
1407%if 0%{?fedora} || 0%{?rhel}
11fdf7f2 1408%systemd_post ceph.target ceph-crash.service
7c673cae
FG
1409%endif
1410if [ $1 -eq 1 ] ; then
11fdf7f2 1411/usr/bin/systemctl start ceph.target ceph-crash.service >/dev/null 2>&1 || :
7c673cae
FG
1412fi
1413
1414%preun base
1415%if 0%{?suse_version}
11fdf7f2 1416%service_del_preun ceph.target ceph-crash.service
7c673cae
FG
1417%endif
1418%if 0%{?fedora} || 0%{?rhel}
11fdf7f2 1419%systemd_preun ceph.target ceph-crash.service
7c673cae
FG
1420%endif
1421
1422%postun base
1423/sbin/ldconfig
1424%if 0%{?suse_version}
1425DISABLE_RESTART_ON_UPDATE="yes"
11fdf7f2 1426%service_del_postun ceph.target
7c673cae
FG
1427%endif
1428%if 0%{?fedora} || 0%{?rhel}
11fdf7f2 1429%systemd_postun ceph.target
7c673cae 1430%endif
11fdf7f2 1431if [ $1 -ge 1 ] ; then
31f18b77
FG
1432 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1433 # "yes". In any case: if units are not running, do not touch them.
1434 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1435 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1436 source $SYSCONF_CEPH
1437 fi
31f18b77 1438fi
7c673cae 1439
9f95a23c
TL
1440%pre -n cephadm
1441getent group cephadm >/dev/null || groupadd -r cephadm
1442getent passwd cephadm >/dev/null || useradd -r -g cephadm -s /bin/bash -c "cephadm user for mgr/cephadm" -d %{_sharedstatedir}/cephadm cephadm
1443exit 0
1444
1445%if ! 0%{?suse_version}
1446%postun -n cephadm
1447userdel -r cephadm || true
1448exit 0
1449%endif
1450
1451%files -n cephadm
1452%{_sbindir}/cephadm
1453%{_sysconfdir}/sudoers.d/cephadm
1454%attr(0700,cephadm,cephadm) %dir %{_sharedstatedir}/cephadm
1455%attr(0700,cephadm,cephadm) %dir %{_sharedstatedir}/cephadm/.ssh
1456%attr(0600,cephadm,cephadm) %{_sharedstatedir}/cephadm/.ssh/authorized_keys
1457
7c673cae 1458%files common
224ce89b 1459%dir %{_docdir}/ceph
31f18b77 1460%doc %{_docdir}/ceph/sample.ceph.conf
11fdf7f2 1461%license %{_docdir}/ceph/COPYING
7c673cae
FG
1462%{_bindir}/ceph
1463%{_bindir}/ceph-authtool
1464%{_bindir}/ceph-conf
1465%{_bindir}/ceph-dencoder
1466%{_bindir}/ceph-rbdnamer
1467%{_bindir}/ceph-syn
7c673cae
FG
1468%{_bindir}/cephfs-data-scan
1469%{_bindir}/cephfs-journal-tool
1470%{_bindir}/cephfs-table-tool
1471%{_bindir}/rados
1472%{_bindir}/radosgw-admin
1473%{_bindir}/rbd
1474%{_bindir}/rbd-replay
1475%{_bindir}/rbd-replay-many
1476%{_bindir}/rbdmap
1477%{_sbindir}/mount.ceph
1478%if 0%{?suse_version}
1479/sbin/mount.ceph
1480%endif
1481%if %{with lttng}
1482%{_bindir}/rbd-replay-prep
1483%endif
1484%{_bindir}/ceph-post-file
7c673cae
FG
1485%{_tmpfilesdir}/ceph-common.conf
1486%{_mandir}/man8/ceph-authtool.8*
1487%{_mandir}/man8/ceph-conf.8*
1488%{_mandir}/man8/ceph-dencoder.8*
1489%{_mandir}/man8/ceph-rbdnamer.8*
1490%{_mandir}/man8/ceph-syn.8*
1491%{_mandir}/man8/ceph-post-file.8*
1492%{_mandir}/man8/ceph.8*
1493%{_mandir}/man8/mount.ceph.8*
1494%{_mandir}/man8/rados.8*
1495%{_mandir}/man8/radosgw-admin.8*
1496%{_mandir}/man8/rbd.8*
1497%{_mandir}/man8/rbdmap.8*
1498%{_mandir}/man8/rbd-replay.8*
1499%{_mandir}/man8/rbd-replay-many.8*
1500%{_mandir}/man8/rbd-replay-prep.8*
1501%dir %{_datadir}/ceph/
1502%{_datadir}/ceph/known_hosts_drop.ceph.com
1503%{_datadir}/ceph/id_rsa_drop.ceph.com
1504%{_datadir}/ceph/id_rsa_drop.ceph.com.pub
1505%dir %{_sysconfdir}/ceph/
31f18b77 1506%config %{_sysconfdir}/bash_completion.d/ceph
7c673cae
FG
1507%config %{_sysconfdir}/bash_completion.d/rados
1508%config %{_sysconfdir}/bash_completion.d/rbd
1509%config %{_sysconfdir}/bash_completion.d/radosgw-admin
1510%config(noreplace) %{_sysconfdir}/ceph/rbdmap
1511%{_unitdir}/rbdmap.service
7c673cae
FG
1512%dir %{_udevrulesdir}
1513%{_udevrulesdir}/50-rbd.rules
1514%attr(3770,ceph,ceph) %dir %{_localstatedir}/log/ceph/
1515%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/
1516
1517%pre common
1518CEPH_GROUP_ID=167
1519CEPH_USER_ID=167
1520%if 0%{?rhel} || 0%{?fedora}
1521/usr/sbin/groupadd ceph -g $CEPH_GROUP_ID -o -r 2>/dev/null || :
1522/usr/sbin/useradd ceph -u $CEPH_USER_ID -o -r -g ceph -s /sbin/nologin -c "Ceph daemons" -d %{_localstatedir}/lib/ceph 2>/dev/null || :
1523%endif
1524%if 0%{?suse_version}
1525if ! getent group ceph >/dev/null ; then
1526 CEPH_GROUP_ID_OPTION=""
1527 getent group $CEPH_GROUP_ID >/dev/null || CEPH_GROUP_ID_OPTION="-g $CEPH_GROUP_ID"
1528 groupadd ceph $CEPH_GROUP_ID_OPTION -r 2>/dev/null || :
1529fi
1530if ! getent passwd ceph >/dev/null ; then
1531 CEPH_USER_ID_OPTION=""
1532 getent passwd $CEPH_USER_ID >/dev/null || CEPH_USER_ID_OPTION="-u $CEPH_USER_ID"
1533 useradd ceph $CEPH_USER_ID_OPTION -r -g ceph -s /sbin/nologin 2>/dev/null || :
1534fi
1535usermod -c "Ceph storage service" \
1536 -d %{_localstatedir}/lib/ceph \
1537 -g ceph \
1538 -s /sbin/nologin \
1539 ceph
1540%endif
1541exit 0
1542
1543%post common
1544%tmpfiles_create %{_tmpfilesdir}/ceph-common.conf
1545
1546%postun common
1547# Package removal cleanup
1548if [ "$1" -eq "0" ] ; then
1549 rm -rf %{_localstatedir}/log/ceph
1550 rm -rf %{_sysconfdir}/ceph
1551fi
1552
1553%files mds
1554%{_bindir}/ceph-mds
1555%{_mandir}/man8/ceph-mds.8*
1556%{_unitdir}/ceph-mds@.service
1557%{_unitdir}/ceph-mds.target
1558%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mds
1559
1560%post mds
1561%if 0%{?suse_version}
1562if [ $1 -eq 1 ] ; then
1563 /usr/bin/systemctl preset ceph-mds@\*.service ceph-mds.target >/dev/null 2>&1 || :
1564fi
1565%endif
1566%if 0%{?fedora} || 0%{?rhel}
1567%systemd_post ceph-mds@\*.service ceph-mds.target
1568%endif
1569if [ $1 -eq 1 ] ; then
1570/usr/bin/systemctl start ceph-mds.target >/dev/null 2>&1 || :
1571fi
1572
1573%preun mds
1574%if 0%{?suse_version}
1575%service_del_preun ceph-mds@\*.service ceph-mds.target
1576%endif
1577%if 0%{?fedora} || 0%{?rhel}
1578%systemd_preun ceph-mds@\*.service ceph-mds.target
1579%endif
1580
1581%postun mds
7c673cae
FG
1582%if 0%{?suse_version}
1583DISABLE_RESTART_ON_UPDATE="yes"
1584%service_del_postun ceph-mds@\*.service ceph-mds.target
1585%endif
1586%if 0%{?fedora} || 0%{?rhel}
1587%systemd_postun ceph-mds@\*.service ceph-mds.target
1588%endif
11fdf7f2 1589if [ $1 -ge 1 ] ; then
7c673cae
FG
1590 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1591 # "yes". In any case: if units are not running, do not touch them.
1592 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1593 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1594 source $SYSCONF_CEPH
1595 fi
1596 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1597 /usr/bin/systemctl try-restart ceph-mds@\*.service > /dev/null 2>&1 || :
1598 fi
1599fi
1600
1601%files mgr
1602%{_bindir}/ceph-mgr
11fdf7f2 1603%dir %{_datadir}/ceph/mgr
11fdf7f2
TL
1604%{_datadir}/ceph/mgr/mgr_module.*
1605%{_datadir}/ceph/mgr/mgr_util.*
9f95a23c
TL
1606%if 0%{?rhel} == 7
1607%{_datadir}/ceph/mgr/__pycache__
1608%endif
7c673cae
FG
1609%{_unitdir}/ceph-mgr@.service
1610%{_unitdir}/ceph-mgr.target
1611%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mgr
1612
1613%post mgr
1614%if 0%{?suse_version}
1615if [ $1 -eq 1 ] ; then
1616 /usr/bin/systemctl preset ceph-mgr@\*.service ceph-mgr.target >/dev/null 2>&1 || :
1617fi
1618%endif
1619%if 0%{?fedora} || 0%{?rhel}
1620%systemd_post ceph-mgr@\*.service ceph-mgr.target
1621%endif
1622if [ $1 -eq 1 ] ; then
1623/usr/bin/systemctl start ceph-mgr.target >/dev/null 2>&1 || :
1624fi
1625
1626%preun mgr
1627%if 0%{?suse_version}
1628%service_del_preun ceph-mgr@\*.service ceph-mgr.target
1629%endif
1630%if 0%{?fedora} || 0%{?rhel}
1631%systemd_preun ceph-mgr@\*.service ceph-mgr.target
1632%endif
1633
1634%postun mgr
7c673cae
FG
1635%if 0%{?suse_version}
1636DISABLE_RESTART_ON_UPDATE="yes"
1637%service_del_postun ceph-mgr@\*.service ceph-mgr.target
1638%endif
1639%if 0%{?fedora} || 0%{?rhel}
1640%systemd_postun ceph-mgr@\*.service ceph-mgr.target
1641%endif
11fdf7f2 1642if [ $1 -ge 1 ] ; then
7c673cae
FG
1643 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1644 # "yes". In any case: if units are not running, do not touch them.
1645 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1646 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1647 source $SYSCONF_CEPH
1648 fi
1649 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1650 /usr/bin/systemctl try-restart ceph-mgr@\*.service > /dev/null 2>&1 || :
1651 fi
1652fi
1653
11fdf7f2
TL
1654%files mgr-dashboard
1655%{_datadir}/ceph/mgr/dashboard
1656
1657%post mgr-dashboard
1658if [ $1 -eq 1 ] ; then
1659 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1660fi
1661
1662%postun mgr-dashboard
1663if [ $1 -eq 1 ] ; then
1664 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1665fi
1666
1667%files mgr-diskprediction-local
1668%{_datadir}/ceph/mgr/diskprediction_local
1669
1670%post mgr-diskprediction-local
1671if [ $1 -eq 1 ] ; then
1672 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1673fi
1674
1675%postun mgr-diskprediction-local
1676if [ $1 -eq 1 ] ; then
1677 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1678fi
1679
1680%files mgr-diskprediction-cloud
1681%{_datadir}/ceph/mgr/diskprediction_cloud
1682
1683%post mgr-diskprediction-cloud
1684if [ $1 -eq 1 ] ; then
1685 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1686fi
1687
1688%postun mgr-diskprediction-cloud
1689if [ $1 -eq 1 ] ; then
1690 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1691fi
1692
9f95a23c
TL
1693%files mgr-modules-core
1694%dir %{_datadir}/ceph/mgr
1695%{_datadir}/ceph/mgr/alerts
1696%{_datadir}/ceph/mgr/balancer
1697%{_datadir}/ceph/mgr/crash
1698%{_datadir}/ceph/mgr/devicehealth
1699%{_datadir}/ceph/mgr/influx
1700%{_datadir}/ceph/mgr/insights
1701%{_datadir}/ceph/mgr/iostat
1702%{_datadir}/ceph/mgr/localpool
1703%{_datadir}/ceph/mgr/orchestrator
1704%{_datadir}/ceph/mgr/osd_perf_query
1705%{_datadir}/ceph/mgr/osd_support
1706%{_datadir}/ceph/mgr/pg_autoscaler
1707%{_datadir}/ceph/mgr/progress
1708%{_datadir}/ceph/mgr/prometheus
1709%{_datadir}/ceph/mgr/rbd_support
1710%{_datadir}/ceph/mgr/restful
1711%{_datadir}/ceph/mgr/selftest
1712%{_datadir}/ceph/mgr/status
1713%{_datadir}/ceph/mgr/telegraf
1714%{_datadir}/ceph/mgr/telemetry
1715%{_datadir}/ceph/mgr/test_orchestrator
1716%{_datadir}/ceph/mgr/volumes
1717%{_datadir}/ceph/mgr/zabbix
1718
11fdf7f2
TL
1719%files mgr-rook
1720%{_datadir}/ceph/mgr/rook
1721
1722%post mgr-rook
1723if [ $1 -eq 1 ] ; then
1724 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1725fi
1726
1727%postun mgr-rook
1728if [ $1 -eq 1 ] ; then
1729 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1730fi
1731
eafe8130
TL
1732%files mgr-k8sevents
1733%{_datadir}/ceph/mgr/k8sevents
1734
1735%post mgr-k8sevents
1736if [ $1 -eq 1 ] ; then
1737 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1738fi
1739
1740%postun mgr-k8sevents
1741if [ $1 -eq 1 ] ; then
1742 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1743fi
1744
9f95a23c
TL
1745%files mgr-cephadm
1746%{_datadir}/ceph/mgr/cephadm
11fdf7f2 1747
9f95a23c 1748%post mgr-cephadm
11fdf7f2
TL
1749if [ $1 -eq 1 ] ; then
1750 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1751fi
1752
9f95a23c 1753%postun mgr-cephadm
11fdf7f2
TL
1754if [ $1 -eq 1 ] ; then
1755 /usr/bin/systemctl try-restart ceph-mgr.target >/dev/null 2>&1 || :
1756fi
1757
7c673cae
FG
1758%files mon
1759%{_bindir}/ceph-mon
b32b8144 1760%{_bindir}/ceph-monstore-tool
7c673cae 1761%{_mandir}/man8/ceph-mon.8*
7c673cae
FG
1762%{_unitdir}/ceph-mon@.service
1763%{_unitdir}/ceph-mon.target
1764%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mon
1765
1766%post mon
1767%if 0%{?suse_version}
1768if [ $1 -eq 1 ] ; then
1769 /usr/bin/systemctl preset ceph-mon@\*.service ceph-mon.target >/dev/null 2>&1 || :
1770fi
1771%endif
1772%if 0%{?fedora} || 0%{?rhel}
1773%systemd_post ceph-mon@\*.service ceph-mon.target
1774%endif
1775if [ $1 -eq 1 ] ; then
1776/usr/bin/systemctl start ceph-mon.target >/dev/null 2>&1 || :
1777fi
1778
1779%preun mon
1780%if 0%{?suse_version}
1781%service_del_preun ceph-mon@\*.service ceph-mon.target
1782%endif
1783%if 0%{?fedora} || 0%{?rhel}
1784%systemd_preun ceph-mon@\*.service ceph-mon.target
1785%endif
1786
1787%postun mon
7c673cae
FG
1788%if 0%{?suse_version}
1789DISABLE_RESTART_ON_UPDATE="yes"
1790%service_del_postun ceph-mon@\*.service ceph-mon.target
1791%endif
1792%if 0%{?fedora} || 0%{?rhel}
1793%systemd_postun ceph-mon@\*.service ceph-mon.target
1794%endif
11fdf7f2 1795if [ $1 -ge 1 ] ; then
7c673cae
FG
1796 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1797 # "yes". In any case: if units are not running, do not touch them.
1798 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1799 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1800 source $SYSCONF_CEPH
1801 fi
1802 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1803 /usr/bin/systemctl try-restart ceph-mon@\*.service > /dev/null 2>&1 || :
1804 fi
1805fi
1806
1807%files fuse
7c673cae
FG
1808%{_bindir}/ceph-fuse
1809%{_mandir}/man8/ceph-fuse.8*
1810%{_sbindir}/mount.fuse.ceph
1811%{_unitdir}/ceph-fuse@.service
1812%{_unitdir}/ceph-fuse.target
1813
1814%files -n rbd-fuse
7c673cae
FG
1815%{_bindir}/rbd-fuse
1816%{_mandir}/man8/rbd-fuse.8*
1817
1818%files -n rbd-mirror
7c673cae
FG
1819%{_bindir}/rbd-mirror
1820%{_mandir}/man8/rbd-mirror.8*
1821%{_unitdir}/ceph-rbd-mirror@.service
1822%{_unitdir}/ceph-rbd-mirror.target
1823
1824%post -n rbd-mirror
1825%if 0%{?suse_version}
1826if [ $1 -eq 1 ] ; then
1827 /usr/bin/systemctl preset ceph-rbd-mirror@\*.service ceph-rbd-mirror.target >/dev/null 2>&1 || :
1828fi
1829%endif
1830%if 0%{?fedora} || 0%{?rhel}
1831%systemd_post ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1832%endif
1833if [ $1 -eq 1 ] ; then
1834/usr/bin/systemctl start ceph-rbd-mirror.target >/dev/null 2>&1 || :
1835fi
1836
1837%preun -n rbd-mirror
1838%if 0%{?suse_version}
1839%service_del_preun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1840%endif
1841%if 0%{?fedora} || 0%{?rhel}
1842%systemd_preun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1843%endif
1844
1845%postun -n rbd-mirror
7c673cae
FG
1846%if 0%{?suse_version}
1847DISABLE_RESTART_ON_UPDATE="yes"
1848%service_del_postun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1849%endif
1850%if 0%{?fedora} || 0%{?rhel}
1851%systemd_postun ceph-rbd-mirror@\*.service ceph-rbd-mirror.target
1852%endif
11fdf7f2 1853if [ $1 -ge 1 ] ; then
7c673cae
FG
1854 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1855 # "yes". In any case: if units are not running, do not touch them.
1856 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1857 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1858 source $SYSCONF_CEPH
1859 fi
1860 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1861 /usr/bin/systemctl try-restart ceph-rbd-mirror@\*.service > /dev/null 2>&1 || :
1862 fi
1863fi
1864
9f95a23c
TL
1865%files immutable-object-cache
1866%{_bindir}/ceph-immutable-object-cache
1867%{_mandir}/man8/ceph-immutable-object-cache.8*
1868%{_unitdir}/ceph-immutable-object-cache@.service
1869%{_unitdir}/ceph-immutable-object-cache.target
1870
1871%post immutable-object-cache
1872%if 0%{?suse_version}
1873if [ $1 -eq 1 ] ; then
1874 /usr/bin/systemctl preset ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target >/dev/null 2>&1 || :
1875fi
1876%endif
1877%if 0%{?fedora} || 0%{?rhel}
1878%systemd_post ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target
1879%endif
1880if [ $1 -eq 1 ] ; then
1881/usr/bin/systemctl start ceph-immutable-object-cache.target >/dev/null 2>&1 || :
1882fi
1883
1884%preun immutable-object-cache
1885%if 0%{?suse_version}
1886%service_del_preun ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target
1887%endif
1888%if 0%{?fedora} || 0%{?rhel}
1889%systemd_preun ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target
1890%endif
1891
1892%postun immutable-object-cache
1893test -n "$FIRST_ARG" || FIRST_ARG=$1
1894%if 0%{?suse_version}
1895DISABLE_RESTART_ON_UPDATE="yes"
1896%service_del_postun ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target
1897%endif
1898%if 0%{?fedora} || 0%{?rhel}
1899%systemd_postun ceph-immutable-object-cache@\*.service ceph-immutable-object-cache.target
1900%endif
1901if [ $FIRST_ARG -ge 1 ] ; then
1902 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1903 # "yes". In any case: if units are not running, do not touch them.
1904 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1905 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1906 source $SYSCONF_CEPH
1907 fi
1908 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1909 /usr/bin/systemctl try-restart ceph-immutable-object-cache@\*.service > /dev/null 2>&1 || :
1910 fi
1911fi
1912
7c673cae 1913%files -n rbd-nbd
7c673cae
FG
1914%{_bindir}/rbd-nbd
1915%{_mandir}/man8/rbd-nbd.8*
1916
1917%files radosgw
7c673cae
FG
1918%{_bindir}/radosgw
1919%{_bindir}/radosgw-token
31f18b77 1920%{_bindir}/radosgw-es
7c673cae 1921%{_bindir}/radosgw-object-expirer
9f95a23c 1922%{_libdir}/libradosgw.so*
7c673cae
FG
1923%{_mandir}/man8/radosgw.8*
1924%dir %{_localstatedir}/lib/ceph/radosgw
1925%{_unitdir}/ceph-radosgw@.service
1926%{_unitdir}/ceph-radosgw.target
1927
1928%post radosgw
9f95a23c 1929/sbin/ldconfig
7c673cae
FG
1930%if 0%{?suse_version}
1931if [ $1 -eq 1 ] ; then
1932 /usr/bin/systemctl preset ceph-radosgw@\*.service ceph-radosgw.target >/dev/null 2>&1 || :
1933fi
1934%endif
1935%if 0%{?fedora} || 0%{?rhel}
1936%systemd_post ceph-radosgw@\*.service ceph-radosgw.target
1937%endif
1938if [ $1 -eq 1 ] ; then
1939/usr/bin/systemctl start ceph-radosgw.target >/dev/null 2>&1 || :
1940fi
1941
1942%preun radosgw
1943%if 0%{?suse_version}
1944%service_del_preun ceph-radosgw@\*.service ceph-radosgw.target
1945%endif
1946%if 0%{?fedora} || 0%{?rhel}
1947%systemd_preun ceph-radosgw@\*.service ceph-radosgw.target
1948%endif
1949
1950%postun radosgw
9f95a23c 1951/sbin/ldconfig
7c673cae
FG
1952%if 0%{?suse_version}
1953DISABLE_RESTART_ON_UPDATE="yes"
1954%service_del_postun ceph-radosgw@\*.service ceph-radosgw.target
1955%endif
1956%if 0%{?fedora} || 0%{?rhel}
1957%systemd_postun ceph-radosgw@\*.service ceph-radosgw.target
1958%endif
11fdf7f2 1959if [ $1 -ge 1 ] ; then
7c673cae
FG
1960 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
1961 # "yes". In any case: if units are not running, do not touch them.
1962 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
1963 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
1964 source $SYSCONF_CEPH
1965 fi
1966 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
1967 /usr/bin/systemctl try-restart ceph-radosgw@\*.service > /dev/null 2>&1 || :
1968 fi
1969fi
1970
1971%files osd
1972%{_bindir}/ceph-clsinfo
1973%{_bindir}/ceph-bluestore-tool
1974%{_bindir}/ceph-objectstore-tool
b32b8144 1975%{_bindir}/ceph-osdomap-tool
7c673cae 1976%{_bindir}/ceph-osd
7c673cae 1977%{_libexecdir}/ceph/ceph-osd-prestart.sh
b32b8144
FG
1978%{_sbindir}/ceph-volume
1979%{_sbindir}/ceph-volume-systemd
7c673cae 1980%{_mandir}/man8/ceph-clsinfo.8*
7c673cae 1981%{_mandir}/man8/ceph-osd.8*
3efd9988 1982%{_mandir}/man8/ceph-bluestore-tool.8*
b32b8144
FG
1983%{_mandir}/man8/ceph-volume.8*
1984%{_mandir}/man8/ceph-volume-systemd.8*
7c673cae
FG
1985%{_unitdir}/ceph-osd@.service
1986%{_unitdir}/ceph-osd.target
b32b8144 1987%{_unitdir}/ceph-volume@.service
7c673cae 1988%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/osd
3efd9988 1989%config(noreplace) %{_sysctldir}/90-ceph-osd.conf
11fdf7f2 1990%{_sysconfdir}/sudoers.d/ceph-osd-smartctl
7c673cae
FG
1991
1992%post osd
1993%if 0%{?suse_version}
1994if [ $1 -eq 1 ] ; then
b32b8144 1995 /usr/bin/systemctl preset ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target >/dev/null 2>&1 || :
7c673cae
FG
1996fi
1997%endif
1998%if 0%{?fedora} || 0%{?rhel}
b32b8144 1999%systemd_post ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target
7c673cae
FG
2000%endif
2001if [ $1 -eq 1 ] ; then
2002/usr/bin/systemctl start ceph-osd.target >/dev/null 2>&1 || :
2003fi
3efd9988
FG
2004%if 0%{?sysctl_apply}
2005 %sysctl_apply 90-ceph-osd.conf
2006%else
2007 /usr/lib/systemd/systemd-sysctl %{_sysctldir}/90-ceph-osd.conf > /dev/null 2>&1 || :
2008%endif
7c673cae
FG
2009
2010%preun osd
2011%if 0%{?suse_version}
b32b8144 2012%service_del_preun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target
7c673cae
FG
2013%endif
2014%if 0%{?fedora} || 0%{?rhel}
b32b8144 2015%systemd_preun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target
7c673cae
FG
2016%endif
2017
2018%postun osd
7c673cae
FG
2019%if 0%{?suse_version}
2020DISABLE_RESTART_ON_UPDATE="yes"
b32b8144 2021%service_del_postun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target
7c673cae
FG
2022%endif
2023%if 0%{?fedora} || 0%{?rhel}
b32b8144 2024%systemd_postun ceph-osd@\*.service ceph-volume@\*.service ceph-osd.target
7c673cae 2025%endif
11fdf7f2 2026if [ $1 -ge 1 ] ; then
7c673cae
FG
2027 # Restart on upgrade, but only if "CEPH_AUTO_RESTART_ON_UPGRADE" is set to
2028 # "yes". In any case: if units are not running, do not touch them.
2029 SYSCONF_CEPH=%{_sysconfdir}/sysconfig/ceph
2030 if [ -f $SYSCONF_CEPH -a -r $SYSCONF_CEPH ] ; then
2031 source $SYSCONF_CEPH
2032 fi
2033 if [ "X$CEPH_AUTO_RESTART_ON_UPGRADE" = "Xyes" ] ; then
b32b8144 2034 /usr/bin/systemctl try-restart ceph-osd@\*.service ceph-volume@\*.service > /dev/null 2>&1 || :
7c673cae
FG
2035 fi
2036fi
2037
9f95a23c
TL
2038%if 0%{with seastar}
2039%files crimson-osd
2040%{_bindir}/crimson-osd
2041%endif
2042
7c673cae
FG
2043%if %{with ocf}
2044
2045%files resource-agents
7c673cae
FG
2046%dir %{_prefix}/lib/ocf
2047%dir %{_prefix}/lib/ocf/resource.d
2048%dir %{_prefix}/lib/ocf/resource.d/ceph
b32b8144 2049%attr(0755,-,-) %{_prefix}/lib/ocf/resource.d/ceph/rbd
7c673cae
FG
2050
2051%endif
2052
2053%files -n librados2
7c673cae
FG
2054%{_libdir}/librados.so.*
2055%dir %{_libdir}/ceph
11fdf7f2 2056%{_libdir}/ceph/libceph-common.so.*
7c673cae
FG
2057%if %{with lttng}
2058%{_libdir}/librados_tp.so.*
2059%endif
eafe8130 2060%dir %{_sysconfdir}/ceph
7c673cae
FG
2061
2062%post -n librados2 -p /sbin/ldconfig
2063
2064%postun -n librados2 -p /sbin/ldconfig
2065
2066%files -n librados-devel
7c673cae
FG
2067%dir %{_includedir}/rados
2068%{_includedir}/rados/librados.h
7c673cae 2069%{_includedir}/rados/rados_types.h
7c673cae
FG
2070%{_libdir}/librados.so
2071%if %{with lttng}
2072%{_libdir}/librados_tp.so
2073%endif
2074%{_bindir}/librados-config
2075%{_mandir}/man8/librados-config.8*
2076
11fdf7f2
TL
2077%files -n libradospp-devel
2078%dir %{_includedir}/rados
2079%{_includedir}/rados/buffer.h
2080%{_includedir}/rados/buffer_fwd.h
2081%{_includedir}/rados/crc32c.h
2082%{_includedir}/rados/inline_memory.h
2083%{_includedir}/rados/librados.hpp
2084%{_includedir}/rados/librados_fwd.hpp
2085%{_includedir}/rados/page.h
2086%{_includedir}/rados/rados_types.hpp
2087
7c673cae 2088%files -n python%{python3_pkgversion}-rados
7c673cae
FG
2089%{python3_sitearch}/rados.cpython*.so
2090%{python3_sitearch}/rados-*.egg-info
2091
11fdf7f2 2092%if 0%{with libradosstriper}
7c673cae 2093%files -n libradosstriper1
7c673cae
FG
2094%{_libdir}/libradosstriper.so.*
2095
2096%post -n libradosstriper1 -p /sbin/ldconfig
2097
2098%postun -n libradosstriper1 -p /sbin/ldconfig
2099
2100%files -n libradosstriper-devel
7c673cae
FG
2101%dir %{_includedir}/radosstriper
2102%{_includedir}/radosstriper/libradosstriper.h
2103%{_includedir}/radosstriper/libradosstriper.hpp
2104%{_libdir}/libradosstriper.so
11fdf7f2 2105%endif
7c673cae
FG
2106
2107%files -n librbd1
7c673cae
FG
2108%{_libdir}/librbd.so.*
2109%if %{with lttng}
2110%{_libdir}/librbd_tp.so.*
2111%endif
2112
181888fb 2113%post -n librbd1 -p /sbin/ldconfig
7c673cae
FG
2114
2115%postun -n librbd1 -p /sbin/ldconfig
2116
2117%files -n librbd-devel
7c673cae
FG
2118%dir %{_includedir}/rbd
2119%{_includedir}/rbd/librbd.h
2120%{_includedir}/rbd/librbd.hpp
2121%{_includedir}/rbd/features.h
2122%{_libdir}/librbd.so
2123%if %{with lttng}
2124%{_libdir}/librbd_tp.so
2125%endif
2126
2127%files -n librgw2
7c673cae 2128%{_libdir}/librgw.so.*
11fdf7f2
TL
2129%{_libdir}/librgw_admin_user.so.*
2130%if %{with lttng}
eafe8130
TL
2131%{_libdir}/librgw_op_tp.so.*
2132%{_libdir}/librgw_rados_tp.so.*
11fdf7f2 2133%endif
7c673cae
FG
2134
2135%post -n librgw2 -p /sbin/ldconfig
2136
2137%postun -n librgw2 -p /sbin/ldconfig
2138
2139%files -n librgw-devel
7c673cae
FG
2140%dir %{_includedir}/rados
2141%{_includedir}/rados/librgw.h
11fdf7f2 2142%{_includedir}/rados/librgw_admin_user.h
7c673cae
FG
2143%{_includedir}/rados/rgw_file.h
2144%{_libdir}/librgw.so
11fdf7f2 2145%{_libdir}/librgw_admin_user.so
eafe8130
TL
2146%if %{with lttng}
2147%{_libdir}/librgw_op_tp.so
2148%{_libdir}/librgw_rados_tp.so
2149%endif
7c673cae 2150
7c673cae 2151%files -n python%{python3_pkgversion}-rgw
7c673cae
FG
2152%{python3_sitearch}/rgw.cpython*.so
2153%{python3_sitearch}/rgw-*.egg-info
2154
7c673cae 2155%files -n python%{python3_pkgversion}-rbd
7c673cae
FG
2156%{python3_sitearch}/rbd.cpython*.so
2157%{python3_sitearch}/rbd-*.egg-info
2158
2159%files -n libcephfs2
7c673cae 2160%{_libdir}/libcephfs.so.*
eafe8130 2161%dir %{_sysconfdir}/ceph
7c673cae
FG
2162
2163%post -n libcephfs2 -p /sbin/ldconfig
2164
2165%postun -n libcephfs2 -p /sbin/ldconfig
2166
2167%files -n libcephfs-devel
7c673cae
FG
2168%dir %{_includedir}/cephfs
2169%{_includedir}/cephfs/libcephfs.h
2170%{_includedir}/cephfs/ceph_statx.h
2171%{_libdir}/libcephfs.so
2172
7c673cae 2173%files -n python%{python3_pkgversion}-cephfs
7c673cae
FG
2174%{python3_sitearch}/cephfs.cpython*.so
2175%{python3_sitearch}/cephfs-*.egg-info
2176%{python3_sitelib}/ceph_volume_client.py
2177%{python3_sitelib}/__pycache__/ceph_volume_client.cpython*.py*
2178
2179%files -n python%{python3_pkgversion}-ceph-argparse
7c673cae
FG
2180%{python3_sitelib}/ceph_argparse.py
2181%{python3_sitelib}/__pycache__/ceph_argparse.cpython*.py*
2182%{python3_sitelib}/ceph_daemon.py
2183%{python3_sitelib}/__pycache__/ceph_daemon.cpython*.py*
2184
9f95a23c
TL
2185%files -n python%{python3_pkgversion}-ceph-common
2186%{python3_sitelib}/ceph
2187%{python3_sitelib}/ceph-*.egg-info
2188
11fdf7f2
TL
2189%if 0%{with cephfs_shell}
2190%files -n cephfs-shell
2191%{python3_sitelib}/cephfs_shell-*.egg-info
2192%{_bindir}/cephfs-shell
2193%endif
2194
7c673cae
FG
2195%if 0%{with ceph_test_package}
2196%files -n ceph-test
7c673cae
FG
2197%{_bindir}/ceph-client-debug
2198%{_bindir}/ceph_bench_log
2199%{_bindir}/ceph_kvstorebench
2200%{_bindir}/ceph_multi_stress_watch
2201%{_bindir}/ceph_erasure_code
2202%{_bindir}/ceph_erasure_code_benchmark
2203%{_bindir}/ceph_omapbench
2204%{_bindir}/ceph_objectstore_bench
2205%{_bindir}/ceph_perf_objectstore
2206%{_bindir}/ceph_perf_local
2207%{_bindir}/ceph_perf_msgr_client
2208%{_bindir}/ceph_perf_msgr_server
2209%{_bindir}/ceph_psim
2210%{_bindir}/ceph_radosacl
2211%{_bindir}/ceph_rgw_jsonparser
2212%{_bindir}/ceph_rgw_multiparser
2213%{_bindir}/ceph_scratchtool
2214%{_bindir}/ceph_scratchtoolpp
7c673cae 2215%{_bindir}/ceph_test_*
7c673cae 2216%{_bindir}/ceph-coverage
7c673cae 2217%{_bindir}/ceph-debugpack
9f95a23c 2218%{_bindir}/ceph-dedup-tool
7c673cae
FG
2219%{_mandir}/man8/ceph-debugpack.8*
2220%dir %{_libdir}/ceph
2221%{_libdir}/ceph/ceph-monstore-update-crush.sh
2222%endif
2223
2224%if 0%{with cephfs_java}
2225%files -n libcephfs_jni1
7c673cae
FG
2226%{_libdir}/libcephfs_jni.so.*
2227
2228%post -n libcephfs_jni1 -p /sbin/ldconfig
2229
2230%postun -n libcephfs_jni1 -p /sbin/ldconfig
2231
2232%files -n libcephfs_jni-devel
7c673cae
FG
2233%{_libdir}/libcephfs_jni.so
2234
2235%files -n cephfs-java
7c673cae
FG
2236%{_javadir}/libcephfs.jar
2237%{_javadir}/libcephfs-test.jar
2238%endif
2239
2240%files -n rados-objclass-devel
7c673cae
FG
2241%dir %{_includedir}/rados
2242%{_includedir}/rados/objclass.h
2243
2244%if 0%{with selinux}
2245%files selinux
7c673cae
FG
2246%attr(0600,root,root) %{_datadir}/selinux/packages/ceph.pp
2247%{_datadir}/selinux/devel/include/contrib/ceph.if
2248%{_mandir}/man8/ceph_selinux.8*
2249
2250%post selinux
2251# backup file_contexts before update
2252. /etc/selinux/config
2253FILE_CONTEXT=/etc/selinux/${SELINUXTYPE}/contexts/files/file_contexts
2254cp ${FILE_CONTEXT} ${FILE_CONTEXT}.pre
2255
2256# Install the policy
2257/usr/sbin/semodule -i %{_datadir}/selinux/packages/ceph.pp
2258
2259# Load the policy if SELinux is enabled
2260if ! /usr/sbin/selinuxenabled; then
2261 # Do not relabel if selinux is not enabled
2262 exit 0
2263fi
2264
2265if diff ${FILE_CONTEXT} ${FILE_CONTEXT}.pre > /dev/null 2>&1; then
2266 # Do not relabel if file contexts did not change
2267 exit 0
2268fi
2269
2270# Check whether the daemons are running
2271/usr/bin/systemctl status ceph.target > /dev/null 2>&1
2272STATUS=$?
2273
2274# Stop the daemons if they were running
2275if test $STATUS -eq 0; then
2276 /usr/bin/systemctl stop ceph.target > /dev/null 2>&1
2277fi
2278
11fdf7f2
TL
2279# Relabel the files fix for first package install
2280/usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null
31f18b77 2281
7c673cae
FG
2282rm -f ${FILE_CONTEXT}.pre
2283# The fixfiles command won't fix label for /var/run/ceph
2284/usr/sbin/restorecon -R /var/run/ceph > /dev/null 2>&1
2285
2286# Start the daemons iff they were running before
2287if test $STATUS -eq 0; then
2288 /usr/bin/systemctl start ceph.target > /dev/null 2>&1 || :
2289fi
2290exit 0
2291
2292%postun selinux
2293if [ $1 -eq 0 ]; then
2294 # backup file_contexts before update
2295 . /etc/selinux/config
2296 FILE_CONTEXT=/etc/selinux/${SELINUXTYPE}/contexts/files/file_contexts
2297 cp ${FILE_CONTEXT} ${FILE_CONTEXT}.pre
2298
2299 # Remove the module
2300 /usr/sbin/semodule -n -r ceph > /dev/null 2>&1
2301
2302 # Reload the policy if SELinux is enabled
2303 if ! /usr/sbin/selinuxenabled ; then
2304 # Do not relabel if SELinux is not enabled
2305 exit 0
2306 fi
2307
2308 # Check whether the daemons are running
2309 /usr/bin/systemctl status ceph.target > /dev/null 2>&1
2310 STATUS=$?
2311
2312 # Stop the daemons if they were running
2313 if test $STATUS -eq 0; then
2314 /usr/bin/systemctl stop ceph.target > /dev/null 2>&1
2315 fi
2316
2317 /usr/sbin/fixfiles -C ${FILE_CONTEXT}.pre restore 2> /dev/null
2318 rm -f ${FILE_CONTEXT}.pre
2319 # The fixfiles command won't fix label for /var/run/ceph
2320 /usr/sbin/restorecon -R /var/run/ceph > /dev/null 2>&1
2321
2322 # Start the daemons if they were running before
2323 if test $STATUS -eq 0; then
2324 /usr/bin/systemctl start ceph.target > /dev/null 2>&1 || :
2325 fi
2326fi
2327exit 0
2328
2329%endif # with selinux
2330
11fdf7f2
TL
2331%files grafana-dashboards
2332%if 0%{?suse_version}
81eedcae
TL
2333%attr(0755,root,root) %dir %{_sysconfdir}/grafana
2334%attr(0755,root,root) %dir %{_sysconfdir}/grafana/dashboards
11fdf7f2 2335%endif
801d1391 2336%attr(0755,root,root) %dir %{_sysconfdir}/grafana/dashboards/ceph-dashboard
11fdf7f2
TL
2337%config %{_sysconfdir}/grafana/dashboards/ceph-dashboard/*
2338%doc monitoring/grafana/dashboards/README
2339%doc monitoring/grafana/README.md
7c673cae 2340
81eedcae 2341%files prometheus-alerts
801d1391
TL
2342%if 0%{?suse_version}
2343%attr(0755,root,root) %dir %{_sysconfdir}/prometheus
81eedcae 2344%endif
801d1391
TL
2345%attr(0755,root,root) %dir %{_sysconfdir}/prometheus/ceph
2346%config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml
7c673cae
FG
2347
2348%changelog