rpm: split ceph-mgr-modules-core into per-module packages

ceph-mgr-modules-core has historically bundled always-on modules
together with optional ones, forcing users to install modules and their
dependencies even when they have no use for them. Split each optional
module into its own package so users and distributions can install only
what they need.

ceph-mgr-modules-core is trimmed to the 10 always-on modules defined
in src/mon/MgrMonitor.cc: balancer, crash, devicehealth, orchestrator,
pg_autoscaler, progress, rbd_support, status, telemetry, volumes.
Each optional module now follows the pattern of ceph-mgr-k8sevents and
ceph-mgr-rook.

New packages carry Obsoletes: ceph-mgr-modules-core < 21.0.0 for
proper upgrade path.

The split also exposes cross-module Python dependencies: modules
co-installed in ceph-mgr-modules-core could freely import each other,
but once separated into individual packages those imports require
explicit Requires entries. Now the inter-dependencies are expressed
properly in ceph.spec.in.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
This commit is contained in:
Kefu Chai 2026-05-21 20:45:30 +08:00
parent b3c5e7df9f
commit ff4e000057

View File

@ -657,11 +657,29 @@ Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
Requires: ceph-mgr-modules-core = %{_epoch_prefix}%{version}-%{release}
Requires: libcephsqlite = %{_epoch_prefix}%{version}-%{release}
%if 0%{?weak_deps}
Recommends: ceph-mgr-alerts = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-cephadm = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-dashboard = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-diskprediction-local = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-influx = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-insights = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-iostat = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-k8sevents = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-cephadm = %{_epoch_prefix}%{version}-%{release}
Recommends: python%{python3_pkgversion}-influxdb
Recommends: ceph-mgr-localpool = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-mds-autoscaler = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-mirroring = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-nfs = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-nvmeof = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-osd-perf-query = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-osd-support = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-prometheus = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-rgw = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-selftest = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-smb = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-snap-schedule = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-stats = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-telegraf = %{_epoch_prefix}%{version}-%{release}
Recommends: ceph-mgr-test-orchestrator = %{_epoch_prefix}%{version}-%{release}
%endif
%description mgr
ceph-mgr enables python modules that provide services (such as the REST
@ -676,6 +694,7 @@ BuildArch: noarch
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Requires: ceph-mgr-smb = %{_epoch_prefix}%{version}-%{release}
Requires: ceph-grafana-dashboards = %{_epoch_prefix}%{version}-%{release}
Requires: ceph-prometheus-alerts = %{_epoch_prefix}%{version}-%{release}
%if 0%{?fedora} || 0%{?rhel} >= 9
@ -728,18 +747,13 @@ BuildArch: noarch
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: python%{python3_pkgversion}-bcrypt
Requires: python%{python3_pkgversion}-packaging
Requires: python%{python3_pkgversion}-pyOpenSSL
Requires: python%{python3_pkgversion}-prettytable
Requires: python%{python3_pkgversion}-requests
Requires: python%{python3_pkgversion}-dateutil
Requires: python%{python3_pkgversion}-setuptools
%if 0%{?fedora} || 0%{?rhel} >= 8 || 0%{?openEuler}
Requires: python%{python3_pkgversion}-cherrypy
Requires: python%{python3_pkgversion}-pyyaml
%endif
%if 0%{?suse_version}
Requires: python%{python3_pkgversion}-CherryPy
Requires: python%{python3_pkgversion}-PyYAML
%endif
# RHEL8 has python 3.6 and that lacks dataclasses in the stdlib, so pull in the
@ -761,6 +775,7 @@ Summary: Ceph Manager module for Rook-based orchestration
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Requires: ceph-mgr-nfs = %{_epoch_prefix}%{version}-%{release}
Requires: python%{python3_pkgversion}-kubernetes
Requires: python%{python3_pkgversion}-jsonpatch
%description mgr-rook
@ -786,8 +801,12 @@ BuildArch: noarch
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Requires: ceph-mgr-nfs = %{_epoch_prefix}%{version}-%{release}
Requires: ceph-mgr-smb = %{_epoch_prefix}%{version}-%{release}
Requires: python%{python3_pkgversion}-asyncssh
Requires: python%{python3_pkgversion}-bcrypt
Requires: python%{python3_pkgversion}-natsort
Requires: python%{python3_pkgversion}-pyOpenSSL
Requires: cephadm = %{_epoch_prefix}%{version}-%{release}
%if 0%{?suse_version}
Requires: openssh
@ -803,6 +822,244 @@ Requires: python%{python3_pkgversion}-jinja2
ceph-mgr-cephadm is a ceph-mgr module for orchestration functions using
the integrated cephadm deployment tool management operations.
%package mgr-alerts
BuildArch: noarch
Summary: Ceph Manager module for sending alerts on health state changes
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-alerts
ceph-mgr-alerts is a ceph-mgr module that sends email notifications
on cluster health state changes.
%package mgr-influx
BuildArch: noarch
Summary: Ceph Manager module for sending metrics to InfluxDB
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
%if 0%{?weak_deps}
Recommends: python%{python3_pkgversion}-influxdb
%endif
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-influx
ceph-mgr-influx is a ceph-mgr module that sends performance metrics
to an InfluxDB time-series database.
%package mgr-insights
BuildArch: noarch
Summary: Ceph Manager module for recording cluster health history
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-insights
ceph-mgr-insights is a ceph-mgr module that records cluster health
history to support cluster analysis.
%package mgr-iostat
BuildArch: noarch
Summary: Ceph Manager module for displaying I/O statistics
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-iostat
ceph-mgr-iostat is a ceph-mgr module that displays a running summary
of I/O statistics across the cluster.
%package mgr-localpool
BuildArch: noarch
Summary: Ceph Manager module for creating per-host CRUSH rules and pools
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-localpool
ceph-mgr-localpool is a ceph-mgr module that automatically creates
per-host CRUSH rules and pools.
%package mgr-mds-autoscaler
BuildArch: noarch
Summary: Ceph Manager module for automatically scaling MDS daemons
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-mds-autoscaler
ceph-mgr-mds-autoscaler is a ceph-mgr module that automatically scales
the number of MDS daemons based on file system needs.
%package mgr-mirroring
BuildArch: noarch
Summary: Ceph Manager module for managing CephFS mirroring
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-mirroring
ceph-mgr-mirroring is a ceph-mgr module that provides management
commands for CephFS mirroring.
%package mgr-nfs
BuildArch: noarch
Summary: Ceph Manager module for managing NFS gateway deployments
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-nfs
ceph-mgr-nfs is a ceph-mgr module that manages NFS gateway deployments
on top of CephFS and RGW.
%package mgr-nvmeof
BuildArch: noarch
Summary: Ceph Manager module for managing NVMe-oF gateway deployments
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-nvmeof
ceph-mgr-nvmeof is a ceph-mgr module that manages NVMe-oF gateway
deployments for Ceph RBD.
%package mgr-osd-perf-query
BuildArch: noarch
Summary: Ceph Manager module for OSD performance counter queries
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Requires: python%{python3_pkgversion}-prettytable
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-osd-perf-query
ceph-mgr-osd-perf-query is a ceph-mgr module that exposes OSD
performance counter query functionality.
%package mgr-osd-support
BuildArch: noarch
Summary: Ceph Manager module for additional OSD management commands
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-osd-support
ceph-mgr-osd-support is a ceph-mgr module that provides additional
OSD management commands.
%package mgr-prometheus
BuildArch: noarch
Summary: Ceph Manager module for exposing metrics to Prometheus
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%if 0%{?fedora} || 0%{?rhel} >= 8 || 0%{?openEuler}
Requires: python%{python3_pkgversion}-cherrypy
%endif
%if 0%{?suse_version}
Requires: python%{python3_pkgversion}-CherryPy
%endif
%description mgr-prometheus
ceph-mgr-prometheus is a ceph-mgr module that exposes cluster metrics
in Prometheus exposition format.
%package mgr-rgw
BuildArch: noarch
Summary: Ceph Manager module for RADOS Gateway management
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-rgw
ceph-mgr-rgw is a ceph-mgr module that provides management and status
commands for the RADOS Gateway.
%package mgr-selftest
BuildArch: noarch
Summary: Ceph Manager module for testing the manager framework
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-selftest
ceph-mgr-selftest is a ceph-mgr module used for testing the manager
framework.
%package mgr-smb
BuildArch: noarch
Summary: Ceph Manager module for managing SMB gateway deployments
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-smb
ceph-mgr-smb is a ceph-mgr module that manages SMB gateway
deployments on Ceph.
%package mgr-snap-schedule
BuildArch: noarch
Summary: Ceph Manager module for automated CephFS snapshot schedules
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-snap-schedule
ceph-mgr-snap-schedule is a ceph-mgr module that manages automated
CephFS snapshot schedules.
%package mgr-stats
BuildArch: noarch
Summary: Ceph Manager module for exposing file system client I/O statistics
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-stats
ceph-mgr-stats is a ceph-mgr module that exposes file system client
I/O statistics.
%package mgr-telegraf
BuildArch: noarch
Summary: Ceph Manager module for sending metrics to Telegraf
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-telegraf
ceph-mgr-telegraf is a ceph-mgr module that sends performance metrics
to a Telegraf agent.
%package mgr-test-orchestrator
BuildArch: noarch
Summary: Ceph Manager module for testing the orchestrator framework
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-mgr = %{_epoch_prefix}%{version}-%{release}
Obsoletes: ceph-mgr-modules-core < %{_epoch_prefix}%{version}-%{release}
%description mgr-test-orchestrator
ceph-mgr-test-orchestrator is a ceph-mgr module used for testing the
orchestrator framework.
%package fuse
Summary: Ceph fuse-based client
%if 0%{?suse_version}
@ -1989,36 +2246,112 @@ fi
%files mgr-modules-core
%dir %{_datadir}/ceph/mgr
%{_datadir}/ceph/mgr/alerts
%{_datadir}/ceph/mgr/balancer
%{_datadir}/ceph/mgr/crash
%{_datadir}/ceph/mgr/devicehealth
%{_datadir}/ceph/mgr/influx
%{_datadir}/ceph/mgr/insights
%{_datadir}/ceph/mgr/iostat
%{_datadir}/ceph/mgr/localpool
%{_datadir}/ceph/mgr/mds_autoscaler
%{_datadir}/ceph/mgr/mirroring
%{_datadir}/ceph/mgr/nfs
%{_datadir}/ceph/mgr/orchestrator
%{_datadir}/ceph/mgr/osd_perf_query
%{_datadir}/ceph/mgr/osd_support
%{_datadir}/ceph/mgr/pg_autoscaler
%{_datadir}/ceph/mgr/progress
%{_datadir}/ceph/mgr/prometheus
%{_datadir}/ceph/mgr/rbd_support
%{_datadir}/ceph/mgr/rgw
%{_datadir}/ceph/mgr/selftest
%{_datadir}/ceph/mgr/smb
%{_datadir}/ceph/mgr/snap_schedule
%{_datadir}/ceph/mgr/stats
%{_datadir}/ceph/mgr/status
%{_datadir}/ceph/mgr/telegraf
%{_datadir}/ceph/mgr/telemetry
%{_datadir}/ceph/mgr/test_orchestrator
%{_datadir}/ceph/mgr/volumes
%files mgr-alerts
%{_datadir}/ceph/mgr/alerts
%ceph_mgr_module_scripts mgr-alerts
%files mgr-influx
%{_datadir}/ceph/mgr/influx
%ceph_mgr_module_scripts mgr-influx
%files mgr-insights
%{_datadir}/ceph/mgr/insights
%ceph_mgr_module_scripts mgr-insights
%files mgr-iostat
%{_datadir}/ceph/mgr/iostat
%ceph_mgr_module_scripts mgr-iostat
%files mgr-localpool
%{_datadir}/ceph/mgr/localpool
%ceph_mgr_module_scripts mgr-localpool
%files mgr-mds-autoscaler
%{_datadir}/ceph/mgr/mds_autoscaler
%ceph_mgr_module_scripts mgr-mds-autoscaler
%files mgr-mirroring
%{_datadir}/ceph/mgr/mirroring
%ceph_mgr_module_scripts mgr-mirroring
%files mgr-nfs
%{_datadir}/ceph/mgr/nfs
%ceph_mgr_module_scripts mgr-nfs
%files mgr-nvmeof
%{_datadir}/ceph/mgr/nvmeof
%ceph_mgr_module_scripts mgr-nvmeof
%files mgr-osd-perf-query
%{_datadir}/ceph/mgr/osd_perf_query
%ceph_mgr_module_scripts mgr-osd-perf-query
%files mgr-osd-support
%{_datadir}/ceph/mgr/osd_support
%ceph_mgr_module_scripts mgr-osd-support
%files mgr-prometheus
%{_datadir}/ceph/mgr/prometheus
%ceph_mgr_module_scripts mgr-prometheus
%files mgr-rgw
%{_datadir}/ceph/mgr/rgw
%ceph_mgr_module_scripts mgr-rgw
%files mgr-selftest
%{_datadir}/ceph/mgr/selftest
%ceph_mgr_module_scripts mgr-selftest
%files mgr-smb
%{_datadir}/ceph/mgr/smb
%ceph_mgr_module_scripts mgr-smb
%files mgr-snap-schedule
%{_datadir}/ceph/mgr/snap_schedule
%ceph_mgr_module_scripts mgr-snap-schedule
%files mgr-stats
%{_datadir}/ceph/mgr/stats
%ceph_mgr_module_scripts mgr-stats
%files mgr-telegraf
%{_datadir}/ceph/mgr/telegraf
%ceph_mgr_module_scripts mgr-telegraf
%files mgr-test-orchestrator
%{_datadir}/ceph/mgr/test_orchestrator
%ceph_mgr_module_scripts mgr-test-orchestrator
%files mgr-rook
%{_datadir}/ceph/mgr/rook